/* dumb mouse line draw example using mousereports */ /* */ x = addlib("apig.library",0,-30,0) portname = "example11_port" p = openport(portname) call setglobals scr = 0 scrtitle = "Hey Buddy, Yea You, This is Your New Screen !" wintitle = "This is your title" winidcmp = CLOSEWINDOW+GADGETDOWN+GADGETUP+REFRESHWINDOW+MOUSEBUTTONS+MOUSEMOVE winflags = WINDOWCLOSE + WINDOWDRAG + WINDOWSIZING + WINDOWDEPTH, + REPORTMOUSE + ACTIVATE /* scr = openscreen(0,0,640,400,3,4,5,LACE+HIRES,CUSTOMSCREEN,scrtitle) x = setrgb4(scr,0,0,0,0,'S') */ /* open window */ w1 = openwindow(portname,0,0,640,200,2,4,winidcmp,winflags,wintitle,scr,1,0,0) rpw1 = getwindowrastport(w1) z = writeconsole(w1,"This is a dumb mouse line draw example" || '0a'x) z = writeconsole(w1,"Click Left Mouse Button once to start" || '0a'x) z = writeconsole(w1,"Click Left Mouse Button again to stop" || '0a'x) z = writeconsole(w1,"Close window when done" || '0a'x) exitme = 0 drawon = 0 xstart = 0 ystart = 0 x = 0 y = 0 mouserror = 0 z = reportmouse(0,w1) z = setdrmd(rpw1,COMPLEMENT) z = setapen(rpw1,0) do forever z = waitpkt(portname) do forever msg = '0000 0000'x msg = getpkt(portname) if msg = '0000 0000'x then leave class = getarg(msg,0) select when class = CLOSEWINDOW then exitme = 1 when class = MOUSEBUTTONS then do if getarg(msg,1) = SELECTDOWN then do drawon = drawon + 1 if drawon = 1 then /* start point chosen */ do z = setapen(rpw1,0) z = setdrmd(rpw1,JAM1) xstart = getarg(msg,3) ystart = getarg(msg,4) x = xstart y = ystart z = move(rpw1,xstart,ystart) z = setdrmd(rpw1,COMPLEMENT) z = reportmouse(1,w1) /* want mousereport */ end if drawon = 2 then /* end point chosen */ do z = move(rpw1,xstart,ystart) z = draw(rpw1,x,y) /* erase old */ z = setapen(rpw1,1) /* set color */ z = setdrmd(rpw1,JAM1) /* true line */ z = move(rpw1,xstart,ystart) /* start */ /* end point is: x = getarg(msg,3) y = getarg(msg,4) */ z = draw(rpw1,getarg(msg,3),getarg(msg,4)) z = setdrmd(rpw1,COMPLEMENT) z = reportmouse(0,w1) /* no mousereports */ drawon = 0 end end end when class = MOUSEMOVE then /* you are moving the mouse around */ do if drawon = 1 then /* have start point, but no end point */ do /* redraw line as mouse moves */ z = move(rpw1,xstart,ystart) z = draw(rpw1,x,y) /* erase old */ z = move(rpw1,xstart,ystart) x = getarg(msg,3) /* current x position of mouse */ y = getarg(msg,4) /* current y position of mouse */ z = draw(rpw1,x,y) /* draw new */ end end otherwise nop end z = reply(msg,0) end if exitme = 1 then leave end a =closewindow(w1) a =closescreen(scr) exit /* ----------------------------------------------------------------------- */ /* -- -- */ /* -- Intuition Constants -- */ /* -- -- */ /* -- (probably should only include the ones you need) -- */ /* -- -- */ /* ----------------------------------------------------------------------- */ setglobals: /* Globally Defined Rexx Variables */ /* MenuItem Flags & Stuff */ CHECKIT = c2d('0001'x); ITEMTEXT = c2d('0002'x); COMMSEQ = c2d('0004'x) MENUTOGGLE = c2d('0008'x); ITEMENABLED = c2d('0010'x); HIGHFLAGS = c2d('00C0'x) HIGHIMAGE = c2d('0000'x); HIGHCOMP = c2d('0040'x); HIGHBOX = c2d('0080'x) HIGHNONE = c2d('00C0'x); CHECKED = c2d('0100'x); ISDRAWN = c2d('1000'x) HIGHITEM = c2d('2000'x); MENUTOGGLED = c2d('4000'x); MENUENABLED = c2d('0001'x) CHECKWIDTH = 19 COMMWIDTH = 27 LOWCHECKWIDTH = 13 LOWCOMMWIDTH = 16 /* Requester Flags */ POINTREL = c2d('0001'x); PREDRAWN = c2d('0002'x); NOISYREQ = c2d('0004'x) /* Gadget Flags */ GADGHIGHBITS= c2d('0003'x); GADGHCOMP= c2d('0000'x); GADGHBOX = c2d('0001'x) GADGHIMAGE = c2d('0002'x); GADGHNONE= c2d('0003'x); GADGIMAGE = c2d('0004'x) GRELBOTTOM = c2d('0008'x); GRELRIGHT= c2d('0010'x); GRELWIDTH = c2d('0020'x) GRELHEIGHT = c2d('0040'x); SELECTED = c2d('0080'x); GADGDISABLED = c2d('0100'x) /* Gadget Activation Flags */ RELVERIFY = c2d('0001'x); GADGIMMEDIATE = c2d('0002'x) ENDGADGET = c2d('0004'x); FOLLOWMOUSE = c2d('0008'x) RIGHTBORDER = c2d('0010'x); LEFTBORDER = c2d('0020'x) TOPBORDER = c2d('0040'x); BOTTOMBORDER = c2d('0080'x) TOGGLESELECT = c2d('0100'x) STRINGCENTER = c2d('0200'x); STRINGRIGHT = c2d('0400'x); LONGINT = c2d('0800'x) ALTKEYMAP = c2d('1000'x); /* Gadget Types */ BOOLGADGET = c2d('0001'x); PROPGADGET = c2d('0003'x); STRGADGET = c2d('0004'x) /* Prop Gadget Flags & Stuff */ FREEHORIZ = c2d('0002'x); FREEVERT = c2d('0004'x) PROPBORDERLESS = c2d('0008'x); AUTOKNOB = c2d('0001'x) KNOBHIT = c2d('0100'x); MAXBODY = c2d('FFFF'x); MAXPOT = c2d('FFFF'x) /* IDCMP Flags */ SIZEVERIFY = c2d('00000001'x); NEWSIZE = c2d('00000002'x) REFRESHWINDOW = c2d('00000004'x); MOUSEBUTTONS = c2d('00000008'x) MOUSEMOVE = c2d('00000010'x); GADGETDOWN = c2d('00000020'x) GADGETUP = c2d('00000040'x); REQSET = c2d('00000080'x) MENUPICK = c2d('00000100'x); CLOSEWINDOW = c2d('00000200'x) RAWKEY = c2d('00000400'x); REQVERIFY = c2d('00000800'x) REQCLEAR = c2d('00001000'x); MENUVERIFY = c2d('00002000'x) NEWPREFS = c2d('00004000'x); DISKINSERTED = c2d('00008000'x) DISKREMOVED = c2d('00010000'x); WBENCHMESSAGE= c2d('00020000'x) ACTIVEWINDOW = c2d('00040000'x); INACTIVEWINDOW = c2d('00080000'x) DELTAMOVE = c2d('00100000'x); VANILLAKEY = c2d('00200000'x) INTUITICKS = c2d('00400000'x) /* Draw Mode Stuff */ JAM1 = 0; JAM2 = 1; COMPLEMENT = 2; INVERSVID = 4 /* Window Flags */ WINDOWSIZING = c2d('0001'x); WINDOWDRAG = c2d('0002'x); WINDOWDEPTH = c2d('0004'x) WINDOWCLOSE = c2d('0008'x); SIZEBRIGHT = c2d('0010'x) SIZEBBOTTOM = c2d('0020'x) SMART_REFRESH = c2d('0000'x); SIMPLE_REFRESH = c2d('0040'x) BACKDROP = c2d('0100'x); REPORTMOUSE = c2d('0200'x) GIMMEZEROZERO = c2d('0400'x); BORDERLESS = c2d('0800'x) ACTIVATE = c2d('1000'x); WINDOWACTIVE = c2d('2000'x) RMBTRAP = c2d('00010000'x) NOCAREREFRESH = c2d('00020000'x); WINDOWREFRESH = c2d('01000000'x) SUPER_BITMAP = c2d('0080'x) /* Misc. */ AUTOFRONTPEN = 0; AUTOBACKPEN = 1; AUTODRAWMODE = 1 AUTOLEFTEDGE = 6; AUTOTOPEDGE = 3; AUTOITEXTFONT = 0 AUTONEXTTEXT = 0 /* Screen Stuff */ WBENCHSCREEN = c2d('0001'x); CUSTOMSCREEN = c2d('000F'x) SHOWTITLE = c2d('0010'x); SCREENBEHIND = c2d('0080'x) SCREENQUIET = c2d('0100'x) HIRES = c2d('8000'x) LACE = 4 /* Raw Key & Mouse Button Stuff */ IECLASS_NULL = c2d('0000'x) IECLASS_RAWKEY = c2d('0001') IECLASS_RAWMOUSE = c2d('0002'x) IECLASS_EVENT = c2d('0003'x) IECLASS_GADGETDOWN = c2d('0007'x) IECLASS_GADGETUP = c2d('0008'x) IECODE_UP_PREFIX = c2d('0080'x) IECODE_LBUTTON = c2d('0068'x) IECODE_RBUTTON = c2d('0069'x) IECODE_MBUTTON = c2d('006A'x) IECODE_NOBUTTON = c2d('00FF'x) IEQUALIFIER_LSHIFT = c2d('0000 0001'x) IEQUALIFIER_RSHIFT = c2d('0000 0002'x) IEQUALIFIER_CAPSLOCK = c2d('0000 0004'x) IEQUALIFIER_CONTROL = c2d('0000 0008'x) IEQUALIFIER_LALT = c2d('0000 0010'x) IEQUALIFIER_RALT = c2d('0000 0020'x) IEQUALIFIER_LCOMMAND = c2d('0000 0040'x) IEQUALIFIER_RCOMMAND = c2d('0000 0080'x) IEQUALIFIER_NUMERICPAD = c2d('0000 0100'x) IEQUALIFIER_MIDBUTTON = c2d('0000 1000'x) IEQUALIFIER_RBUTTON = c2d('0000 2000'x) IEQUALIFIER_LEFTBUTTON = c2d('0000 4000'x) IEQUALIFIER_RELATIVEMOUSE = c2d('0000 8000'x) SELECTUP = IECODE_LBUTTON + IECODE_UP_PREFIX SELECTDOWN = IECODE_LBUTTON MENUUP = IECODE_RBUTTON + IECODE_UP_PREFIX MENUDOWN = IECODE_RBUTTON MEMF_CHIP = '0001 0002'x MEMF_FAST = '0001 0004'x MEMF_PUBLIC = '0001 0001'x MEMF_CLEAR = '0001 0000'x LAYERSIMPLE = 1 LAYERSMART = 2 LAYERSUPER = 4 LAYERUPDATING = c2d('10'x) LAYERBACKDROP = c2d('40'x) LAYERREFRESH = c2d('80'x) return 1