Home » Archimedes archive » Archimedes World » AW-1993-02.adf » AWFeb93 » !AWFeb93/Goodies/Imagery/!TinyImage/!RunImage
!AWFeb93/Goodies/Imagery/!TinyImage/!RunImage
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » Archimedes archive » Archimedes World » AW-1993-02.adf » AWFeb93 |
Filename: | !AWFeb93/Goodies/Imagery/!TinyImage/!RunImage |
Read OK: | ✔ |
File size: | 144FE bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
10REM ><Imagery$Dir>.!RunImage 20LOMEM=TOP+&1000:PATCH%=TOP 30ON ERROR PROCmakerr 40: 50REM LF$="" 60PROCsetup 70NOL%=TRUE:PROCloadsets("<Imagery$Dir>.Defaults") 80NOL%=FALSE:PROCed_bru:!BLK%=HAND%(12):SYS "Wimp_CloseWindow",,BLK% 90PROCaction 100PROCdie 110END 120DEFPROCsetup:LEGO%=FALSE:TKH%=-1 130MESI%=5*1024:DIM POI% 256,TAS% 3000,MENU% MESI%,MENUIND% MESI%,SEL% 256,ICBLK% 256,VARS 128,MENALO% 16,CODE% 7*1024,IO% 256,TRANSTAB% 256,RGBG% 192,MENAD% 256 140BLK%=TAS%+2000 150 160SYS "OS_ReadVarVal","Imagery$File",IO%,256,0,0 TO ,,K%:L%=0:LF$="":WHILE K%>0:LF$=LF$+CHR$(IO%?L%):L%+=1:K%-=1:ENDWHILE 170 180FORL%=0 TO 188 STEP 4:RGBG%!L%=0:NEXT 190MEOF%=0:MEIN%=0:MBUS%=FALSE:LAOPWI%=-1 200$MENALO%="A -~" 210FTL%=FALSE:LAPATCH%=-1 220DIM PIC% 161*1024,SCALE% 32,PIXTAB% 256,PIXTAB2% 256,X%(8),Y%(8) 230SPBUF%=HIMEM:SPSIZ%=0:SYS "Wimp_SlotSize",-1,-1 TO CUSL% 240DIM PAL% 22600,OPAL% 22600,SHOW% 10240,PALTAB% 512,BTC% 256,CTT% 256,TTB% 256,ROTTAB% 1800,RAND% 4096,PFILLS% 7000:!PAL%=22600:!OPAL%=22600:!PFILLS%=7000:!SHOW%=10240 250DIM BRUSH% 13000:!BRUSH%=13000 260SYS&2E,266,BRUSH%,"<Imagery$Dir>.Brushes" 270SYS&2E,266,PAL%,"<Imagery$Dir>.Palette" 280SYS&2E,266,OPAL%,"<Imagery$Dir>.Palette" 290SYS&2E,266,PFILLS%,"<Imagery$Dir>.PatFills" 300SYS&2E,266,SHOW%,"<Imagery$Dir>.Show" 310OSCLI("LOAD <Imagery$Dir>.PalTab "+STR$~PALTAB%) 320OSCLI("LOAD <Imagery$Dir>.BTC "+STR$~BTC%):REM byte -> pal 330OSCLI("LOAD <Imagery$Dir>.CTT "+STR$~CTT%):REM pal -> byte 340OSCLI("LOAD <Imagery$Dir>.TTB "+STR$~TTB%):REM (col*64)+tint -> pal 350OSCLI("LOAD <Imagery$Dir>.RotTab "+STR$~ROTTAB%) 360OSCLI("LOAD <Imagery$Dir>.Code "+STR$~CODE%) 370OSCLI("LOAD <Imagery$Dir>.RotTab "+STR$~ROTTAB%) 380COL%=255:FUSE%=-1:FUST%=-1:FUCO%=0:BUTDO%=FALSE 390$TAS%="TASK":SYS"Wimp_Initialise",200,!TAS%,"Imagery" TO ,THAND% 400PROCloadsprites 410PROCloadvars 420!BLK%=-1:BLK%!4=0:BLK%!8=0:BLK%!12=64:BLK%!16=64:BLK%!20=&2102 430DIM BLK%!24 10:$(BLK%!24)="!TinyImage":BLK%!28=1:BLK%!32=8 440SYS "Wimp_CreateIcon",,BLK% TO ICHAND% 450NOWIND%=34:NOMENS%=20 460DIM STORE% 15*1024,BUF% 5048,HAND%(NOWIND%) 470SOF%=STORE% 480DATA Save,Info,Main,Palette,Airbrush,Brushes,Grid,SpriteSave,Area,Help,Linepat,Fillpat,EdBrush,EdFill,Text,Tback,FontParams,FillCont,ColRep,Frame,Pfills,RGBcont,Greyscale,Pixelate,Rotate,Colscale,Contrast,Posterise,RGBgraph,Filter,Wobble,Import,Toolkit 490DATA Zoom,SetSave 500RESTORE 480 510SYS "Wimp_OpenTemplate",,"<Imagery$Dir>.Templates":K%=0 520REPEAT:READ A$:$IO%=A$ 530SYS "Wimp_LoadTemplate",,BUF%,SOF%,STORE%+(15*1024),-1,IO%,0 TO ,,SOF% 540IF K%=2 THEN BUF%?35=&FF 550SYS "Wimp_CreateWindow",,BUF% TO HAND%(K%) 560K%+=1:UNTIL K%>NOWIND% 570SYS "Wimp_CloseTemplate" 580FORL%=15 TO 46:PROCshadeicon(10,L%):NEXT 590PROCsi(13,83,"16") 600VDU23,6,0| 610PROCsystemvars 620PROCchars 630PROCloadfonts 640FORL%=0 TO NOMENS%:!FNmad(L%)=-1:NEXT:PROCbuildmainmenu:PROCbuildiconmenu 650LWG%=-1:LIG%=-1 660WLX%=0:WLY%=300:WUX%=1279:WUY%=1023:WSX%=0:WSY%=0 670EDTY%=0:EFCOL%=255 680ENDPROC 690 700DEFFNmad(MAD%):=MENAD%+(MAD%*4) 710DEFFNcmad(MAD%):=MENAD%!(MAD%*4) 720 730DEFPROCsystemvars 740!PIC%=161*1024:PIC%!4=0:PIC%!8=24:PIC%!12=24 750SYS &2E,271,PIC%,"PIC",0,640,256,15 760PIC$="<Untitled>" 770ESM%=-1:EPM%=-1 780GRCO%=-1:GRTI%=-1:GRLO%=FALSE:GRIWI%=1:GRIHE%=1:GRBX%=0:GRBY%=0 790GRXM%=1:GRXD%=1:GRYM%=1:GRYD%=1:GRFX%=FALSE:GRFY%=FALSE 800ZOOM%=1:ZOOMS%=1 810USE%=0:LITY%=5:GRMA%=FALSE:UNDO%=-1 820DIM PAT%(5):PAT%()=0:PALE%=8 830DIM ECF%(8,4):ECF%()=0:ROT%=0 840DIM GRFI%(15,1,4):GRFI%()=0 850FIFC%=63:FIFT%=192:FILC%=3:FILT%=192:FILR%=0 860IP%=FALSE 870SELBR%=1:BXM%=1:BXD%=1:BYM%=1:BYD%=1 880EDBR%=1:IDRAG%=FALSE:CPF%=1 890IF LF$<>"" THEN PROCqatload(LF$):PIC$=FNleaf(LF$):PROCsi(0,6,LF$):PROCopenmain:PROCwindname(2,PIC$) 900DIM TRASP% 256, REPS% 256 910FORL%=0 TO 255:REPS%?L%=L%:NEXT 920FORL%=0 TO 252 STEP 4:TRASP%!L%=0:NEXT 930DIM FONTT$(64):FONTA%=-1:FONTO%=-1 940FONTB%=0:SREP%=255 950MMX%=1:MMY%=1:MOP%=FALSE:KUKE%=FALSE:KUKD%=0:KUKL%=-1:KSC%=TRUE 960RSL%=100:GSL%=100:BSL%=100 970ENDPROC 980 990DEFPROCloadvars 1000F%=OPENIN("<Imagery$Dir>.Vars") 1010INPUT#F%,backuppic,fillmask,getpicbyte,getbrushbyte,setpicbyte,pixaverage,tintarea,averagebrush,tintbrush,findchangebox,graduatedfill,colrep,patfill,rgbcont,greyscale,rotate,transarea,rgbgraph,filter,wobble 1020CLOSE#F% 1030backuppic+=CODE%:fillmask+=CODE%:getpicbyte+=CODE%:getbrushbyte+=CODE%:setpicbyte+=CODE%:pixaverage+=CODE%:tintarea+=CODE%:averagebrush+=CODE%:tintbrush+=CODE%:findchangebox+=CODE%:graduatedfill+=CODE%:colrep+=CODE% 1040patfill+=CODE%:rgbcont+=CODE%:greyscale+=CODE%:rotate+=CODE%:transarea+=CODE%:rgbgraph+=CODE%:filter+=CODE%:wobble+=CODE% 1050ENDPROC 1060 1070DEFPROCloadfonts 1080FONTS%=0:ENDPROC 1090 1100DEFPROCloadsprites 1110ENDPROC 1120 1130DEFPROCaction:SYS "Wimp_ForceRedraw",-1,0,0,&3000,&3000 1140 1150REPEAT 1160PROCpoll 1170UNTIL (REAS%=17 OR REAS%=18) AND BLK%!16=0 1180ENDPROC 1190 1200DEFPROCdie:OP%=0:PROCspbuf(0) 1210FORL%=1 TO 4:OSCLI("*REMOVE <Imagery$Dir>.XPIC"+STR$L%):NEXT 1220SYS "Wimp_CloseDown",THAND%,!TAS% 1230END 1240ENDPROC 1250 1260DEFPROCpoll 1270SYS "Wimp_GetPointerInfo",,BLK% 1280IF BLK%!12<>HAND%(2) THEN MBUS%=TRUE 1290!BLK%=%10011111110000110000 1300SYS "Wimp_Poll",0,BLK% TO REAS% 1310IF REAS%>-1 THEN PROCact 1320ENDPROC 1330DEFPROCact 1340CASE REAS% OF 1350WHEN 0:PROCkuke:PROCpicpoll 1360WHEN 1:PROCredraw 1370WHEN 2:PROCopmain 1380WHEN 3:PROCclmain 1390WHEN 6:PROCmouse 1400WHEN 7:PROCdragfin 1410WHEN 8:PROCkey 1420WHEN 9:PROCmenu 1430WHEN 17,18:PROCinmessage(BLK%!16) 1440ENDCASE 1450ENDPROC 1460 1470DEFPROCkuke:IF NOT KUKE% THEN ENDPROC 1480KULI%=10 1490MOUSE MX%,MY%,MH%:KP%=FALSE 1500IF NOT INKEY(-58) THEN 1540 1510IF KUKL%<>-58 THEN KUKL%=-58:KUKD%=0:MY%+=4:KP%=TRUE:GOTO 1540 1520KUKD%+=1:IF KUKD%<KULI% THEN KP%=TRUE:GOTO 1540 1530KUKD%=KULI%:MY%+=4:KP%=TRUE 1540IF NOT INKEY(-42) THEN 1580 1550IF KUKL%<>-58 THEN KUKL%=-58:KUKD%=0:MY%-=4:KP%=TRUE:GOTO 1580 1560KUKD%+=1:IF KUKD%<KULI% THEN KP%=TRUE:GOTO 1580 1570KUKD%=KULI%:MY%-=4:KP%=TRUE 1580IF NOT INKEY(-26) THEN 1620 1590IF KUKL%<>-58 THEN KUKL%=-58:KUKD%=0:MX%-=2:KP%=TRUE:GOTO 1620 1600KUKD%+=1:IF KUKD%<KULI% THEN KP%=TRUE:GOTO 1620 1610KUKD%=KULI%:MX%-=2:KP%=TRUE 1620IF NOT INKEY(-122) THEN 1660 1630IF KUKL%<>-58 THEN KUKL%=-58:KUKD%=0:MX%+=2:KP%=TRUE:GOTO 1660 1640KUKD%+=1:IF KUKD%<KULI% THEN KP%=TRUE:GOTO 1660 1650KUKD%=KULI%:MX%+=2:KP%=TRUE 1660IF NOT KP% THEN KUKL%=-1:KUKD%=0 1670MOUSE TO MX%,MY% 1680ENDPROC 1690 1700DEFPROCredraw 1710CASE !BLK% OF 1720WHEN HAND%(2):PROCredrawmain 1730WHEN HAND%(3):PROCredrawpal 1740WHEN HAND%(5):PROCredrawbrush 1750WHEN HAND%(11):PROCredrawpat 1760WHEN HAND%(12):PROCredrawedbru 1770WHEN HAND%(13):PROCredrawfill 1780WHEN HAND%(15):PROCredrawtback 1790WHEN HAND%(18):PROCredrawcolrep 1800WHEN HAND%(20):PROCredrawpatfill 1810WHEN HAND%(26),HAND%(27),HAND%(28):PROCredrawgraph 1820WHEN HAND%(33):PROCredrawzoom 1830WHEN HAND%(21):PROCredrawrgb 1840WHEN HAND%(30):PROCredrawwob 1850ENDCASE 1860ENDPROC 1870 1880DEFPROCredrawwob 1890SYS "Wimp_RedrawWindow",,BLK% TO FIN% 1900PROCgetrdor(564) 1910WHILE FIN%:PROCplot256sprite(SHOW%,"SHOW",WOX%+64,WOY%+16):SYS "Wimp_GetRectangle",,BLK% TO FIN%:ENDWHILE:ENDPROC 1920 1930DEFPROCforcedrawwob:SYS "Wimp_ForceRedraw",HAND%(30),0,-564,480,220:ENDPROC 1940 1950DEFPROCredrawbrush 1960SYS "Wimp_RedrawWindow",,BLK% TO FIN% 1970PROCgetrdor(260) 1980WHILE FIN%:PROCplotbrushes:SYS "Wimp_GetRectangle",,BLK% TO FIN% 1990ENDWHILE 2000ENDPROC 2010 2020DEFPROCredrawedbru 2030SYS "Wimp_RedrawWindow",,BLK% TO FIN% 2040PROCgetrdor(640+(EDTY%*260)) 2050WHILE FIN%:PROCplotedbru:SYS "Wimp_GetRectangle",,BLK% TO FIN% 2060ENDWHILE 2070ENDPROC 2080 2090DEFPROCredrawpatfill 2100SYS "Wimp_RedrawWindow",,BLK% TO FIN% 2110PROCgetrdor(108) 2120WHILE FIN%:PROCplotpatfill:SYS "Wimp_GetRectangle",,BLK% TO FIN% 2130ENDWHILE 2140ENDPROC 2150 2160DEFPROCforcedrawpatfill:SYS "Wimp_ForceRedraw",HAND%(20),0,-108,1100,0:ENDPROC 2170 2180DEFPROCforcedrawedbru(x1%,y1%,x2%,y2%) 2190!BLK%=HAND%(12) 2200BLK%!4=x1% 2210BLK%!8=y1% 2220BLK%!12=x2% 2230BLK%!16=y2% 2240SYS "Wimp_UpdateWindow",,BLK% TO FIN% 2250PROCgetrdor(640+(EDTY%*260)) 2260WHILE FIN% 2270PROCplotedbru 2280SYS "Wimp_GetRectangle",,BLK% TO FIN% 2290ENDWHILE 2300ENDPROC 2310 2320DEFPROCforcedrawbrush 2330!BLK%=HAND%(5) 2340BLK%!4=0 2350BLK%!8=-260 2360BLK%!12=384 2370BLK%!16=0 2380SYS "Wimp_UpdateWindow",,BLK% TO FIN% 2390PROCgetrdor(260) 2400WHILE FIN% 2410PROCplotbrushes 2420SYS "Wimp_GetRectangle",,BLK% TO FIN% 2430ENDWHILE 2440ENDPROC 2450 2460DEFPROCplot256sprite(SPA%,SPI$,POX%,POY%) 2470IF MODE<>15 THEN GOTO 2490 2480!SCALE%=1:SCALE%!4=1:SCALE%!8=1:SCALE%!12=1:SYS "OS_SpriteOp",290,SPA%,SPI$,POX%,POY%:ENDPROC 2490IF MODE<>ESM% THEN ESM%=MODE:EPM%=MODE:SYS&40740,15,0,-1,-1,PIXTAB% 2500SYS&35,-1,5 TO ,,E% 2510SX%=2^(2-E%):SCALE%!4=SX%:SCALE%!12=1 2520SYS&35,-1,4 TO ,,E% 2530IF E%<1 THEN SX%=2^(1-E%):!SCALE%=SX%:SCALE%!8=1 ELSE SX%=2^(E%-1):!SCALE%=1:SCALE%!8=SX% 2540SYS "OS_SpriteOp",308,SPA%,SPI$,POX%,POY%,0,SCALE%,PIXTAB% 2550ENDPROC 2560 2570DEFPROCplotpatfill 2580FORL%=1 TO 12:PROCplot256sprite(PFILLS%,STR$L%,WOX%+((L%-1)*84)+24,WOY%+12):IF CPF%=L% THEN PROCcol(0,0,0):RECTANGLE WOX%+((CPF%-1)*84)+16,WOY%+4,78,76:RECTANGLE WOX%+((CPF%-1)*84)+18,WOY%+4,74,76 2590NEXT 2600ENDPROC 2610 2620DEFPROCplotbrushes 2630FORL%=1 TO 12 2640BLK%!400=HAND%(5):BLK%!404=L%-1:SYS "Wimp_GetIconState",,BLK%+400 2650PROCplot256sprite(BRUSH%,STR$L%,WOX%+(BLK%!408)+2,WOY%+(260+(BLK%!412))+4) 2660IF SELBR%=L% THEN PROCcol(48,192,3):RECTANGLE FILL WOX%+(BLK%!408)+2,WOY%+(260+(BLK%!412))+4,64,60 2670NEXT 2680ENDPROC 2690 2700DEFPROCplotedbru 2710IF EDTY%=0 THEN WE%=BRUSH% ELSE WE%=PFILLS% 2720PROCplot256sprite(WE%,"1",WOX%+32,WOY%+20+(EDTY%*260)) 2730IF EDBR%<>1 THEN PROCcol(0,0,0) ELSE PROCcol(63,192,0) 2740RECTANGLE FILL WOX%+32,WOY%+4+(EDTY%*260),64,8:RECTANGLE FILL WOX%+32,WOY%+86+(EDTY%*260),64,8 2750IF WOY%+108+(EDTY%*260)<(BLK%!32) THEN GOTO 2820 2760FORL%=2 TO 12 2770REM BLK%!400=HAND%(12):BLK%!404=L%-1:SYS "Wimp_GetIconState",,BLK%+400 2780PROCplot256sprite(WE%,STR$L%,WOX%+((L%-1)*64)+32,WOY%+20+(EDTY%*260)) 2790IF EDBR%<>L% THEN PROCcol(0,0,0) ELSE PROCcol(63,192,0) 2800RECTANGLE FILL WOX%+((L%-1)*64)+32,WOY%+4+(EDTY%*260),64,8:RECTANGLE FILL WOX%+((L%-1)*64)+32,WOY%+86+(EDTY%*260),64,8 2810NEXT 2820!SCALE%=(!SCALE%)*12:SCALE%!4=(SCALE%!4)*8 2830IF WOY%+108+(EDTY%*260)>(BLK%!40) THEN GOTO 2860 2840IF MODE<>15 THEN SYS "OS_SpriteOp",308,WE%,STR$EDBR%,WOX%+28,WOY%+112+(EDTY%*260),0,SCALE%,PIXTAB% ELSE SYS "OS_SpriteOp",308,WE%,STR$EDBR%,WOX%+28,WOY%+112+(EDTY%*260),0,SCALE% 2850EX%=WOX%+28:EY%=WOY%+112+(EDTY%*260):PROCcol(21,192,0):FORL%=0 TO 32:LINE EX%+(L%*24),EY%,EX%+(L%*24),EY%+512:NEXT:FORL%=0 TO 16:LINE EX%,EY%+(L%*32),EX%+768,EY%+(L%*32):NEXT 2860IF EDTY%=1 THEN WOX%+=32:WOY%+=16:PROCplotpal(OPAL%):PROCcol(63,192,0):RECTANGLE WOX%+((EFCOL% MOD 32)*24),WOY%+((EFCOL% DIV 32)*28),24,28:WOX%-=32:WOY%-=16 2870ENDPROC 2880 2890DEFPROCforcedrawmain 2900!BLK%=HAND%(2) 2910BLK%!4=0 2920BLK%!8=-1024*ZOOM% 2930BLK%!12=1280*ZOOM% 2940BLK%!16=0 2950SYS "Wimp_UpdateWindow",,BLK% TO FIN% 2960PROCgetrdor(1024*ZOOM%) 2970WHILE FIN% 2980PROCplotpic 2990SYS "Wimp_GetRectangle",,BLK% TO FIN% 3000ENDWHILE 3010ENDPROC 3020 3030DEFPROCquickdrawmain:IF NOT VACB% THEN ENDPROC 3040!BLK%=HAND%(2) 3050BLK%!4=CBMINX% 3060BLK%!8=CBMINY% 3070BLK%!12=CBMAXX% 3080BLK%!16=CBMAXY% 3090SYS "Wimp_UpdateWindow",,BLK% TO FIN% 3100PROCgetrdor(1024*ZOOM%) 3110WHILE FIN% 3120PROCplotpic 3130SYS "Wimp_GetRectangle",,BLK% TO FIN% 3140ENDWHILE 3150ENDPROC 3160 3170DEFPROCinpic:IF IP% THEN ENDPROC 3180IP%=TRUE 3190SYS "OS_SpriteOp",316,PIC%,"PIC" TO V1,V2,V3,V4 3200SYS "OS_ChangedBox",2 3210SYS "OS_ChangedBox",1 3220REM GCOL3,63:LINE 300,300,320,320:LINE 300,300,320,320 3230VDU23,6:FORL%=1 TO 5:VDU PAT%(L%):NEXT:VDU 0| 3240SYS6,163,242,PALE% 3250ENDPROC 3260 3270DEFPROCinpicR:SYS "OS_SpriteOp",316,PIC%,"PIC" TO B1,B2,B3,B4:ENDPROC 3280 3290DEFPROCinbackup:SYS "OS_SpriteOp",316,SPBUF%,"PIC" TO B1,B2,B3,B4:ENDPROC 3300 3310DEFPROCinsprite(ma%,sa%,sn$):SYS &2E,316+ma%,sa%,sn$ TO IS1,IS2,IS3,IS4:ENDPROC 3320 3330DEFPROCoutsprite:SYS &2E,IS1,IS2,IS3,IS4:ENDPROC 3340 3350DEFPROCoutbackup:SYS "OS_SpriteOp",B1,B2,B3,B4:ENDPROC 3360 3370DEFPROCoutpic:IF NOT IP% THEN ENDPROC 3380IP%=FALSE 3390SYS "OS_ChangedBox",-1 TO ,CBA% 3400IF SGN(CBA%!4)=-1 OR SGN(CBA%!8)=-1 OR SGN(CBA%!12)=-1 OR SGN(CBA%!16)=-1 THEN VACB%=FALSE:SYS "OS_ChangedBox":SYS "OS_SpriteOp",V1,V2,V3,V4:ENDPROC ELSE VACB%=TRUE 3410CBMINX%=CBA%!4:CBMINX%=CBMINX%*ZOOM%*2 3420CBMINY%=CBA%!8:CBMINY%=(-1024+(CBMINY%*4))*ZOOM% 3430CBMAXX%=CBA%!12:CBMAXX%=CBMAXX%*ZOOM%*2 3440CBMAXY%=CBA%!16:CBMAXY%=(-1024+(CBMAXY%*4))*ZOOM% 3450CBMAXX%+=4*ZOOM% 3460CBMAXY%+=4*ZOOM% 3470SYS "OS_ChangedBox" 3480SYS "OS_SpriteOp",V1,V2,V3,V4 3490ENDPROC 3500 3510DEFPROCredrawmain 3520IF FUSE%=32 THEN 3530IF FONT%<>0 AND EFM%<>-1 THEN 3540REM IF MODE<>EFM% THEN PROCinpic:SYS "ColourTrans_SetFontColours",FHAND%,BPAL%,FPAL%,14:PROCoutpic:EFM%=MODE 3550ENDIF 3560ENDIF 3570SYS "Wimp_RedrawWindow",,BLK% TO FIN% 3580PROCgetrdor(1024*ZOOM%) 3590WHILE FIN%:PROCplotpic:SYS "Wimp_GetRectangle",,BLK% TO FIN% 3600ENDWHILE 3610ENDPROC 3620 3630DEFPROCplotpic 3640IF MODE=15 AND ZOOM%=1 THEN SYS "OS_SpriteOp",290,PIC%,"PIC",WOX%,WOY%:PROCgrid:ENDPROC 3650IF MODE<>ESM% THEN ESM%=MODE:EPM%=MODE:SYS&40740,15,0,-1,-1,PIXTAB% 3660SYS&35,-1,5 TO ,,E% 3670SX%=2^(2-E%):SCALE%!4=SX%:SCALE%!12=1 3680SYS&35,-1,4 TO ,,E% 3690IF E%<1 THEN SX%=2^(1-E%):!SCALE%=SX%:SCALE%!8=1 ELSE SX%=2^(E%-1):!SCALE%=1:SCALE%!8=SX% 3700!SCALE%=(!SCALE%)*ZOOM%:SCALE%!4=(SCALE%!4)*ZOOM% 3710IF MODE=15 THEN TPIXTAB%=0 ELSE TPIXTAB%=PIXTAB% 3720SYS "OS_SpriteOp",308,PIC%,"PIC",WOX%,WOY%,0,SCALE%,TPIXTAB%:PROCgrid:ENDPROC 3730 3740DEFPROCgrid 3750IF GRCO%=-1 OR (2*GRIWI%*ZOOM%)<16 OR (4*GRIHE%*ZOOM%)<16 THEN ENDPROC 3760PROCgridcol 3770LOCAL X%,Y% 3780X%=(((BLK%!28)-WOX%) DIV (ZOOM%*(2*GRIWI%)))*(2*GRIWI%*ZOOM%) 3790Y%=(((BLK%!32)-WOY%) DIV (ZOOM%*(4*GRIHE%)))*(4*GRIHE%*ZOOM%) 3800XOF%=(GRIWI%-GRBX%)*2*ZOOM% 3810YOF%=(GRIHE%-GRBY%)*4*ZOOM% 3820X%+=WOX%-XOF% 3830Y%+=WOY%-YOF% 3840REPEAT:LINE X%,(BLK%!32),X%,(BLK%!40):X%+=(2*GRIWI%*ZOOM%):UNTIL X%>(BLK%!36) 3850REPEAT:LINE (BLK%!28),Y%,(BLK%!36),Y%:Y%+=(4*GRIHE%*ZOOM%):UNTIL Y%>(BLK%!40) 3860ENDPROC 3870 3880DEFPROCplotpal(PTU%) 3890PROCcol(63,192,0) 3900IF MODE<>15 THEN GOTO 3930 3910SYS "OS_SpriteOp",290,PTU%,"Palette",WOX%,WOY%:IF PTU%=PAL% THEN RECTANGLE WOX%+((COL% MOD 32)*24),WOY%+((COL% DIV 32)*28),24,28 3920ENDPROC 3930IF MODE<>EPM% THEN ESM%=MODE:EPM%=MODE:SYS&40740,15,0,-1,-1,PIXTAB% 3940SYS&35,-1,5 TO ,,E% 3950SX%=2^(2-E%):SCALE%!4=SX%:SCALE%!12=1 3960SYS&35,-1,4 TO ,,E% 3970IF E%<1 THEN SX%=2^(1-E%):!SCALE%=SX%:SCALE%!8=1 ELSE SX%=2^(E%-1):!SCALE%=1:SCALE%!8=SX% 3980SYS "OS_SpriteOp",308,PTU%,"Palette",WOX%,WOY%,0,SCALE%,PIXTAB% 3990IF PTU%=PAL% THEN RECTANGLE WOX%+((COL% MOD 32)*24),WOY%+((COL% DIV 32)*28),24,28 4000ENDPROC 4010 4020DEFPROCinpal:SYS "OS_SpriteOp",316,PAL%,"Palette" TO V1,V2,V3,V4:ENDPROC 4030 4040DEFPROCoutpal:SYS "OS_SpriteOp",V1,V2,V3,V4:ENDPROC 4050 4060DEFPROCtrasp(TC%) 4070PROCinpal:PROCtrasp2(TC%):PROCoutpal 4080ENDPROC 4090 4100DEFPROCtrasp2(TC%) 4110TRASP%?TC%=(TRASP%?TC%) EOR 1 4120TX%=((TC% MOD 32)*24):TY%=((TC% DIV 32)*28) 4130REM IF (TRASP%?TC%)=0 THEN GCOL0,PALTAB%?(TC%*2) TINT PALTAB%?((TC%*2)+1) ELSE PROCanticol(PALTAB%?(TC%*2),PALTAB%?((TC%*2)+1),0) 4140IF (TRASP%?TC%)=0 THEN GCOL0,PALTAB%?(TC%*2) TINT PALTAB%?((TC%*2)+1) ELSE GCOL0,63-(PALTAB%?(TC%*2)) TINT PALTAB%?((TC%*2)+1) 4150LINE TX%+6,TY%+20,TX%+18,TY%+20:LINE TX%+12,TY%+8,TX%+12,TY%+20 4160ENDPROC 4170 4180DEFPROCredrawpal 4190SYS "Wimp_RedrawWindow",,BLK% TO FIN% 4200PROCgetrdor(228) 4210WHILE FIN%:PROCplotpal(PAL%):SYS "Wimp_GetRectangle",,BLK% TO FIN% 4220ENDWHILE 4230ENDPROC 4240 4250DEFPROCredrawtback 4260SYS "Wimp_RedrawWindow",,BLK% TO FIN% 4270PROCgetrdor(228) 4280WHILE FIN%:PROCplotpal(OPAL%) 4290PROCcol(63,192,0):RECTANGLE WOX%+((FONTB% MOD 32)*24),WOY%+((FONTB% DIV 32)*28),24,28 4300SYS "Wimp_GetRectangle",,BLK% TO FIN% 4310ENDWHILE 4320ENDPROC 4330 4340DEFPROCredrawcolrep 4350SYS "Wimp_RedrawWindow",,BLK% TO FIN% 4360PROCgetrdor(556) 4370WHILE FIN%:WOY%+=290:PROCplotpal(SPBUF%):PROCcol(0,0,0):LINE WOX%,WOY%+224,WOX%+770,WOY%+224:WOY%-=290 4380PROCplotpal(OPAL%):PROCcol(0,0,0):LINE WOX%,WOY%+224,WOX%+770,WOY%+224 4390PROCcol(63,192,0):RECTANGLE WOX%+((SREP% MOD 32)*24),WOY%+290+((SREP% DIV 32)*28),24,28 4400SYS "Wimp_GetRectangle",,BLK% TO FIN% 4410ENDWHILE 4420ENDPROC 4430 4440DEFPROCforcedrawcolrep 4450!BLK%=HAND%(18) 4460BLK%!4=0 4470BLK%!8=-556 4480BLK%!12=770 4490BLK%!16=0 4500SYS "Wimp_UpdateWindow",,BLK% TO FIN% 4510PROCgetrdor(556) 4520WHILE FIN% 4530WOY%+=290:PROCplotpal(SPBUF%):PROCcol(0,0,0):LINE WOX%,WOY%+224,WOX%+770,WOY%+224:WOY%-=290 4540PROCplotpal(OPAL%):PROCcol(0,0,0):LINE WOX%,WOY%+224,WOX%+770,WOY%+224 4550PROCcol(63,192,0):RECTANGLE WOX%+((SREP% MOD 32)*24),WOY%+290+((SREP% DIV 32)*28),24,28 4560SYS "Wimp_GetRectangle",,BLK% TO FIN% 4570ENDWHILE 4580ENDPROC 4590 4600DEFFNcecf 4610IF FNhigh(11,26) THEN =1 4620IF FNhigh(11,28) THEN =2 4630IF FNhigh(11,30) THEN =3 4640IF FNhigh(11,32) THEN =4 4650=0 4660 4670DEFPROCredrawpat 4680SYS "Wimp_RedrawWindow",,BLK% TO FIN% 4690PROCgetpator 4700WHILE FIN%:PROCplotpal(OPAL%):PROCcol(0,0,0):LINE WOX%,WOY%+224,WOX%+770,WOY%+224 4710CECF%=FNcecf:FORK%=0 TO 7:L%=ECF%(K%+1,CECF%) 4720PE%=BTC%?L%:PROCcol(PALTAB%?(PE%*2),PALTAB%?((PE%*2)+1),0):RECTANGLE FILL WOX%-146,(WOY%+276)-(K%*40),38,36 4730NEXT 4740SYS "Wimp_GetRectangle",,BLK% TO FIN% 4750ENDWHILE 4760ENDPROC 4770 4780DEFFNgrafilno 4790IF FNhigh(13,95) THEN =0 4800IF FNhigh(13,99) THEN =1 4810IF FNhigh(13,101) THEN =2 4820IF FNhigh(13,103) THEN =3 4830IF FNhigh(13,97) THEN =4 4840=-1 4850 4860DEFPROCredrawfill 4870SYS "Wimp_RedrawWindow",,BLK% TO FIN% 4880PROCgetrdor(484) 4890WHILE FIN%:WOY%+=236:WOX%+=422:PROCplotpal(OPAL%):PROCcol(0,0,0):LINE WOX%,WOY%+224,WOX%+770,WOY%+224:WOX%-=140:WOY%-=140 4900FIX%=WOX%+200:GRFIN%=FNgrafilno:FORL%=0 TO 15:IF GRFIN%<>-1 THEN PROCcol(GRFI%(L%,0,GRFIN%),GRFI%(L%,1,GRFIN%),0) ELSE PROCcol(0,0,0) 4910RECTANGLE FILL FIX%,WOY%-28,42,32:FIX%+=44:NEXT 4920WOX%-=282:WOY%-=96:SYS "Wimp_GetRectangle",,BLK% TO FIN% 4930ENDWHILE 4940ENDPROC 4950 4960DEFPROCforcedrawfill 4970!BLK%=HAND%(13) 4980BLK%!4=0 4990BLK%!8=-500 5000BLK%!12=1200 5010BLK%!16=-360 5020SYS "Wimp_UpdateWindow",,BLK% TO FIN% 5030PROCgetrdor(484) 5040WHILE FIN% 5050FIX%=WOX%+482:GRFIN%=FNgrafilno:FORL%=0 TO 15:IF GRFIN%<>-1 THEN PROCcol(GRFI%(L%,0,GRFIN%),GRFI%(L%,1,GRFIN%),0) ELSE PROCcol(0,0,0) 5060RECTANGLE FILL FIX%,WOY%+68,42,32:FIX%+=44:NEXT 5070SYS "Wimp_GetRectangle",,BLK% TO FIN% 5080ENDWHILE 5090ENDPROC 5100 5110DEFPROCforcedrawpat 5120!BLK%=HAND%(11) 5130BLK%!4=0 5140BLK%!8=-356 5150BLK%!12=100 5160BLK%!16=0 5170SYS "Wimp_UpdateWindow",,BLK% TO FIN% 5180PROCgetpator 5190WHILE FIN% 5200PROCplotpal(OPAL%):PROCcol(0,0,0):LINE WOX%,WOY%+224,WOX%+770,WOY%+224 5210CECF%=FNcecf 5220FOR RK%=0 TO 7 5230L%=ECF%(RK%+1,CECF%) 5240PE%=BTC%?L%:PROCcol(PALTAB%?(PE%*2),PALTAB%?((PE%*2)+1),0):RECTANGLE FILL WOX%-146,(WOY%+276)-(RK%*40),38,36 5250RECTANGLE FILL WOX%-146,(WOY%+276)-(RK%*40),38,36 5260NEXT 5270SYS "Wimp_GetRectangle",,BLK% TO FIN% 5280ENDWHILE 5290ENDPROC 5300 5310DEFFNctb(co%,ti%):by%=-1:FORL%=0 to 255 5320 5330DEFPROCdrawpicinit 5340!BLK%=HAND%(2) 5350BLK%!4=0 5360BLK%!8=-936 5370BLK%!12=1236 5380BLK%!16=0 5390SYS "Wimp_UpdateWindow",,BLK% TO FIN% 5400PROCgetrdor(1024*ZOOM%) 5410ENDPROC 5420 5430DEFPROCforcedrawpal(PTU%) 5440!BLK%=HAND%(3) 5450BLK%!4=0 5460BLK%!8=-228 5470BLK%!12=770 5480BLK%!16=0 5490SYS "Wimp_UpdateWindow",,BLK% TO FIN% 5500PROCgetrdor(228) 5510WHILE FIN% 5520PROCplotpal(PTU%) 5530SYS "Wimp_GetRectangle",,BLK% TO FIN% 5540ENDWHILE 5550ENDPROC 5560 5570DEFPROCforcedrawtback 5580!BLK%=HAND%(15) 5590BLK%!4=0 5600BLK%!8=-228 5610BLK%!12=770 5620BLK%!16=0 5630SYS "Wimp_UpdateWindow",,BLK% TO FIN% 5640PROCgetrdor(228) 5650WHILE FIN% 5660PROCplotpal(OPAL%) 5670PROCcol(63,192,0):RECTANGLE WOX%+((FONTB% MOD 32)*24),WOY%+((FONTB% DIV 32)*28),24,28 5680SYS "Wimp_GetRectangle",,BLK% TO FIN% 5690ENDWHILE 5700ENDPROC 5710 5720DEFPROCforcedrawgraph(WH%) 5730!BLK%=HAND%(WH%) 5740BLK%!4=0:BLK%!8=-300:IF WH%<>28 THEN BLK%!12=300 ELSE BLK%!12=900 5750BLK%!16=0 5760SYS "Wimp_UpdateWindow",,BLK% TO FIN%:PROCgetgraphor 5770WHILE FIN%:PROCdrawgraph:SYS "Wimp_GetRectangle",,BLK% TO FIN%:ENDWHILE:ENDPROC 5780 5790DEFPROCredrawgraph 5800SYS "Wimp_RedrawWindow",,BLK% TO FIN% 5810PROCgetgraphor 5820WHILE FIN%:PROCdrawgraph:SYS "Wimp_GetRectangle",,BLK% TO FIN%:ENDWHILE:ENDPROC 5830 5840DEFPROCgetgraphor 5850WOX%=(BLK%!4-BLK%!20)+44 5860WOY%=(BLK%!16-BLK%!24)-256 5870ENDPROC 5880 5890DEFPROCdrawgraph 5900PROCcol(63,192,0):RECTANGLE FILL WOX%+2,WOY%+4,252,248:PROCcol(0,0,0):LINE WOX%,WOY%,WOX%,WOY%+252:LINE WOX%,WOY%,WOX%+254,WOY% 5910CASE FUSE% OF 5920WHEN 43:CONL%=VALFNgi(26,18):CONH%=VALFNgi(26,20):IF CONL%<CONH% THEN PLOT4,WOX%+CONL%*17,WOY%:PLOT5,WOX%+CONH%*17,WOY%+252 ELSE PLOT4,WOX%+CONH%*17,WOY%+252:PLOT5,WOX%+CONL%*17,WOY% 5930WHEN 44:POL%=VALFNgi(27,22):POH%=VALFNgi(27,24):PON%=VALFNgi(27,26) 5940STWI=PON%/16:STHE=(POH%-POL%)/(PON%-1):FORL%=0 TO 15:BH%=POL%+(INT(STWI*L%)*STHE):RECTANGLE WOX%+(L%*16),WOY%,16,BH%*17 5950NEXT 5960ENDCASE 5970ENDPROC 5980 5990DEFPROCgetpator 6000WOX%=(BLK%!4-BLK%!20)+180 6010WOY%=(BLK%!16-BLK%!24)-340 6020ENDPROC 6030 6040DEFPROCpicpoll 6050SYS "Wimp_GetPointerInfo",,BLK% 6060IF MBUS% AND BLK%!8<>0 THEN ENDPROC ELSE MBUS%=FALSE 6070IF BLK%!8=0 AND LEGO% THEN LEGO%=FALSE 6080IF BLK%!8<>0 AND LEGO% THEN BLK%!8=0 6090WE%=0:FORPC%=0 TO NOWIND%:IF BLK%!12=HAND%(PC%) THEN WE%=1:PC%=NOWIND%:NEXT ELSE NEXT 6100IF WE%=0 THEN IDRAG%=(BLK%!8<>0) 6110IF BLK%!8=0 THEN IDRAG%=FALSE 6120IF BLK%!12<>HAND%(2) OR BLK%!16<>-1 THEN ENDPROC 6130IF BLK%!8<>0 AND IDRAG% THEN ENDPROC 6140X%=!BLK%:Y%=BLK%!4:BUT%=BLK%!8 6150IF BUT%=2 THEN ENDPROC 6160CASE FUSE% OF 6170WHEN 1:IF FUST%=0 AND BUT%<>0 THEN PROCpicpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:GOTO 7190 6180IF BUT%=0 OR FUST%=0 THEN FUST%=0:GOTO 7190 6190PROCpicpos:PROCinpic:PROCsetcol:PROCl(X%(0),Y%(0),X%,Y%):PROCoutpic 6200PROCquickdrawmain 6210X%(0)=X%:Y%(0)=Y% 6220WHEN 4:IF FUST%=0 THEN PROCpaintscale:PROCpicpos:PROCinpic:PROCeorback:PROCpaintbrush(X%,Y%):PROCoutpic:PROCquickdrawmain:OX%=X%:OY%=Y%:FUST%=1:GOTO 7190 6230PROCpicpos 6240IF X%<>OX% OR Y%<>OY% THEN PROCpaintscale:PROCinpic:PROCeorback:PROCpaintbrush(OX%,OY%):PROCpaintbrush(X%,Y%):OX%=X%:OY%=Y%:PROCoutpic:PROCquickdrawmain 6250WHEN 11:IF FUST%=0 AND BUT%<>0 THEN PROCpicpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:PROCoutpic:PROCquickdrawmain:PROCletgo:GOTO 7190 6260IF FUST%=0 THEN GOTO 7190 6270IF BUT%=1 AND FUST%=1 THEN PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:PROCpicpos:OX%=X%:OY%=Y%:FUST%=0:PROCoutpic:PROCquickdrawmain:PROCletgo:GOTO 7190 6280IF BUT%=1 AND FUST%=2 THEN PROCinpic:PROCeoc:PROCelip(&C5,OX%,OY%):PROCpicpos:FUST%=0:PROCoutpic:PROCquickdrawmain:PROCletgo:GOTO 7190 6290IF BUT%=4 AND (OX%<>X%(0) OR OY%<>Y%(0)) AND FUST%=1 THEN PROCinpic:PROCeoc:X%(1)=OX%:Y%(1)=OY%:LINE X%(0),Y%(0),OX%,OY%:PROCpicpos:OX%=X%:OY%=Y%:PROCelip(&C5,X%,Y%):PROCoutpic:PROCquickdrawmain:PROCletgo:FUST%=2:GOTO 7190 6300IF BUT%=4 AND (OX%<>X%(1) OR OY%<>Y%(1)) AND FUST%=2 THEN PROCinpic:PROCeoc:PROCpicpos:PROCelip(&C5,OX%,OY%):PROCsetcol:PROCelip(&C5,X%,Y%):OX%=X%:OY%=Y%:PROCoutpic:PROCquickdrawmain:PROCletgo:FUST%=0:GOTO 7190 6310PROCpicpos:IF X%=OX% AND Y%=OY% THEN GOTO 7190 6320IF FUST%=1 THEN PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:OX%=X%:OY%=Y%:LINE X%(0),Y%(0),X%,Y%:PROCoutpic:PROCquickdrawmain 6330IF FUST%=2 THEN PROCinpic:PROCeoc:PROCelip(&C5,OX%,OY%):OX%=X%:OY%=Y%:PROCelip(&C5,X%,Y%):PROCoutpic:PROCquickdrawmain 6340WHEN 13:IF FUST%=0 AND BUT%<>0 THEN PROCpicpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:PROCoutpic:PROCquickdrawmain:PROCletgo:GOTO 7190 6350IF FUST%=0 THEN GOTO 7190 6360IF BUT%=1 AND FUST%=1 THEN PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:PROCpicpos:OX%=X%:OY%=Y%:FUST%=0:PROCoutpic:PROCquickdrawmain:PROCletgo:GOTO 7190 6370IF BUT%=1 AND FUST%=2 THEN PROCinpic:PROCeoc:PROCpara(0,0,OX%,OY%):PROCpicpos:FUST%=0:PROCoutpic:PROCquickdrawmain:PROCletgo:GOTO 7190 6380IF BUT%=4 AND (OX%<>X%(0) OR OY%<>Y%(0)) AND FUST%=1 THEN PROCinpic:PROCeoc:X%(1)=OX%:Y%(1)=OY%:LINE X%(0),Y%(0),OX%,OY%:PROCpicpos:OX%=X%:OY%=Y%:PROCpara(0,0,X%,Y%):PROCoutpic:PROCquickdrawmain:PROCletgo:FUST%=2:GOTO 7190 6390IF BUT%=4 AND (OX%<>X%(1) OR OY%<>Y%(1)) AND FUST%=2 THEN PROCinpic:PROCeoc:PROCpicpos:PROCpara(0,0,OX%,OY%):PROCsetcol:PROCpara(1,0,X%,Y%):OX%=X%:OY%=Y%:PROCoutpic:PROCquickdrawmain:PROCletgo:FUST%=0:GOTO 7190 6400PROCpicpos:IF X%=OX% AND Y%=OY% THEN GOTO 7190 6410IF FUST%=1 THEN PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:OX%=X%:OY%=Y%:LINE X%(0),Y%(0),X%,Y%:PROCoutpic:PROCquickdrawmain 6420IF FUST%=2 THEN PROCinpic:PROCeoc:PROCpara(0,0,OX%,OY%):OX%=X%:OY%=Y%:PROCpara(0,0,X%,Y%):PROCoutpic:PROCquickdrawmain 6430WHEN 16:IF FUST%=0 AND BUT%<>0 THEN PROCpicpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:PROCoutpic:PROCquickdrawmain:PROCletgo:GOTO 7190 6440IF FUST%=0 THEN GOTO 7190 6450IF BUT%=1 AND FUST%=1 THEN PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:PROCpicpos:OX%=X%:OY%=Y%:FUST%=0:PROCoutpic:PROCquickdrawmain:PROCletgo:GOTO 7190 6460IF BUT%=1 AND FUST%=2 THEN PROCinpic:PROCeoc:PROCelip(&B5,OX%,OY%):PROCpicpos:FUST%=0:PROCoutpic:PROCquickdrawmain:PROCletgo:GOTO 7190 6470IF BUT%=4 AND (OX%<>X%(0) OR OY%<>Y%(0)) AND FUST%=1 THEN PROCinpic:PROCeoc:X%(1)=OX%:Y%(1)=OY%:LINE X%(0),Y%(0),OX%,OY%:PROCpicpos:OX%=X%:OY%=Y%:PROCelip(&B5,X%,Y%):PROCoutpic:PROCquickdrawmain:PROCletgo:FUST%=2:GOTO 7190 6480IF BUT%=4 AND (OX%<>X%(1) OR OY%<>Y%(1)) AND FUST%=2 THEN PROCinpic:PROCeoc:PROCpicpos:PROCelip(&B5,OX%,OY%):PROCsetcol:PROCelip(&B5,X%,Y%):OX%=X%:OY%=Y%:PROCoutpic:PROCquickdrawmain:PROCletgo:FUST%=0:GOTO 7190 6490PROCpicpos:IF X%=OX% AND Y%=OY% THEN GOTO 7190 6500IF FUST%=1 THEN PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:OX%=X%:OY%=Y%:LINE X%(0),Y%(0),X%,Y%:PROCoutpic:PROCquickdrawmain 6510IF FUST%=2 THEN PROCinpic:PROCeoc:PROCelip(&B5,OX%,OY%):OX%=X%:OY%=Y%:PROCelip(&B5,X%,Y%):PROCoutpic:PROCquickdrawmain 6520WHEN 23:PROCpoll_23 6530WHEN 25:PROCpoll_25 6540WHEN 27:IF FUST%<2 THEN PROCrectpoll:GOTO 7190 6550PROCspinit:PROCspbuf(161*1024):IF Q% THEN PROCspbuferr 6560PROCbackuppic:PROCswapcorns 6570VARS!20=BTC%:VARS!24=PALTAB% 6580VARS!28=PIC%:VARS!32=SPBUF% 6590VARS!36=X%(0):VARS!40=Y%(0) 6600VARS!44=OX%:VARS!48=OY% 6610A%=VARS:SYS "Hourglass_On":CALL pixaverage:SYS "Hourglass_Off":PROCspinit:PROCforcedrawmain:FUST%=0 6620WHEN 29:IF FUST%=0 THEN PROCpaintscale2:PROCpicpos:PROCinpic:PROCeorback:PROCpaintbrush(X%,Y%):PROCoutpic:PROCquickdrawmain:OX%=X%:OY%=Y%:FUST%=1:GOTO 7190 6630PROCpicpos 6640IF X%<>OX% OR Y%<>OY% THEN PROCpaintscale2:PROCinpic:PROCeorback:PROCpaintbrush(OX%,OY%):PROCpaintbrush(X%,Y%):OX%=X%:OY%=Y%:PROCoutpic:PROCquickdrawmain 6650WHEN 30:IF FUST%=0 THEN PROCpaintscale2:PROCpicpos:PROCinpic:PROCeorback:PROCpaintbrush(X%,Y%):PROCoutpic:PROCquickdrawmain:OX%=X%:OY%=Y%:FUST%=1:GOTO 7190 6660PROCpicpos 6670IF X%<>OX% OR Y%<>OY% THEN PROCpaintscale2:PROCinpic:PROCeorback:PROCpaintbrush(OX%,OY%):PROCpaintbrush(X%,Y%):OX%=X%:OY%=Y%:PROCoutpic:PROCquickdrawmain 6680WHEN 32:IF FONT%<>0 THEN 6690PROCpicpos:IF BUT%=4 AND FUST%<>0 THEN PROCinbackup:SYS "Font_SetFont",FHAND%:SYS "Font_Paint",,TEXT$,16,X%,Y%:PROCoutbackup 6700IF FUST%<>0 AND (X%<>OX% OR Y%<>OY%) THEN ET%=1:PROCrestpic:ET%=2:ET%=3:PROCinpicR:SYS "Font_SetFont",FHAND%:ET%=4:SYS "Font_Paint",,TEXT$,16,X%,Y%:PROCoutbackup:NTTP%+=1:ET%=5:ET%=6:OX%=X%:OY%=Y%:PROCforcedrawmain:ET%=7:OX%=X%:OY%=Y% 6710ELSE 6720PROCpicpos:IF BUT%=4 AND FUST%<>0 THEN PROCinbackup:PROCostext(X%,Y%):PROCoutbackup 6730IF FUST%<>0 AND (X%<>OX% OR Y%<>OY%) THEN PROCrestpic:PROCinpic:PROCostext(X%,Y%):PROCoutpic:PROCforcedrawmain:OX%=X%:OY%=Y% 6740ENDIF:GOTO 7190 6750WHEN 31:IF FUST%<2 THEN PROCrectpoll:GOTO 7190 6760PROCswapcorns:FMINX%=X%(0):FMINY%=Y%(0):FMAXX%=OX%:FMAXY%=OY% 6770SYS "Hourglass_On":PROCfill:SYS "Hourglass_Off":FUST%=0 6780WHEN 33:IF FUST%>=2 THEN GOTO 6800 6790IF FUST%=0 AND BUT%=1 THEN PROCpicpos:PROCinpic:CO%=POINT(X%,Y%):TI%=TINT(X%,Y%):PROCoutpic:SREP%=FNfindpalent(CO%,TI%):PROCforcedrawcolrep:GOTO 7190 ELSE PROCrectpoll:GOTO 7190 6800PROCswapcorns:FMINX%=X%(0):FMINY%=Y%(0):FMAXX%=OX%:FMAXY%=OY% 6810SYS "Hourglass_On":!VARS=PIC%:VARS!4=PIC%:VARS!8=X%(0):VARS!12=Y%(0):VARS!16=OX%:VARS!20=OY%:VARS!24=BTC%:VARS!28=TTB%:VARS!32=REPS%:A%=VARS:CALL colrep:SYS "Hourglass_Off":FUST%=0:PROCforcedrawmain 6820WHEN 34:IF FNhigh(31,3) OR FNhigh(31,4) THEN GOTO 7190 6830IF FUST%=0 THEN 6850 6840IF BUT%=4 THEN PROCinpic:PROCpicpos:PROCpimport(OX%,OY%,3):PROCimptile:OX%=X%:OY%=Y%:PROCpimport(OX%,OY%,3):PROCoutpic:PROCquickdrawmain:GOTO 7190 6850IF FUST%=0 THEN FUST%=1:PROCpicpos:OX%=X%:OY%=Y%:PROCinpic:PROCpimport(X%,Y%,3):PROCoutpic:PROCquickdrawmain:GOTO 7190 6860PROCpicpos:IF X%=OX% AND Y%=OY% THEN GOTO 7190 6870PROCinpic:PROCpimport(OX%,OY%,3):OX%=X%:OY%=Y%:PROCpimport(X%,Y%,3):PROCoutpic:PROCquickdrawmain 6880WHEN 36:IF FUST%=0 THEN PROCpicpos:PROCinpic:PROCeoc:RECTANGLE X%,Y%,FRW%*2,FRH%*4:PROCoutpic:PROCquickdrawmain:OX%=X%:OY%=Y%:FUST%=1 6890PROCpicpos:IF X%<>OX% OR Y%<>OY% THEN PROCinpic:PROCeoc:RECTANGLE OX%,OY%,FRW%*2,FRH%*4:OX%=X%:OY%=Y%:RECTANGLE OX%,OY%,FRW%*2,FRH%*4:PROCoutpic:PROCquickdrawmain 6900IF BUT%<>4 THEN 7190 6910PROCinpic:PROCeoc:RECTANGLE OX%,OY%,FRW%*2,FRH%*4:PROCsetcol:RECTANGLE OX%,OY%,FRW%*2,FRH%*4:PROCeoc:RECTANGLE OX%,OY%,FRW%*2,FRH%*4:PROCoutpic:PROCquickdrawmain 6920WHEN 38:PROCpoll_38 6930WHEN 39:PROCpoll_39 6940WHEN 40:PROCpoll_40 6950WHEN 41:PROCpoll_41 6960WHEN 42:IF FUST%<2 THEN PROCrectpoll:GOTO 7190 6970PROCsupixtrans 6980RW%=VALFNgi(25,13):GW%=VALFNgi(25,15):BW%=VALFNgi(25,17):FORL%=0 TO 255:SYS "ColourTrans_ColourNumberToGCOL",L% TO G% 6990RC%=(G%AND%1111)*RW%:GC%=(((G%AND48)>>2)+(G%AND3))*GW%:BC%=(((G%AND192)>>4)+(G%AND3))*BW% 7000TC%=((RC%+GC%+BC%)DIV3):IF TC%>15 THEN TC%=15 7010TC%=(TC% AND 3)+((TC%AND12)*RSM%)+(((TC%AND12)<<2)*GSM%)+(((TC%AND12)<<4)*BSM%):SYS"ColourTrans_GCOLToColourNumber",TC% TO TC% 7020TRANSTAB%?L%=TC%:NEXT 7030A%=VARS:CALL transarea:SYS "Hourglass_Off":FUST%=0:PROCforcedrawmain 7040WHEN 43:PROCpoll_43 7050WHEN 44:PROCpoll_44 7060WHEN 47:IF FUST%<2 THEN PROCrectpoll:GOTO 7190 7070PROCspinit:PROCspbuf(161*1024):IF Q% THEN PROCspbuferr 7080PROCbackuppic:PROCswapcorns 7090VARS!8=X%(0):VARS!12=Y%(0):VARS!16=OX%:VARS!20=OY%:VARS!24=VAL(FNgi(29,5)):VARS!28=BLK%+512:A%=VARS:SYS"Hourglass_On":CALL filter:SYS"Hourglass_Off":PROCspinit:PROCforcedrawmain:FUST%=0 7100WHEN 48:IF FUST%<2 THEN PROCrectpoll:GOTO 7190 7110PROCspinit:PROCspbuf(161*1024):IF Q% THEN PROCspbuferr 7120PROCbackuppic:PROCswapcorns 7130WE%=1:GOTO 7230 7140IF FNhigh(30,25) THEN VARS!36=1 ELSE VARS!36=&280 7150VARS!40=0:IF FNhigh(30,44) THEN VARS!40=1 7160IF FNhigh(30,32) THEN VARS!44=1 ELSE VARS!44=0 7170VARS!8=X%(0):VARS!12=Y%(0):VARS!16=OX%:VARS!20=OY%:VARS!24=TAS%+512:VARS!28=BTC%:VARS!32=TRASP%:A%=VARS:CALL wobble:SYS "Hourglass_Off":PROCspinit:PROCforcedrawmain:FUST%=0 7180IF WER% THEN PROCkillf:FUSE%=-1:GOTO 90 7190ENDCASE 7200ENDPROC 7210 7220REM ** This is jumped straight to because of error control (flub!) 7230A=VAL(FNgi(30,42)):K%=TAS%+512:L%=0:WER%=FALSE:ER%=FALSE:F$=FNgi(30,27):MG%=VAL(FNgi(30,5)):SYS "Hourglass_On":PROCsi(30,36," ") 7240ON ERROR ER%=TRUE:WER%=TRUE:GOTO 7260 7250K%!(L%*4)=EVAL(F$)*MG% 7260IF ER%=TRUE THEN PROCsi(30,36,"Error at A="+STR$(A)):K%!L%=0:ER%=FALSE 7270A+=VAL(FNgi(30,11)):L%+=1:IF L%<618 THEN GOTO 7250 7280ON ERROR PROCmakerr 7290IF WE%=2 THEN GOTO 12100 ELSE GOTO 7140 7300 7310DEFPROCcontrast(RETURN L%) 7320IF CONL%>CONH% THEN GOTO 7350 7330IF L%<=CONL% THEN L%=0:ENDPROC ELSE IF L%>=CONH% THEN L%=15:ENDPROC 7340K%=L%-CONL%:I%=CONH%-CONL%:L%=(K%/I%)*15:ENDPROC 7350IF CONL%=CONH% THEN GOTO 7380 7360IF L%<=CONH% THEN L%=15:ENDPROC ELSE IF L%>=CONL% THEN L%=15:ENDPROC 7370K%=L%-CONH%:I%=CONL%-CONH%:L%=15-((K%/I%)*15):ENDPROC 7380IF L%<CONL% THEN L%=0 ELSE L%=15 7390ENDPROC 7400 7410DEFPROCsupixtrans:PROCswapcorns:FMINX%=X%(0):FMINY%=Y%(0):FMAXX%=OX%:FMAXY%=OY%:SYS "Hourglass_On":!VARS=PIC%:VARS!4=PIC%:VARS!8=X%(0):VARS!12=Y%(0):VARS!16=OX%:VARS!20=OY%:VARS!24=TRASP%:VARS!28=BTC%:VARS!32=TRANSTAB%:ENDPROC 7420 7430DEFPROCprotbox(CX%,CY%):PROCeoc:R%=ROT%:PROCrotpoint(FMINX%,FMINY%,R%,X1%,Y1%):PROCrotpoint(FMAXX%,FMINY%,R%,X2%,Y2%):PROCrotpoint(FMAXX%,FMAXY%,R%,X3%,Y3%):PROCrotpoint(FMINX%,FMAXY%,R%,X4%,Y4%) 7440PROCrotpoint(0,(FMAXY%DIV3)*2,R%,MX1%,MY1%):PROCrotpoint(0,(FMAXY%DIV3)*4,R%,MX2%,MY2%) 7450X1%+=CX%:X2%+=CX%:X3%+=CX%:X4%+=CX% 7460Y1%+=CY%:Y2%+=CY%:Y3%+=CY%:Y4%+=CY% 7470PLOT4,X1%,Y1%:PLOT5,X2%,Y2%:PLOT5,X3%,Y3%:PLOT5,X4%,Y4%:PLOT5,X1%,Y1% 7480LINE MX1%+CX%,MY1%+CY%,MX2%+CX%,MY2%+CY% 7490ENDPROC 7500 7510DEFPROCrotpoint(R0%,R1%,R%,RETURN RPX%,RETURN RPY%) 7520R6%=(ROTTAB%!(R%*4))>>12:R7%=(!(ROTTAB%+(R%*4)+&168))>>12:R8%=R0%*R6%:R5%=R1%*R7%:R8%-=R5%:R5%=R1%*R6%:R1%=R0%*R7%:R1%+=R5%:RPX%=R1%>>18:RPY%=-(R8%>>18) 7530ENDPROC 7540 7550DEFFNperc(WH%,IH%) 7560I$=FNgi(WH%,IH%):IF RIGHT$(I$,1)="%" THEN I$=LEFT$(I$,LEN(I$)-1) 7570=VAL(I$) 7580 7590DEFPROCgrabpoll(FT%) 7600IF FUST%=0 AND BUT%<>0 THEN PROCpicpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCoutpic:PROCquickdrawmain:PROCletgo:ENDPROC 7610IF FUST%=0 THEN ENDPROC 7620IF BUT%=1 THEN PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCpicpos:OX%=X%:OY%=Y%:FUST%=0:PROCoutpic:PROCquickdrawmain:PROCletgo:ENDPROC 7630IF BUT%<>4 OR (OX%=X%(0) AND OY%=Y%(0)) THEN GOTO 7720 7640PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCpicpos:PROCspbuf(FNspritesize(X%-X%(0),Y%-Y%(0),ABS(FNhigh(8,14)))):IF Q% THEN RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCoutpic:PROCspinit:PROCspbuferr 7650GRN$="GRAB":SYS&2E,272,SPBUF%,"GRAB",,X%(0),Y%(0),X%,Y%:IF FNhigh(8,14) THEN SYS&2E,285,SPBUF%,"GRAB":GRABM%=8:PROCfillmask ELSE GRABM%=0 7660GRWI%=ABS(X%-X%(0)):GRHE%=ABS(Y%-Y%(0)) 7670IF X%<X%(0) THEN SWAP X%(0),X% 7680IF Y%<Y%(0) THEN SWAP Y%(0),Y% 7690IF FT%=1 THEN SYS&2E,290,SPBUF%,"GRAB",X%(0),Y%(0),3+GRABM% 7700PROCpgrab(X%,Y%,3) 7710OX%=X%:OY%=Y%:PROCoutpic:PROCquickdrawmain:PROCletgo:FUST%=2:ENDPROC 7720PROCpicpos:IF X%=OX% AND Y%=OY% THEN ENDPROC 7730PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):OX%=X%:OY%=Y%:RECTANGLE X%(0),Y%(0),X%-X%(0),Y%-Y%(0):PROCoutpic:PROCquickdrawmain 7740ENDPROC 7750 7760DEFPROCrectpoll 7770IF FUST%=0 AND BUT%<>0 THEN PROCpicpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCoutpic:PROCquickdrawmain:PROCletgo:ENDPROC 7780IF FUST%=0 THEN ENDPROC 7790IF BUT%=1 THEN PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCpicpos:OX%=X%:OY%=Y%:FUST%=0:PROCoutpic:PROCquickdrawmain:PROCletgo:ENDPROC 7800IF BUT%<>4 OR (OX%=X%(0) AND OY%=Y%(0)) THEN GOTO 7850 7810PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCpicpos 7820IF X%<X%(0) THEN SWAP X%(0),X% 7830IF Y%<Y%(0) THEN SWAP Y%(0),Y% 7840OX%=X%:OY%=Y%:PROCoutpic:PROCquickdrawmain:PROCletgo:FUST%=2:ENDPROC 7850PROCpicpos:IF X%=OX% AND Y%=OY% THEN ENDPROC 7860PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):OX%=X%:OY%=Y%:RECTANGLE X%(0),Y%(0),X%-X%(0),Y%-Y%(0):PROCoutpic:PROCquickdrawmain 7870ENDPROC 7880 7890DEFPROCpgrab(DX%,DY%,PL%) 7900XR=GRXM%/GRXD% 7910YR=GRYM%/GRYD% 7920!SCALE%=GRXM% 7930SCALE%!4=GRYM% 7940SCALE%!8=GRXD% 7950SCALE%!12=GRYD% 7960SYS&2E,308,SPBUF%,"GRAB",DX%-((GRWI% DIV 2)*XR),DY%-((GRHE% DIV 2)*YR),PL%+GRABM%,SCALE% 7970ENDPROC 7980 7990DEFPROCpimport(DX%,DY%,PL%) 8000XR=GRXM%/GRXD%:YR=GRYM%/GRYD% 8010IO%!20=(!IO%)*GRXM% 8020IO%!24=(IO%!4)*GRYM% 8030IO%!28=(IO%!8)*GRXD% 8040IO%!32=(IO%!12)*GRYD% 8050IF NOT GRMA% THEN SYS&2E,308,SPBUF%,GRN$,DX%-((IMW% DIV 2)*XR),DY%-((IMH% DIV 2)*YR),PL%,IO%+20,IMPT% ELSE SYS&2E,308,SPBUF%,GRN$,DX%-((IMW% DIV 2)*XR),DY%-((IMH% DIV 2)*YR),PL%+8,IO%+20,IMPT% 8060ENDPROC 8070 8080DEFPROCpara(LT%,PL%,DX%,DY%) 8090IF PL%=1 THEN PROCelip(&75,DX%,DY%):ENDPROC 8100IF LT%=1 THEN 8110PROCl(X%(0),Y%(0),X%(1),Y%(1)) 8120PROCl(X%(1),Y%(1),DX%,DY%) 8130PLOT LITY%-4,X%(0)-X%(1),Y%(0)-Y%(1) 8140PLOT LITY%,X%(0),Y%(0) 8150ELSE 8160LINE X%(0),Y%(0),X%(1),Y%(1) 8170LINE X%(1),Y%(1),DX%,DY% 8180PLOT1,X%(0)-X%(1),Y%(0)-Y%(1) 8190PLOT5,X%(0),Y%(0) 8200ENDIF 8210ENDPROC 8220 8230DEFPROCelip(PL%,DX%,DY%) 8240MOVE X%(0),Y%(0) 8250MOVE X%(1),Y%(1) 8260PLOT PL%,DX%,DY% 8270ENDPROC 8280 8290DEFPROCtri(PL%,DX%,DY%) 8300IF PL%=5 OR PL%=85 THEN PLOT4,DX%,DY%:PLOT 5,X%(0),Y%(0):PLOT 5,X%(1),Y%(1):PLOT PL%,DX%,DY% ELSE PLOT4,DX%,DY%:PLOT LITY%,X%(0),Y%(0):PLOT LITY%,X%(1),Y%(1):PLOT LITY%,DX%,DY% 8310ENDPROC 8320 8330DEFFNdist(DX%,DY%):=SQR(((DX%-X%(0))^2)+((DY%-Y%(0))^2)) 8340 8350DEFPROCpaintbrush(BX%,BY%):SYS&2E,306,BRUSH%,STR$(SELBR%),BX%-(32*XR),BY%-(32*YR),,SCALE%:ENDPROC 8360 8370DEFPROCpaintbrush2(BX%,BY%):SYS&2E,305,BRUSH%,STR$(SELBR%),BX%-32,BY%-32:ENDPROC 8380 8390DEFPROCletgo:LEGO%=TRUE:ENDPROC:REPEAT:MOUSE X%,Y%,H%:UNTIL H%=0:ENDPROC 8400 8410DEFPROCkillf:LAOPWI%=-1:IF TKH%<>-1 THEN PROCiconlo(32,TKH%):TKH%=-1 8420CASE FUSE% OF 8430IF FUSE%<>32 THEN PROCspbuf(0) 8440 8450 8460WHEN 4:PROCclosewind(5):IF FUST%>0 THEN PROCinpic:PROCpaintscale:PROCeorback:PROCpaintbrush(OX%,OY%):PROCoutpic:PROCquickdrawmain 8470 8480 8490WHEN 11:IF FUST%=1 THEN PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:PROCoutpic:PROCquickdrawmain 8500IF FUST%=2 THEN PROCinpic:PROCeoc:PROCelip(&C5,OX%,OY%):PROCoutpic:PROCquickdrawmain 8510WHEN 13:IF FUST%=1 THEN PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:PROCoutpic:PROCquickdrawmain 8520IF FUST%=2 THEN PROCinpic:PROCeoc:PROCpara(0,0,OX%,OY%):PROCoutpic:PROCquickdrawmain 8530WHEN 16:IF FUST%=1 THEN PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:PROCoutpic:PROCquickdrawmain 8540IF FUST%=2 THEN PROCinpic:PROCeoc:PROCelip(&B5,OX%,OY%):PROCoutpic:PROCquickdrawmain 8550WHEN 18:PROCkill_18 8560WHEN 19:PROCkill_19 8570WHEN 20:PROCkill_20 8580WHEN 21:PROCkill_21 8590WHEN 22:IF FUST%=1 THEN PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCoutpic:PROCquickdrawmain 8600WHEN 23:PROCkill_23 8610WHEN 25:PROCkill_25 8620WHEN 27:IF FUST%=1 THEN PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCoutpic:PROCquickdrawmain 8630WHEN 28:IF FUST%=1 THEN PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCoutpic:PROCquickdrawmain 8640WHEN 29:PROCclosewind(5):IF FUST%>0 THEN PROCinpic:PROCpaintscale2:PROCeorback:PROCpaintbrush(OX%,OY%):PROCoutpic:PROCquickdrawmain 8650WHEN 30:PROCclosewind(5):IF FUST%>0 THEN PROCinpic:PROCpaintscale2:PROCeorback:PROCpaintbrush(OX%,OY%):PROCoutpic:PROCquickdrawmain 8660WHEN 32:PROCrestpic:PROCforcedrawmain:PROCclosewind(14):PROCspinit:IF FONT%<>0 THEN PROClosefont 8670WHEN 31:IF GRTY%=1 THEN 8680IF FUST%=1 THEN PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCoutpic:PROCquickdrawmain 8690ENDIF 8700WHEN 33:PROCclosewind(18):PROCspinit:IF FUST%=1 THEN PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCoutpic:PROCquickdrawmain 8710WHEN 34:IF FUST%=1 THEN PROCinpic:PROCpimport(OX%,OY%,3):PROCoutpic:PROCquickdrawmain 8720PROCclosewind(8):PROCspinit 8730WHEN 35:IF FUST%<2 THEN PROCclosewind(8) 8740IF FUST%=1 THEN PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCoutpic:PROCquickdrawmain 8750IF FUST%=3 THEN PROCclosewind(7) 8760WHEN 36:IF FUST%<>0 THEN PROCinpic:PROCeoc:RECTANGLE OX%,OY%,FRW%*2,FRH%*4:PROCoutpic:PROCquickdrawmain 8770 8780WHEN 38:PROCkill_38 8790WHEN 39:PROCkill_39 8800WHEN 40:PROCkill_40 8810WHEN 41:PROCkill_41 8820WHEN 42:PROCclosewind(25):PROCmeoc 8830WHEN 43:PROCkill_43 8840WHEN 44:PROCkill_44 8850 8860 8870WHEN 47:PROCclosewind(29):PROCmeoc 8880WHEN 48:PROCclosewind(30):PROCmeoc 8890ENDCASE 8900PROCwindname(2,PIC$) 8910ENDPROC 8920 8930DEFPROCmeoc:PROCspinit:IF FUST%=1 THEN PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCoutpic:PROCquickdrawmain 8940ENDPROC 8950 8960DEFPROCeoc:GCOL3,63 TINT 192:ENDPROC 8970 8980DEFPROCeorback:GCOL3,191 TINT 192:ENDPROC 8990 9000DEFPROCpickcol 9010XOF%=!BLK%:YOF%=BLK%!4:PROCscreentowork(HAND%(3), XOF%,YOF%):YOF%=228+YOF% 9020IF XOF%>766 THEN XOF%=766 9030IF YOF%>220 THEN YOF%=220 9040IF MOUB%=4 THEN COL%=(XOF% DIV 24)+((YOF% DIV 28)*32) ELSE IF MOUB%=1 THEN PROCtrasp((XOF% DIV 24)+((YOF% DIV 28)*32)) 9050PROCforcedrawpal(PAL%) 9060ENDPROC 9070 9080DEFPROCtbackclick 9090BLK%!8=HAND%(15):SYS "Wimp_GetWindowState",,BLK%+8 9100XOF%=(!BLK%)-(BLK%!12):IF XOF%>766 THEN XOF%=766 9110YOF%=(BLK%!4)-(BLK%!16):IF YOF%>220 THEN YOF%=220 9120FONTB%=(XOF% DIV 24)+((YOF% DIV 28)*32) 9130PROCforcedrawtback 9140ENDPROC 9150 9160DEFPROCpicpos 9170SCRX%=!BLK%:SCRY%=BLK%!4 9180BLK%!8=HAND%(2):SYS "Wimp_GetWindowState",,BLK%+8 9190X%=(((!BLK%)-(BLK%!12))+(BLK%!28)) DIV ZOOM% 9200Y%=1024-((((BLK%!24)-(BLK%!4))-(BLK%!32)) DIV ZOOM%) 9210IF X%<0 THEN X%=0 9220IF X%>1279 THEN X%=1279 9230IF Y%<0 THEN Y%=0 9240IF Y%>1023 THEN Y%=1023 9250IF NOT GRLO% THEN ENDPROC 9260XOF%=(GRIWI%-GRBX%)*2 9270YOF%=(GRIHE%-GRBY%)*4 9280X%+=XOF%:Y%+=YOF% 9290X%=-XOF%+((X% DIV (2*GRIWI%))*2*GRIWI%) 9300Y%=-YOF%+((Y% DIV (4*GRIHE%))*4*GRIHE%) 9310ENDPROC 9320 9330DEFPROCgetrdor(WE%) 9340WOX%=BLK%!4-BLK%!20:WOY%=(BLK%!16-BLK%!24)-WE%:ENDPROC 9350 9360DEFPROCopenmain:MOP%=TRUE 9370!BLK%=HAND%(2):BLK%!4=0:BLK%!8=300:BLK%!12=1279:BLK%!16=1023:BLK%!20=0:BLK%!24=0:BLK%!28=-1:SYS "Wimp_OpenWindow",,BLK% 9380ENDPROC 9390 9400DEFPROCopenpal 9410!BLK%=HAND%(3):BLK%!4=100:BLK%!8=300:BLK%!12=1279:BLK%!16=600:BLK%!20=0:BLK%!24=0:BLK%!28=-1:SYS "Wimp_OpenWindow",,BLK% 9420ENDPROC 9430 9440DEFPROCopenwind(WH%):IF WH%>2 THEN LAOPWI%=WH% 9450!BLK%=HAND%(WH%):SYS "Wimp_GetWindowState",,BLK% 9460BLK%!28=-1:SYS "Wimp_OpenWindow",,BLK% 9470ENDPROC 9480 9490DEFPROCclosewind(WH%) 9500!BLK%=HAND%(WH%):SYS "Wimp_CloseWindow",,BLK% 9510ENDPROC 9520 9530DEFPROCopmain 9540SYS "Wimp_OpenWindow",,BLK% 9550ENDPROC 9560 9570DEFPROCclmain:MOP%=FALSE 9580SYS "Wimp_CloseWindow",,BLK% 9590ENDPROC 9600 9610DEFPROCairnoz 9620H%=-1:FORL%=21 TO 33 STEP 2:IF FNhigh(4,L%) THEN H%=L%:L%=33 9630NEXT 9640CASE H% OF 9650WHEN 21:XR=1:YR=.25 9660WHEN 23:XR=1:YR=.5 9670WHEN 25:XR=1:YR=.75 9680WHEN 27:XR=1:YR=1 9690WHEN 29:XR=.75:YR=1 9700WHEN 31:XR=.5:YR=1 9710WHEN 33:XR=.25:YR=1 9720ENDCASE 9730ENDPROC 9740 9750DEFPROCpaintscale 9760!SCALE%=BXM% 9770SCALE%!4=BYM% 9780SCALE%!8=BXD% 9790SCALE%!12=BYD% 9800XR=BXM%/BXD% 9810YR=BYM%/BYD% 9820ENDPROC 9830 9840DEFPROCpaintscale2 9850!SCALE%=1 9860SCALE%!4=1 9870SCALE%!8=1 9880SCALE%!12=1 9890XR=1 9900YR=1 9910ENDPROC 9920 9930DEFPROCpicclick 9940IF MBUS% AND MOUB%<>0 THEN ENDPROC ELSE MBUS%=FALSE 9950CASE FUSE% OF 9960WHEN -1:IF MOUB%=1 THEN PROCpicpos:PROCinpic:CO%=POINT(X%,Y%):TI%=TINT(X%,Y%):GCOL3,63 TINT 192:PLOT69,400,400:PLOT69,400,400:PROCoutpic:PROCtrasp(FNfindpalent(CO%,TI%)):PROCforcedrawpal(PAL%):GOTO 10400 9970IF MOUB%=4 THEN PROCop1:GOTO 10400 9980WHEN 0:PROCpicpos:PROCinpic:PROCsetcol:PLOT69,X%,Y%:PROCoutpic:PROCquickdrawmain 9990WHEN 4:PROCpaintscale:PROCinpic:PROCpicpos 10000IF FUST%<>0 THEN PROCeorback:PROCpaintbrush(OX%,OY%) 10010PROCsetbackcol:PROCpaintbrush(X%,Y%):OX%=X%:OY%=Y%:FUST%=1 10020PROCeorback:PROCpaintbrush(OX%,OY%) 10030PROCoutpic:PROCquickdrawmain 10040WHEN 24:IF MOUB%<>4 THEN GOTO 10400 10050PROCpicpos:PROCinpic:GCOL3,63 TINT 192:PLOT69,400,400:PLOT69,400,400:PROCsetcol:TCO%=POINT(X%-2,Y%):TTI%=TINT(X%-2,Y%):TPE%=FNfindpalent(TCO%,TTI%):IF TPE%=COL% THEN PROCoutpic:PROCmessage(0,"Cannot trace the colour you are using.") 10060PROCtrace(X%,Y%,TCO%,TTI%):PROCoutpic:PROCquickdrawmain 10070WHEN 29:PROCpaintscale2:PROCinpic:PROCpicpos 10080IF FUST%<>0 THEN PROCeorback:PROCpaintbrush2(OX%,OY%) 10090VARS!20=BTC%:VARS!24=PALTAB% 10100VARS!28=PIC%:VARS!32=SPBUF% 10110VARS!36=X%-32:VARS!40=Y%-32 10120VARS!44=SELBR%:VARS!48=BRUSH% 10130A%=VARS:CALL averagebrush 10140GCOL3,63:RECTANGLE X%-32,Y%-32,64,64:RECTANGLE X%-32,Y%-32,64,64 10150OX%=X%:OY%=Y%:FUST%=1:PROCeorback:PROCpaintbrush2(OX%,OY%) 10160PROCoutpic:PROCquickdrawmain 10170WHEN 30:PROCpaintscale2:PROCinpic:PROCpicpos 10180IF FUST%<>0 THEN PROCeorback:PROCpaintbrush2(OX%,OY%) 10190VARS!20=BTC%:VARS!24=PALTAB% 10200VARS!28=PIC%:VARS!32=SPBUF% 10210VARS!36=X%-32:VARS!40=Y%-32 10220VARS!44=SELBR%:VARS!48=BRUSH% 10230VARS!84=PALTAB%?(COL%*2):VARS!88=PALTAB%?((COL%*2)+1) 10240A%=VARS:CALL tintbrush 10250GCOL3,63:RECTANGLE X%-32,Y%-32,64,64:RECTANGLE X%-32,Y%-32,64,64 10260OX%=X%:OY%=Y%:FUST%=1:PROCeorback:PROCpaintbrush2(OX%,OY%) 10270PROCoutpic:PROCquickdrawmain 10280WHEN 31:IF MOUB%<>4 OR GRTY%=1 THEN ENDPROC 10290PROCspinit:PROCspbuf(161*1024):IF Q% THEN PROCspbuferr 10300PROCbackuppic 10310PROCinbackup:PROCpicpos:FBC%=POINT(X%,Y%):FBT%=TINT(X%,Y%):GCOL0,FBC%+128 TINT FBT%:FUT%=(FBC%+1) MOD 64 10320GCOL0,FUT% TINT FBT%:SYS "Hourglass_On":FILL X%,Y%:PROCoutbackup 10330A%=VARS:B%=PIC%:C%=SPBUF%:CALL findchangebox 10340FMINX%=(!VARS)*2 10350FMINY%=(VARS!4)*4 10360FMAXX%=(VARS!8)*2 10370FMAXY%=(VARS!12)*4 10380PROCfill 10390SYS "Hourglass_Off" 10400ENDCASE 10410ENDPROC 10420 10430DEFPROCfill 10440NOS%=VALFNgi(13,83) 10450NOF%=GRFN% 10460ET%=0 10470IF FNhigh(13,87) THEN ET%=1 10480IF FNhigh(13,89) THEN ET%=2 10490IF FNhigh(13,91) THEN ET%=3 10500IF FNhigh(13,93) THEN ET%=4 10510FIT%=-1 10520IF FNhigh(13,67) THEN FIT%=1 10530IF FNhigh(13,69) THEN FIT%=2 10540IF FNhigh(13,71) THEN FIT%=3 10550IF FNhigh(13,73) THEN FIT%=4 10560IF FNhigh(13,75) THEN FIT%=5 10570IF FNhigh(13,77) THEN FIT%=6 10580IF ET%=1 OR ET%=2 THEN FIT%=1 10590IF ET%=3 OR ET%=4 THEN FIT%=4 10600IF FIT%=-1 THEN PROCspinit:PROCmessage(0,"You must choose a type of fill.") 10610CASE FIT% OF 10620WHEN 1:FIW%=FMAXX%-FMINX%:FIFC%=0:LAFC%=255:FID%=1 10630WHEN 2:FIW%=FMAXX%-FMINX%:FIFC%=255:LAFC%=0:FID%=-1 10640WHEN 4:FIW%=FMAXY%-FMINY%:FIFC%=0:LAFC%=255:FID%=1 10650WHEN 3:FIW%=FMAXY%-FMINY%:FIFC%=255:LAFC%=0:FID%=-1 10660WHEN 5:FIFC%=0:LAFC%=255:FID%=1 10670WHEN 6:FIFC%=255:LAFC%=0:FID%=-1 10680ENDCASE 10690IF FIT%=5 OR FIT%=6 THEN 10700IF (FMAXX%-X%)>(X%-FMINX%) THEN XOF%=FMAXX%-X% ELSE XOF%=X%-FMINX% 10710IF (FMAXY%-Y%)>(Y%-FMINY%) THEN YOF%=FMAXY%-Y% ELSE YOF%=Y%-FMINY% 10720FIW%=SQR((XOF%^2)+(YOF%^2)):IF GRTY%=1 THEN FIW%=FIW%/2 10730ENDIF 10740IF FIW%=0 OR NOS%=1 THEN PROCmessage(5,"You cannot use a graduated fill on an area that small.") 10750CPP%=(255<<8) DIV FIW%:CPS%=(255<<8) DIV (NOS%-1) 10760I%=IO%:FORL%=0 TO 15:?I%=GRFI%(L%,0,NOF%):I%?1=GRFI%(L%,1,NOF%):I%+=2:NEXT 10770!VARS=PIC%:IF GRTY%=0 THEN VARS!4=SPBUF% ELSE VARS!4=PIC% 10780VARS!8=IO%:VARS!12=NOS%:VARS!16=FIFC%:VARS!20=LAFC%:VARS!24=FID%:VARS!28=CPP%:VARS!32=CPS%:VARS!36=X%:VARS!40=Y%:VARS!44=ROTTAB%:VARS!48=FIT%:VARS!52=FMINX%:VARS!56=FMINY%:VARS!60=FMAXX%:VARS!64=FMAXY% 10790IF GRTY%=1 THEN VARS!36=(FMINX%+FMAXX%)DIV2:VARS!40=(FMINY%+FMAXY%)DIV2 10800VARS!68=RAND%:VARS!72=0 10810VARS!76=VALFNgi(13,81) 10820IF FNhigh(13,54) THEN VARS!80=1 ELSE VARS!80=0 10830VARS!84=ET%:VARS!88=TRASP%:VARS!92=GRTY%:VARS!96=BTC% 10840FORL%=0 TO 4092 STEP 4:RAND%!L%=RND(CPS%):NEXT 10850A%=VARS 10860CALL graduatedfill 10870PROCspinit:PROCforcedrawmain 10880ENDPROC 10890 10900DEFPROChg:SYS "Hourglass_Smash":ENDPROC 10910 10920DEFPROCswapcorns 10930IF X%(0)>OX% THEN SWAP X%(0),OX% 10940IF Y%(0)>OY% THEN SWAP Y%(0),OY% 10950ENDPROC 10960 10970DEFFNsamecol(x1%,y1%,col%,tin%):=(POINT(x1%,y1%)=col% AND TINT(x1%,y1%)=tin%) 10980 10990DEFPROCl(x1%,y1%,x2%,y2%):PLOT4,x1%,y1%:PLOT LITY%,x2%,y2%:ENDPROC 11000 11010DEFPROCr(x1%,y1%,x2%,y2%):PLOT4,x1%,y1%:PLOT LITY%-4,x2%,0:PLOT LITY%-4,0,y2%:PLOT LITY%-4,-x2%,0:PLOT LITY%-4,0,-y2%:ENDPROC 11020 11030DEFPROCtrace(X%,Y%,TCO%,TTI%) 11040ENDPROC 11050 11060DEFFNfindpalent(CO%,TI%) 11070=CTT%?((CO%*4)+(TI% DIV 64)) 11080 11090DEFPROCsetcol:GCOL USE%,PALTAB%?(COL%*2) TINT PALTAB%?((COL%*2)+1):ENDPROC 11100 11110DEFPROCsetbackcol:GCOL USE%,(PALTAB%?(COL%*2))+128 TINT PALTAB%?((COL%*2)+1):ENDPROC 11120 11130DEFPROCcol(C%,T%,U%) 11140SYS&35,-1,9 TO ,,BP% 11150IF BP%=3 THEN GCOLU%,C% TINT T%:ENDPROC 11160R%=((C% AND %11)*4)+(T% DIV 64):R%+=(R%<<4) 11170G%=(((C% AND %1100)>>2)*4)+(T% DIV 64):G%+=(G%<<4) 11180B%=(((C% AND %110000)>>4)*4)+(T% DIV 64):B%+=(B%<<4) 11190SYS "ColourTrans_SetGCOL",((B%<<24)+(G%<<16)+(R%<<8)),,,,U% 11200ENDPROC 11210 11220DEFPROCanticol(C%,T%,U%) 11230R%=((C% AND %11)*4)+(T% DIV 64):R%+=(R%<<4) 11240G%=(((C% AND %1100)>>2)*4)+(T% DIV 64):G%+=(G%<<4) 11250B%=(((C% AND %110000)>>4)*4)+(T% DIV 64):B%+=(B%<<4) 11260SYS "ColourTrans_ReturnOppGCOLForMode",((B%<<24)+(G%<<16)+(R%<<8)),15 TO GC% 11270GCOL U%,(GC%>>2) TINT (GC% AND %11)*64 11280ENDPROC 11290 11300DEFPROCgridcol 11310PROCcol(GRCO%,GRTI%,0) 11320ENDPROC 11330 11340DEFPROCmakerr:PROCkillf:FUSE%=-1 11350SYS "Wimp_DragBox",,0 11360!BLK%=ERR 11370ER=TRUE 11380$(BLK%+4)=REPORT$+" at line "+STR$(ERL)+CHR$(0) 11390REM $(BLK%+4)="Internal error '"+REPORT$+"' at line "+STR$ERL+"."+CHR$(0) 11400IF ERR<>17 SYS "Wimp_ReportError",BLK%,1,"Imagery" 11410REM PROCaction:END 11411END 11420ENDPROC 11430 11440DEFPROCmessage(M%,M$):PROCoutpic 11450SYS "Wimp_DragBox",,0:!BLK%=M%:$(BLK%+4)=M$+CHR$(0):SYS "Wimp_ReportError",BLK%,1,"Imagery" 11460PROCforcedrawmain 11470PROCaction:END 11480ENDPROC 11490 11500DEFPROCmouse 11510MOUX%=!BLK%:MOUY%=BLK%!4:MOUB%=BLK%!8:MOUH%=BLK%!12:MOUIC%=BLK%!16 11520CASE MOUB% OF 11530WHEN 4,1:CASE MOUH% OF 11540WHEN -2:PROCopenmain 11550WHEN HAND%(0):IF BLK%!16=8 THEN PROCsaveok 11560WHEN HAND%(7):IF BLK%!16=8 THEN PROCspritesaveok 11570WHEN HAND%(2):PROCpicclick 11580WHEN HAND%(3):PROCpickcol 11590WHEN HAND%(4):PROCairbclick 11600WHEN HAND%(5):PROCbrushclick 11610WHEN HAND%(6):PROCgridclick 11620WHEN HAND%(8):PROCgrabclick 11630WHEN HAND%(10):PROClinepatclick 11640WHEN HAND%(11):PROCecfclick 11650WHEN HAND%(12):PROCedbruclick 11660WHEN HAND%(13):PROCfillclick 11670WHEN HAND%(14):PROCtextclick 11680WHEN HAND%(15):PROCtbackclick 11690WHEN HAND%(16):PROCtparclick 11700WHEN HAND%(17):PROCfillcontclick 11710WHEN HAND%(18):PROCcolrepclick 11720WHEN HAND%(19):PROCframeclick 11730WHEN HAND%(20):PROCpatfillclick 11740WHEN HAND%(21):PROCrgbcontclick 11750WHEN HAND%(22):PROCgreyscaleclick 11760WHEN HAND%(23):PROCpixelateclick 11770WHEN HAND%(24):PROCrotateclick 11780WHEN HAND%(25):PROCcolscaleclick 11790WHEN HAND%(26):PROCcontrastclick 11800WHEN HAND%(27):PROCposteriseclick 11810WHEN HAND%(29):PROCfilterclick 11820WHEN HAND%(30):PROCwobbleclick 11830WHEN HAND%(32):PROCtoolclick 11840WHEN HAND%(33):PROCzoomclick 11850WHEN HAND%(34):IF BLK%!16=8 THEN PROCsavesetok 11860ENDCASE 11870WHEN 2:IF MOUH%=-2 THEN PROCiconmenu ELSE IF MOUH%=HAND%(2) THEN PROCwindmenu 11880WHEN 16,64:IF MOUH%=HAND%(0) THEN DRAG%=0:PROCstartdrag 11890IF MOUH%=HAND%(7) THEN DRAG%=7:PROCstartdrag 11900IF MOUH%=HAND%(34) THEN DRAG%=34:PROCstartdrag 11910ENDCASE 11920ENDPROC 11930 11940DEFPROCwobbleclick 11950PROCarrows(30,2,3,5,1,999,1) 11960PROCarrows(30,7,8,11,1,999,1) 11970PROCarrows(30,38,39,42,0,359,1) 11980IF MOUIC%=19 THEN PROCsi(30,27,"COS(RAD(A))") 11990IF MOUIC%=21 THEN PROCsi(30,27,"SIN(RAD(A))") 12000IF MOUIC%=23 THEN PROCsi(30,27,"TAN(RAD(A))") 12010IF MOUIC%<>47 THEN ENDPROC 12020SYS&2E,256+9,SHOW%:SHOW%!32=&12345:SYS&2E,266,SHOW%,"<Imagery$Dir>.Show":IF SHOW%!32=&12345 THEN PROCmessage(0,"Could not load 'Show' sprite from !Imagery folder") 12030PROCspinit:PROCspbuf(161*1024):IF Q% THEN PROCspbuferr 12040PROCbackuppic 12050SYS&2E,256+9,PIC% 12060PROCinbackup:SYS &2E,256+16,PIC%,"SHOW",0,400,400,800,592:SYS&2E,290,SHOW%,"SHOW",400,400:PROCoutbackup 12070PROCinsprite(0,SHOW%,"SHOW"):SYS&2E,290,PIC%,"SHOW":PROCoutsprite 12080!PIC%=161*1024:PIC%!4=0:PIC%!8=24:PIC%!12=24:SYS &2E,271,PIC%,"PIC",0,640,256,15 12090WE%=2:GOTO 7230 12100IF FNhigh(30,25) THEN VARS!36=1 ELSE VARS!36=&280 12110VARS!40=0:IF FNhigh(30,44) THEN VARS!40=1 12120FORL%=0 TO 255:?(TAS%+256+L%)=TRASP%?L%:TRASP%?L%=1:NEXT:TRASP%?254=0 12130VARS!44=0:VARS!8=400:VARS!12=400:VARS!16=802:VARS!20=596:VARS!24=TAS%+512:VARS!28=BTC%:VARS!32=TRASP%:A%=VARS:CALL wobble:SYS "Hourglass_Off":PROCinbackup:SYS&2E,290,SHOW%,"SHOW",400,400:PROCoutbackup 12140SYS&2E,256+9,SHOW%:PROCinpic:SYS&2E,256+16,SHOW%,"SHOW",0,400,400,800,592 12150SYS&2E,290,SPBUF%,"PIC",0,0 12160PROCoutpic:PROCspinit:FORL%=0 TO 255:TRASP%?L%=?(TAS%+256+L%):NEXT:PROCforcedrawwob:IF WER% THEN GOTO 90 12170ENDPROC 12180 12190DEFPROCfilterclick 12200PROCarrows(29,2,3,5,0,8,1) 12210ENDPROC 12220 12230DEFPROCrotateclick 12240ENDPROC 12250 12260DEFPROCrgbcontclick 12270RP%=FNperc(21,13):GP%=FNperc(21,15):BP%=FNperc(21,17) 12280IRP%=RP%:IGP%=GP%:IBP%=BP% 12290PROCarrows(21, 3,5,13,0,100,1) 12300PROCarrows(21, 6,8,15,0,100,1) 12310PROCarrows(21, 9,11,17,0,100,1) 12320RP%=FNperc(21,13):GP%=FNperc(21,15):BP%=FNperc(21,17) 12330IF RP%<>IRP% THEN RSL%=RP%:PROCslidud(1,RP%):PROCgetslor(21,30):PROCredrawslid(21,11,RP%) 12340IF GP%<>IGP% THEN GSL%=GP%:PROCslidud(2,GP%):PROCgetslor(21,31):PROCredrawslid(21,10,GP%) 12350IF BP%<>IBP% THEN BSL%=BP%:PROCslidud(3,BP%):PROCgetslor(21,32):PROCredrawslid(21,8,BP%) 12360IF MOUIC%=30 THEN RSL%=FNslidhit(21,30,MOUX%,MOUY%,11,1):RP%=RSL% 12370IF MOUIC%=31 THEN GSL%=FNslidhit(21,31,MOUX%,MOUY%,10,2):GP%=GSL% 12380IF MOUIC%=32 THEN BSL%=FNslidhit(21,32,MOUX%,MOUY%,8,3):BP%=BSL% 12390ENDPROC 12400 12410DEFPROCslidud(WE%,V%) 12420IF WE%=1 THEN PROCui(21,13,STR$(V%)+"%") 12430IF WE%=2 THEN PROCui(21,15,STR$(V%)+"%") 12440IF WE%=3 THEN PROCui(21,17,STR$(V%)+"%") 12450IF WE%=4 THEN 12460V2%=(V%DIV4):IF V2%=0 THEN V2%=1 12470PROCui(33,8, STR$(V2%)) 12480ENDIF 12490ENDPROC 12500 12510DEFPROCgreyscaleclick 12520PROCarrows(22,3,5,13,0,9,1):PROCarrows(22,6,8,15,0,9,1):PROCarrows(22,9,11,17,0,9,1) 12530ENDPROC 12540 12550DEFPROCcolscaleclick 12560PROCarrows(25,3,5,13,0,9,1):PROCarrows(25,6,8,15,0,9,1):PROCarrows(25,9,11,17,0,9,1) 12570ENDPROC 12580 12590DEFPROCcontrastclick 12600CONL%=VALFNgi(26,18):CONH%=VALFNgi(26,20) 12610PROCarrows(26,11,13,18,0,15,1):PROCarrows(26,14,16,20,0,15,1) 12620IF CONL%<>VALFNgi(26,18) OR CONH%<>VALFNgi(26,20) THEN PROCforcedrawgraph(26) 12630ENDPROC 12640 12650DEFPROCposteriseclick 12660POL%=VALFNgi(27,22):POH%=VALFNgi(27,24):PON%=VALFNgi(27,26) 12670PROCarrows(27,11,13,22,0,15,1):PROCarrows(27,14,16,24,0,15,1):PROCarrows(27,18,20,26,2,16,1) 12680IF POL%<>VALFNgi(27,22) OR POH%<>VALFNgi(27,24) OR PON%<>VALFNgi(27,26) THEN PROCforcedrawgraph(27) 12690ENDPROC 12700 12710DEFPROCpixelateclick 12720PROCarrows(23,2,4,9,1,100,1):PROCarrows(23,5,7,11,1,100,1) 12730ENDPROC 12740 12750DEFPROCframeclick 12760PROCarrows(19,5,7,10,1,640,1):PROCarrows(19,6,8,12,1,256,1) 12770IF MOUIC%<>14 THEN ENDPROC 12780PROCkillf 12790V%=VALFNgi(19,10):IF V%<1 THEN V%=1 12800IF V%>640 THEN V%=640 12810PROCsi(19,10,STR$V%) 12820W%=VALFNgi(19,12):IF W%<1 THEN W%=1 12830IF W%>256 THEN W%=256 12840PROCsi(19,12,STR$W%) 12850FRW%=V%+1:FRH%=W%+1:FUSE%=36:FUST%=0:PROCud:PROCwindname(2,PIC$+" [Set frame]") 12860IF MOUB%=4 THEN PROCmenoff 12870ENDPROC 12880 12890DEFPROCcolrepclick 12900IF MOUIC%=5 THEN SYS "Hourglass_On":FORL%=0 TO 22596 STEP 4:SPBUF%!L%=OPAL%!L%:NEXT:FORL%=0 TO 255:REPS%?L%=L%:NEXT:SYS "Hourglass_Off":PROCforcedrawcolrep:ENDPROC 12910BLK%!8=HAND%(18):SYS "Wimp_GetWindowState",,BLK%+8 12920XOF%=(!BLK%)-((BLK%!12)-(BLK%!28)):IF XOF%>766 THEN XOF%=766 12930YOF%=(BLK%!4)-(((BLK%!24)-(BLK%!32))-556):IF YOF%>550 THEN YOF%=550 12940IF YOF%<=220 THEN 12950C%=(XOF% DIV 24)+((YOF% DIV 28)*32):PROCinsprite(0,SPBUF%,"Palette"):FX%=((SREP% MOD 32)*24)+2:FY%=((SREP% DIV 32)*28)+4:GCOL0,PALTAB%?(C%*2) TINT PALTAB%?((C%*2)+1) 12960RECTANGLE FILL FX%,FY%,20,20:PROCoutsprite:REPS%?SREP%=C%:PROCforcedrawcolrep 12970ENDIF 12980IF YOF%>=290 AND YOF%<514 THEN YOF%-=290:SREP%=(XOF% DIV 24)+((YOF% DIV 28)*32):PROCforcedrawcolrep 12990ENDPROC 13000 13010DEFPROCarrows(W%,DI%,UI%,TI%,LV%,UV%,I%) 13020V%=VALFNgi(W%,TI%):OV%=V%:IF MOUB%=1 THEN WE%=-1 ELSE WE%=1 13030IF MOUIC%=DI% THEN V%-=(I%*WE%) 13040IF MOUIC%=UI% THEN V%+=(I%*WE%) 13050IF V%<LV% THEN V%=LV% 13060IF V%>UV% THEN V%=UV% 13070IF V%<>OV% AND W%<>21 THEN PROCsi(W%,TI%,STR$(V%)) 13080IF V%<>OV% AND W%=21 THEN PROCsi(W%,TI%,STR$(V%)+"%") 13090ENDPROC 13100 13110DEFPROCtparclick 13120ENDPROC 13130 13140DEFPROClosefont 13150IF FONT%<>0 AND FTL% THEN SYS "Font_LoseFont",FHAND%:FTL%=FALSE 13160ENDPROC 13170 13180DEFPROCgetfont 13190IF VALFNgi(14,20)<6 THEN PROCsi(14,20,"6") 13200IF VALFNgi(14,22)<6 THEN PROCsi(14,22,"6") 13210FONTX%=VALFNgi(14,20):FONTY%=VALFNgi(14,22) 13220IF FONT%<>0 THEN FTL%=TRUE:SYS "Font_FindFont",,FO$,FONTX%*16,FONTY%*16 TO FHAND% 13230ENDPROC 13240 13250DEFPROCrestpic 13260PROCinpic 13270SYS&2E,290,SPBUF%,"PIC",0,0 13280PROCoutpic 13290ENDPROC 13300 13310DEFPROCtextclick 13320ENDPROC 13330 13340DEFPROCecfclick 13350IF MOUIC%>25 AND MOUIC%<33 THEN PROCforcedrawpat:ENDPROC 13360IF MOUIC%<>8 THEN ENDPROC 13370IF MOUB%<>1 AND MOUB%<>4 THEN ENDPROC 13380BLK%!8=HAND%(11):SYS "Wimp_GetWindowState",,BLK%+8 13390XOF%=((!BLK%)-(BLK%!12))-180:IF XOF%>766 THEN XOF%=766 13400YOF%=((BLK%!4)-(BLK%!16))-20:IF YOF%>220 THEN YOF%=220 13410col%=(XOF% DIV 24)+((YOF% DIV 28)*32) 13420cby%=TTB%?col% 13430CECF%=FNcecf 13440L%=0:REM FORK%=8 TO 15:IF FNhigh(11,K%) THEN L%=K%-7:NEXT ELSE NEXT 13450IF FNhigh(11,23) THEN L%=1 13460IF FNhigh(11,24) THEN L%=2 13470IF FNhigh(11,16) THEN L%=3 13480FORK%=11 TO 15:IF FNhigh(11,K%) THEN L%=K%-7:NEXT ELSE NEXT 13490IF L%=0 THEN ENDPROC 13500ECF%(L%,CECF%)=cby% 13510PROCforcedrawpat 13520ENDPROC 13530 13540DEFPROCreloadpatfills 13550SYS&2E,266,PFILLS%,"<Imagery$Dir>.PatFills" 13560ENDPROC 13570 13580DEFPROCpatfillclick 13590IF MOUIC%=2 THEN PROCreloadpatfills:ENDPROC 13600BLK%!8=HAND%(20):SYS "Wimp_GetWindowState",,BLK%+8 13610XOF%=((!BLK%)-(BLK%!12)):YOF%=((BLK%!4)-(BLK%!16)) 13620K%=-1:FORL%=1 TO 12:BX%=((L%-1)*84)+24:BY%=52:IF XOF%>=BX% AND YOF%>=BY% AND XOF%<(BX%+64) AND YOF%<(BY%+64) THEN K%=L%:NEXT ELSE NEXT 13630IF K%=-1 THEN ENDPROC ELSE CPF%=K%:PROCforcedrawpatfill 13640ENDPROC 13650 13660DEFPROCfilluse 13670SNO%=FNgrafilno:IF SNO%=-1 THEN ENDPROC 13680PROCkillf:FUSE%=31:FUST%=0:GRFN%=SNO%:GRTY%=0:PROCud:PROCwindname(2,PIC$+" [Graduated fill ("+FNfilldet(SNO%+1)+")]"):PROCspinit 13690IF MOUB%=4 THEN PROCmenoff 13700ENDPROC 13710 13720DEFFNfilldet(S%):IF GRTY%=0 THEN ="flood "+STR$S% ELSE ="area "+STR$S% 13730 13740DEFPROCinvertfill 13750NOS%=FNgrafilno 13760IA%=0:IB%=VALFNgi(13,83):IB%-=1 13770REPEAT:SWAP GRFI%(IA%,0,NOS%),GRFI%(IB%,0,NOS%):SWAP GRFI%(IA%,1,NOS%),GRFI%(IB%,1,NOS%):IA%+=1:IB%-=1:UNTIL IA%>IB% 13780PROCforcedrawfill 13790ENDPROC 13800 13810DEFPROCinterpfill 13820NOS%=FNgrafilno 13830IA%=0:REPEAT:IB%=IA%+1 13840IF IB%=16 THEN PROCforcedrawfill:ENDPROC 13850IF GRFI%(IB%,0,NOS%)=0 AND GRFI%(IB%,1,NOS%)=0 THEN IB%+=1:GOTO 13840 13860IF IB%=IA%+1 THEN IA%=IB%:IB%+=1:GOTO 13840 13870T1%=GRFI%(IA%,1,NOS%)>>6 13880R1%=((GRFI%(IA%,0,NOS%) AND %11)<<2)+T1% 13890G1%=(GRFI%(IA%,0,NOS%) AND %1100)+T1% 13900B1%=((GRFI%(IA%,0,NOS%) AND %110000)>>2)+T1% 13910T2%=GRFI%(IB%,1,NOS%)>>6 13920RD=((((GRFI%(IB%,0,NOS%) AND %11)<<2)+T2%)-R1%)/(IB%-IA%) 13930GD=(((GRFI%(IB%,0,NOS%) AND %1100)+T2%)-G1%)/(IB%-IA%) 13940BD=((((GRFI%(IB%,0,NOS%) AND %110000)>>2)+T2%)-B1%)/(IB%-IA%) 13950IA%+=1:FORL%=1 TO IB%-IA% 13960R%=R1%+(RD*L%):G%=G1%+(GD*L%):B%=B1%+(BD*L%) 13970SYS "ColourTrans_ReturnGCOLForMode",(B%<<28)+(G%<<20)+(R%<<12),15 TO G% 13980GRFI%(IA%,0,NOS%)=G%>>2:GRFI%(IA%,1,NOS%)=(G% AND %11)<<6 13990IA%+=1:NEXT 14000IB%=IA%+1:GOTO 13840 14010 14020DEFPROCwipefill 14030NOS%=FNgrafilno 14040FORL%=0 TO 15:FORK%=0 TO 1:GRFI%(L%,K%,NOS%)=0:NEXT:NEXT 14050PROCforcedrawfill:ENDPROC 14060 14070DEFPROCcompfill 14080NOS%=FNgrafilno 14090CA%=GRFI%(0,0,NOS%):TA%=GRFI%(0,1,NOS%):IA%=1:IB%=1 14100WHILE IB%<16 14110IF GRFI%(IB%,0,NOS%)<>CA% OR GRFI%(IB%,1,NOS%)<>TA% THEN GRFI%(IA%,0,NOS%)=GRFI%(IB%,0,NOS%):GRFI%(IA%,1,NOS%)=GRFI%(IB%,1,NOS%):CA%=GRFI%(IA%,0,NOS%):TA%=GRFI%(IA%,1,NOS%):IA%+=1 14120IB%+=1:ENDWHILE 14130WHILE IA%<16:GRFI%(IA%,0,NOS%)=0:GRFI%(IA%,1,NOS%)=0:IA%+=1:ENDWHILE 14140PROCforcedrawfill 14150ENDPROC 14160 14170DEFPROCfillclick 14180IF MOUIC%<0 THEN GOTO 14880 14190IF MOUIC%=105 THEN PROCfilluse:ENDPROC 14200IF MOUIC%=62 THEN PROCinvertfill:ENDPROC 14210IF MOUIC%=63 THEN PROCinterpfill:ENDPROC 14220IF MOUIC%=110 THEN PROCwipefill:ENDPROC 14230IF MOUIC%=111 THEN PROCcompfill:ENDPROC 14240IF MOUIC%<>87 AND MOUIC%<>89 AND MOUIC%<>91 AND MOUIC%<>93 THEN GOTO 14270 14250IF FNhigh(13,MOUIC%) THEN PROCiconlo(13,MOUIC%):ENDPROC 14260IF FNhigh(13,75) OR FNhigh(13,77) THEN PROCmessage(13,"You cannot use an edge priority with a radial fill.") ELSE PROCiconlo(13,87):PROCiconlo(13,89):PROCiconlo(13,91):PROCiconlo(13,93):PROCiconhi(13,MOUIC%) 14270IF MOUIC%<>75 OR FNhigh(13,75) THEN GOTO 14300 14280IF FNhigh(13,87) OR FNhigh(13,89) OR FNhigh(13,91) OR FNhigh(13,93) THEN PROCmessage(4,"You cannot use a radial fill with an edge priority.") 14290PROCiconhi(13,75):PROCiconlo(13,67):PROCiconlo(13,69):PROCiconlo(13,71):PROCiconlo(13,73):PROCiconlo(13,77):ENDPROC 14300IF (MOUIC%>=2 AND MOUIC%<=14) OR MOUIC%=78 OR MOUIC%=79 OR MOUIC%=85 THEN PROCsetgradfill:ENDPROC 14310IF MOUIC%<>77 OR FNhigh(13,77) THEN GOTO 14340 14320IF FNhigh(13,87) OR FNhigh(13,89) OR FNhigh(13,91) OR FNhigh(13,93) THEN PROCmessage(4,"You cannot use a radial fill with an edge priority.") 14330PROCiconhi(13,77):PROCiconlo(13,67):PROCiconlo(13,69):PROCiconlo(13,71):PROCiconlo(13,73):PROCiconlo(13,75):ENDPROC 14340IF MOUIC%=95 OR MOUIC%=99 OR MOUIC%=101 OR MOUIC%=103 OR MOUIC%=97 THEN PROCforcedrawfill:ENDPROC 14350PROCarrows(13, 40,41,81,0,359,1) 14360IF MOUB%=1 AND MOUIC%=43 THEN MOUIC%=45 ELSE IF MOUB%=1 AND MOUIC%=45 THEN MOUIC%=43 14370IF MOUIC%<>43 THEN GOTO 14400 14380NOS%=VALFNgi(13,83):IF NOS%=2 THEN ENDPROC 14390PROCshadeicon(13,FNfilic(NOS%-1)):NOS%-=1:PROCsi(13,83,STR$(NOS%)):ENDPROC 14400IF MOUIC%<>45 THEN GOTO 14430 14410NOS%=VALFNgi(13,83):IF NOS%=16 THEN ENDPROC 14420PROCclearicon(13,FNfilic(NOS%)):NOS%+=1:PROCsi(13,83,STR$(NOS%)):ENDPROC 14430ENDPROC 14440 14450DEFPROCsetgradfill 14460SNO%=FNgrafilno 14470CASE MOUIC% OF 14480WHEN 78:RESTORE 14710 14490WHEN 79:RESTORE 14720 14500WHEN 2:RESTORE 14730 14510WHEN 3:RESTORE 14740 14520WHEN 4:RESTORE 14750 14530WHEN 5:RESTORE 14760 14540WHEN 6:RESTORE 14770 14550WHEN 7:RESTORE 14790 14560WHEN 8:RESTORE 14800 14570WHEN 9:RESTORE 14810 14580WHEN 10:RESTORE 14820 14590WHEN 11:RESTORE 14780 14600WHEN 12:RESTORE 14830 14610WHEN 13:RESTORE 14840 14620WHEN 14:RESTORE 14850 14630WHEN 85:RESTORE 14860 14640ENDCASE 14650FORL%=0 TO 15:PROCshadeicon(13,FNfilic(L%)):FORK%=0 TO 1:GRFI%(L%,K%,SNO%)=0:NEXT:NEXT 14660READ S%:FORL%=0 TO S%-1:PROCclearicon(13,FNfilic(L%)):FORK%=0 TO 1:READ GRFI%(L%,K%,SNO%):NEXT:NEXT 14670PROCsi(13,83,STR$S%) 14680PROCforcedrawfill 14690ENDPROC 14700 14710DATA 12, 1,0,1,64,1,128,1,192,2,0,2,64,2,128,2,192,3,0,3,64,3,128,3,192 14720DATA 12, 4,0,4,64,4,128,4,192,8,0,8,64,8,128,8,192,12,0,12,64,12,128,12,192 14730DATA 12, 5,0,5,64,5,128,5,192,10,0,10,64,10,128,10,192,15,0,15,64,15,128,15,192 14740DATA 12, 16,0,16,64,16,128,16,192,32,0,32,64,32,128,32,192,48,0,48,64,48,128,48,192 14750DATA 12, 17,0,17,64,17,128,17,192,34,0,34,64,34,128,34,192,51,0,51,64,51,128,51,192 14760DATA 12, 20,0,20,64,20,128,20,192,40,0,40,64,40,128,40,192,60,0,60,64,60,128,60,192 14770DATA 15, 0,64,0,128,0,192,21,0,21,64,21,128,21,192,42,0,42,64,42,128,42,192,63,0,63,64,63,128,63,192 14780DATA 12, 1,0,1,64,1,128,1,192,6,0,6,64,6,128,6,192,27,0,27,64,27,128,27,192 14790DATA 8, 18,0,18,64,18,128,18,192,39,0,39,64,39,128,39,192 14800DATA 8, 2,0,2,64,2,128,2,192,7,0,7,64,7,128,7,192 14810DATA 12, 17,0,17,64,17,128,17,192,38,0,38,64,38,128,38,192,59,0,59,64,59,128,59,192 14820DATA 12, 5,0,5,64,5,128,5,192,10,0,26,64,26,128,26,192,47,0,47,64,47,128,47,192 14830DATA 12, 20,0,20,64,20,128,20,192,41,0,41,64,41,128,41,192,62,0,62,64,62,128,62,192 14840DATA 12, 1,0,1,64,1,128,1,192,22,0,22,64,22,128,22,192,43,0,43,64,43,128,43,192 14850DATA 8, 9,0,9,64,9,128,9,192,14,0,14,64,14,128,14,192,0 14860DATA 8, 21,0,21,64,21,128,21,192,42,0,42,64,42,128,42,192 14870 14880XOF%=!BLK%:YOF%=BLK%!4:!BLK%=HAND%(13):SYS "Wimp_GetWindowState",,BLK% 14890PROCgetrdor(484) 14900XOF%=(XOF%-WOX%)-422:IF XOF%>766 OR XOF%<0 THEN ENDPROC 14910YOF%=(YOF%-WOY%)-236:IF YOF%>220 OR YOF%<0 THEN ENDPROC 14920col%=(XOF% DIV 24)+((YOF% DIV 28)*32) 14930tin%=PALTAB%?((col%*2)+1) 14940col%=PALTAB%?(col%*2) 14950FPE%=-1:FORL%=0 TO 15:IF FNhigh(13,FNfilic(L%)) THEN FPE%=L%:NEXT ELSE NEXT 14960SNO%=FNgrafilno 14970IF FPE%=-1 OR SNO%=-1 THEN ENDPROC 14980GRFI%(FPE%,0,SNO%)=col%:GRFI%(FPE%,1,SNO%)=tin%:PROCforcedrawfill 14990ENDPROC 15000 15010DEFFNfilic(FSN%):IF FSN%<=11 THEN =FSN%+26 ELSE =(FSN%-12)+46 15020 15030DEFFNlipaadj(LITA%):IF LITA%=7 THEN =51 ELSE =LITA% 15040 15050DEFPROClinepatclick 15060IF MOUB%=1 THEN 15070IF MOUIC%=2 THEN MOUIC%=3 ELSE IF MOUIC%=3 THEN MOUIC%=2 15080ENDIF 15090CASE MOUIC% OF 15100WHEN 3:PL%=VALFNgi(10,48):IF PL%>1 THEN PROCshadeicon(10,FNlipaadj(PL%+6)):PL%-=1:PROCsi(10,48,STR$PL%) 15110WHEN 2:PL%=VALFNgi(10,48):IF PL%<40 THEN PROCclearicon(10,FNlipaadj(PL%+7)):PL%+=1:PROCsi(10,48,STR$PL%) 15120WHEN 50:PALE%=VALFNgi(10,48):VDU23,6, 15130IN%=7:FORL%=1 TO 5:N%=0:I%=128:FORK%=1 TO 8:IF FNhigh(10,FNlipaadj(IN%)) THEN N%+=I% 15140I%=I% DIV 2:IN%+=1:NEXT:VDU N%:PAT%(L%)=N%:NEXT:VDU 0| 15150IF MOUB%=4 THEN PROCmenoff 15160ENDCASE 15170ENDPROC 15180 15190DEFPROCgrabclick:ING%=(FNhigh(31,3) OR FNhigh(31,4)) AND FUSE%=34 15200IF MOUIC%<>16 THEN ENDPROC 15210IF FUSE%<>34 AND FUST%<2 THEN PROCmessage(1,"Select an area of picture before setting these options.") 15220IF ING% THEN GOTO 15290 15230PROCinpic 15240IF FUSE%<>34 THEN 15250PROCpgrab(OX%,OY%,3) 15260ELSE 15270IF FUST%<>0 THEN PROCpimport(OX%,OY%,3) 15280ENDIF 15290GRXM%=VAL(FNgi(8,17)):IF GRXM%<1 THEN GRXM%=1:PROCsi(8,17,STR$GRXM%) 15300GRYM%=VAL(FNgi(8,19)):IF GRYM%<1 THEN GRYM%=1:PROCsi(8,19,STR$GRYM%) 15310GRXD%=VAL(FNgi(8,18)):IF GRXD%<1 THEN GRXD%=1:PROCsi(8,18,STR$GRXD%) 15320GRYD%=VAL(FNgi(8,20)):IF GRYD%<1 THEN GRYD%=1:PROCsi(8,20,STR$GRYD%) 15330PROCgrabflip 15340GRMA%=FNhigh(8,14) 15350IF NOT ING% THEN GOTO 15380 15360IF FNhigh(31,3) THEN PROCimpcen ELSE PROCimpscale 15370ENDPROC 15380IF FUSE%<>34 THEN 15390PROCpgrab(OX%,OY%,3) 15400ELSE 15410IF FUST%<>0 THEN PROCpimport(OX%,OY%,3) 15420ENDIF 15430PROCoutpic:PROCquickdrawmain 15440ENDPROC 15450 15460DEFPROCgrabflip 15470IF (FNhigh(8,10) AND NOT GRFX%) OR ((NOT FNhigh(8,10)) AND GRFX%) THEN SYS&2E,289,SPBUF%,GRN$:GRFX%=NOT GRFX% 15480IF (FNhigh(8,11) AND NOT GRFY%) OR ((NOT FNhigh(8,11)) AND GRFY%) THEN SYS&2E,303,SPBUF%,GRN$:GRFY%=NOT GRFY% 15490ENDPROC 15500 15510DEFPROCgridclick 15520PROCarrows(6, 2,6,19,1,999,1) 15530PROCarrows(6, 3,7,21,1,999,1) 15540PROCarrows(6, 10,14,23,0,999,1) 15550PROCarrows(6, 11,15,25,0,999,1) 15560IF MOUIC%=27 THEN PROCsi(6,19,"1"):PROCsi(6,21,"1"):PROCsi(6,23,"0"):PROCsi(6,25,"0"):ENDPROC 15570IF MOUIC%<>29 THEN ENDPROC 15580GRIWI%=VAL(FNgi(6,19)):IF GRIWI%<1 THEN GRIWI%=1 15590GRIHE%=VAL(FNgi(6,21)):IF GRIHE%<1 THEN GRIHE%=1 15600GRBX%=VAL(FNgi(6,23)):IF GRBX%>GRIWI% THEN REPEAT:GRBX%-=GRIWI%:UNTIL GRBX%<GRIWI%:PROCsi(6,23,STR$GRBX%) 15610GRBY%=VAL(FNgi(6,25)):IF GRBY%>GRIHE% THEN REPEAT:GRBY%-=GRIHE%:UNTIL GRBY%<GRIHE%:PROCsi(6,25,STR$GRBY%) 15620IF MOUB%=4 THEN PROCmenoff 15630PROCforcedrawmain 15640ENDPROC 15650 15660DEFPROCbrushclick 15670IF MOUIC%>=0 AND MOUIC%<=11 THEN 15680IF FUST%>0 THEN PROCinpic:PROCpaintscale:PROCeorback:PROCpaintbrush(OX%,OY%) 15690SELBR%=MOUIC%+1 15700IF FUST%>0 THEN PROCeorback:PROCpaintbrush(OX%,OY%):PROCoutpic:PROCquickdrawmain 15710PROCforcedrawbrush 15720ENDIF 15730IF MOUIC%<>26 OR FUSE%=29 OR FUSE%=30 THEN ENDPROC 15740IF FUST%>0 THEN PROCinpic:PROCpaintscale:PROCeorback:PROCpaintbrush(OX%,OY%) 15750BXM%=VAL(FNgi(5,23)):IF BXM%<1 THEN BXM%=1:PROCsi(5,23,"1") 15760BYM%=VAL(FNgi(5,20)):IF BYM%<1 THEN BYM%=1:PROCsi(5,20,"1") 15770BXD%=VAL(FNgi(5,24)):IF BXD%<1 THEN BXD%=1:PROCsi(5,24,"1") 15780BYD%=VAL(FNgi(5,19)):IF BYD%<1 THEN BYD%=1:PROCsi(5,19,"1") 15790IF FUST%>0 THEN PROCpaintscale:PROCeorback:PROCpaintbrush(OX%,OY%):PROCoutpic:PROCquickdrawmain 15800ENDPROC 15810 15820DEFPROCairbclick 15830PROCarrows(4, 4,6,17,1,999,1):PROCarrows(4, 5,7,19,4,999,1) 15840ENDPROC 15850 15860DEFPROCmenoff:SYS "Wimp_CreateMenu",-1:ENDPROC 15870 15880DEFPROCbuildiconmenu 15890PROCbm(30,"Imagery") 15900PROCatm(30,"Info",1,"") 15910PROCatm(30,"Save"+FNk(" f3"),0,"SL") 15920PROCatm(30,"Quit",-1,"F") 15930ENDPROC 15940 15950DEFPROCiconmenu:MENO%=30:SYS "Wimp_CreateMenu",,FNcmad(30),MOUX%-64,252:ENDPROC 15960 15970DEFPROCwindmenu:MMEX%=MOUX%:MMEY%=MOUY%:MENO%=0:MEBA%=MENU%:MEINBA%=MENUIND% 15980L%=1:IF FNcmad(L%)<>-1 THEN TAD%=(FNcmad(L%))+28+(5*24):!TAD%=(!TAD%) AND 130:TAD%!8=(TAD%!8) AND (&FFFFFFFF-(1<<22)) 15990 16000IF LITY%=21 THEN PROCtickitem(12,1) 16010IF LITY%=53 THEN PROCtickitem(12,2) 16020IF LITY%=5 THEN PROCtickitem(11,1) 16030IF (USE% AND 15)=0 THEN PROCtickitem(11,3) 16040IF (USE% AND 15)=1 THEN PROCtickitem(11,4) 16050IF (USE% AND 15)=2 THEN PROCtickitem(11,5) 16060IF (USE% AND 15)=3 THEN PROCtickitem(11,6) 16070IF (USE% AND 15)=4 THEN PROCtickitem(11,7) 16080IF (USE% AND 15)=6 THEN PROCtickitem(11,8) 16090IF (USE% AND 15)=7 THEN PROCtickitem(11,9) 16100IF (USE% AND 112)=16 THEN PROCtickitem(11,10) 16110IF (USE% AND 112)=32 THEN PROCtickitem(11,11) 16120IF (USE% AND 112)=48 THEN PROCtickitem(11,12) 16130IF (USE% AND 112)=64 THEN PROCtickitem(11,13) 16140IF (USE% AND 112)=80 THEN PROCtickitem(11,14) 16150IF FONTS%=0 THEN PROCshadeitem(14,FONTS%+3) 16160IF FONTA%=-1 THEN PROCshadeitem(0,4) 16170IF GRCO%=-1 THEN PROCshadeitem(5,2) ELSE PROCshadeitem(5,1):PROCtickitem(0,10) 16180IF GRLO% THEN PROCtickitem(5,3) 16190IF ZOOM%>1 THEN PROCtickitem(0,9) 16200IF FNwopen(32) THEN PROCtickitem(0,11) 16210IF KUKE% THEN PROCtickitem(10,5) 16220IF KSC% THEN PROCtickitem(10,6) 16230IF UNDO%<>-1 THEN PROCshadeitem(10,2) ELSE PROCshadeitem(10,3):PROCshadeitem(7,1) 16240IF FUSE%=34 THEN PROCshadeitem(1,6) 16250 16260SYS "Wimp_CreateMenu",,FNcmad(0),MOUX%-64,MOUY%+60 16270ENDPROC 16280 16290DEFPROCbuildmainmenu 16300MEOF%=0:MEIN%=0 16310REM ------------------------ 16320 16330PROCbuildmm2:ENDPROC 16340 16350DEFFNk(IT$):IF KSC% THEN =IT$ ELSE ="" 16360 16370DEFPROCbuildmm2 16380MEOF%=0:MEIN%=0 16390 16400PROCbm(15,"Speed") 16410PROCatm(15,"Very fast",-1,"") 16420PROCatm(15,"Fast",-1,"") 16430PROCatm(15,"Medium",-1,"") 16440PROCatm(15,"Slow",-1,"F") 16450 16460PROCbm(19,"Preserve") 16470PROCatm(19,"-> 1"+FNk(" �f1"),-1,"") 16480PROCatm(19,"-> 2"+FNk(" �f2"),-1,"") 16490PROCatm(19,"-> 3"+FNk(" �f3"),-1,"") 16500PROCatm(19,"-> 4"+FNk(" �f4"),-1,"F") 16510 16520PROCbm(20,"Restore") 16530PROCatm(20,"<- 1"+FNk(" ^f1"),-1,"") 16540PROCatm(20,"<- 2"+FNk(" ^f2"),-1,"") 16550PROCatm(20,"<- 3"+FNk(" ^f3"),-1,"") 16560PROCatm(20,"<- 4"+FNk(" ^f4"),-1,"F") 16570 16580PROCbm(1,"File") 16590PROCatm(1,"Save"+FNk(" f3"),0,"S") 16600PROCatm(1,"Save as sprite",7,"S") 16610PROCatm(1,"Save defaults",-1,"S") 16620PROCatm(1,"Save settings",34,"S") 16630PROCatm(1,"Export",-1,"S") 16640PROCatm(1,"Import",31,"L") 16650PROCatm(1,"Preserve",FNcmad(19),"S") 16660PROCatm(1,"Restore",FNcmad(20),"SF") 16670 16680PROCbm(12,"Pattern") 16690PROCatm(12,"Restarted",-1,"") 16700PROCatm(12,"Continuous",-1,"F") 16710 16720PROCbm(11,"Styles") 16730PROCatm(11,"Solid line",-1,"") 16740PROCatm(11,"Line pattern",FNcmad(12),"L") 16750PROCatm(11,"Overwrite",-1,"") 16760PROCatm(11,"OR",-1,"") 16770PROCatm(11,"AND",-1,"") 16780PROCatm(11,"EOR",-1,"") 16790PROCatm(11,"Invert",-1,"") 16800PROCatm(11,"NAND",-1,"") 16810PROCatm(11,"NOR",-1,"L") 16820PROCatm(11,"ECF 1",-1,"") 16830PROCatm(11,"ECF 2",-1,"") 16840PROCatm(11,"ECF 3",-1,"") 16850PROCatm(11,"ECF 4",-1,"") 16860PROCatm(11,"Giant ECF",-1,"F") 16870 16880PROCbm(13,"Fill") 16890PROCatm(13,"Flood fill",-1,"S") 16900PROCatm(13,"Pattern fill",-1,"SL") 16910PROCatm(13,"Graduated fill",17,"F") 16920 16930PROCbm(2,"Paint") 16940PROCatm(2,"Show palette"+FNk(" f1"),-1,"") 16950PROCatm(2,"Select colour"+FNk(" f2"),-1,"S") 16960PROCatm(2,"Unset transparents",-1,"S") 16970PROCatm(2,"Set transparents",-1,"SL") 16980PROCatm(2,"Pixels"+FNk(" f4"),-1,"S") 16990PROCatm(2,"Sketch"+FNk(" f5"),-1,"S") 17000PROCatm(2,"Rubber line"+FNk(" f6"),-1,"S") 17010PROCatm(2,"Airbrush..."+FNk(" f7"),-1,"S") 17020PROCatm(2,"Paintbrush..."+FNk(" f8"),-1,"L") 17030PROCatm(2,"Fill",FNcmad(13),"L") 17040PROCatm(2,"Line style",FNcmad(11),"F") 17050 17060PROCbm(4,"Shapes") 17070PROCatm(4,"Wire rectangle"+FNk(" �f5"),-1,"S") 17080PROCatm(4,"Wire triangle"+FNk(" �f6"),-1,"S") 17090PROCatm(4,"Wire circle"+FNk(" �f7"),-1,"S") 17100PROCatm(4,"Wire ellipse"+FNk(" �f8"),-1,"") 17110PROCatm(4,"Wire parallelogram"+FNk(" �f9"),-1,"") 17120PROCatm(4,"Wire arc"+FNk(" �f10"),-1,"SL") 17130PROCatm(4,"Solid rectangle"+FNk(" ^f5"),-1,"S") 17140PROCatm(4,"Solid triangle"+FNk(" ^f6"),-1,"S") 17150PROCatm(4,"Solid circle"+FNk(" ^f7"),-1,"S") 17160PROCatm(4,"Solid ellipse"+FNk(" ^f8"),-1,"S") 17170PROCatm(4,"Solid parallelogram"+FNk(" ^f9"),-1,"S") 17180PROCatm(4,"Solid sector"+FNk(" ^f10"),-1,"") 17190PROCatm(4,"Solid segment"+FNk(" ^f11"),-1,"SF") 17200 17210PROCbm(6,"Presets") 17220PROCatm(6,"2x2 grid",-1,"") 17230PROCatm(6,"3x3 grid",-1,"") 17240PROCatm(6,"4x4 grid",-1,"") 17250PROCatm(6,"6x6 grid",-1,"") 17260PROCatm(6,"8x8 grid",-1,"") 17270PROCatm(6,"16x16 grid",-1,"") 17280PROCatm(6,"32x32 grid",-1,"") 17290PROCatm(6,"32x16 grid",-1,"F") 17300 17310PROCbm(5,"Grid") 17320PROCatm(5,"Show grid"+FNk(" ^f12"),-1,"S") 17330PROCatm(5,"Hide grid"+FNk(" �f12"),-1,"S") 17340PROCatm(5,"Grid lock",-1,"S") 17350PROCatm(5,"Preset grids",FNcmad(6),"") 17360PROCatm(5,"Edit grid",6,"F") 17370 17380PROCbm(7,"Manipulate") 17390PROCatm(7,"Undo",-1,"L") 17400PROCatm(7,"Copy area...",-1,"S") 17410PROCatm(7,"Move area...",-1,"S") 17420PROCatm(7,"Mirror area",-1,"S") 17430PROCatm(7,"Invert area",-1,"S") 17440PROCatm(7,"Strip area",-1,"S") 17450PROCatm(7,"Rotate...",-1,"S") 17460PROCatm(7,"Scale to fit...",-1,"L") 17470PROCatm(7,"Wobble...",-1,"") 17480PROCatm(7,"Pixel mapping",-1,"F") 17490 17500PROCbm(17,"Colour scales") 17510PROCatm(17,"Red",-1,"") 17520PROCatm(17,"Green",-1,"") 17530PROCatm(17,"Blue",-1,"") 17540PROCatm(17,"Cyan",-1,"") 17550PROCatm(17,"Magenta",-1,"") 17560PROCatm(17,"Yellow",-1,"F") 17570 17580PROCbm(18,"Tint") 17590PROCatm(18,"0",-1,"") 17600PROCatm(18,"1",-1,"") 17610PROCatm(18,"2",-1,"") 17620PROCatm(18,"3",-1,"F") 17630 17640PROCbm(8,"Special") 17650PROCatm(8,"Trace",-1,"S") 17660PROCatm(8,"Smudge area",-1,"") 17670PROCatm(8,"Wet brush...",-1,"S") 17680PROCatm(8,"Tint area",-1,"S") 17690PROCatm(8,"Tint brush...",-1,"S") 17700PROCatm(8,"Set frame",19,"SL") 17710PROCatm(8,"RGB control...",-1,"") 17720PROCatm(8,"Grey scale...",-1,"S") 17730PROCatm(8,"Contrast control...",-1,"") 17740PROCatm(8,"Posterization...",-1,"S") 17750PROCatm(8,"De-tint",FNcmad(18),"S") 17760PROCatm(8,"RGB graph",-1,"S") 17770PROCatm(8,"Colour scale",FNcmad(17),"SL") 17780PROCatm(8,"Pixelate...",-1,"S") 17790PROCatm(8,"Filter...",-1,"") 17800PROCatm(8,"Colour replace...",-1,"SF") 17810 17820PROCbm(9,"Edit") 17830PROCatm(9,"Line pattern",10,"S") 17840PROCatm(9,"Fill patterns",11,"S") 17850PROCatm(9,"Edit brush/fill",12,"S") 17860PROCatm(9,"Graduated fills",13,"F") 17870 17880PROCbm(10,"Misc") 17890PROCatm(10,"Info",1,"L") 17900PROCatm(10,"Enable undo",-1,"S") 17910PROCatm(10,"Disable undo",-1,"S") 17920PROCatm(10,"Mouse speed",FNcmad(15),"") 17930PROCatm(10,"Cursor keys",-1,"") 17940PROCatm(10,"Full menus",-1,"") 17950PROCatm(10,"Bring to top "+FNk("f11"),-1,"L") 17960PROCatm(10,"Wipe picture",-1,"F") 17970 17980PROCbm(0,"Imagery") 17990PROCatm(0,"Misc",FNcmad(10),"") 18000PROCatm(0,"File",FNcmad(1),"L") 18010PROCatm(0,"Paint"+FNk(" f9"),FNcmad(2),"") 18020PROCatm(0,"Text",0,"S") 18030PROCatm(0,"Shapes",FNcmad(4),"") 18040PROCatm(0,"Special",FNcmad(8),"") 18050PROCatm(0,"Edit",FNcmad(9),"") 18060PROCatm(0,"Manipulate",FNcmad(7),"L") 18070PROCatm(0,"Zoom"+FNk(" f10"),33,"S") 18080PROCatm(0,"Grid",FNcmad(5),"") 18090PROCatm(0,"Toolkit",-1,"SF") 18100 18110ENDPROC 18120 18130DEFFNfont(F%):IF FONTA%=-1 OR F%>FONTS% THEN ="" ELSE =$(FONTA%+FONTO%+(!(FONTA%+(F%*4)))) 18140 18150DEFFNfontroot(F$):IF INSTR(F$,".")=0 THEN =F$ 18160IPF%=1:IPF$="":WHILE MID$(F$,IPF%,1)<>".":IPF$=IPF$+MID$(F$,IPF%,1):IPF%+=1:ENDWHILE:=IPF$ 18170 18180REM ** Create a menu (Number, Title) 18190DEFPROCbm(MN%,MT$) 18200!FNmad(MN%)=MENU%+MEOF%:TAD%=MENU%+MEOF% 18210$TAD%=MT$:TAD%?12=7:TAD%?13=2:TAD%?14=7:TAD%?15=0:TAD%!16=0:TAD%!20=44:TAD%!24=0 18220MEOF%+=28 18230IF MEOF%>MESI% THEN PROCmessage(0,"Menu tree has run out of room.") 18240ENDPROC 18250 18260REM ** Feature format : L = Follow by dotted line 18270REM ** : F = Last item 18280DEFPROCatm(MN%,IT$,HA%,FE$) 18290TAD%=MENU%+MEOF% 18300FE%=0 18310IF INSTR(FE$,"L") THEN FE%+=2 18320IF INSTR(FE$,"F") THEN FE%+=128 18330!TAD%=FE% 18340IF HA%>-1 AND HA%<&8000 THEN TAD%!4=HAND%(HA%) 18350IF HA%=-1 THEN TAD%!4=-1 18360IF HA%>&8000 THEN TAD%!4=HA% 18370TAD%!8=1 OR (7<<24) OR 256 18380IF INSTR(FE$,"S") THEN TAD%!8=(TAD%!8)+(1<<22) 18390$(MENUIND%+MEIN%)=IT$ 18400ILE%=LEN(IT$)+1 18410IF (ILE% MOD 4)>0 THEN ILE%=((ILE% DIV 4)+1)*4 18420TAD%!12=MENUIND%+MEIN% 18430TAD%!20=LEN(IT$) 18440TAD%!16=MENALO% 18450MEIN%+=ILE% 18460IF MEIN%>MESI% THEN PROCmessage(1,"Menu indirection buffer overflow.") 18470MEOF%+=24 18480IF MEOF%>MESI% THEN PROCmessage(0,"Menu tree has run out of room") 18490IF ((!(FNcmad(MN%)+16))-32)<(LEN(IT$)*16) THEN !(FNcmad(MN%)+16)=(LEN(IT$)*16)+32 18500ENDPROC 18510 18520DEFPROCshadeitem(MN%,IN%):TAD%=FNcmad(MN%)+28+((IN%-1)*24):TAD%!8=(TAD%!8) OR (1<<22):ENDPROC 18530 18540DEFPROCtickitem(MN%,IN%):TAD%=FNcmad(MN%)+28+((IN%-1)*24):!TAD%=(!TAD%) OR 1:ENDPROC 18550 18560DEFPROCmenu:SYS6,229 18570SYS "Wimp_GetPointerInfo",,BLK%+128:MBU%=BLK%!136 18580SYS "Wimp_DecodeMenu",,FNcmad(MENO%),BLK%,SEL% 18590DSI%=FALSE 18600SEL$=$SEL%:IT$="":HE%=LEN(SEL$):WHILE MID$(SEL$,HE%,1)<>" " AND HE%>1:IT$=MID$(SEL$,HE%,1)+IT$:HE%-=1:ENDWHILE 18610IF INSTR(IT$,"^")<>0 OR INSTR(IT$,"�")<>0 OR (LEN(IT$)<=3 AND LEFT$(IT$,1)="f") THEN SEL$=LEFT$(SEL$,HE%):REPEAT:SEL$=LEFT$(SEL$,LEN(SEL$)-1):UNTIL RIGHT$(SEL$,1)<>" " 18620IF RIGHT$(SEL$,3)="..." THEN SEL$=LEFT$(SEL$,LEN(SEL$)-3) 18630IF INSTR(SEL$,".")<>0 AND LEFT$(SEL$,5)<>"Text." AND LEFT$(SEL$,16)<>"Special.De-tint." AND LEFT$(SEL$,14)<>"File.Preserve." AND LEFT$(SEL$,13)<>"File.Restore." THEN 18640B$="":WHILE RIGHT$(SEL$,1)<>".":B$=RIGHT$(SEL$,1)+B$:SEL$=LEFT$(SEL$,LEN(SEL$)-1):ENDWHILE:SEL$=B$ 18650ENDIF 18660$SEL%=SEL$ 18670IF $SEL%="Quit" THEN PROCkillf:FUSE%=-1:PROCwindname(2,PIC$):PROCforcedrawmain:IF FNquityn THEN PROCdie 18680IF $SEL%="Paint" THEN PROCnf("",-1,-1) 18690IF $SEL%="Show palette" THEN DSI%=TRUE:PROCopenpal 18700 18710IF $SEL%="Paintbrush" THEN PROCnf("Paintbrush",4,5):PROCtkh(10) 18720 18730IF $SEL%="2x2 grid" THEN DSI%=TRUE:GRIWI%=2:GRIHE%=2:PROCsetgric:PROCforcedrawmain 18740IF $SEL%="3x3 grid" THEN DSI%=TRUE:GRIWI%=3:GRIHE%=3:PROCsetgric:PROCforcedrawmain 18750IF $SEL%="4x4 grid" THEN DSI%=TRUE:GRIWI%=4:GRIHE%=4:PROCsetgric:PROCforcedrawmain 18760IF $SEL%="6x6 grid" THEN DSI%=TRUE:GRIWI%=6:GRIHE%=6:PROCsetgric:PROCforcedrawmain 18770IF $SEL%="8x8 grid" THEN DSI%=TRUE:GRIWI%=8:GRIHE%=8:PROCsetgric:PROCforcedrawmain 18780IF $SEL%="16x16 grid" THEN DSI%=TRUE:GRIWI%=16:GRIHE%=16:PROCsetgric:PROCforcedrawmain 18790IF $SEL%="32x32 grid" THEN DSI%=TRUE:GRIWI%=32:GRIHE%=32:PROCsetgric:PROCforcedrawmain 18800IF $SEL%="32x16 grid" THEN DSI%=TRUE:GRIWI%=32:GRIHE%=16:PROCsetgric:PROCforcedrawmain 18810IF $SEL%="Wire ellipse" THEN PROCnf("Wire ellipse",11,-1) 18820 18830IF $SEL%="Wire parallelogram" THEN PROCnf("Wire parallelogram",13,-1):PROCtkh(17) 18840 18850IF $SEL%="Solid sector" THEN PROCnf("Solid sector",16,-1) 18860 18870IF $SEL%="Scale to fit" THEN PROCnf("Scale to fit",23,8):FUCO%=0:PROCpatch(23) 18880 18890IF $SEL%="Pixel mapping" THEN PROCnf("Pixel mapping",25,-1):FUCO%=1:OX%=-1:OY%=-1:PROCpatch(25) 18900IF SEL$="Solid line" THEN DSI%=TRUE:LITY%=5 18910IF SEL$="Restarted" THEN DSI%=TRUE:LITY%=21 18920IF SEL$="Continuous" THEN DSI%=TRUE:LITY%=53 18930IF SEL$="Overwrite" THEN DSI%=TRUE:USE%=(USE% AND 112) 18940IF SEL$="OR" THEN DSI%=TRUE:USE%=(USE% AND 112)+1 18950IF SEL$="AND" THEN DSI%=TRUE:USE%=(USE% AND 112)+2 18960IF SEL$="EOR" THEN DSI%=TRUE:USE%=(USE% AND 112)+3 18970IF SEL$="Invert" THEN DSI%=TRUE:USE%=(USE% AND 112)+4 18980IF SEL$="NAND" THEN DSI%=TRUE:USE%=(USE% AND 112)+6 18990IF SEL$="NOR" THEN DSI%=TRUE:USE%=(USE% AND 112)+7 19000IF SEL$="ECF 1" AND (USE% AND 112)=16 THEN DSI%=TRUE:USE%=(USE% AND 15) ELSE IF SEL$="ECF 1" THEN DSI%=TRUE:USE%=(USE% AND 15)+16 19010IF SEL$="ECF 2" AND (USE% AND 112)=32 THEN DSI%=TRUE:USE%=(USE% AND 15) ELSE IF SEL$="ECF 2" THEN DSI%=TRUE:USE%=(USE% AND 15)+32 19020IF SEL$="ECF 3" AND (USE% AND 112)=48 THEN DSI%=TRUE:USE%=(USE% AND 15) ELSE IF SEL$="ECF 3" THEN DSI%=TRUE:USE%=(USE% AND 15)+48 19030IF SEL$="ECF 4" AND (USE% AND 112)=64 THEN DSI%=TRUE:USE%=(USE% AND 15) ELSE IF SEL$="ECF 4" THEN DSI%=TRUE:USE%=(USE% AND 15)+64 19040IF SEL$="Giant ECF" AND (USE% AND 112)=80 THEN DSI%=TRUE:USE%=(USE% AND 15) ELSE IF SEL$="Giant ECF" THEN DSI%=TRUE:USE%=(USE% AND 15)+80 19050IF SEL$="Smudge area" THEN PROCnf("Smudge area",27,-1) 19060IF $SEL%="Very fast" THEN MMY%=4:MMX%=4:MOUSE STEP MMX%,MMY% 19070IF $SEL%="Fast" THEN MMY%=3:MMX%=3:MOUSE STEP MMX%,MMY% 19080IF $SEL%="Medium" THEN MMY%=2:MMX%=2:MOUSE STEP MMX%,MMY% 19090IF $SEL%="Slow" THEN MMY%=1:MMX%=1:MOUSE STEP MMX%,MMY% 19100IF $SEL%="RGB control" THEN PROCnf("RGB control",38,21):PROCpatch(38) 19110IF $SEL%="Wipe picture" THEN PROCnf("",-1,-1):PROCwipepic 19120IF $SEL%="Cursor keys" THEN KUKE%=NOT KUKE%:DSI%=TRUE 19130IF $SEL%="Contrast control" THEN PROCnf("Contrast control",43,26):PROCpatch(43) 19140 19150IF SEL$="Filter" THEN PROCnf("Filter",47,29) 19160IF SEL$="Wobble" THEN SYS&2E,256+9,SHOW%:SYS&2E,266,SHOW%,"<Imagery$Dir>.Show":PROCnf("Wobble",48,30) 19170IF $SEL%="Bring to top" AND LAOPWI%<>-1 THEN PROCopenwind(LAOPWI%) 19180 19190IF SEL$="Full menus" THEN KSC%=NOT KSC%:PROCbuildmm2:PROCbuildiconmenu:DSI%=TRUE 19200IF DSI% AND MBU%=1 THEN PROCwindmenu 19210ENDPROC 19220 19230DEFPROCud:IF UNDO%<>-1 THEN !VARS=PIC%:VARS!4=UNDO%:A%=VARS:CALL backuppic 19240ENDPROC 19250 19260DEFPROCnf(F$,F%,W%) 19270PROCkillf:IF F$<>"" THEN PROCud:PROCwindname(2,PIC$+" ["+F$+"]") ELSE PROCwindname(2,PIC$) 19280FUSE%=F%:FUST%=0:DSI%=TRUE:PROCspinit:IF W%<>-1 THEN PROCopenwind(W%) 19290ENDPROC 19300 19310DEFPROCwipepic 19320!IO%=5:$(IO%+4)="Are you sure you want to wipe the picture?"+CHR$0 19330SYS "Wimp_ReportError",IO%,%11011,"!Imagery"+CHR$0 TO ,R% 19340IF R%=0 THEN GOTO 19330 19350IF R%=2 THEN ENDPROC 19360PROCinpic:VDU26:GCOL0,128 TINT 0:CLG:PROCoutpic:PROCforcedrawmain 19370ENDPROC 19380 19390DEFFNquityn 19400!IO%=5:$(IO%+4)="Are you sure you want to quit?"+CHR$0 19410SYS "Wimp_ReportError",IO%,%11011,"!Imagery"+CHR$0 TO ,R% 19420IF R%=0 THEN GOTO 19410 19430=(R%=1) 19440 19450DEFPROCimport 19460A$=FNgetname:BLK%!12=BLK%!8:BLK%!16=4:!BLK%=64:SYS "Wimp_SendMessage",17,BLK%,BLK%!4 19470PROCkillf:FUSE%=34:FUST%=0:PROCopenwind(8):PROCspinit 19480F%=OPENUP(A$):IMS%=EXT#F%:CLOSE#F% 19490PROCspbuf(IMS%+64):IF Q% THEN FUSE%=-1:PROCclosewind(8):PROCspinit:PROCspbuferr 19500SYS&2E,266,SPBUF%,A$ 19510SYS&2E,269,SPBUF%,IO%,16,1 TO ,,,L% 19520IMP$="":FORK%=0 TO L%-1:IMP$=IMP$+CHR$(IO%?K%):NEXT 19530SYS&2E,296,SPBUF%,IMP$ TO ,,,IMW%,IMH%,,IMM% 19540IF GRFX% THEN SYS&2E,289,SPBUF%,IMP$ 19550IF GRFY% THEN SYS&2E,303,SPBUF%,IMP$ 19560SYS&35,IMM%,5 TO ,,E% 19570PHE%=2^E%:IF E%<2 THEN IO%!4=1:IO%!12=2^(2-E%) ELSE IO%!4=2^(E%-2):IO%!12=1 19580SYS&35,IMM%,4 TO ,,E% 19590PWI%=2^E% 19600SX%=2^(E%-1):!IO%=SX%:IO%!8=1 19610L%=(SPBUF%+(SPBUF%!8)):IF L%!32=44 THEN 19620IMPA%=0 19630ELSE 19640IMPA%=L%+44:K%=48:I%=52:WHILE I%<(L%!32):L%!K%=L%!I%:I%+=8:K%+=4:ENDWHILE 19650ENDIF 19660IF IMM%<>15 OR IMPA%<>0 THEN SYS&40740,IMM%,IMPA%,15,0,PIXTAB2%:IMPT%=PIXTAB2% ELSE IMPT%=0 19670PROCud:PROCwindname(2,PIC$+" [Import '"+IMP$+"']") 19680IMH%=IMH%*PHE%:IMW%=IMW%*PWI% 19690GRN$=IMP$ 19700ENDPROC 19710 19720DEFPROCimpcen 19730PROCinpic:PROCpimport(640,512,0):PROCoutpic:PROCquickdrawmain:PROCkillf:FUSE%=-1 19740ENDPROC 19750 19760DEFPROCimpscale 19770OXM%=GRXM%:OYM%=GRYM%:OXD%=GRXD%:OYD%=GRYD%:GRXM%=1280:GRYM%=1024:GRXD%=IMW%:GRYD%=IMH% 19780PROCinpic:PROCpimport(640,512,0):PROCoutpic:PROCforcedrawmain:PROCkillf:FUSE%=-1:GRXD%=OXD%:GRYD%=OYD%:GRXM%=OXM%:GRYM%=OYM% 19790ENDPROC 19800 19810DEFPROCimptile:PROCpimport(X%,Y%,0):IF NOT FNhigh(31,5) THEN ENDPROC 19820SYS "Hourglass_On":AW=XR*IMW%:AH=YR*IMH% 19830K%=0:REPEAT:L%=0:REPEAT:OX=K%*AW:OY=L%*AH:PROCpimport(X%+OX,Y%+OY,0):PROCpimport(X%+OX,Y%-OY,0):PROCpimport(X%-OX,Y%+OY,0):PROCpimport(X%-OX,Y%-OY,0):L%+=1:UNTIL (Y%+(L%*AH))>1023+AH AND (Y%-(L%*AH))<-AH 19840K%+=1:UNTIL (X%+(K%*AW))>1279+AW AND (X%-(K%*AW))<-AW 19850SYS "Hourglass_Off":ENDPROC 19860 19870DEFPROCfillcontclick 19880IF MOUIC%<>24 THEN ENDPROC 19890GRFN%=-1 19900IF FNhigh(17,3) THEN GRFN%=0 19910IF FNhigh(17,9) THEN GRFN%=1 19920IF FNhigh(17,12) THEN GRFN%=2 19930IF FNhigh(17,15) THEN GRFN%=3 19940IF FNhigh(17,18) THEN GRFN%=4 19950IF GRFN%=-1 THEN PROCmessage(0,"You must select a fill sequence to use.") 19960IF FUSE%=31 THEN 19970IF GRTY%=1 THEN PROCkillf 19980ENDIF 19990GRTY%=-1 20000IF FNhigh(17,20) THEN GRTY%=0 20010IF FNhigh(17,22) THEN GRTY%=1:FUST%=0 20020IF GRTY%=-1 THEN PROCmessage(0,"You must select the type of fill to use.") 20030PROCkillf:FUSE%=31:FUST%=0:PROCud:PROCwindname(2,PIC$+" [Graduated fill ("+FNfilldet(GRFN%+1)+")]"):PROCspinit:PROCtkh(12) 20040IF MOUB%=4 THEN PROCmenoff 20050ENDPROC 20060 20070DEFPROCunsetrasp:ENDPROC 20080 20090DEFPROCsetrasp:ENDPROC 20100 20110DEFPROCspinit 20120PROCspbuf(0) 20130ENDPROC 20140 20150DEFPROCsetgric 20160PROCsi(6,19,STR$GRIWI%) 20170PROCsi(6,21,STR$GRIHE%) 20180GRBX%=VAL(FNgi(6,23)):IF GRBX%>GRIWI% THEN REPEAT:GRBX%-=GRIWI%:UNTIL GRBX%<GRIWI%:PROCsi(6,23,STR$GRBX%) 20190GRBY%=VAL(FNgi(6,25)):IF GRBY%>GRIHE% THEN REPEAT:GRBY%-=GRIHE%:UNTIL GRBY%<GRIHE%:PROCsi(6,25,STR$GRBY%) 20200ENDPROC 20210 20220DEFPROCzoomsize 20230!BLK%=HAND%(2):SYS "Wimp_GetWindowState",,BLK%:WIF%=BLK%!28 20240!BLK%=HAND%(2):SYS "Wimp_CloseWindow",,BLK% 20250!BLK%=0:BLK%!4=-1023*ZOOM%:BLK%!8=1279*ZOOM%:BLK%!12=0:SYS "Wimp_SetExtent",HAND%(2),BLK% 20260!BLK%=HAND%(2):SYS "Wimp_GetWindowState",,BLK% 20270BLK%!28=WIF%:SYS "Wimp_OpenWindow",,BLK%:ENDPROC 20280 20290DEFPROCwind_ext(WH%,TX%,TY%,SX%,SY%) 20300!BLK%=HAND%(WH%):SYS "Wimp_GetWindowState",,BLK%:WIF%=BLK%!28 20310!BLK%=HAND%(WH%):SYS "Wimp_CloseWindow",,BLK% 20320!BLK%=TX%:BLK%!4=TY%:BLK%!8=SX%:BLK%!12=SY%:SYS "Wimp_SetExtent",HAND%(WH%),BLK% 20330!BLK%=HAND%(WH%):SYS "Wimp_GetWindowState",,BLK% 20340IF WH%=12 AND TY%=-900 THEN BLK%!8=(BLK%!8)-260 20350BLK%!28=WIF%:SYS "Wimp_OpenWindow",,BLK%:ENDPROC 20360ENDPROC 20370 20380DEFPROCed_bru 20390PROCwind_ext(12,0,-640,1024,0):EDTY%=0 20400ENDPROC 20410 20420DEFPROCed_fill 20430PROCwind_ext(12,0,-900,1024,0):EDTY%=1 20440ENDPROC 20450 20460DEFFNgstr(AD%):W$="":IF ?AD%<32 THEN =W$ ELSE REPEAT:W$=W$+CHR$(?AD%):AD%+=1:UNTIL ?AD%<32:=W$ 20470 20480DEFFNgi(WH%,IC%):LWG%=WH%:LIG%=IC%:!ICBLK%=HAND%(WH%):ICBLK%!4=IC%:SYS "Wimp_GetIconState",,ICBLK%:=FNgstr(!(ICBLK%+28)) 20490 20500DEFPROCsi(WH2%,IC2%,SET$):!ICBLK%=HAND%(WH2%):ICBLK%!4=IC2%:SYS "Wimp_GetIconState",,ICBLK%:ICBLK%!8=0:ICBLK%!12=0:$(ICBLK%!28)=SET$:SYS "Wimp_SetIconState",,ICBLK%:ENDPROC 20510 20520DEFFNhigh(WH%,IC%):!ICBLK%=HAND%(WH%):ICBLK%!4=IC%:SYS "Wimp_GetIconState",,ICBLK%:=((?(ICBLK%+26)) AND %100000)=32 20530 20540DEFFNwopen(WH%):!ICBLK%=HAND%(WH%):SYS "Wimp_GetWindowState",,ICBLK%:=((ICBLK%?34) AND 1)=1 20550 20560DEFPROCshadeicon(WH%,IC%):PROCicflag(WH%,IC%,1<<22,0):ENDPROC 20570 20580DEFPROCclearicon(WH%,IC%):PROCicflag(WH%,IC%,0,1<<22):ENDPROC 20590 20600DEFPROCiconhi(WH%,IC%):PROCicflag(WH%,IC%,1<<21,0):ENDPROC 20610 20620DEFPROCiconlo(WH%,IC%):PROCicflag(WH%,IC%,0,1<<21):ENDPROC 20630 20640DEFPROCicflag(WH%,IC%,WE%,WM%) 20650!ICBLK%=HAND%(WH%):ICBLK%!4=IC% 20660ICBLK%!8=WE%:IF WM%<>0 THEN ICBLK%!12=WM% ELSE ICBLK%!12=ICBLK%!8 20670SYS "Wimp_SetIconState",,ICBLK% 20680ENDPROC 20690 20700DEFPROCpoint:SYS "Wimp_GetPointerInfo",,POI%:MOX%=!POI%:MOY%=POI%!4:MOB%=POI%!8:MOH%=POI%!12:ENDPROC 20710 20720DEFPROCwindname(WH%,SET$):!BLK%=HAND%(WH%):SYS "Wimp_GetWindowState",,BLK%:WIF%=BLK%!28:SYS "Wimp_GetWindowInfo",,BLK%:SYS"Wimp_CloseWindow",,BLK% 20730AD%=BLK%!76:BLK%!28=WIF%:$AD%=SET$:SYS "Wimp_OpenWindow",,BLK%:ENDPROC 20740 20750DEFPROCdragfin 20760ENDPROC 20770 20780DEFPROCstartdrag 20790SYS "Wimp_GetWindowState",,BLK%+12 20800X%=BLK%!16:Y%=BLK%!28:BLK%!16=0:SYS "Wimp_GetIconState",,BLK%+12 20810BLK%!16=5:BLK%!20+=X%-2:BLK%!24+=Y%-4 20820BLK%!28+=X%+2:BLK%!32+=Y% 20830BLK%!36=0:BLK%!40=0:BLK%!44=&7FFFFFFF:BLK%!48=&7FFFFFFF:SYS "Wimp_DragBox",,BLK%+12:ENDPROC 20840 20850DEFPROCinmessage(M%) 20860CASE M% OF 20870WHEN 0:PROCdie 20880WHEN 1:PROCramload 20890WHEN 2:PROCdragsave 20900WHEN 5:IF BLK%!12=0 AND BLK%!40=&C11 PROCload(&C11) 20910WHEN 6:IF DRAG%=7 THEN PROCramfetch 20920WHEN 7:PROCramreceive 20930WHEN 3:IF BLK%!12=0 AND BLK%!40=&556 PROCload(&556) ELSE IF BLK%!12=0 AND BLK%!40=&C11 PROCload(&C11) ELSE IF BLK%!12=0 AND BLK%!40=&FF9 THEN PROCimport 20940ENDCASE:ENDPROC 20950 20960DEFPROCramload 20970TX%=BLK%!40:IF TX%<>&FF9 THEN ENDPROC 20980IMS%=BLK%!36:A$=FNgetname:MREF%=BLK%!8:SDH%=BLK%!4 20990PROCkillf:FUSE%=34:FUST%=0:PROCopenwind(8):PROCspinit 21000PROCspbuf(IMS%+8):IF Q% THEN FUSE%=-1:PROCclosewind(8):PROCspinit:PROCspbuferr 21010RATOF%=0:RDTS%=IMS% 21020BLK%!8=MREF%:PROCramtransmit 21030ENDPROC 21040 21050DEFPROCramtransmit 21060!BLK%=64:BLK%!12=BLK%!8:BLK%!16=6:BLK%!20=SPBUF%+4+RATOF%:BLK%!24=RDTS%:SYS "Wimp_SendMessage",18,BLK%,SDH%:ENDPROC 21070 21080DEFPROCramreceive 21090TX%=BLK%!24:IF TX%=RDTS% THEN RDTS%=4:RATOF%+=TX%:PROCramtransmit:ENDPROC 21100GOTO 19510 21110 21120DEFPROCramfetch 21130BUAD%=BLK%!20 : REM ram fetch buffer address 21140BULE%=BLK%!24 : REM buffer length 21150SDH%=BLK%!4 : REM handle of sender task 21160MREF%=BLK%!8 : REM my-ref 21170BLK%!12=MREF% 21180BLK%!16=7 : REM Ram_transmit 21190!BLK%=64: : REM block size 21200BLK%!20=BUAD% : REM buffer address 21210IF BULE%<=RDTS% THEN WE%=RDTS%:TX%=17 ELSE WE%=BULE%:TX%=18 21220IF RDTS%=0 THEN WE%=0:TX%=17 21230BLK%!24=WE% : REM #bytes written to buffer 21240SYS "Wimp_TransferBlock",THAND%,RTSB%+4+RATOF%,SDH%,BUAD%,BULE% 21250RDTS%-=WE%:RATOF%+=WE% 21260SYS "Wimp_SendMessage",TX%,BLK%,SDW%,SDI% : REM send RAM transmit 21270ENDPROC 21280 21290DEFPROCsaveok:A$=FNgi(0,6):IF INSTR(A$,".")=0 THEN PROCmessage(4,"To save, drag the icon to a directory viewer.") 21300REM ** SAVE ROUTINE HERE ** 21310GOTO 21390 21320ENDPROC 21330 21340DEFPROCdragsave:SDW%=BLK%!20:SDI%=BLK%!24:SDX%=BLK%!28:SDY%=BLK%!32:A$=FNgetname 21350IF DRAG%=34 THEN GOTO 21420 21360PROCsi(0,6,A$) 21370IF MOUB%<>1 SYS "Wimp_CreateMenu",-1 21380BLK%!12=BLK%!8:BLK%!16=3:!BLK%=64:BLK%!20=SDW%:BLK%!24=SDI%:BLK%!28=SDX%:BLK%!32=SDY%:SYS "Wimp_SendMessage",17,BLK%,SDW%,SDI% 21390ENDPROC 21400 21410DEFPROCsavesetok:A$=FNgi(34,6):IF INSTR(A$,".")=0 THEN PROCmessage(4,"To save, drag the icon to a directory viewer.") ELSE GOTO 21450 21420PROCsi(34,6,A$): 21430IF MOUB%<>1 SYS "Wimp_CreateMenu",-1 21440BLK%!12=BLK%!8:BLK%!16=3:!BLK%=64:BLK%!20=SDW%:BLK%!24=SDI%:BLK%!28=SDX%:BLK%!32=SDY%:SYS "Wimp_SendMessage",17,BLK%,SDW%,SDI% 21450PROCsavesets(A$):ENDPROC 21460 21470DEFPROCsave(S$):PROCkillf:FUSE%=-1: 21480ENDPROC 21490 21500DEFFNnullstring(AD%):N$="":WHILE ?AD%>=32:N$=N$+CHR$(?AD%):AD%+=1:ENDWHILE:=N$ 21510 21520DEFPROCspritesaveok:A$=FNgi(7,6):IF INSTR(A$,".")=0 THEN PROCmessage(4,"To save, drag the icon to a directory viewer.") 21530ENDPROC 21540 21550DEFFNgetname:W$="":P%=BLK%+44:WHILE ?P%<>0 AND ?P%<>13:W$=W$+CHR$(?P%):P%+=1:ENDWHILE:=W$ 21560 21570DEFPROCdtloadset:A$=FNgetname:BLK%!12=BLK%!8:BLK%!16=4:!BLK%=64:SYS "Wimp_SendMessage",17,BLK%,BLK%!4:PROCsi(34,6,A$):PROCloadsets(A$):ENDPROC 21580 21590DEFPROCload(FT%) 21600A$=FNgetname:BLK%!12=BLK%!8:BLK%!16=4:!BLK%=64:SYS "Wimp_SendMessage",17,BLK%,BLK%!4 21610F%=OPENUP(A$):IF F%=0 THEN ENDPROC 21620T$=CHR$(BGET#F%)+CHR$(BGET#F%)+CHR$(BGET#F%):CLOSE#F% 21630IF T$="SET" THEN PROCsi(34,6,A$):PROCloadsets(A$):ENDPROC 21640PROCsi(0,6,A$) 21650ENDPROC 21660 21670DEFPROCqatload(S$):ENDPROC 21680 21690 21700DEFPROCloadpic(FT%,S$) 21710ENDPROC 21720 21730DEFPROCchars 21740VDU23,248,0,0,0,255,255,0,0,0:VDU23,249,0,0,126,255,255,126,0,0:VDU23,250,0,60,126,255,255,126,60,0:VDU23,251,60,126,255,255,255,255,126,60:VDU23,252,24,60,126,126,126,126,60,24:VDU23,253,24,60,60,60,60,60,60,24:VDU23,254,24,24,24,24,24,24,24,24 21750ENDPROC 21760 21770DEFPROCbackuppic:!VARS=PIC%:VARS!4=SPBUF%:A%=VARS:CALL backuppic:ENDPROC 21780 21790DEFPROCfillmask:VARS!8=SPBUF%:VARS!12=TRASP%:VARS!16=BTC%:A%=VARS:CALL fillmask:ENDPROC 21800 21810DEFFNleaf(F$) 21820IF INSTR(F$,".")=0 THEN =F$ 21830T$="" 21840LP%=LENF$ 21850WHILE MID$(F$,LP%,1)<>"." 21860T$=MID$(F$,LP%,1)+T$ 21870LP%-=1 21880ENDWHILE 21890=T$ 21900 21910DEFPROCspbuf(BS%) 21920IF BS%=0 THEN SYS "Wimp_SlotSize",CUSL%,-1:ENDPROC 21930SYS "Wimp_SlotSize",CUSL%+BS%,-1 21940SYS "Wimp_SlotSize",-1,-1 TO SPL% 21950IF SPL%<(CUSL%+BS%) THEN SYS "Wimp_SlotSize",CUSL%,-1:SPNE%=BS%:Q%=TRUE:ENDPROC ELSE Q%=FALSE 21960!SPBUF%=BS% 21970SPBUF%!8=16 21980SYS&2E,265,SPBUF% 21990SPSIZ%=BS% 22000ENDPROC 22010 22020DEFPROCspbuferr:PROCkillf:FUST%=-1:FUSE%=-1:PROCwindname(2,PIC$):PROCmessage(0,"No room to store sprite. ("+STR$(SPNE%)+" bytes needed)") 22030 22040DEFFNspritesize(DX%,DY%,PL%) 22050DX%=ABS(DX%) DIV 2:DY%=ABS(DY%) DIV 4 22060IF (DX% MOD 4)>0 THEN DX%=((DX% DIV 4)+1)*4 22070DX%+=16 22080=(DX%*DY%*(PL%+1))+1024 22090 22100DEFPROCkey 22110KWH%=!BLK%:KIC%=BLK%!4:KEY%=BLK%!24 22120POK%=TRUE 22130CASE KWH% OF 22140WHEN HAND%(5):PROCbruskey 22150WHEN HAND%(6):PROCgridkey 22160WHEN HAND%(8):PROCareakey 22170ENDCASE 22180IF POK% THEN PROChotkeys 22190IF POK% THEN SYS"Wimp_ProcessKey",KEY% 22200ENDPROC 22210 22220DEFPROCrotkey 22230ENDPROC 22240 22250DEFPROCtoolclick 22260ENDPROC 22270 22280DEFPROChotkeys 22290CASE KEY% OF 22300WHEN &181:POK%=FALSE:PROCopenpal 22310WHEN &183:POK%=FALSE:PROCopenwind(0) 22320WHEN &188:POK%=FALSE:PROCnf("Paintbrush",4,5):PROCtkh(10) 22330WHEN &189:POK%=FALSE:PROCnf("",-1,-1) 22340 22350WHEN &1CB:POK%=FALSE:IF LAOPWI%<>-1 THEN PROCopenwind(LAOPWI%) 22360 22370WHEN &198:POK%=FALSE:PROCnf("Wire ellipse",11,-1) 22380WHEN &199:POK%=FALSE:PROCnf("Wire parallelogram",13,-1):PROCtkh(17) 22390 22400WHEN &1DB:POK%=FALSE:PROCsi(6,19,"1"):PROCsi(6,21,"1"):PROCsi(6,23,"0"):PROCsi(6,25,"0"):MOUIC%=29:PROCgridclick 22410WHEN &1DC:POK%=FALSE:GRCO%=-1:PROCforcedrawmain 22420WHEN &1A1,&1A2,&1A3,&1A4:POK%=FALSE:PROCloadpic(&C11,"<Imagery$Dir>.XPIC"+STR$(KEY%-&1A0)) 22430WHEN &1EA:POK%=FALSE:PROCnf("Solid sector",16,-1) 22440 22450ENDCASE 22460ENDPROC 22470 22480DEFPROCzoomtog 22490POI%!120=HAND%(2):SYS "Wimp_GetWindowState",,POI%+120 22500IF ZOOM%<>1 THEN 22510ZOOM%=1 22520ELSE 22530ZOOM%=VALFNgi(33,8):IF ZOOM%=0 THEN ZOOM%=1 22540ENDIF 22550!BLK%=HAND%(2):SYS "Wimp_CloseWindow",,BLK% 22560!BLK%=0:BLK%!4=-1023*ZOOM%:BLK%!8=1279*ZOOM%:BLK%!12=0:SYS "Wimp_SetExtent",HAND%(2),BLK% 22570!BLK%=HAND%(2):BLK%!4=WLX%:BLK%!8=WLY%:BLK%!12=WUX%:BLK%!16=WUY%:BLK%!20=WSX%:BLK%!24=WSY%:BLK%!28=POI%!148:SYS "Wimp_OpenWindow",,BLK% 22580WLX%=POI%!124:WLY%=POI%!128:WUX%=POI%!132:WUY%=POI%!136:WSX%=POI%!140:WSY%=POI%!144 22590PROCforcedrawmain:ENDPROC 22600 22610DEFPROCop1 22620ENDPROC 22630 22640DEFPROCairbkey 22650PROCicfb(4,17,19,19):PROCicfb(4,19,17,17) 22660ENDPROC 22670 22680DEFPROCbruskey 22690PROCicfb(5,23,24,19) 22700PROCicfb(5,24,20,23) 22710PROCicfb(5,20,19,24) 22720PROCicfb(5,19,23,20) 22730IF KIC%=19 AND KEY%=13 THEN POK%=FALSE:MOUIC%=26:PROCbrushclick 22740ENDPROC 22750 22760DEFPROCgridkey 22770PROCicfb(6,19,21,25) 22780PROCicfb(6,21,23,19) 22790PROCicfb(6,23,25,21) 22800PROCicfb(6,25,19,23) 22810IF KIC%=25 AND KEY%=13 THEN POK%=FALSE:MOUIC%=29:PROCgridclick 22820ENDPROC 22830 22840DEFPROCareakey 22850PROCicfb(8,17,18,20) 22860PROCicfb(8,18,19,17) 22870PROCicfb(8,19,20,18) 22880PROCicfb(8,20,17,19) 22890IF KIC%=20 AND KEY%=13 THEN POK%=FALSE:MOUIC%=16:PROCgrabclick 22900ENDPROC 22910 22920DEFPROCtextkey 22930ENDPROC 22940 22950DEFPROCframkey 22960PROCicfb(19,10,12,12) 22970PROCicfb(19,12,10,10) 22980IF KEY%=13 AND KIC%=12 THEN POK%=FALSE:MOUIC%=14:PROCframeclick 22990ENDPROC 23000 23010DEFPROCicfb(WH%,IC%,ICF%,ICB%) 23020IF KIC%=IC% AND (KEY%=&18E OR KEY%=13) THEN POK%=FALSE:PROCctic(WH%,ICF%):ENDPROC 23030IF KIC%=IC% AND KEY%=&18F THEN POK%=FALSE:PROCctic(WH%,ICB%) 23040ENDPROC 23050 23060DEFPROCctic(WH%,IC%):A$=FNgi(WH%,IC%):SYS "Wimp_SetCaretPosition",HAND%(WH%),IC%,,,-1,LEN(A$):ENDPROC 23070 23080DEFPROCpatch(PN%):IF LAPATCH%=PN% THEN ENDPROC 23090OSCLI("LOAD <Imagery$Dir>.Overlays."+STR$PN%+" "+STR$~(PATCH%-2)) 23100LAPATCH%=PN% 23110ENDPROC 23120 23130DEFPROCzoomclick:IRP%=FNperc(33,8) 23140PROCarrows(33,5,6,8,1,25,1) 23150IF MOUIC%>24 AND MOUIC%<33 THEN PROCsi(33,8,STR$((MOUIC%-24)*2)) 23160IGP%=FNperc(33,8):IF IRP%<>IGP% THEN ZOOMS%=IGP%*4:PROCgetslor(33,39):PROCredrawslid(33,11,IGP%*4) 23170IF MOUIC%=39 THEN ZOOMS%=FNslidhit(33,39,MOUX%,MOUY%,11,4) 23180IF MOUIC%<>42 THEN ENDPROC 23190ZOOM%=VAL(FNgi(33,8)):IF ZOOM%<1 THEN ZOOM%=1 23200PROCzoomsize:PROCforcedrawmain 23210IF MOUB%<>1 THEN PROCmenoff 23220ENDPROC 23230 23240DEFPROCredrawzoom 23250SYS "Wimp_RedrawWindow",,BLK% TO FIN% 23260WOX%=BLK%!4-BLK%!20:WOY%=(BLK%!16-BLK%!24) 23270WHILE FIN%:PROCslidplot(33,39,ZOOMS%,11):SYS "Wimp_GetRectangle",,BLK% TO FIN%:ENDWHILE 23280ENDPROC 23290 23300DEFPROCredrawrgb 23310SYS "Wimp_RedrawWindow",,BLK% TO FIN% 23320WOX%=BLK%!4-BLK%!20:WOY%=(BLK%!16-BLK%!24) 23330WHILE FIN%:PROCslidplot(21,30,RSL%,11):PROCslidplot(21,31,GSL%,10):PROCslidplot(21,32,BSL%,8):SYS "Wimp_GetRectangle",,BLK% TO FIN%:ENDWHILE 23340ENDPROC 23350 23360DEFPROCslidplot(WH%,IH%,V%,CO%) 23370!ICBLK%=HAND%(WH%):ICBLK%!4=IH%:SYS "Wimp_GetIconState",,ICBLK% 23380SYS "Wimp_SetColour",CO% 23390MX%=WOX%+(ICBLK%!8)+2:MY%=WOY%+(ICBLK%!12)+4 23400RECTANGLE FILL MX%,MY%,V%*2,15:IF V%<100 THEN SYS "Wimp_SetColour",1:RECTANGLE FILL MX%+(V%*2),MY%,(100-V%)*2,15 23410ENDPROC 23420 23430DEFFNslidhit(WH%,IH%,MX%,MY%,CO%,WE%) 23440PROCgetslor(WH%,IH%):MB%=4 23450REPEAT 23460MOUSE RECTANGLE WOX%-2,WOY%,202,14 23470V%=((MX%-(WOX%-2))DIV2):IF V%<0 THEN V%=0 23480IF V%>100 THEN V%=100 23490PROCgetslor(WH%,IH%):PROCredrawslid(WH%,CO%,V%) 23500PROCslidud(WE%,V%) 23510MOUSE MX%,MY%,MB% 23520UNTIL MB%=0 23530SYS "OS_ReadModeVariable",-1,4 TO ,,MX%:SYS "OS_ReadModeVariable",-1,5 TO ,,MY%:MX%=1<<MX%:MY%=1<<MY% 23540SYS "OS_ReadModeVariable",-1,11 TO ,,CO%:SYS "OS_ReadModeVariable",-1,12 TO ,,WE% 23550MOUSE RECTANGLE 0,0,CO%*MX%,WE%*MY% 23560=V% 23570 23580DEFPROCgetslor(WH%,IH%) 23590!ICBLK%=HAND%(WH%):SYS "Wimp_GetWindowState",,ICBLK% 23600WOX%=ICBLK%!4-ICBLK%!20:WOY%=(ICBLK%!16-ICBLK%!24) 23610!ICBLK%=HAND%(WH%):ICBLK%!4=IH%:SYS "Wimp_GetIconState",,ICBLK% 23620WOX%+=(ICBLK%!8)+2:WOY%+=(ICBLK%!12)+4 23630ENDPROC 23640 23650DEFPROCredrawslid(WH%,CO%,V%) 23660!ICBLK%=HAND%(WH%):ICBLK%!4=(ICBLK%!8)+2:ICBLK%!8=(ICBLK%!12)+4:ICBLK%!12=(ICBLK%!16)-2:ICBLK%!16=(ICBLK%!20)-4 23670SYS "Wimp_UpdateWindow",,ICBLK% TO FIN% 23680WHILE FIN%:SYS "Wimp_SetColour",CO%:RECTANGLE FILL WOX%,WOY%,V%*2,15:IF V%<100 THEN SYS "Wimp_SetColour",1:RECTANGLE FILL WOX%+(V%*2)+2,WOY%,(100-V%)*2,15 23690SYS "Wimp_GetRectangle",,ICBLK% TO FIN%:ENDWHILE 23700ENDPROC 23710 23720DEFPROCui(WH2%,IH2%,IT$) 23730PROCsi(WH2%,IH2%,IT$) 23740POI%!120=HAND%(WH2%):SYS "Wimp_GetWindowState",,POI%+120 23750WOX2%=POI%!124-POI%!140:WOY2%=(POI%!136-POI%!144) 23760POI%!120=HAND%(WH2%):POI%!124=IH2%:SYS "Wimp_GetIconState",,POI%+120 23770WOX2%+=(POI%!128)+2:WOY2%+=(POI%!132)+4 23780SYS "Wimp_UpdateWindow",,POI%+120 TO FIN% 23790WHILE FIN%:SYS "Wimp_GetRectangle",,POI%+120 TO FIN%:ENDWHILE 23800ENDPROC 23810 23820DEFPROCscreentowork(WE%, RETURN TX%,RETURN TY%) 23830POI%!128=WE%:SYS"Wimp_GetWindowState",,POI%+128 23840TX%=(TX%-(POI%!132))+(POI%!148) 23850TY%=(TY%-(POI%!144))+(POI%!152) 23860ENDPROC 23870 23880DEFPROCsavesets(IT$) 23890ENDPROC 23900 23910DEFPROCloadsets(IT$):IF NOT NOL% THEN PROCkillf:FUSE%=-1:PROCmenoff 23920IF UNDO%<>-1 THEN PROCdiundo 23930WE%=OPENIN(IT$):IF WE%=0 THEN PROCmessage(2,"Could not load settings") 23940IT$=GET$#WE% 23950FORL%=0 TO 15:FORK%=0 TO 1:FORI%=0 TO 4:INPUT#WE%,GRFI%(L%,K%,I%):NEXT:NEXT:NEXT 23960SYS "OS_GBPB",4,WE%,BRUSH%,13000 23970SYS "OS_GBPB",4,WE%,TRASP%,256 23980SYS "OS_GBPB",4,WE%,PFILLS%,7000 23990INPUT#WE%,GRLO%,KUKE%,KSC%,UNDO%,GRCO%,PALE%,TX%,GRIWI%,GRIHE%,GRBX%,GRBY%,F$:PROCsi(30,27,F$) 24000PROCsi(10,48,STR$(TX%)):FORL%=1 TO TX%:PROCclearicon(10,FNlipaadj(L%+6)):NEXT:IF TX%<40 THEN FORL%=TX%+1 TO 40:PROCshadeicon(10,FNlipaadj(L%+6)):NEXT 24010FORL%=0 TO 39:INPUT#WE%,TX%:IF TX% THEN PROCiconhi(10,FNlipaadj(L%+7)) ELSE PROCiconlo(10,FNlipaadj(L%+7)) 24020NEXT 24030FORL%=0 TO 5:INPUT#WE%,PAT%(L%):NEXT 24040FORL%=0 TO 8:FORK%=0 TO 4:INPUT#WE%,ECF%(L%,K%):NEXT:NEXT 24050CLOSE#WE%:IF UNDO%<>-1 THEN PROCenundo 24060PROCbuildiconmenu:PROCbuildmm2 24070IF NOT NOL% THEN PROCforcedrawmain 24080ENDPROC 24090 24100DEFPROCtkh(IC%):TKH%=IC%:PROCiconhi(32,IC%):ENDPROC 24110 24120REM ---------------
� ><Imagery$Dir>.!RunImage �=�P+&1000:PATCH%=�P � � �makerr (: 2� LF$="" < �setup F.NOL%=�:�loadsets("<Imagery$Dir>.Defaults") P>NOL%=�:�ed_bru:!BLK%=HAND%(12):ș "Wimp_CloseWindow",,BLK% Z�action d�die n� x��setup:LEGO%=�:TKH%=-1 ��MESI%=5*1024:� POI% 256,TAS% 3000,MENU% MESI%,MENUIND% MESI%,SEL% 256,ICBLK% 256,VARS 128,MENALO% 16,CODE% 7*1024,IO% 256,TRANSTAB% 256,RGBG% 192,MENAD% 256 �BLK%=TAS%+2000 � �lș "OS_ReadVarVal","Imagery$File",IO%,256,0,0 � ,,K%:L%=0:LF$="":ȕ K%>0:LF$=LF$+�(IO%?L%):L%+=1:K%-=1:� � � �L%=0 � 188 � 4:RGBG%!L%=0:� �&MEOF%=0:MEIN%=0:MBUS%=�:LAOPWI%=-1 �$MENALO%="A -~" �FTL%=�:LAPATCH%=-1 �B� PIC% 161*1024,SCALE% 32,PIXTAB% 256,PIXTAB2% 256,X%(8),Y%(8) �6SPBUF%=�:SPSIZ%=0:ș "Wimp_SlotSize",-1,-1 � CUSL% �� PAL% 22600,OPAL% 22600,SHOW% 10240,PALTAB% 512,BTC% 256,CTT% 256,TTB% 256,ROTTAB% 1800,RAND% 4096,PFILLS% 7000:!PAL%=22600:!OPAL%=22600:!PFILLS%=7000:!SHOW%=10240 � � BRUSH% 13000:!BRUSH%=13000 ,ș&2E,266,BRUSH%,"<Imagery$Dir>.Brushes" *ș&2E,266,PAL%,"<Imagery$Dir>.Palette" +ș&2E,266,OPAL%,"<Imagery$Dir>.Palette" ".ș&2E,266,PFILLS%,"<Imagery$Dir>.PatFills" ,(ș&2E,266,SHOW%,"<Imagery$Dir>.Show" 6-�("LOAD <Imagery$Dir>.PalTab "+�~PALTAB%) @5�("LOAD <Imagery$Dir>.BTC "+�~BTC%):� byte -> pal J5�("LOAD <Imagery$Dir>.CTT "+�~CTT%):� pal -> byte T>�("LOAD <Imagery$Dir>.TTB "+�~TTB%):� (col*64)+tint -> pal ^-�("LOAD <Imagery$Dir>.RotTab "+�~ROTTAB%) h)�("LOAD <Imagery$Dir>.Code "+�~CODE%) r-�("LOAD <Imagery$Dir>.RotTab "+�~ROTTAB%) |/COL%=255:FUSE%=-1:FUST%=-1:FUCO%=0:BUTDO%=� �B$TAS%="TASK":ș"Wimp_Initialise",200,!TAS%,"Imagery" � ,THAND% ��loadsprites � �loadvars �B!BLK%=-1:BLK%!4=0:BLK%!8=0:BLK%!12=64:BLK%!16=64:BLK%!20=&2102 �<� BLK%!24 10:$(BLK%!24)="!TinyImage":BLK%!28=1:BLK%!32=8 �(ș "Wimp_CreateIcon",,BLK% � ICHAND% �NOWIND%=34:NOMENS%=20 �-� STORE% 15*1024,BUF% 5048,HAND%(NOWIND%) �SOF%=STORE% �� Save,Info,Main,Palette,Airbrush,Brushes,Grid,SpriteSave,Area,Help,Linepat,Fillpat,EdBrush,EdFill,Text,Tback,FontParams,FillCont,ColRep,Frame,Pfills,RGBcont,Greyscale,Pixelate,Rotate,Colscale,Contrast,Posterise,RGBgraph,Filter,Wobble,Import,Toolkit �� Zoom,SetSave � � �d`A �:ș "Wimp_OpenTemplate",,"<Imagery$Dir>.Templates":K%=0 �:� A$:$IO%=A$ Hș "Wimp_LoadTemplate",,BUF%,SOF%,STORE%+(15*1024),-1,IO%,0 � ,,SOF% � K%=2 � BUF%?35=&FF &,ș "Wimp_CreateWindow",,BUF% � HAND%(K%) 0K%+=1:� K%>NOWIND% :ș "Wimp_CloseTemplate" D#�L%=15 � 46:�shadeicon(10,L%):� N�si(13,83,"16") X�23,6,0| b�systemvars l �chars v�loadfonts �@�L%=0 � NOMENS%:!�mad(L%)=-1:�:�buildmainmenu:�buildiconmenu �LWG%=-1:LIG%=-1 �5WLX%=0:WLY%=300:WUX%=1279:WUY%=1023:WSX%=0:WSY%=0 �EDTY%=0:EFCOL%=255 �� � � ݤmad(MAD%):=MENAD%+(MAD%*4) �!ݤcmad(MAD%):=MENAD%!(MAD%*4) � ���systemvars �0!PIC%=161*1024:PIC%!4=0:PIC%!8=24:PIC%!12=24 �&ș &2E,271,PIC%,"PIC",0,640,256,15 �PIC$="<Untitled>" ESM%=-1:EPM%=-1 ?GRCO%=-1:GRTI%=-1:GRLO%=�:GRIWI%=1:GRIHE%=1:GRBX%=0:GRBY%=0 3GRXM%=1:GRXD%=1:GRYM%=1:GRYD%=1:GRFX%=�:GRFY%=� ZOOM%=1:ZOOMS%=1 *#USE%=0:LITY%=5:GRMA%=�:UNDO%=-1 4� PAT%(5):PAT%()=0:PALE%=8 >� ECF%(8,4):ECF%()=0:ROT%=0 H� GRFI%(15,1,4):GRFI%()=0 R0FIFC%=63:FIFT%=192:FILC%=3:FILT%=192:FILR%=0 \ IP%=� f(SELBR%=1:BXM%=1:BXD%=1:BYM%=1:BYD%=1 pEDBR%=1:IDRAG%=�:CPF%=1 zV� LF$<>"" � �qatload(LF$):PIC$=�leaf(LF$):�si(0,6,LF$):�openmain:�windname(2,PIC$) �� TRASP% 256, REPS% 256 ��L%=0 � 255:REPS%?L%=L%:� �!�L%=0 � 252 � 4:TRASP%!L%=0:� �$� FONTT$(64):FONTA%=-1:FONTO%=-1 �FONTB%=0:SREP%=255 �8MMX%=1:MMY%=1:MOP%=�:KUKE%=�:KUKD%=0:KUKL%=-1:KSC%=� �RSL%=100:GSL%=100:BSL%=100 �� � ���loadvars �F%=�("<Imagery$Dir>.Vars") ���#F%,backuppic,fillmask,getpicbyte,getbrushbyte,setpicbyte,pixaverage,tintarea,averagebrush,tintbrush,findchangebox,graduatedfill,colrep,patfill,rgbcont,greyscale,rotate,transarea,rgbgraph,filter,wobble ��#F% �backuppic+=CODE%:fillmask+=CODE%:getpicbyte+=CODE%:getbrushbyte+=CODE%:setpicbyte+=CODE%:pixaverage+=CODE%:tintarea+=CODE%:averagebrush+=CODE%:tintbrush+=CODE%:findchangebox+=CODE%:graduatedfill+=CODE%:colrep+=CODE% }patfill+=CODE%:rgbcont+=CODE%:greyscale+=CODE%:rotate+=CODE%:transarea+=CODE%:rgbgraph+=CODE%:filter+=CODE%:wobble+=CODE% � $ .��loadfonts 8FONTS%=0:� B L��loadsprites V� ` j5��action:ș "Wimp_ForceRedraw",-1,0,0,&3000,&3000 t ~� � �poll �'� (REAS%=17 � REAS%=18) � BLK%!16=0 �� � ���die:OP%=0:�spbuf(0) �3�L%=1 � 4:�("*REMOVE <Imagery$Dir>.XPIC"+�L%):� �$ș "Wimp_CloseDown",THAND%,!TAS% �� �� � � ��poll �"ș "Wimp_GetPointerInfo",,BLK% !� BLK%!12<>HAND%(2) � MBUS%=� !BLK%=%10011111110000110000 !ș "Wimp_Poll",0,BLK% � REAS% � REAS%>-1 � �act (� 2 ��act <Ȏ REAS% � F� 0:�kuke:�picpoll P� 1:�redraw Z� 2:�opmain d� 3:�clmain n� 6:�mouse x� 7:�dragfin �� 8:�key � � 9:�menu �� 17,18:�inmessage(BLK%!16) �� �� � ���kuke:� � KUKE% � � �KULI%=10 �ȗ MX%,MY%,MH%:KP%=� �� � �(-58) � �TDF �8� KUKL%<>-58 � KUKL%=-58:KUKD%=0:MY%+=4:KP%=�:� �TDF �)KUKD%+=1:� KUKD%<KULI% � KP%=�:� �TDF �KUKD%=KULI%:MY%+=4:KP%=� � � �(-42) � �TlF 8� KUKL%<>-58 � KUKL%=-58:KUKD%=0:MY%-=4:KP%=�:� �TlF )KUKD%+=1:� KUKD%<KULI% � KP%=�:� �TlF "KUKD%=KULI%:MY%-=4:KP%=� ,� � �(-26) � �DTF 68� KUKL%<>-58 � KUKL%=-58:KUKD%=0:MX%-=2:KP%=�:� �DTF @)KUKD%+=1:� KUKD%<KULI% � KP%=�:� �DTF JKUKD%=KULI%:MX%-=2:KP%=� T� � �(-122) � �D|F ^8� KUKL%<>-58 � KUKL%=-58:KUKD%=0:MX%+=2:KP%=�:� �D|F h)KUKD%+=1:� KUKD%<KULI% � KP%=�:� �D|F rKUKD%=KULI%:MX%+=2:KP%=� |� � KP% � KUKL%=-1:KUKD%=0 �ȗ � MX%,MY% �� � ���redraw �Ȏ !BLK% � �� HAND%(2):�redrawmain �� HAND%(3):�redrawpal �� HAND%(5):�redrawbrush �� HAND%(11):�redrawpat �� HAND%(12):�redrawedbru �� HAND%(13):�redrawfill �� HAND%(15):�redrawtback �� HAND%(18):�redrawcolrep � HAND%(20):�redrawpatfill 0� HAND%(26),HAND%(27),HAND%(28):�redrawgraph � HAND%(33):�redrawzoom &� HAND%(21):�redrawrgb 0� HAND%(30):�redrawwob :� D� N X��redrawwob b'ș "Wimp_RedrawWindow",,BLK% � FIN% l�getrdor(564) v`ȕ FIN%:�plot256sprite(SHOW%,"SHOW",WOX%+64,WOY%+16):ș "Wimp_GetRectangle",,BLK% � FIN%:�:� � �C��forcedrawwob:ș "Wimp_ForceRedraw",HAND%(30),0,-564,480,220:� � ���redrawbrush �'ș "Wimp_RedrawWindow",,BLK% � FIN% ��getrdor(260) �<ȕ FIN%:�plotbrushes:ș "Wimp_GetRectangle",,BLK% � FIN% �� �� � ���redrawedbru �'ș "Wimp_RedrawWindow",,BLK% � FIN% ��getrdor(640+(EDTY%*260)) :ȕ FIN%:�plotedbru:ș "Wimp_GetRectangle",,BLK% � FIN% � � *��redrawpatfill 4'ș "Wimp_RedrawWindow",,BLK% � FIN% >�getrdor(108) H<ȕ FIN%:�plotpatfill:ș "Wimp_GetRectangle",,BLK% � FIN% R� \� f pF��forcedrawpatfill:ș "Wimp_ForceRedraw",HAND%(20),0,-108,1100,0:� z �%��forcedrawedbru(x1%,y1%,x2%,y2%) �!BLK%=HAND%(12) �BLK%!4=x1% �BLK%!8=y1% �BLK%!12=x2% �BLK%!16=y2% �'ș "Wimp_UpdateWindow",,BLK% � FIN% ��getrdor(640+(EDTY%*260)) �ȕ FIN% ��plotedbru �'ș "Wimp_GetRectangle",,BLK% � FIN% �� �� ��forcedrawbrush !BLK%=HAND%(5) $BLK%!4=0 .BLK%!8=-260 8BLK%!12=384 B BLK%!16=0 L'ș "Wimp_UpdateWindow",,BLK% � FIN% V�getrdor(260) `ȕ FIN% j�plotbrushes t'ș "Wimp_GetRectangle",,BLK% � FIN% ~� �� � �(��plot256sprite(SPA%,SPI$,POX%,POY%) �� �<>15 � � �tzI �Z!SCALE%=1:SCALE%!4=1:SCALE%!8=1:SCALE%!12=1:ș "OS_SpriteOp",290,SPA%,SPI$,POX%,POY%:� �9� �<>ESM% � ESM%=�:EPM%=�:ș&40740,15,0,-1,-1,PIXTAB% �ș&35,-1,5 � ,,E% �)SX%=2^(2-E%):SCALE%!4=SX%:SCALE%!12=1 �ș&35,-1,4 � ,,E% �V� E%<1 � SX%=2^(1-E%):!SCALE%=SX%:SCALE%!8=1 � SX%=2^(E%-1):!SCALE%=1:SCALE%!8=SX% �=ș "OS_SpriteOp",308,SPA%,SPI$,POX%,POY%,0,SCALE%,PIXTAB% �� ��plotpatfill ��L%=1 � 12:�plot256sprite(PFILLS%,�L%,WOX%+((L%-1)*84)+24,WOY%+12):� CPF%=L% � �col(0,0,0):ȓ WOX%+((CPF%-1)*84)+16,WOY%+4,78,76:ȓ WOX%+((CPF%-1)*84)+18,WOY%+4,74,76 � (� 2 <��plotbrushes F�L%=1 � 12 PDBLK%!400=HAND%(5):BLK%!404=L%-1:ș "Wimp_GetIconState",,BLK%+400 ZH�plot256sprite(BRUSH%,�L%,WOX%+(BLK%!408)+2,WOY%+(260+(BLK%!412))+4) dV� SELBR%=L% � �col(48,192,3):ȓ Ȑ WOX%+(BLK%!408)+2,WOY%+(260+(BLK%!412))+4,64,60 n� x� � ���plotedbru �(� EDTY%=0 � WE%=BRUSH% � WE%=PFILLS% �7�plot256sprite(WE%,"1",WOX%+32,WOY%+20+(EDTY%*260)) �-� EDBR%<>1 � �col(0,0,0) � �col(63,192,0) �Pȓ Ȑ WOX%+32,WOY%+4+(EDTY%*260),64,8:ȓ Ȑ WOX%+32,WOY%+86+(EDTY%*260),64,8 �-� WOY%+108+(EDTY%*260)<(BLK%!32) � � �TDK ��L%=2 � 12 �H� BLK%!400=HAND%(12):BLK%!404=L%-1:SYS "Wimp_GetIconState",,BLK%+400 �C�plot256sprite(WE%,�L%,WOX%+((L%-1)*64)+32,WOY%+20+(EDTY%*260)) �.� EDBR%<>L% � �col(0,0,0) � �col(63,192,0) �hȓ Ȑ WOX%+((L%-1)*64)+32,WOY%+4+(EDTY%*260),64,8:ȓ Ȑ WOX%+((L%-1)*64)+32,WOY%+86+(EDTY%*260),64,8 �� .!SCALE%=(!SCALE%)*12:SCALE%!4=(SCALE%!4)*8 -� WOY%+108+(EDTY%*260)>(BLK%!40) � � �TlK �� �<>15 � ș "OS_SpriteOp",308,WE%,�EDBR%,WOX%+28,WOY%+112+(EDTY%*260),0,SCALE%,PIXTAB% � ș "OS_SpriteOp",308,WE%,�EDBR%,WOX%+28,WOY%+112+(EDTY%*260),0,SCALE% "�EX%=WOX%+28:EY%=WOY%+112+(EDTY%*260):�col(21,192,0):�L%=0 � 32:� EX%+(L%*24),EY%,EX%+(L%*24),EY%+512:�:�L%=0 � 16:� EX%,EY%+(L%*32),EX%+768,EY%+(L%*32):� ,�� EDTY%=1 � WOX%+=32:WOY%+=16:�plotpal(OPAL%):�col(63,192,0):ȓ WOX%+((EFCOL% � 32)*24),WOY%+((EFCOL% � 32)*28),24,28:WOX%-=32:WOY%-=16 6� @ J��forcedrawmain T!BLK%=HAND%(2) ^BLK%!4=0 hBLK%!8=-1024*ZOOM% rBLK%!12=1280*ZOOM% | BLK%!16=0 �'ș "Wimp_UpdateWindow",,BLK% � FIN% ��getrdor(1024*ZOOM%) �ȕ FIN% ��plotpic �'ș "Wimp_GetRectangle",,BLK% � FIN% �� �� � �!��quickdrawmain:� � VACB% � � �!BLK%=HAND%(2) �BLK%!4=CBMINX% �BLK%!8=CBMINY% �BLK%!12=CBMAXX% BLK%!16=CBMAXY% 'ș "Wimp_UpdateWindow",,BLK% � FIN% �getrdor(1024*ZOOM%) &ȕ FIN% 0�plotpic :'ș "Wimp_GetRectangle",,BLK% � FIN% D� N� X b��inpic:� IP% � � l IP%=� v1ș "OS_SpriteOp",316,PIC%,"PIC" � V1,V2,V3,V4 �ș "OS_ChangedBox",2 �ș "OS_ChangedBox",1 �8� GCOL3,63:LINE 300,300,320,320:LINE 300,300,320,320 �%�23,6:�L%=1 � 5:� PAT%(L%):�:� 0| �ș6,163,242,PALE% �� � �<��inpicR:ș "OS_SpriteOp",316,PIC%,"PIC" � B1,B2,B3,B4:� � �@��inbackup:ș "OS_SpriteOp",316,SPBUF%,"PIC" � B1,B2,B3,B4:� � �F��insprite(ma%,sa%,sn$):ș &2E,316+ma%,sa%,sn$ � IS1,IS2,IS3,IS4:� � (��outsprite:ș &2E,IS1,IS2,IS3,IS4:� .��outbackup:ș "OS_SpriteOp",B1,B2,B3,B4:� *��outpic:� � IP% � � 4 IP%=� >!ș "OS_ChangedBox",-1 � ,CBA% H�� �(CBA%!4)=-1 � �(CBA%!8)=-1 � �(CBA%!12)=-1 � �(CBA%!16)=-1 � VACB%=�:ș "OS_ChangedBox":ș "OS_SpriteOp",V1,V2,V3,V4:� � VACB%=� R*CBMINX%=CBA%!4:CBMINX%=CBMINX%*ZOOM%*2 \4CBMINY%=CBA%!8:CBMINY%=(-1024+(CBMINY%*4))*ZOOM% f+CBMAXX%=CBA%!12:CBMAXX%=CBMAXX%*ZOOM%*2 p5CBMAXY%=CBA%!16:CBMAXY%=(-1024+(CBMAXY%*4))*ZOOM% zCBMAXX%+=4*ZOOM% �CBMAXY%+=4*ZOOM% �ș "OS_ChangedBox" � ș "OS_SpriteOp",V1,V2,V3,V4 �� � ���redrawmain �� FUSE%=32 � �� FONT%<>0 � EFM%<>-1 � �n� IF MODE<>EFM% THEN PROCinpic:SYS "ColourTrans_SetFontColours",FHAND%,BPAL%,FPAL%,14:PROCoutpic:EFM%=MODE �� �� �'ș "Wimp_RedrawWindow",,BLK% � FIN% ��getrdor(1024*ZOOM%) 8ȕ FIN%:�plotpic:ș "Wimp_GetRectangle",,BLK% � FIN% � � $ . ��plotpic 8H� �=15 � ZOOM%=1 � ș "OS_SpriteOp",290,PIC%,"PIC",WOX%,WOY%:�grid:� B9� �<>ESM% � ESM%=�:EPM%=�:ș&40740,15,0,-1,-1,PIXTAB% Lș&35,-1,5 � ,,E% V)SX%=2^(2-E%):SCALE%!4=SX%:SCALE%!12=1 `ș&35,-1,4 � ,,E% jV� E%<1 � SX%=2^(1-E%):!SCALE%=SX%:SCALE%!8=1 � SX%=2^(E%-1):!SCALE%=1:SCALE%!8=SX% t5!SCALE%=(!SCALE%)*ZOOM%:SCALE%!4=(SCALE%!4)*ZOOM% ~*� �=15 � TPIXTAB%=0 � TPIXTAB%=PIXTAB% �Gș "OS_SpriteOp",308,PIC%,"PIC",WOX%,WOY%,0,SCALE%,TPIXTAB%:�grid:� � � ��grid �>� GRCO%=-1 � (2*GRIWI%*ZOOM%)<16 � (4*GRIHE%*ZOOM%)<16 � � ��gridcol �� X%,Y% �?X%=(((BLK%!28)-WOX%) � (ZOOM%*(2*GRIWI%)))*(2*GRIWI%*ZOOM%) �?Y%=(((BLK%!32)-WOY%) � (ZOOM%*(4*GRIHE%)))*(4*GRIHE%*ZOOM%) �XOF%=(GRIWI%-GRBX%)*2*ZOOM% �YOF%=(GRIHE%-GRBY%)*4*ZOOM% �X%+=WOX%-XOF% �Y%+=WOY%-YOF% E�:� X%,(BLK%!32),X%,(BLK%!40):X%+=(2*GRIWI%*ZOOM%):� X%>(BLK%!36) E�:� (BLK%!28),Y%,(BLK%!36),Y%:Y%+=(4*GRIHE%*ZOOM%):� Y%>(BLK%!40) � (��plotpal(PTU%) 2�col(63,192,0) <� �<>15 � � �DZO Ftș "OS_SpriteOp",290,PTU%,"Palette",WOX%,WOY%:� PTU%=PAL% � ȓ WOX%+((COL% � 32)*24),WOY%+((COL% � 32)*28),24,28 P� Z9� �<>EPM% � ESM%=�:EPM%=�:ș&40740,15,0,-1,-1,PIXTAB% dș&35,-1,5 � ,,E% n)SX%=2^(2-E%):SCALE%!4=SX%:SCALE%!12=1 xș&35,-1,4 � ,,E% �V� E%<1 � SX%=2^(1-E%):!SCALE%=SX%:SCALE%!8=1 � SX%=2^(E%-1):!SCALE%=1:SCALE%!8=SX% �Bș "OS_SpriteOp",308,PTU%,"Palette",WOX%,WOY%,0,SCALE%,PIXTAB% �F� PTU%=PAL% � ȓ WOX%+((COL% � 32)*24),WOY%+((COL% � 32)*28),24,28 �� � �?��inpal:ș "OS_SpriteOp",316,PAL%,"Palette" � V1,V2,V3,V4:� � �+��outpal:ș "OS_SpriteOp",V1,V2,V3,V4:� � ���trasp(TC%) ��inpal:�trasp2(TC%):�outpal �� � ��trasp2(TC%) TRASP%?TC%=(TRASP%?TC%) � 1 +TX%=((TC% � 32)*24):TY%=((TC% � 32)*28) "�� IF (TRASP%?TC%)=0 THEN GCOL0,PALTAB%?(TC%*2) TINT PALTAB%?((TC%*2)+1) ELSE PROCanticol(PALTAB%?(TC%*2),PALTAB%?((TC%*2)+1),0) ,q� (TRASP%?TC%)=0 � �0,PALTAB%?(TC%*2) Ȝ PALTAB%?((TC%*2)+1) � �0,63-(PALTAB%?(TC%*2)) Ȝ PALTAB%?((TC%*2)+1) 6=� TX%+6,TY%+20,TX%+18,TY%+20:� TX%+12,TY%+8,TX%+12,TY%+20 @� J T��redrawpal ^'ș "Wimp_RedrawWindow",,BLK% � FIN% h�getrdor(228) r>ȕ FIN%:�plotpal(PAL%):ș "Wimp_GetRectangle",,BLK% � FIN% |� �� � ���redrawtback �'ș "Wimp_RedrawWindow",,BLK% � FIN% ��getrdor(228) �ȕ FIN%:�plotpal(OPAL%) �K�col(63,192,0):ȓ WOX%+((FONTB% � 32)*24),WOY%+((FONTB% � 32)*28),24,28 �'ș "Wimp_GetRectangle",,BLK% � FIN% �� �� � ���redrawcolrep �'ș "Wimp_RedrawWindow",,BLK% � FIN% �getrdor(556) ^ȕ FIN%:WOY%+=290:�plotpal(SPBUF%):�col(0,0,0):� WOX%,WOY%+224,WOX%+770,WOY%+224:WOY%-=290 A�plotpal(OPAL%):�col(0,0,0):� WOX%,WOY%+224,WOX%+770,WOY%+224 &M�col(63,192,0):ȓ WOX%+((SREP% � 32)*24),WOY%+290+((SREP% � 32)*28),24,28 0'ș "Wimp_GetRectangle",,BLK% � FIN% :� D� N X��forcedrawcolrep b!BLK%=HAND%(18) lBLK%!4=0 vBLK%!8=-556 �BLK%!12=770 � BLK%!16=0 �'ș "Wimp_UpdateWindow",,BLK% � FIN% ��getrdor(556) �ȕ FIN% �VWOY%+=290:�plotpal(SPBUF%):�col(0,0,0):� WOX%,WOY%+224,WOX%+770,WOY%+224:WOY%-=290 �A�plotpal(OPAL%):�col(0,0,0):� WOX%,WOY%+224,WOX%+770,WOY%+224 �M�col(63,192,0):ȓ WOX%+((SREP% � 32)*24),WOY%+290+((SREP% � 32)*28),24,28 �'ș "Wimp_GetRectangle",,BLK% � FIN% �� �� � � ݤcecf � �high(11,26) � =1 � �high(11,28) � =2 � �high(11,30) � =3 � �high(11,32) � =4 *=0 4 >��redrawpat H'ș "Wimp_RedrawWindow",,BLK% � FIN% R �getpator \Iȕ FIN%:�plotpal(OPAL%):�col(0,0,0):� WOX%,WOY%+224,WOX%+770,WOY%+224 f-CECF%=�cecf:�K%=0 � 7:L%=ECF%(K%+1,CECF%) pcPE%=BTC%?L%:�col(PALTAB%?(PE%*2),PALTAB%?((PE%*2)+1),0):ȓ Ȑ WOX%-146,(WOY%+276)-(K%*40),38,36 z� �'ș "Wimp_GetRectangle",,BLK% � FIN% �� �� � �ݤgrafilno �� �high(13,95) � =0 �� �high(13,99) � =1 �� �high(13,101) � =2 �� �high(13,103) � =3 �� �high(13,97) � =4 �=-1 � ���redrawfill 'ș "Wimp_RedrawWindow",,BLK% � FIN% �getrdor(484) qȕ FIN%:WOY%+=236:WOX%+=422:�plotpal(OPAL%):�col(0,0,0):� WOX%,WOY%+224,WOX%+770,WOY%+224:WOX%-=140:WOY%-=140 $xFIX%=WOX%+200:GRFIN%=�grafilno:�L%=0 � 15:� GRFIN%<>-1 � �col(GRFI%(L%,0,GRFIN%),GRFI%(L%,1,GRFIN%),0) � �col(0,0,0) .'ȓ Ȑ FIX%,WOY%-28,42,32:FIX%+=44:� 8:WOX%-=282:WOY%-=96:ș "Wimp_GetRectangle",,BLK% � FIN% B� L� V `��forcedrawfill j!BLK%=HAND%(13) tBLK%!4=0 ~BLK%!8=-500 �BLK%!12=1200 �BLK%!16=-360 �'ș "Wimp_UpdateWindow",,BLK% � FIN% ��getrdor(484) �ȕ FIN% �xFIX%=WOX%+482:GRFIN%=�grafilno:�L%=0 � 15:� GRFIN%<>-1 � �col(GRFI%(L%,0,GRFIN%),GRFI%(L%,1,GRFIN%),0) � �col(0,0,0) �'ȓ Ȑ FIX%,WOY%+68,42,32:FIX%+=44:� �'ș "Wimp_GetRectangle",,BLK% � FIN% �� �� � ���forcedrawpat !BLK%=HAND%(11) BLK%!4=0 BLK%!8=-356 BLK%!12=100 ( BLK%!16=0 2'ș "Wimp_UpdateWindow",,BLK% � FIN% < �getpator Fȕ FIN% PA�plotpal(OPAL%):�col(0,0,0):� WOX%,WOY%+224,WOX%+770,WOY%+224 ZCECF%=�cecf d� RK%=0 � 7 nL%=ECF%(RK%+1,CECF%) xdPE%=BTC%?L%:�col(PALTAB%?(PE%*2),PALTAB%?((PE%*2)+1),0):ȓ Ȑ WOX%-146,(WOY%+276)-(RK%*40),38,36 �,ȓ Ȑ WOX%-146,(WOY%+276)-(RK%*40),38,36 �� �'ș "Wimp_GetRectangle",,BLK% � FIN% �� �� � �&ݤctb(co%,ti%):by%=-1:�L%=0 to 255 � ���drawpicinit �!BLK%=HAND%(2) �BLK%!4=0 �BLK%!8=-936 �BLK%!12=1236 BLK%!16=0 'ș "Wimp_UpdateWindow",,BLK% � FIN% �getrdor(1024*ZOOM%) "� , 6��forcedrawpal(PTU%) @!BLK%=HAND%(3) JBLK%!4=0 TBLK%!8=-228 ^BLK%!12=770 h BLK%!16=0 r'ș "Wimp_UpdateWindow",,BLK% � FIN% |�getrdor(228) �ȕ FIN% ��plotpal(PTU%) �'ș "Wimp_GetRectangle",,BLK% � FIN% �� �� � ���forcedrawtback �!BLK%=HAND%(15) �BLK%!4=0 �BLK%!8=-228 �BLK%!12=770 � BLK%!16=0 �'ș "Wimp_UpdateWindow",,BLK% � FIN% �getrdor(228) ȕ FIN% �plotpal(OPAL%) &K�col(63,192,0):ȓ WOX%+((FONTB% � 32)*24),WOY%+((FONTB% � 32)*28),24,28 0'ș "Wimp_GetRectangle",,BLK% � FIN% :� D� N X��forcedrawgraph(WH%) b!BLK%=HAND%(WH%) l>BLK%!4=0:BLK%!8=-300:� WH%<>28 � BLK%!12=300 � BLK%!12=900 v BLK%!16=0 �3ș "Wimp_UpdateWindow",,BLK% � FIN%:�getgraphor �>ȕ FIN%:�drawgraph:ș "Wimp_GetRectangle",,BLK% � FIN%:�:� � ���redrawgraph �'ș "Wimp_RedrawWindow",,BLK% � FIN% ��getgraphor �>ȕ FIN%:�drawgraph:ș "Wimp_GetRectangle",,BLK% � FIN%:�:� � ���getgraphor �WOX%=(BLK%!4-BLK%!20)+44 �WOY%=(BLK%!16-BLK%!24)-256 �� � ��drawgraph n�col(63,192,0):ȓ Ȑ WOX%+2,WOY%+4,252,248:�col(0,0,0):� WOX%,WOY%,WOX%,WOY%+252:� WOX%,WOY%,WOX%+254,WOY% Ȏ FUSE% � �� 43:CONL%=��gi(26,18):CONH%=��gi(26,20):� CONL%<CONH% � �4,WOX%+CONL%*17,WOY%:�5,WOX%+CONH%*17,WOY%+252 � �4,WOX%+CONH%*17,WOY%+252:�5,WOX%+CONL%*17,WOY% *;� 44:POL%=��gi(27,22):POH%=��gi(27,24):PON%=��gi(27,26) 4oSTWI=PON%/16:STHE=(POH%-POL%)/(PON%-1):�L%=0 � 15:BH%=POL%+(�(STWI*L%)*STHE):ȓ WOX%+(L%*16),WOY%,16,BH%*17 >� H� R� \ f��getpator pWOX%=(BLK%!4-BLK%!20)+180 zWOY%=(BLK%!16-BLK%!24)-340 �� � � ��picpoll �"ș "Wimp_GetPointerInfo",,BLK% �%� MBUS% � BLK%!8<>0 � � � MBUS%=� � � BLK%!8=0 � LEGO% � LEGO%=� �"� BLK%!8<>0 � LEGO% � BLK%!8=0 �IWE%=0:�PC%=0 � NOWIND%:� BLK%!12=HAND%(PC%) � WE%=1:PC%=NOWIND%:� � � � � WE%=0 � IDRAG%=(BLK%!8<>0) �� BLK%!8=0 � IDRAG%=� �)� BLK%!12<>HAND%(2) � BLK%!16<>-1 � � �� BLK%!8<>0 � IDRAG% � � �"X%=!BLK%:Y%=BLK%!4:BUT%=BLK%!8 � BUT%=2 � � Ȏ FUSE% � F� 1:� FUST%=0 � BUT%<>0 � �picpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:� �TV\ $'� BUT%=0 � FUST%=0 � FUST%=0:� �TV\ .8�picpos:�inpic:�setcol:�l(X%(0),Y%(0),X%,Y%):�outpic 8�quickdrawmain BX%(0)=X%:Y%(0)=Y% L~� 4:� FUST%=0 � �paintscale:�picpos:�inpic:�eorback:�paintbrush(X%,Y%):�outpic:�quickdrawmain:OX%=X%:OY%=Y%:FUST%=1:� �TV\ V�picpos `�� X%<>OX% � Y%<>OY% � �paintscale:�inpic:�eorback:�paintbrush(OX%,OY%):�paintbrush(X%,Y%):OX%=X%:OY%=Y%:�outpic:�quickdrawmain j�� 11:� FUST%=0 � BUT%<>0 � �picpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:�inpic:�eoc:� X%(0),Y%(0),OX%,OY%:�outpic:�quickdrawmain:�letgo:� �TV\ t� FUST%=0 � � �TV\ ~}� BUT%=1 � FUST%=1 � �inpic:�eoc:� X%(0),Y%(0),OX%,OY%:�picpos:OX%=X%:OY%=Y%:FUST%=0:�outpic:�quickdrawmain:�letgo:� �TV\ �l� BUT%=1 � FUST%=2 � �inpic:�eoc:�elip(&C5,OX%,OY%):�picpos:FUST%=0:�outpic:�quickdrawmain:�letgo:� �TV\ ��� BUT%=4 � (OX%<>X%(0) � OY%<>Y%(0)) � FUST%=1 � �inpic:�eoc:X%(1)=OX%:Y%(1)=OY%:� X%(0),Y%(0),OX%,OY%:�picpos:OX%=X%:OY%=Y%:�elip(&C5,X%,Y%):�outpic:�quickdrawmain:�letgo:FUST%=2:� �TV\ ��� BUT%=4 � (OX%<>X%(1) � OY%<>Y%(1)) � FUST%=2 � �inpic:�eoc:�picpos:�elip(&C5,OX%,OY%):�setcol:�elip(&C5,X%,Y%):OX%=X%:OY%=Y%:�outpic:�quickdrawmain:�letgo:FUST%=0:� �TV\ �&�picpos:� X%=OX% � Y%=OY% � � �TV\ �j� FUST%=1 � �inpic:�eoc:� X%(0),Y%(0),OX%,OY%:OX%=X%:OY%=Y%:� X%(0),Y%(0),X%,Y%:�outpic:�quickdrawmain �d� FUST%=2 � �inpic:�eoc:�elip(&C5,OX%,OY%):OX%=X%:OY%=Y%:�elip(&C5,X%,Y%):�outpic:�quickdrawmain ĕ� 13:� FUST%=0 � BUT%<>0 � �picpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:�inpic:�eoc:� X%(0),Y%(0),OX%,OY%:�outpic:�quickdrawmain:�letgo:� �TV\ �� FUST%=0 � � �TV\ �}� BUT%=1 � FUST%=1 � �inpic:�eoc:� X%(0),Y%(0),OX%,OY%:�picpos:OX%=X%:OY%=Y%:FUST%=0:�outpic:�quickdrawmain:�letgo:� �TV\ �l� BUT%=1 � FUST%=2 � �inpic:�eoc:�para(0,0,OX%,OY%):�picpos:FUST%=0:�outpic:�quickdrawmain:�letgo:� �TV\ �� BUT%=4 � (OX%<>X%(0) � OY%<>Y%(0)) � FUST%=1 � �inpic:�eoc:X%(1)=OX%:Y%(1)=OY%:� X%(0),Y%(0),OX%,OY%:�picpos:OX%=X%:OY%=Y%:�para(0,0,X%,Y%):�outpic:�quickdrawmain:�letgo:FUST%=2:� �TV\ ��� BUT%=4 � (OX%<>X%(1) � OY%<>Y%(1)) � FUST%=2 � �inpic:�eoc:�picpos:�para(0,0,OX%,OY%):�setcol:�para(1,0,X%,Y%):OX%=X%:OY%=Y%:�outpic:�quickdrawmain:�letgo:FUST%=0:� �TV\ &�picpos:� X%=OX% � Y%=OY% � � �TV\ j� FUST%=1 � �inpic:�eoc:� X%(0),Y%(0),OX%,OY%:OX%=X%:OY%=Y%:� X%(0),Y%(0),X%,Y%:�outpic:�quickdrawmain d� FUST%=2 � �inpic:�eoc:�para(0,0,OX%,OY%):OX%=X%:OY%=Y%:�para(0,0,X%,Y%):�outpic:�quickdrawmain �� 16:� FUST%=0 � BUT%<>0 � �picpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:�inpic:�eoc:� X%(0),Y%(0),OX%,OY%:�outpic:�quickdrawmain:�letgo:� �TV\ (� FUST%=0 � � �TV\ 2}� BUT%=1 � FUST%=1 � �inpic:�eoc:� X%(0),Y%(0),OX%,OY%:�picpos:OX%=X%:OY%=Y%:FUST%=0:�outpic:�quickdrawmain:�letgo:� �TV\ <l� BUT%=1 � FUST%=2 � �inpic:�eoc:�elip(&B5,OX%,OY%):�picpos:FUST%=0:�outpic:�quickdrawmain:�letgo:� �TV\ F�� BUT%=4 � (OX%<>X%(0) � OY%<>Y%(0)) � FUST%=1 � �inpic:�eoc:X%(1)=OX%:Y%(1)=OY%:� X%(0),Y%(0),OX%,OY%:�picpos:OX%=X%:OY%=Y%:�elip(&B5,X%,Y%):�outpic:�quickdrawmain:�letgo:FUST%=2:� �TV\ P�� BUT%=4 � (OX%<>X%(1) � OY%<>Y%(1)) � FUST%=2 � �inpic:�eoc:�picpos:�elip(&B5,OX%,OY%):�setcol:�elip(&B5,X%,Y%):OX%=X%:OY%=Y%:�outpic:�quickdrawmain:�letgo:FUST%=0:� �TV\ Z&�picpos:� X%=OX% � Y%=OY% � � �TV\ dj� FUST%=1 � �inpic:�eoc:� X%(0),Y%(0),OX%,OY%:OX%=X%:OY%=Y%:� X%(0),Y%(0),X%,Y%:�outpic:�quickdrawmain nd� FUST%=2 � �inpic:�eoc:�elip(&B5,OX%,OY%):OX%=X%:OY%=Y%:�elip(&B5,X%,Y%):�outpic:�quickdrawmain x� 23:�poll_23 �� 25:�poll_25 �%� 27:� FUST%<2 � �rectpoll:� �TV\ �-�spinit:�spbuf(161*1024):� Q% � �spbuferr ��backuppic:�swapcorns � VARS!20=BTC%:VARS!24=PALTAB% �VARS!28=PIC%:VARS!32=SPBUF% �VARS!36=X%(0):VARS!40=Y%(0) �VARS!44=OX%:VARS!48=OY% �\A%=VARS:ș "Hourglass_On":� pixaverage:ș "Hourglass_Off":�spinit:�forcedrawmain:FUST%=0 ܀� 29:� FUST%=0 � �paintscale2:�picpos:�inpic:�eorback:�paintbrush(X%,Y%):�outpic:�quickdrawmain:OX%=X%:OY%=Y%:FUST%=1:� �TV\ ��picpos �� X%<>OX% � Y%<>OY% � �paintscale2:�inpic:�eorback:�paintbrush(OX%,OY%):�paintbrush(X%,Y%):OX%=X%:OY%=Y%:�outpic:�quickdrawmain ��� 30:� FUST%=0 � �paintscale2:�picpos:�inpic:�eorback:�paintbrush(X%,Y%):�outpic:�quickdrawmain:OX%=X%:OY%=Y%:FUST%=1:� �TV\ �picpos �� X%<>OX% � Y%<>OY% � �paintscale2:�inpic:�eorback:�paintbrush(OX%,OY%):�paintbrush(X%,Y%):OX%=X%:OY%=Y%:�outpic:�quickdrawmain � 32:� FONT%<>0 � "o�picpos:� BUT%=4 � FUST%<>0 � �inbackup:ș "Font_SetFont",FHAND%:ș "Font_Paint",,TEXT$,16,X%,Y%:�outbackup ,�� FUST%<>0 � (X%<>OX% � Y%<>OY%) � ET%=1:�restpic:ET%=2:ET%=3:�inpicR:ș "Font_SetFont",FHAND%:ET%=4:ș "Font_Paint",,TEXT$,16,X%,Y%:�outbackup:NTTP%+=1:ET%=5:ET%=6:OX%=X%:OY%=Y%:�forcedrawmain:ET%=7:OX%=X%:OY%=Y% 6� @E�picpos:� BUT%=4 � FUST%<>0 � �inbackup:�ostext(X%,Y%):�outbackup Jj� FUST%<>0 � (X%<>OX% � Y%<>OY%) � �restpic:�inpic:�ostext(X%,Y%):�outpic:�forcedrawmain:OX%=X%:OY%=Y% T�:� �TV\ ^%� 31:� FUST%<2 � �rectpoll:� �TV\ h>�swapcorns:FMINX%=X%(0):FMINY%=Y%(0):FMAXX%=OX%:FMAXY%=OY% r6ș "Hourglass_On":�fill:ș "Hourglass_Off":FUST%=0 |� 33:� FUST%>=2 � � �tPZ ��� FUST%=0 � BUT%=1 � �picpos:�inpic:CO%=�X%,Y%):TI%=Ȝ(X%,Y%):�outpic:SREP%=�findpalent(CO%,TI%):�forcedrawcolrep:� �TV\ � �rectpoll:� �TV\ �>�swapcorns:FMINX%=X%(0):FMINY%=Y%(0):FMAXX%=OX%:FMAXY%=OY% ��ș "Hourglass_On":!VARS=PIC%:VARS!4=PIC%:VARS!8=X%(0):VARS!12=Y%(0):VARS!16=OX%:VARS!20=OY%:VARS!24=BTC%:VARS!28=TTB%:VARS!32=REPS%:A%=VARS:� colrep:ș "Hourglass_Off":FUST%=0:�forcedrawmain �-� 34:� �high(31,3) � �high(31,4) � � �TV\ �� FUST%=0 � �dBZ �z� BUT%=4 � �inpic:�picpos:�pimport(OX%,OY%,3):�imptile:OX%=X%:OY%=Y%:�pimport(OX%,OY%,3):�outpic:�quickdrawmain:� �TV\ �d� FUST%=0 � FUST%=1:�picpos:OX%=X%:OY%=Y%:�inpic:�pimport(X%,Y%,3):�outpic:�quickdrawmain:� �TV\ �&�picpos:� X%=OX% � Y%=OY% � � �TV\ �U�inpic:�pimport(OX%,OY%,3):OX%=X%:OY%=Y%:�pimport(X%,Y%,3):�outpic:�quickdrawmain �l� 36:� FUST%=0 � �picpos:�inpic:�eoc:ȓ X%,Y%,FRW%*2,FRH%*4:�outpic:�quickdrawmain:OX%=X%:OY%=Y%:FUST%=1 ��picpos:� X%<>OX% � Y%<>OY% � �inpic:�eoc:ȓ OX%,OY%,FRW%*2,FRH%*4:OX%=X%:OY%=Y%:ȓ OX%,OY%,FRW%*2,FRH%*4:�outpic:�quickdrawmain �� BUT%<>4 � �TV\ �~�inpic:�eoc:ȓ OX%,OY%,FRW%*2,FRH%*4:�setcol:ȓ OX%,OY%,FRW%*2,FRH%*4:�eoc:ȓ OX%,OY%,FRW%*2,FRH%*4:�outpic:�quickdrawmain � 38:�poll_38 � 39:�poll_39 � 40:�poll_40 &� 41:�poll_41 0%� 42:� FUST%<2 � �rectpoll:� �TV\ :�supixtrans DkRW%=��gi(25,13):GW%=��gi(25,15):BW%=��gi(25,17):�L%=0 � 255:ș "ColourTrans_ColourNumberToGCOL",L% � G% NSRC%=(G%�%1111)*RW%:GC%=(((G%�48)>>2)+(G%�3))*GW%:BC%=(((G%�192)>>4)+(G%�3))*BW% X+TC%=((RC%+GC%+BC%)�3):� TC%>15 � TC%=15 bxTC%=(TC% � 3)+((TC%�12)*RSM%)+(((TC%�12)<<2)*GSM%)+(((TC%�12)<<4)*BSM%):ș"ColourTrans_GCOLToColourNumber",TC% � TC% lTRANSTAB%?L%=TC%:� vAA%=VARS:� transarea:ș "Hourglass_Off":FUST%=0:�forcedrawmain �� 43:�poll_43 �� 44:�poll_44 �%� 47:� FUST%<2 � �rectpoll:� �TV\ �-�spinit:�spbuf(161*1024):� Q% � �spbuferr ��backuppic:�swapcorns ��VARS!8=X%(0):VARS!12=Y%(0):VARS!16=OX%:VARS!20=OY%:VARS!24=�(�gi(29,5)):VARS!28=BLK%+512:A%=VARS:ș"Hourglass_On":� filter:ș"Hourglass_Off":�spinit:�forcedrawmain:FUST%=0 �%� 48:� FUST%<2 � �rectpoll:� �TV\ �-�spinit:�spbuf(161*1024):� Q% � �spbuferr ��backuppic:�swapcorns �WE%=1:� �T~\ �-� �high(30,25) � VARS!36=1 � VARS!36=&280 �(VARS!40=0:� �high(30,44) � VARS!40=1 �*� �high(30,32) � VARS!44=1 � VARS!44=0 �VARS!8=X%(0):VARS!12=Y%(0):VARS!16=OX%:VARS!20=OY%:VARS!24=TAS%+512:VARS!28=BTC%:VARS!32=TRASP%:A%=VARS:� wobble:ș "Hourglass_Off":�spinit:�forcedrawmain:FUST%=0 #� WER% � �killf:FUSE%=-1:� �DZ@ � � * 4D� ** This is jumped straight to because of error control (flub!) >qA=�(�gi(30,42)):K%=TAS%+512:L%=0:WER%=�:ER%=�:F$=�gi(30,27):MG%=�(�gi(30,5)):ș "Hourglass_On":�si(30,36," ") H� � ER%=�:WER%=�:� �D\\ RK%!(L%*4)=�(F$)*MG% \9� ER%=� � �si(30,36,"Error at A="+�(A)):K%!L%=0:ER%=� f,A+=�(�gi(30,11)):L%+=1:� L%<618 � � �DR\ p� � �makerr z� WE%=2 � � �DDo � � �dd[ � ���contrast(� L%) �� CONL%>CONH% � � �tv\ �0� L%<=CONL% � L%=0:� � � L%>=CONH% � L%=15:� �.K%=L%-CONL%:I%=CONH%-CONL%:L%=(K%/I%)*15:� �� CONL%=CONH% � � �dT\ �1� L%<=CONH% � L%=15:� � � L%>=CONL% � L%=15:� �3K%=L%-CONH%:I%=CONL%-CONH%:L%=15-((K%/I%)*15):� �� L%<CONL% � L%=0 � L%=15 �� � ����supixtrans:�swapcorns:FMINX%=X%(0):FMINY%=Y%(0):FMAXX%=OX%:FMAXY%=OY%:ș "Hourglass_On":!VARS=PIC%:VARS!4=PIC%:VARS!8=X%(0):VARS!12=Y%(0):VARS!16=OX%:VARS!20=OY%:VARS!24=TRASP%:VARS!28=BTC%:VARS!32=TRANSTAB%:� � ���protbox(CX%,CY%):�eoc:R%=ROT%:�rotpoint(FMINX%,FMINY%,R%,X1%,Y1%):�rotpoint(FMAXX%,FMINY%,R%,X2%,Y2%):�rotpoint(FMAXX%,FMAXY%,R%,X3%,Y3%):�rotpoint(FMINX%,FMAXY%,R%,X4%,Y4%) Q�rotpoint(0,(FMAXY%�3)*2,R%,MX1%,MY1%):�rotpoint(0,(FMAXY%�3)*4,R%,MX2%,MY2%) 'X1%+=CX%:X2%+=CX%:X3%+=CX%:X4%+=CX% $'Y1%+=CY%:Y2%+=CY%:Y3%+=CY%:Y4%+=CY% .:�4,X1%,Y1%:�5,X2%,Y2%:�5,X3%,Y3%:�5,X4%,Y4%:�5,X1%,Y1% 8)� MX1%+CX%,MY1%+CY%,MX2%+CX%,MY2%+CY% B� L V(��rotpoint(R0%,R1%,R%,� RPX%,� RPY%) `�R6%=(ROTTAB%!(R%*4))>>12:R7%=(!(ROTTAB%+(R%*4)+&168))>>12:R8%=R0%*R6%:R5%=R1%*R7%:R8%-=R5%:R5%=R1%*R6%:R1%=R0%*R7%:R1%+=R5%:RPX%=R1%>>18:RPY%=-(R8%>>18) j� t ~ݤperc(WH%,IH%) �2I$=�gi(WH%,IH%):� �I$,1)="%" � I$=�I$,�(I$)-1) � =�(I$) � ���grabpoll(FT%) ��� FUST%=0 � BUT%<>0 � �picpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:�inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�outpic:�quickdrawmain:�letgo:� �� FUST%=0 � � �{� BUT%=1 � �inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�picpos:OX%=X%:OY%=Y%:FUST%=0:�outpic:�quickdrawmain:�letgo:� �0� BUT%<>4 � (OX%=X%(0) � OY%=Y%(0)) � � �Th^ ش�inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�picpos:�spbuf(�spritesize(X%-X%(0),Y%-Y%(0),�(�high(8,14)))):� Q% � ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�outpic:�spinit:�spbuferr �GRN$="GRAB":ș&2E,272,SPBUF%,"GRAB",,X%(0),Y%(0),X%,Y%:� �high(8,14) � ș&2E,285,SPBUF%,"GRAB":GRABM%=8:�fillmask � GRABM%=0 �'GRWI%=�(X%-X%(0)):GRHE%=�(Y%-Y%(0)) �� X%<X%(0) � Ȕ X%(0),X% � Y%<Y%(0) � Ȕ Y%(0),Y% :� FT%=1 � ș&2E,290,SPBUF%,"GRAB",X%(0),Y%(0),3+GRABM% �pgrab(X%,Y%,3) 9OX%=X%:OY%=Y%:�outpic:�quickdrawmain:�letgo:FUST%=2:� (!�picpos:� X%=OX% � Y%=OY% � � 2x�inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):OX%=X%:OY%=Y%:ȓ X%(0),Y%(0),X%-X%(0),Y%-Y%(0):�outpic:�quickdrawmain <� F P��rectpoll Z�� FUST%=0 � BUT%<>0 � �picpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:�inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�outpic:�quickdrawmain:�letgo:� d� FUST%=0 � � n{� BUT%=1 � �inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�picpos:OX%=X%:OY%=Y%:FUST%=0:�outpic:�quickdrawmain:�letgo:� x0� BUT%<>4 � (OX%=X%(0) � OY%=Y%(0)) � � �tj^ �:�inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�picpos �� X%<X%(0) � Ȕ X%(0),X% �� Y%<Y%(0) � Ȕ Y%(0),Y% �9OX%=X%:OY%=Y%:�outpic:�quickdrawmain:�letgo:FUST%=2:� �!�picpos:� X%=OX% � Y%=OY% � � �x�inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):OX%=X%:OY%=Y%:ȓ X%(0),Y%(0),X%-X%(0),Y%-Y%(0):�outpic:�quickdrawmain �� � ���pgrab(DX%,DY%,PL%) �XR=GRXM%/GRXD% �YR=GRYM%/GRYD% �!SCALE%=GRXM% �SCALE%!4=GRYM% SCALE%!8=GRXD% SCALE%!12=GRYD% Wș&2E,308,SPBUF%,"GRAB",DX%-((GRWI% � 2)*XR),DY%-((GRHE% � 2)*YR),PL%+GRABM%,SCALE% "� , 6��pimport(DX%,DY%,PL%) @!XR=GRXM%/GRXD%:YR=GRYM%/GRYD% JIO%!20=(!IO%)*GRXM% TIO%!24=(IO%!4)*GRYM% ^IO%!28=(IO%!8)*GRXD% hIO%!32=(IO%!12)*GRYD% r�� � GRMA% � ș&2E,308,SPBUF%,GRN$,DX%-((IMW% � 2)*XR),DY%-((IMH% � 2)*YR),PL%,IO%+20,IMPT% � ș&2E,308,SPBUF%,GRN$,DX%-((IMW% � 2)*XR),DY%-((IMH% � 2)*YR),PL%+8,IO%+20,IMPT% |� � ���para(LT%,PL%,DX%,DY%) �"� PL%=1 � �elip(&75,DX%,DY%):� � � LT%=1 � ��l(X%(0),Y%(0),X%(1),Y%(1)) ��l(X%(1),Y%(1),DX%,DY%) �%� LITY%-4,X%(0)-X%(1),Y%(0)-Y%(1) �� LITY%,X%(0),Y%(0) �� �� X%(0),Y%(0),X%(1),Y%(1) �� X%(1),Y%(1),DX%,DY% ��1,X%(0)-X%(1),Y%(0)-Y%(1) ��5,X%(0),Y%(0) � � &��elip(PL%,DX%,DY%) 0� X%(0),Y%(0) :� X%(1),Y%(1) D� PL%,DX%,DY% N� X b��tri(PL%,DX%,DY%) l�� PL%=5 � PL%=85 � �4,DX%,DY%:� 5,X%(0),Y%(0):� 5,X%(1),Y%(1):� PL%,DX%,DY% � �4,DX%,DY%:� LITY%,X%(0),Y%(0):� LITY%,X%(1),Y%(1):� LITY%,DX%,DY% v� � �7ݤdist(DX%,DY%):=�(((DX%-X%(0))^2)+((DY%-Y%(0))^2)) � �V��paintbrush(BX%,BY%):ș&2E,306,BRUSH%,�(SELBR%),BX%-(32*XR),BY%-(32*YR),,SCALE%:� � �E��paintbrush2(BX%,BY%):ș&2E,305,BRUSH%,�(SELBR%),BX%-32,BY%-32:� � �,��letgo:LEGO%=�:�:�:ȗ X%,Y%,H%:� H%=0:� � �<��killf:LAOPWI%=-1:� TKH%<>-1 � �iconlo(32,TKH%):TKH%=-1 �Ȏ FUSE% � �� FUSE%<>32 � �spbuf(0) � ! !i� 4:�closewind(5):� FUST%>0 � �inpic:�paintscale:�eorback:�paintbrush(OX%,OY%):�outpic:�quickdrawmain ! ! !*M� 11:� FUST%=1 � �inpic:�eoc:� X%(0),Y%(0),OX%,OY%:�outpic:�quickdrawmain !4E� FUST%=2 � �inpic:�eoc:�elip(&C5,OX%,OY%):�outpic:�quickdrawmain !>M� 13:� FUST%=1 � �inpic:�eoc:� X%(0),Y%(0),OX%,OY%:�outpic:�quickdrawmain !HE� FUST%=2 � �inpic:�eoc:�para(0,0,OX%,OY%):�outpic:�quickdrawmain !RM� 16:� FUST%=1 � �inpic:�eoc:� X%(0),Y%(0),OX%,OY%:�outpic:�quickdrawmain !\E� FUST%=2 � �inpic:�eoc:�elip(&B5,OX%,OY%):�outpic:�quickdrawmain !f� 18:�kill_18 !p� 19:�kill_19 !z� 20:�kill_20 !�� 21:�kill_21 !�Z� 22:� FUST%=1 � �inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�outpic:�quickdrawmain !�� 23:�kill_23 !�� 25:�kill_25 !�Z� 27:� FUST%=1 � �inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�outpic:�quickdrawmain !�Z� 28:� FUST%=1 � �inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�outpic:�quickdrawmain !�k� 29:�closewind(5):� FUST%>0 � �inpic:�paintscale2:�eorback:�paintbrush(OX%,OY%):�outpic:�quickdrawmain !�k� 30:�closewind(5):� FUST%>0 � �inpic:�paintscale2:�eorback:�paintbrush(OX%,OY%):�outpic:�quickdrawmain !�N� 32:�restpic:�forcedrawmain:�closewind(14):�spinit:� FONT%<>0 � �losefont !�� 31:� GRTY%=1 � !�U� FUST%=1 � �inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�outpic:�quickdrawmain !�� !�q� 33:�closewind(18):�spinit:� FUST%=1 � �inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�outpic:�quickdrawmain "F� 34:� FUST%=1 � �inpic:�pimport(OX%,OY%,3):�outpic:�quickdrawmain "�closewind(8):�spinit ""� 35:� FUST%<2 � �closewind(8) "$U� FUST%=1 � �inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�outpic:�quickdrawmain ".� FUST%=3 � �closewind(7) "8Q� 36:� FUST%<>0 � �inpic:�eoc:ȓ OX%,OY%,FRW%*2,FRH%*4:�outpic:�quickdrawmain "B "L� 38:�kill_38 "V� 39:�kill_39 "`� 40:�kill_40 "j� 41:�kill_41 "t� 42:�closewind(25):�meoc "~� 43:�kill_43 "�� 44:�kill_44 "� "� "�� 47:�closewind(29):�meoc "�� 48:�closewind(30):�meoc "�� "��windname(2,PIC$) "�� "� "�d��meoc:�spinit:� FUST%=1 � �inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�outpic:�quickdrawmain "�� "� # ��eoc:�3,63 Ȝ 192:� # #��eorback:�3,191 Ȝ 192:� # #( ��pickcol #2KXOF%=!BLK%:YOF%=BLK%!4:�screentowork(HAND%(3), XOF%,YOF%):YOF%=228+YOF% #<� XOF%>766 � XOF%=766 #F� YOF%>220 � YOF%=220 #Pd� MOUB%=4 � COL%=(XOF% � 24)+((YOF% � 28)*32) � � MOUB%=1 � �trasp((XOF% � 24)+((YOF% � 28)*32)) #Z�forcedrawpal(PAL%) #d� #n #x��tbackclick #�5BLK%!8=HAND%(15):ș "Wimp_GetWindowState",,BLK%+8 #�0XOF%=(!BLK%)-(BLK%!12):� XOF%>766 � XOF%=766 #�1YOF%=(BLK%!4)-(BLK%!16):� YOF%>220 � YOF%=220 #�'FONTB%=(XOF% � 24)+((YOF% � 28)*32) #��forcedrawtback #�� #� #���picpos #�SCRX%=!BLK%:SCRY%=BLK%!4 #�4BLK%!8=HAND%(2):ș "Wimp_GetWindowState",,BLK%+8 #�.X%=(((!BLK%)-(BLK%!12))+(BLK%!28)) � ZOOM% #�6Y%=1024-((((BLK%!24)-(BLK%!4))-(BLK%!32)) � ZOOM%) #�� X%<0 � X%=0 $� X%>1279 � X%=1279 $� Y%<0 � Y%=0 $� Y%>1023 � Y%=1023 $"� � GRLO% � � $,XOF%=(GRIWI%-GRBX%)*2 $6YOF%=(GRIHE%-GRBY%)*4 $@X%+=XOF%:Y%+=YOF% $J)X%=-XOF%+((X% � (2*GRIWI%))*2*GRIWI%) $T)Y%=-YOF%+((Y% � (4*GRIHE%))*4*GRIHE%) $^� $h $r��getrdor(WE%) $|4WOX%=BLK%!4-BLK%!20:WOY%=(BLK%!16-BLK%!24)-WE%:� $� $���openmain:MOP%=� $�z!BLK%=HAND%(2):BLK%!4=0:BLK%!8=300:BLK%!12=1279:BLK%!16=1023:BLK%!20=0:BLK%!24=0:BLK%!28=-1:ș "Wimp_OpenWindow",,BLK% $�� $� $� ��openpal $�{!BLK%=HAND%(3):BLK%!4=100:BLK%!8=300:BLK%!12=1279:BLK%!16=600:BLK%!20=0:BLK%!24=0:BLK%!28=-1:ș "Wimp_OpenWindow",,BLK% $�� $� $�)��openwind(WH%):� WH%>2 � LAOPWI%=WH% $�3!BLK%=HAND%(WH%):ș "Wimp_GetWindowState",,BLK% $�)BLK%!28=-1:ș "Wimp_OpenWindow",,BLK% $�� % %��closewind(WH%) %0!BLK%=HAND%(WH%):ș "Wimp_CloseWindow",,BLK% %&� %0 %:��opmain %Dș "Wimp_OpenWindow",,BLK% %N� %X %b��clmain:MOP%=� %lș "Wimp_CloseWindow",,BLK% %v� %� %���airnoz %�5H%=-1:�L%=21 � 33 � 2:� �high(4,L%) � H%=L%:L%=33 %�� %�Ȏ H% � %�� 21:XR=1:YR=.25 %�� 23:XR=1:YR=.5 %�� 25:XR=1:YR=.75 %�� 27:XR=1:YR=1 %�� 29:XR=.75:YR=1 %�� 31:XR=.5:YR=1 %�� 33:XR=.25:YR=1 %�� &� & &��paintscale & !SCALE%=BXM% &*SCALE%!4=BYM% &4SCALE%!8=BXD% &>SCALE%!12=BYD% &HXR=BXM%/BXD% &RYR=BYM%/BYD% &\� &f &p��paintscale2 &z !SCALE%=1 &�SCALE%!4=1 &�SCALE%!8=1 &�SCALE%!12=1 &�XR=1 &�YR=1 &�� &� &���picclick &�$� MBUS% � MOUB%<>0 � � � MBUS%=� &�Ȏ FUSE% � &�� -1:� MOUB%=1 � �picpos:�inpic:CO%=�X%,Y%):TI%=Ȝ(X%,Y%):�3,63 Ȝ 192:�69,400,400:�69,400,400:�outpic:�trasp(�findpalent(CO%,TI%)):�forcedrawpal(PAL%):� �t`h &�� MOUB%=4 � �op1:� �t`h &�?� 0:�picpos:�inpic:�setcol:�69,X%,Y%:�outpic:�quickdrawmain '"� 4:�paintscale:�inpic:�picpos '.� FUST%<>0 � �eorback:�paintbrush(OX%,OY%) '8�setbackcol:�paintbrush(X%,Y%):OX%=X%:OY%=Y%:FUST%=1 '$!�eorback:�paintbrush(OX%,OY%) '.�outpic:�quickdrawmain '8� 24:� MOUB%<>4 � � �t`h 'B��picpos:�inpic:�3,63 Ȝ 192:�69,400,400:�69,400,400:�setcol:TCO%=�X%-2,Y%):TTI%=Ȝ(X%-2,Y%):TPE%=�findpalent(TCO%,TTI%):� TPE%=COL% � �outpic:�message(0,"Cannot trace the colour you are using.") 'L2�trace(X%,Y%,TCO%,TTI%):�outpic:�quickdrawmain 'V$� 29:�paintscale2:�inpic:�picpos '`/� FUST%<>0 � �eorback:�paintbrush2(OX%,OY%) 'j VARS!20=BTC%:VARS!24=PALTAB% 'tVARS!28=PIC%:VARS!32=SPBUF% '~VARS!36=X%-32:VARS!40=Y%-32 '�!VARS!44=SELBR%:VARS!48=BRUSH% '�A%=VARS:� averagebrush '�3�3,63:ȓ X%-32,Y%-32,64,64:ȓ X%-32,Y%-32,64,64 '�8OX%=X%:OY%=Y%:FUST%=1:�eorback:�paintbrush2(OX%,OY%) '��outpic:�quickdrawmain '�$� 30:�paintscale2:�inpic:�picpos '�/� FUST%<>0 � �eorback:�paintbrush2(OX%,OY%) '� VARS!20=BTC%:VARS!24=PALTAB% '�VARS!28=PIC%:VARS!32=SPBUF% '�VARS!36=X%-32:VARS!40=Y%-32 '�!VARS!44=SELBR%:VARS!48=BRUSH% '�9VARS!84=PALTAB%?(COL%*2):VARS!88=PALTAB%?((COL%*2)+1) ( A%=VARS:� tintbrush ( 3�3,63:ȓ X%-32,Y%-32,64,64:ȓ X%-32,Y%-32,64,64 (8OX%=X%:OY%=Y%:FUST%=1:�eorback:�paintbrush2(OX%,OY%) (�outpic:�quickdrawmain ((!� 31:� MOUB%<>4 � GRTY%=1 � � (2-�spinit:�spbuf(161*1024):� Q% � �spbuferr (<�backuppic (FX�inbackup:�picpos:FBC%=�X%,Y%):FBT%=Ȝ(X%,Y%):�0,FBC%+128 Ȝ FBT%:FUT%=(FBC%+1) � 64 (P9�0,FUT% Ȝ FBT%:ș "Hourglass_On":Ȑ X%,Y%:�outbackup (Z-A%=VARS:B%=PIC%:C%=SPBUF%:� findchangebox (dFMINX%=(!VARS)*2 (nFMINY%=(VARS!4)*4 (xFMAXX%=(VARS!8)*2 (�FMAXY%=(VARS!12)*4 (� �fill (�ș "Hourglass_Off" (�� (�� (� (� ��fill (�NOS%=��gi(13,83) (�NOF%=GRFN% (� ET%=0 (�� �high(13,87) � ET%=1 (�� �high(13,89) � ET%=2 (�� �high(13,91) � ET%=3 )� �high(13,93) � ET%=4 )FIT%=-1 )� �high(13,67) � FIT%=1 )"� �high(13,69) � FIT%=2 ),� �high(13,71) � FIT%=3 )6� �high(13,73) � FIT%=4 )@� �high(13,75) � FIT%=5 )J� �high(13,77) � FIT%=6 )T� ET%=1 � ET%=2 � FIT%=1 )^� ET%=3 � ET%=4 � FIT%=4 )hE� FIT%=-1 � �spinit:�message(0,"You must choose a type of fill.") )r Ȏ FIT% � )|3� 1:FIW%=FMAXX%-FMINX%:FIFC%=0:LAFC%=255:FID%=1 )�4� 2:FIW%=FMAXX%-FMINX%:FIFC%=255:LAFC%=0:FID%=-1 )�3� 4:FIW%=FMAXY%-FMINY%:FIFC%=0:LAFC%=255:FID%=1 )�4� 3:FIW%=FMAXY%-FMINY%:FIFC%=255:LAFC%=0:FID%=-1 )� � 5:FIFC%=0:LAFC%=255:FID%=1 )�!� 6:FIFC%=255:LAFC%=0:FID%=-1 )�� )�� FIT%=5 � FIT%=6 � )�?� (FMAXX%-X%)>(X%-FMINX%) � XOF%=FMAXX%-X% � XOF%=X%-FMINX% )�?� (FMAXY%-Y%)>(Y%-FMINY%) � YOF%=FMAXY%-Y% � YOF%=Y%-FMINY% )�5FIW%=�((XOF%^2)+(YOF%^2)):� GRTY%=1 � FIW%=FIW%/2 )�� )�\� FIW%=0 � NOS%=1 � �message(5,"You cannot use a graduated fill on an area that small.") )�1CPP%=(255<<8) � FIW%:CPS%=(255<<8) � (NOS%-1) *HI%=IO%:�L%=0 � 15:?I%=GRFI%(L%,0,NOF%):I%?1=GRFI%(L%,1,NOF%):I%+=2:� *6!VARS=PIC%:� GRTY%=0 � VARS!4=SPBUF% � VARS!4=PIC% *�VARS!8=IO%:VARS!12=NOS%:VARS!16=FIFC%:VARS!20=LAFC%:VARS!24=FID%:VARS!28=CPP%:VARS!32=CPS%:VARS!36=X%:VARS!40=Y%:VARS!44=ROTTAB%:VARS!48=FIT%:VARS!52=FMINX%:VARS!56=FMINY%:VARS!60=FMAXX%:VARS!64=FMAXY% *&C� GRTY%=1 � VARS!36=(FMINX%+FMAXX%)�2:VARS!40=(FMINY%+FMAXY%)�2 *0VARS!68=RAND%:VARS!72=0 *:VARS!76=��gi(13,81) *D*� �high(13,54) � VARS!80=1 � VARS!80=0 *N9VARS!84=ET%:VARS!88=TRASP%:VARS!92=GRTY%:VARS!96=BTC% *X'�L%=0 � 4092 � 4:RAND%!L%=�(CPS%):� *bA%=VARS *l� graduatedfill *v�spinit:�forcedrawmain *�� *� *���hg:ș "Hourglass_Smash":� *� *���swapcorns *�� X%(0)>OX% � Ȕ X%(0),OX% *�� Y%(0)>OY% � Ȕ Y%(0),OY% *�� *� *�Eݤsamecol(x1%,y1%,col%,tin%):=(�x1%,y1%)=col% � Ȝ(x1%,y1%)=tin%) *� *�5��l(x1%,y1%,x2%,y2%):�4,x1%,y1%:� LITY%,x2%,y2%:� *� +g��r(x1%,y1%,x2%,y2%):�4,x1%,y1%:� LITY%-4,x2%,0:� LITY%-4,0,y2%:� LITY%-4,-x2%,0:� LITY%-4,0,-y2%:� + +��trace(X%,Y%,TCO%,TTI%) + � +* +4ݤfindpalent(CO%,TI%) +>=CTT%?((CO%*4)+(TI% � 64)) +H +R>��setcol:� USE%,PALTAB%?(COL%*2) Ȝ PALTAB%?((COL%*2)+1):� +\ +fH��setbackcol:� USE%,(PALTAB%?(COL%*2))+128 Ȝ PALTAB%?((COL%*2)+1):� +p +z��col(C%,T%,U%) +�ș&35,-1,9 � ,,BP% +�� BP%=3 � �U%,C% Ȝ T%:� +�+R%=((C% � %11)*4)+(T% � 64):R%+=(R%<<4) +�2G%=(((C% � %1100)>>2)*4)+(T% � 64):G%+=(G%<<4) +�4B%=(((C% � %110000)>>4)*4)+(T% � 64):B%+=(B%<<4) +�>ș "ColourTrans_SetGCOL",((B%<<24)+(G%<<16)+(R%<<8)),,,,U% +�� +� +���anticol(C%,T%,U%) +�+R%=((C% � %11)*4)+(T% � 64):R%+=(R%<<4) +�2G%=(((C% � %1100)>>2)*4)+(T% � 64):G%+=(G%<<4) +�4B%=(((C% � %110000)>>4)*4)+(T% � 64):B%+=(B%<<4) +�Nș "ColourTrans_ReturnOppGCOLForMode",((B%<<24)+(G%<<16)+(R%<<8)),15 � GC% ,#� U%,(GC%>>2) Ȝ (GC% � %11)*64 ,� , ,$ ��gridcol ,.�col(GRCO%,GRTI%,0) ,8� ,B ,L��makerr:�killf:FUSE%=-1 ,Vș "Wimp_DragBox",,0 ,`!BLK%=� ,jER=� ,t&$(BLK%+4)=�$+" at line "+�(�)+�(0) ,~K� $(BLK%+4)="Internal error '"+REPORT$+"' at line "+STR$ERL+"."+CHR$(0) ,�2� �<>17 ș "Wimp_ReportError",BLK%,1,"Imagery" ,�� PROCaction:END ,�� ,�� ,� ,���message(M%,M$):�outpic ,�Zș "Wimp_DragBox",,0:!BLK%=M%:$(BLK%+4)=M$+�(0):ș "Wimp_ReportError",BLK%,1,"Imagery" ,��forcedrawmain ,� �action:� ,�� ,� ,���mouse ,�FMOUX%=!BLK%:MOUY%=BLK%!4:MOUB%=BLK%!8:MOUH%=BLK%!12:MOUIC%=BLK%!16 - Ȏ MOUB% � - � 4,1:Ȏ MOUH% � -� -2:�openmain -$� HAND%(0):� BLK%!16=8 � �saveok -(*� HAND%(7):� BLK%!16=8 � �spritesaveok -2� HAND%(2):�picclick -<� HAND%(3):�pickcol -F� HAND%(4):�airbclick -P� HAND%(5):�brushclick -Z� HAND%(6):�gridclick -d� HAND%(8):�grabclick -n� HAND%(10):�linepatclick -x� HAND%(11):�ecfclick -�� HAND%(12):�edbruclick -�� HAND%(13):�fillclick -�� HAND%(14):�textclick -�� HAND%(15):�tbackclick -�� HAND%(16):�tparclick -�� HAND%(17):�fillcontclick -�� HAND%(18):�colrepclick -�� HAND%(19):�frameclick -�� HAND%(20):�patfillclick -�� HAND%(21):�rgbcontclick -�� HAND%(22):�greyscaleclick -�� HAND%(23):�pixelateclick -�� HAND%(24):�rotateclick .� HAND%(25):�colscaleclick .� HAND%(26):�contrastclick .� HAND%(27):�posteriseclick ."� HAND%(29):�filterclick .,� HAND%(30):�wobbleclick .6� HAND%(32):�toolclick .@� HAND%(33):�zoomclick .J(� HAND%(34):� BLK%!16=8 � �savesetok .T� .^=� 2:� MOUH%=-2 � �iconmenu � � MOUH%=HAND%(2) � �windmenu .h1� 16,64:� MOUH%=HAND%(0) � DRAG%=0:�startdrag .r)� MOUH%=HAND%(7) � DRAG%=7:�startdrag .|+� MOUH%=HAND%(34) � DRAG%=34:�startdrag .�� .�� .� .���wobbleclick .��arrows(30,2,3,5,1,999,1) .��arrows(30,7,8,11,1,999,1) .� �arrows(30,38,39,42,0,359,1) .�*� MOUIC%=19 � �si(30,27,"COS(RAD(A))") .�*� MOUIC%=21 � �si(30,27,"SIN(RAD(A))") .�*� MOUIC%=23 � �si(30,27,"TAN(RAD(A))") .�� MOUIC%<>47 � � .�ș&2E,256+9,SHOW%:SHOW%!32=&12345:ș&2E,266,SHOW%,"<Imagery$Dir>.Show":� SHOW%!32=&12345 � �message(0,"Could not load 'Show' sprite from !Imagery folder") .�-�spinit:�spbuf(161*1024):� Q% � �spbuferr /�backuppic /ș&2E,256+9,PIC% /c�inbackup:ș &2E,256+16,PIC%,"SHOW",0,400,400,800,592:ș&2E,290,SHOW%,"SHOW",400,400:�outbackup /&>�insprite(0,SHOW%,"SHOW"):ș&2E,290,PIC%,"SHOW":�outsprite /0S!PIC%=161*1024:PIC%!4=0:PIC%!8=24:PIC%!12=24:ș &2E,271,PIC%,"PIC",0,640,256,15 /:WE%=2:� �T~\ /D-� �high(30,25) � VARS!36=1 � VARS!36=&280 /N(VARS!40=0:� �high(30,44) � VARS!40=1 /XC�L%=0 � 255:?(TAS%+256+L%)=TRASP%?L%:TRASP%?L%=1:�:TRASP%?254=0 /b�VARS!44=0:VARS!8=400:VARS!12=400:VARS!16=802:VARS!20=596:VARS!24=TAS%+512:VARS!28=BTC%:VARS!32=TRASP%:A%=VARS:� wobble:ș "Hourglass_Off":�inbackup:ș&2E,290,SHOW%,"SHOW",400,400:�outbackup /lHș&2E,256+9,SHOW%:�inpic:ș&2E,256+16,SHOW%,"SHOW",0,400,400,800,592 /vș&2E,290,SPBUF%,"PIC",0,0 /�X�outpic:�spinit:�L%=0 � 255:TRASP%?L%=?(TAS%+256+L%):�:�forcedrawwob:� WER% � � �DZ@ /�� /� /���filterclick /��arrows(29,2,3,5,0,8,1) /�� /� /���rotateclick /�� /� /���rgbcontclick /�6RP%=�perc(21,13):GP%=�perc(21,15):BP%=�perc(21,17) /�IRP%=RP%:IGP%=GP%:IBP%=BP% 0�arrows(21, 3,5,13,0,100,1) 0�arrows(21, 6,8,15,0,100,1) 0 �arrows(21, 9,11,17,0,100,1) 0 6RP%=�perc(21,13):GP%=�perc(21,15):BP%=�perc(21,17) 0*P� RP%<>IRP% � RSL%=RP%:�slidud(1,RP%):�getslor(21,30):�redrawslid(21,11,RP%) 04P� GP%<>IGP% � GSL%=GP%:�slidud(2,GP%):�getslor(21,31):�redrawslid(21,10,GP%) 0>O� BP%<>IBP% � BSL%=BP%:�slidud(3,BP%):�getslor(21,32):�redrawslid(21,8,BP%) 0H@� MOUIC%=30 � RSL%=�slidhit(21,30,MOUX%,MOUY%,11,1):RP%=RSL% 0R@� MOUIC%=31 � GSL%=�slidhit(21,31,MOUX%,MOUY%,10,2):GP%=GSL% 0\?� MOUIC%=32 � BSL%=�slidhit(21,32,MOUX%,MOUY%,8,3):BP%=BSL% 0f� 0p 0z��slidud(WE%,V%) 0�"� WE%=1 � �ui(21,13,�(V%)+"%") 0�"� WE%=2 � �ui(21,15,�(V%)+"%") 0�"� WE%=3 � �ui(21,17,�(V%)+"%") 0� � WE%=4 � 0�V2%=(V%�4):� V2%=0 � V2%=1 0��ui(33,8, �(V2%)) 0�� 0�� 0� 0���greyscaleclick 0�O�arrows(22,3,5,13,0,9,1):�arrows(22,6,8,15,0,9,1):�arrows(22,9,11,17,0,9,1) 0�� 0� 1��colscaleclick 1O�arrows(25,3,5,13,0,9,1):�arrows(25,6,8,15,0,9,1):�arrows(25,9,11,17,0,9,1) 1� 1$ 1.��contrastclick 18'CONL%=��gi(26,18):CONH%=��gi(26,20) 1B;�arrows(26,11,13,18,0,15,1):�arrows(26,14,16,20,0,15,1) 1LC� CONL%<>��gi(26,18) � CONH%<>��gi(26,20) � �forcedrawgraph(26) 1V� 1` 1j��posteriseclick 1t6POL%=��gi(27,22):POH%=��gi(27,24):PON%=��gi(27,26) 1~W�arrows(27,11,13,22,0,15,1):�arrows(27,14,16,24,0,15,1):�arrows(27,18,20,26,2,16,1) 1�U� POL%<>��gi(27,22) � POH%<>��gi(27,24) � PON%<>��gi(27,26) � �forcedrawgraph(27) 1�� 1� 1���pixelateclick 1�8�arrows(23,2,4,9,1,100,1):�arrows(23,5,7,11,1,100,1) 1�� 1� 1���frameclick 1�9�arrows(19,5,7,10,1,640,1):�arrows(19,6,8,12,1,256,1) 1�� MOUIC%<>14 � � 1� �killf 1� V%=��gi(19,10):� V%<1 � V%=1 2 � V%>640 � V%=640 2 �si(19,10,�V%) 2 W%=��gi(19,12):� W%<1 � W%=1 2� W%>256 � W%=256 2(�si(19,12,�W%) 22MFRW%=V%+1:FRH%=W%+1:FUSE%=36:FUST%=0:�ud:�windname(2,PIC$+" [Set frame]") 2<� MOUB%=4 � �menoff 2F� 2P 2Z��colrepclick 2d�� MOUIC%=5 � ș "Hourglass_On":�L%=0 � 22596 � 4:SPBUF%!L%=OPAL%!L%:�:�L%=0 � 255:REPS%?L%=L%:�:ș "Hourglass_Off":�forcedrawcolrep:� 2n5BLK%!8=HAND%(18):ș "Wimp_GetWindowState",,BLK%+8 2x<XOF%=(!BLK%)-((BLK%!12)-(BLK%!28)):� XOF%>766 � XOF%=766 2�CYOF%=(BLK%!4)-(((BLK%!24)-(BLK%!32))-556):� YOF%>550 � YOF%=550 2�� YOF%<=220 � 2��C%=(XOF% � 24)+((YOF% � 28)*32):�insprite(0,SPBUF%,"Palette"):FX%=((SREP% � 32)*24)+2:FY%=((SREP% � 32)*28)+4:�0,PALTAB%?(C%*2) Ȝ PALTAB%?((C%*2)+1) 2�Bȓ Ȑ FX%,FY%,20,20:�outsprite:REPS%?SREP%=C%:�forcedrawcolrep 2�� 2�Z� YOF%>=290 � YOF%<514 � YOF%-=290:SREP%=(XOF% � 24)+((YOF% � 28)*32):�forcedrawcolrep 2�� 2� 2�'��arrows(W%,DI%,UI%,TI%,LV%,UV%,I%) 2�5V%=��gi(W%,TI%):OV%=V%:� MOUB%=1 � WE%=-1 � WE%=1 2�� MOUIC%=DI% � V%-=(I%*WE%) 2�� MOUIC%=UI% � V%+=(I%*WE%) 2�� V%<LV% � V%=LV% 3� V%>UV% � V%=UV% 3*� V%<>OV% � W%<>21 � �si(W%,TI%,�(V%)) 3-� V%<>OV% � W%=21 � �si(W%,TI%,�(V%)+"%") 3"� 3, 36��tparclick 3@� 3J 3T��losefont 3^8� FONT%<>0 � FTL% � ș "Font_LoseFont",FHAND%:FTL%=� 3h� 3r 3| ��getfont 3�$� ��gi(14,20)<6 � �si(14,20,"6") 3�$� ��gi(14,22)<6 � �si(14,22,"6") 3�)FONTX%=��gi(14,20):FONTY%=��gi(14,22) 3�L� FONT%<>0 � FTL%=�:ș "Font_FindFont",,FO$,FONTX%*16,FONTY%*16 � FHAND% 3�� 3� 3� ��restpic 3� �inpic 3�ș&2E,290,SPBUF%,"PIC",0,0 3��outpic 3�� 3� 3���textclick 4� 4 4��ecfclick 4&-� MOUIC%>25 � MOUIC%<33 � �forcedrawpat:� 40� MOUIC%<>8 � � 4:� MOUB%<>1 � MOUB%<>4 � � 4D5BLK%!8=HAND%(11):ș "Wimp_GetWindowState",,BLK%+8 4N6XOF%=((!BLK%)-(BLK%!12))-180:� XOF%>766 � XOF%=766 4X6YOF%=((BLK%!4)-(BLK%!16))-20:� YOF%>220 � YOF%=220 4b%col%=(XOF% � 24)+((YOF% � 28)*32) 4lcby%=TTB%?col% 4vCECF%=�cecf 4�EL%=0:� FORK%=8 TO 15:IF FNhigh(11,K%) THEN L%=K%-7:NEXT ELSE NEXT 4�� �high(11,23) � L%=1 4�� �high(11,24) � L%=2 4�� �high(11,16) � L%=3 4�.�K%=11 � 15:� �high(11,K%) � L%=K%-7:� � � 4�� L%=0 � � 4�ECF%(L%,CECF%)=cby% 4��forcedrawpat 4�� 4� 4���reloadpatfills 4�.ș&2E,266,PFILLS%,"<Imagery$Dir>.PatFills" 4�� 5 5��patfillclick 5"� MOUIC%=2 � �reloadpatfills:� 5 5BLK%!8=HAND%(20):ș "Wimp_GetWindowState",,BLK%+8 5*6XOF%=((!BLK%)-(BLK%!12)):YOF%=((BLK%!4)-(BLK%!16)) 54tK%=-1:�L%=1 � 12:BX%=((L%-1)*84)+24:BY%=52:� XOF%>=BX% � YOF%>=BY% � XOF%<(BX%+64) � YOF%<(BY%+64) � K%=L%:� � � 5>+� K%=-1 � � � CPF%=K%:�forcedrawpatfill 5H� 5R 5\ ��filluse 5f SNO%=�grafilno:� SNO%=-1 � � 5pw�killf:FUSE%=31:FUST%=0:GRFN%=SNO%:GRTY%=0:�ud:�windname(2,PIC$+" [Graduated fill ("+�filldet(SNO%+1)+")]"):�spinit 5z� MOUB%=4 � �menoff 5�� 5� 5�:ݤfilldet(S%):� GRTY%=0 � ="flood "+�S% � ="area "+�S% 5� 5���invertfill 5�NOS%=�grafilno 5� IA%=0:IB%=��gi(13,83):IB%-=1 5�k�:Ȕ GRFI%(IA%,0,NOS%),GRFI%(IB%,0,NOS%):Ȕ GRFI%(IA%,1,NOS%),GRFI%(IB%,1,NOS%):IA%+=1:IB%-=1:� IA%>IB% 5��forcedrawfill 5�� 5� 5���interpfill 5�NOS%=�grafilno 6IA%=0:�:IB%=IA%+1 6� IB%=16 � �forcedrawfill:� 6?� GRFI%(IB%,0,NOS%)=0 � GRFI%(IB%,1,NOS%)=0 � IB%+=1:� �TPv 6$'� IB%=IA%+1 � IA%=IB%:IB%+=1:� �TPv 6.T1%=GRFI%(IA%,1,NOS%)>>6 68*R1%=((GRFI%(IA%,0,NOS%) � %11)<<2)+T1% 6B'G1%=(GRFI%(IA%,0,NOS%) � %1100)+T1% 6L.B1%=((GRFI%(IA%,0,NOS%) � %110000)>>2)+T1% 6VT2%=GRFI%(IB%,1,NOS%)>>6 6`;RD=((((GRFI%(IB%,0,NOS%) � %11)<<2)+T2%)-R1%)/(IB%-IA%) 6j8GD=(((GRFI%(IB%,0,NOS%) � %1100)+T2%)-G1%)/(IB%-IA%) 6t?BD=((((GRFI%(IB%,0,NOS%) � %110000)>>2)+T2%)-B1%)/(IB%-IA%) 6~IA%+=1:�L%=1 � IB%-IA% 6�0R%=R1%+(RD*L%):G%=G1%+(GD*L%):B%=B1%+(BD*L%) 6�Iș "ColourTrans_ReturnGCOLForMode",(B%<<28)+(G%<<20)+(R%<<12),15 � G% 6�;GRFI%(IA%,0,NOS%)=G%>>2:GRFI%(IA%,1,NOS%)=(G% � %11)<<6 6�IA%+=1:� 6�IB%=IA%+1:� �TPv 6� 6���wipefill 6�NOS%=�grafilno 6�0�L%=0 � 15:�K%=0 � 1:GRFI%(L%,K%,NOS%)=0:�:� 6��forcedrawfill:� 6� 6���compfill 7 NOS%=�grafilno 7 7CA%=GRFI%(0,0,NOS%):TA%=GRFI%(0,1,NOS%):IA%=1:IB%=1 7 ȕ IB%<16 7�� GRFI%(IB%,0,NOS%)<>CA% � GRFI%(IB%,1,NOS%)<>TA% � GRFI%(IA%,0,NOS%)=GRFI%(IB%,0,NOS%):GRFI%(IA%,1,NOS%)=GRFI%(IB%,1,NOS%):CA%=GRFI%(IA%,0,NOS%):TA%=GRFI%(IA%,1,NOS%):IA%+=1 7(IB%+=1:� 72>ȕ IA%<16:GRFI%(IA%,0,NOS%)=0:GRFI%(IA%,1,NOS%)=0:IA%+=1:� 7<�forcedrawfill 7F� 7P 7Z��fillclick 7d� MOUIC%<0 � � �T`z 7n� MOUIC%=105 � �filluse:� 7x� MOUIC%=62 � �invertfill:� 7�� MOUIC%=63 � �interpfill:� 7�� MOUIC%=110 � �wipefill:� 7�� MOUIC%=111 � �compfill:� 7�@� MOUIC%<>87 � MOUIC%<>89 � MOUIC%<>91 � MOUIC%<>93 � � �t~w 7�-� �high(13,MOUIC%) � �iconlo(13,MOUIC%):� 7��� �high(13,75) � �high(13,77) � �message(13,"You cannot use an edge priority with a radial fill.") � �iconlo(13,87):�iconlo(13,89):�iconlo(13,91):�iconlo(13,93):�iconhi(13,MOUIC%) 7�(� MOUIC%<>75 � �high(13,75) � � �d\w 7ȃ� �high(13,87) � �high(13,89) � �high(13,91) � �high(13,93) � �message(4,"You cannot use a radial fill with an edge priority.") 7�_�iconhi(13,75):�iconlo(13,67):�iconlo(13,69):�iconlo(13,71):�iconlo(13,73):�iconlo(13,77):� 7�S� (MOUIC%>=2 � MOUIC%<=14) � MOUIC%=78 � MOUIC%=79 � MOUIC%=85 � �setgradfill:� 7�(� MOUIC%<>77 � �high(13,77) � � �TDx 7�� �high(13,87) � �high(13,89) � �high(13,91) � �high(13,93) � �message(4,"You cannot use a radial fill with an edge priority.") 7�_�iconhi(13,77):�iconlo(13,67):�iconlo(13,69):�iconlo(13,71):�iconlo(13,73):�iconlo(13,75):� 8T� MOUIC%=95 � MOUIC%=99 � MOUIC%=101 � MOUIC%=103 � MOUIC%=97 � �forcedrawfill:� 8!�arrows(13, 40,41,81,0,359,1) 8I� MOUB%=1 � MOUIC%=43 � MOUIC%=45 � � MOUB%=1 � MOUIC%=45 � MOUIC%=43 8"� MOUIC%<>43 � � �D@x 8,!NOS%=��gi(13,83):� NOS%=2 � � 86>�shadeicon(13,�filic(NOS%-1)):NOS%-=1:�si(13,83,�(NOS%)):� 8@� MOUIC%<>45 � � �D^x 8J"NOS%=��gi(13,83):� NOS%=16 � � 8T<�clearicon(13,�filic(NOS%)):NOS%+=1:�si(13,83,�(NOS%)):� 8^� 8h 8r��setgradfill 8|SNO%=�grafilno 8�Ȏ MOUIC% � 8�� 78:� �Dvy 8�� 79:� �t@y 8�� 2:� �tJy 8�� 3:� �tTy 8�� 4:� �t^y 8�� 5:� �thy 8�� 6:� �try 8�� 7:� �dFy 8�� 8:� �dPy 8�� 9:� �dZy 8�� 10:� �ddy 8�� 11:� �t|y 9� 12:� �dny 9� 13:� �dxy 9� 14:� �TBz 9&� 85:� �TLz 90� 9:J�L%=0 � 15:�shadeicon(13,�filic(L%)):�K%=0 � 1:GRFI%(L%,K%,SNO%)=0:�:� 9DQ� S%:�L%=0 � S%-1:�clearicon(13,�filic(L%)):�K%=0 � 1:� GRFI%(L%,K%,SNO%):�:� 9N�si(13,83,�S%) 9X�forcedrawfill 9b� 9l 9vH� 12, 1,0,1,64,1,128,1,192,2,0,2,64,2,128,2,192,3,0,3,64,3,128,3,192 9�L� 12, 4,0,4,64,4,128,4,192,8,0,8,64,8,128,8,192,12,0,12,64,12,128,12,192 9�P� 12, 5,0,5,64,5,128,5,192,10,0,10,64,10,128,10,192,15,0,15,64,15,128,15,192 9�T� 12, 16,0,16,64,16,128,16,192,32,0,32,64,32,128,32,192,48,0,48,64,48,128,48,192 9�T� 12, 17,0,17,64,17,128,17,192,34,0,34,64,34,128,34,192,51,0,51,64,51,128,51,192 9�T� 12, 20,0,20,64,20,128,20,192,40,0,40,64,40,128,40,192,60,0,60,64,60,128,60,192 9�e� 15, 0,64,0,128,0,192,21,0,21,64,21,128,21,192,42,0,42,64,42,128,42,192,63,0,63,64,63,128,63,192 9�L� 12, 1,0,1,64,1,128,1,192,6,0,6,64,6,128,6,192,27,0,27,64,27,128,27,192 9�:� 8, 18,0,18,64,18,128,18,192,39,0,39,64,39,128,39,192 9�2� 8, 2,0,2,64,2,128,2,192,7,0,7,64,7,128,7,192 9�T� 12, 17,0,17,64,17,128,17,192,38,0,38,64,38,128,38,192,59,0,59,64,59,128,59,192 9�P� 12, 5,0,5,64,5,128,5,192,10,0,26,64,26,128,26,192,47,0,47,64,47,128,47,192 9�T� 12, 20,0,20,64,20,128,20,192,41,0,41,64,41,128,41,192,62,0,62,64,62,128,62,192 9�P� 12, 1,0,1,64,1,128,1,192,22,0,22,64,22,128,22,192,43,0,43,64,43,128,43,192 :8� 8, 9,0,9,64,9,128,9,192,14,0,14,64,14,128,14,192,0 ::� 8, 21,0,21,64,21,128,21,192,42,0,42,64,42,128,42,192 : : IXOF%=!BLK%:YOF%=BLK%!4:!BLK%=HAND%(13):ș "Wimp_GetWindowState",,BLK% :*�getrdor(484) :40XOF%=(XOF%-WOX%)-422:� XOF%>766 � XOF%<0 � � :>0YOF%=(YOF%-WOY%)-236:� YOF%>220 � YOF%<0 � � :H%col%=(XOF% � 24)+((YOF% � 28)*32) :Rtin%=PALTAB%?((col%*2)+1) :\col%=PALTAB%?(col%*2) :f=FPE%=-1:�L%=0 � 15:� �high(13,�filic(L%)) � FPE%=L%:� � � :pSNO%=�grafilno :z� FPE%=-1 � SNO%=-1 � � :�BGRFI%(FPE%,0,SNO%)=col%:GRFI%(FPE%,1,SNO%)=tin%:�forcedrawfill :�� :� :�7ݤfilic(FSN%):� FSN%<=11 � =FSN%+26 � =(FSN%-12)+46 :� :�-ݤlipaadj(LITA%):� LITA%=7 � =51 � =LITA% :� :���linepatclick :�� MOUB%=1 � :�1� MOUIC%=2 � MOUIC%=3 � � MOUIC%=3 � MOUIC%=2 :�� :�Ȏ MOUIC% � :�W� 3:PL%=��gi(10,48):� PL%>1 � �shadeicon(10,�lipaadj(PL%+6)):PL%-=1:�si(10,48,�PL%) ;X� 2:PL%=��gi(10,48):� PL%<40 � �clearicon(10,�lipaadj(PL%+7)):PL%+=1:�si(10,48,�PL%) ;!� 50:PALE%=��gi(10,48):�23,6, ;LIN%=7:�L%=1 � 5:N%=0:I%=128:�K%=1 � 8:� �high(10,�lipaadj(IN%)) � N%+=I% ;$.I%=I% � 2:IN%+=1:�:� N%:PAT%(L%)=N%:�:� 0| ;.� MOUB%=4 � �menoff ;8� ;B� ;L ;V;��grabclick:ING%=(�high(31,3) � �high(31,4)) � FUSE%=34 ;`� MOUIC%<>16 � � ;ja� FUSE%<>34 � FUST%<2 � �message(1,"Select an area of picture before setting these options.") ;t� ING% � � �tz{ ;~ �inpic ;�� FUSE%<>34 � ;��pgrab(OX%,OY%,3) ;�� ;�$� FUST%<>0 � �pimport(OX%,OY%,3) ;�� ;�;GRXM%=�(�gi(8,17)):� GRXM%<1 � GRXM%=1:�si(8,17,�GRXM%) ;�;GRYM%=�(�gi(8,19)):� GRYM%<1 � GRYM%=1:�si(8,19,�GRYM%) ;�;GRXD%=�(�gi(8,18)):� GRXD%<1 � GRXD%=1:�si(8,18,�GRXD%) ;�;GRYD%=�(�gi(8,20)):� GRYD%<1 � GRYD%=1:�si(8,20,�GRYD%) ;� �grabflip ;�GRMA%=�high(8,14) ;�� � ING% � � �TT| <