home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Datafile PD-CD 3
/
PDCD_3.iso
/
pocketbk
/
pictures
/
eikon
/
EIKON.OPL
< prev
next >
Wrap
Text File
|
1993-12-30
|
11KB
|
649 lines
REM Eikon v0.94
REM Icon editor for the Series 3a
REM by Roger Burton-West <ubte30e@ucl.ac.uk>
REM copy freely and of your own will
REM Expansion routine partially inspired by Alain's "iconeg"
REM Thanks to beta-tester: Sean Desmond <scd@uk.ac.st-and>
APP Eikon
TYPE $1003
PATH "\OPD"
EXT "PIC"
ICON "\OPD\EIKON.PIC"
ENDA
PROC icon:
global we%,wp%,wb%,wg%,wcp%,ww%,l%,x%,y%,md%,fh%
global a%(32),k%,s%,f$(128),ap%
local f%,ft%,fs%(6),t$(10)
local cl%,cx%,cy%,w$(128),ct%,bx&,by&,dp%,wr%
local cp%,cpx%,cpy%,fn$(130)
lock on
setpath "\OPD"
REM we is edit window, wp is preview;
REM wb and wg are black/grey previews;
REM wcp is cut/paste buffer, ww is work buffer
we%=gCREATE(8,8,144,144,1,1)
wp%=gCREATE(228,16,48,48,1,1)
wb%=gCREATE(174,96,48,48,1,0)
wg%=gCREATE(282,96,48,48,1,1)
wcp%=gCREATE(336,16,48,48,0,1)
ww%=gCREATE(0,0,48,48,0,1)
f$=cmd$(2)
if cmd$(3)="C"
crt:(f$)
elseif cmd$(3)="O"
lod:(f$)
endif
bx&=1
by&=1
dp%=3
f%=12
cl%=1
do
fs%(cl%)=2
cl%=cl%+1
until cl%=7
fn$="ROM::\OPD\*.FON"
diaminit 3,"White","Grey","Black"
statuswin ON,2
giprint "Eikon v0.94 ¸ 1993 Roger Burton-West"
winone:
gUSE 1
gAT 7,7
gBOX 146,146
gUSE we%
lock off
do
k%=0
s%=0
gUSE 1
gAT 8+x%*3,0
gFILL bx&*3,7,0
gAT 0,8+y%*3
gFILL 7,by&*3,0
gAT 8+x%*3,153
gFILL bx&*3,7,0
gAT 153,8+y%*3
gFILL 7,by&*3,0
gUSE we%
gGREY 2
gGMODE 2
gAT x%*3,y%*3
cursor we%,0,bx&*3,by&*3
do
getk:
until k%
cursor off
gUSE 1
gAT 8+x%*3,0
gFILL bx&*3,7,1
gAT 0,8+y%*3
gFILL 7,by&*3,1
gAT 8+x%*3,153
gFILL bx&*3,7,1
gAT 153,8+y%*3
gFILL 7,by&*3,1
gUSE we%
gGMODE 0
gGREY 0
if k%=290
mINIT
mCARD "File","New file",%n,"Open file",%o,"Save as",%a,"Save",%s,"Revert",%v
mCARD "Edit","Insert",%i,"Copy",%c
mCARD "Effects","Invert",%r,"Add Black > Grey",%g,"Brush size",%b,"Small brush",%h,"Paste brush",%p,"Text",%t
mCARD "Settings","Scroll wrap",%w
mCARD "Special","Exit",%x
k%=MENU
s%=0
endif
k%=k% and 511
if k%=292
if s% and 2
dp%=dp%-1
if dp%=0
dp%=3
endif
else
dp%=dp%+1
if dp%=4
dp%=1
endif
endif
diampos dp%
endif
if k%=%n
sav:(f$)
lock on
dINIT "Create new file"
f$="\OPD\.pic"
dFILE f$,"File:",17
if DIALOG
f$=parse$(f$,"\OPD\*.PIC",a%())
crt:(f$)
endif
lock off
elseif k%=%s
sav:(f$)
giprint "Saved"
elseif k%=%v
if md%
dINIT "Revert to saved?"
dBUTTONS "No",%N,"Yes",%Y
if dialog=%y
dcl:
lod:(f$)
endif
else
giprint "Not changed"
endif
elseif k%=%a
cl%=1
ct%=md%
lock on
dINIT "Save as"
w$="\OPD\.pic"
dFILE w$,"File:",17
dCHOICE cl%,"Use new file","No,Yes"
if DIALOG
w$=parse$(w$,"\OPD\*.PIC",a%())
md%=-1
sav:(w$)
if cl%=2
f$=w$
setname f$
else
md%=ct%
endif
if exist(f$)
ioopen(fh%,f$,256)
else
ioopen(fh%,f$,257)
endif
endif
lock off
elseif k%=%o
sav:(f$)
dINIT "Load icon"
f$="\OPD\.pic"
dFILE f$,"File:",8
f$=parse$(f$,"\OPD\*.PIC",a%())
if DIALOG
lod:(f$)
endif
elseif k%=%c
cp%=1
gUSE wcp%
gGREY 2
gAT 0,0
gCOPY wp%,x%,y%,bx&,by&,3
cpx%=bx&
cpy%=by&
gUSE we%
giprint "Copied"
elseif k%=%i
if cp%=0
giprint "Buffer is empty"
else
gUSE wp%
gGREY 2
gAT x%,y%
gCOPY wcp%,0,0,cpx%,cpy%,3
md%=1
update21:
endif
elseif k%=%t
if cp%=1
giprint "Text will overwrite paste buffer"
endif
dINIT "Insert text"
dEDIT t$,"Text:"
dCHOICE f%,"Font:","S3 normal,S3 bold,S3 digits,Mono 8x8,Roman 8,Roman 11,Roman 13,Roman 16,Swiss 8,Swiss 11,Swiss 13,Swiss 16,Mono 6x6,Custom"
dCHOICE fs%(1),"Bold:","Yes,No"
dCHOICE fs%(2),"Underlined:","Yes,No"
dCHOICE fs%(4),"Double height:","Yes,No"
dCHOICE fs%(5),"Monospace:","Yes,No"
dCHOICE fs%(6),"Italic:","Yes,No"
if DIALOG
if f%=14
dINIT "Choose custom font"
dFILE fn$,"Font:",8
if DIALOG=0
f%=7
endif
f%=gLOADFONT(fn$)
endif
gUSE wcp%
ft%=0
cl%=1
do
if fs%(cl%)=1
ft%=ft%+2**(cl%-1)
endif
cl%=cl%+1
until cl%=7
gFONT f%
gSTYLE ft%
if gTWIDTH(t$)>48
giprint "Text too long"
else
whichco:("background")
gINFO a%()
bx&=min(48,gTWIDTH(t$))
by&=min(48,a%(4)+a%(5))
x%=min(x%,48-bx&)
y%=min(y%,48-by&)
cpx%=bx&
cpy%=by&
gGREY 2
gCLS
if ap%=2
gGREY 1
gFILL cpx%,cpy%,0
elseif ap%=3
gGREY 2
gFILL cpx%,cpy%,0
endif
gAT 0,a%(5)
if dp%=1
gGREY 2
gTMODE 1
elseif dp%=2
gGREY 1
gTMODE 0
elseif dp%=3
gGREY 2
gTMODE 0
endif
gPRINTCLIP(t$,48)
if dp%=2 and ap%=3
gAT 0,a%(5)
gGREY 0
gTMODE 1
gPRINTCLIP(t$,48)
endif
gUSE we%
cp%=1
endif
if f%>13
gUNLOADFONT f%
endif
endif
elseif k%=%w
wr%=1-wr%
if wr%=0
giprint "Scroll wrap is OFF"
else
giprint "Scroll wrap is ON"
endif
elseif k%=%g
gUSE wp%
gAT 0,0
gGREY 1
gCOPY wb%,0,0,48,48,0
gUSE we%
md%=-1
updatebg:
elseif k%=%b
dINIT "Brush size"
dLONG bx&,"X size:",1,48
dLONG by&,"Y size:",1,48
DIALOG
x%=min(x%,48-bx&)
y%=min(y%,48-by&)
elseif k%=%h
bx&=1
by&=1
elseif k%=%p
if cp%=0
giprint "Buffer is empty"
else
bx&=cpx%
by&=cpy%
x%=min(x%,48-bx&)
y%=min(y%,48-by&)
endif
elseif k%=%r
whichpl:
giprint "Invert"
gUSE wp%
gAT 0,0
if ap%=1
gGREY 2
gFILL 48,48,2
elseif ap%=2
gGREY 2
gCOPY wb%,0,0,48,48,1
gGREY 0
gCLS
gGREY 1
gFILL 48,48,2
gGREY 0
gCOPY wb%,0,0,48,48,0
elseif ap%=3
gGREY 0
gFILL 48,48,2
endif
gUSE we%
update21:
giprint ""
md%=-1
elseif s% and 2
if k%=256
by&=max(by&-1,1)
elseif k%=257
by&=min(by&+1,48)
y%=min(y%,48-by&)
elseif k%=258
bx&=min(bx&+1,48)
x%=min(x%,48-bx&)
elseif k%=259
bx&=max(bx&-1,1)
endif
elseif s% and 4
cx%=0
cy%=0
if wr%=1
gUSE ww%
gGREY 2
gCOPY wp%,0,0,48,48,3
endif
if k%=256
cy%=-1
elseif k%=257
cy%=1
elseif k%=258
cx%=1
elseif k%=259
cx%=-1
elseif k%=260
cy%=-by&
elseif k%=261
cy%=by&
elseif k%=262
cx%=-bx&
elseif k%=263
cx%=bx&
endif
gUSE wp%
gGREY 2
gSCROLL cx%,cy%
gUSE we%
gGREY 2
gSCROLL cx%*3,cy%*3
x%=min(max(x%+cx%,0),47)
y%=min(max(y%+cy%,0),47)
if wr%=1
gUSE wp%
if cx%<0
gAT 48+cx%,0
gCOPY ww%,0,0,-cx%,48,3
elseif cx%>0
gAT 0,0
gCOPY ww%,48-cx%,0,cx%,48,3
elseif cy%<0
gAT 0,48+cy%
gCOPY ww%,0,0,48,-cy%,3
elseif cy%>0
gAT 0,0
gCOPY ww%,0,48-cy%,48,cy%,3
endif
update21:
else
updatebg:
endif
gUSE we%
md%=-1
elseif k%=256
y%=max(y%-1,0)
elseif k%=257
y%=min(y%+1,48-by&)
elseif k%=258
x%=min(x%+1,48-bx&)
elseif k%=259
x%=max(x%-1,0)
elseif k%=260
y%=max(y%-by&,0)
elseif k%=261
y%=min(y%+by&,48-by&)
elseif k%=262
x%=max(x%-bx&,0)
elseif k%=263
x%=min(x%+bx&,48-bx&)
elseif k%=13
gUSE we%
gAT x%*3,y%*3
if dp%=1
gGREY 2
gFILL 3*bx&,3*by&,1
gUSE wp%
gGREY 2
gAT x%,y%
gFILL bx&,by&,1
elseif dp%=2
gGREY 1
gFILL 3*bx&,3*by&,0
gGREY 0
gFILL 3*bx&,3*by&,1
gUSE wp%
gAT x%,y%
gGREY 1
gFILL bx&,by&,0
gGREY 0
gFILL bx&,by&,1
elseif dp%=3
gGREY 2
gFILL 3*bx&,3*by&,0
gUSE wp%
gGREY 2
gAT x%,y%
gFILL bx&,by&,0
endif
updatebg:
gGREY 0
gUSE we%