home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: Graphics
/
Graphics.zip
/
gif_text.zip
/
ext_gif.cmd
< prev
next >
Wrap
OS/2 REXX Batch file
|
1998-12-09
|
7KB
|
237 lines
/* */
/* Load up advanced REXX functions */
call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
call SysLoadFuncs
foo=rxfuncquery('rxgdloadfuncs')
if foo=1 then do
Call RxFuncAdd 'RxgdLoadFuncs', 'RXGDUTIL', 'RxgdLoadFuncs'
Call RxgdLoadFuncs
end
say " This utility is meant to be used in conjunction with the gif_text utility "
say
say " Given a grid of fonts in a .GIF file, and a .IND file containing some "
say " basic info, this utility will create an 'alphabyte' -- "
say " it will extract seperate .GIF files for each character referenced "
say " in the .IND file. "
say " (this can be useful for debugging the .IND file)"
say
call charout , " Enter ind file (that contains info on the Grid Of Fonts) ? "
pull anind
if pos('.',anind)=0 then anind=anind'.ind'
parse var anind anind0 '.' .
afile=anind
if afile=' ' then exit
ii=0
if stream(afile,'c','query exists')=' ' then do
say " no such file: " afile
exit
end
do until lines(afile)=0
ii=ii+1
tmp.ii=linein(afile)
end
tmp.0=ii
lines.0=ii
do iii=1 to lines.0
lines.iii=tmp.iii
end /* do */
foo=stream(afile,'c','close')
textcolor='000000' ; backcolor='ffffff'
defgifs=' '; xoffset=0 ; yoffset=0 ; inrow=16 ; hchar=47 ; wchar=35 ;isbw=1
charset=' !"'||"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
/* default names for odd characters */
namelist.0='!@#$%^&*()_+{}|:"<>?/.,;\][`~'||"'=-"
namelist.1='exclam'
namelist.2='amp'
namelist.3='hash'
namelist.4='dollar'
namelist.5='percent'
namelist.6='caret'
namelist.7='amp'
namelist.8='ast'
namelist.9='lparen'
namelist.10='rparen'
namelist.11 ='under'
namelist.12='plus'
namelist.13='lcurly'
namelist.14='rcurly'
namelist.15='vbar'
namelist.16='colon'
namelist.17='dquote'
namelist.18='lt'
namelist.19='gt'
namelist.20='quest'
namelist.21='fslash'
namelist.22='period'
namelist.23='comma'
namelist.24='semic'
namelist.25='bslash'
namelist.26='rsqparen'
namelist.27='lsqparen'
namelist.28='lquote'
namelist.29='squigle'
namelist.30='quote'
namelist.31='equal'
namelist.32='dash'
do mm=1 to lines.0
foo=strip(lines.mm)
if abbrev(foo,';')=1 | foo="" then iterate
if pos('=',foo)=0 then iterate
parse var foo athing '=' stuff ; athing=strip(translate(athing))
select
when athing='DEFAULTS' then defgifs=strip(stuff)
when athing='TEXT' then do
stuff2=get_from_hex(stuff)
if stuff2<>' ' then textcolor=strip(stuff)
end
when athing='BACK' then do
stuff2=get_from_hex(stuff)
if stuff2<>' ' then backcolor=strip(stuff)
end
when athing='DEF_OFFSET' then do
stuff=translate(stuff,' ',',')
parse var stuff a1 a2
if datatype(a1)='NUM' then xoffset=a1
if datatype(a2)='NUM' then yoffset=a2
end /* Do */
when athing='DEF_CHARSIZE' then do
stuff=translate(stuff,' ',',')
parse var stuff a1 a2
if datatype(a1)='NUM' then wchar=a1
if datatype(a2)='NUM' then hchar=a2
end /* Do */
when athing='DEF_CHARS' then charset=stuff
when athing='DEF_BW' then isbw=pos(strip(translate(stuff)),'Y YES 1')
when athing='DEF_INROW' then
if datatype(strip(stuff))='NUM' then inrow=strip(stuff)
otherwise nop
end /* select */
end /* do */
say "DefChars: " charset
say "GIF file: "defgifs
im = RxgdImageCreateFromGIF(defgifs)
if im=1 | im=0 then do
say "Error, could not process " defgifs
say " Are you running EXT_GIFS from the font's own directory?"
exit
end
say " Reading from fonts displayed in: " defgifs
say " The following characters will be produced: " charset
hlist.0=0
backcolor=get_from_hex(backcolor)
parse var backcolor bdefr bdefg bdefb
textcolor=get_from_hex(textcolor)
parse var textcolor tdefr tdefg tdefb
ido=0
/* for each character in the charset ... */
/*do ic=1 to length(charset)*/
do ic=1 to length(charset)
achar=substr(charset,ic,1)
if achar=' ' then iterate
/* determine x offset: */
irow=1+((ic-0.1)%inrow)
icol=ic-((irow-1)*inrow)
/* upper left is 0,0 */
xat=xoffset + ((icol-1)*wchar)
yat=yoffset+ ((irow-1)*hchar)
cim=rxgdimagecreate(wchar,hchar)
foo=rxgdimagecopy(cim,im,0,0,xat,yat,wchar,hchar)
foo=rxgdimagecolordeallocate(cim,0)
oy1=rxgdimagecolorallocate(cim,bdefr,bdefg,bdefb)
foo=rxgdimagecolordeallocate(cim,1)
oy2=rxgdimagecolorallocate(cim,tdefr,tdefg,tdefb)
acharg=achar
if translate(achar)<>achar then acharg=achar'lc'
if pos(translate(achar),'1234567890ABCDEFGHIJKLMNOPQRSTUVXWYZ#-_%$')=0 then DO
ACHARg=a_defname(achar)
call charout," For: "achar ": enter name (ENTER="ACHARG"):"
pull acharg0
if acharg0<>'' then do
acharg=acharg0
end /* do */
iih=hlist.0+1
hlist.iih=achar ; hlist.iih.!ascii=c2d(achar)
parse var acharg acharg '.' .
hlist.iih.!file=acharg'.GIF'
hlist.0=iih
end /* Do */
acharg=acharg'.GIF'
foo=rxgdimagegif(cim,acharG)
say " Writing character " achar "(@ offset " xat yat ") to : " acharg
ido=ido+1
foo= RxgdImageDestroy(cim)
end /* do */
say " Total files written= " ido '(' hlist.0 ' with non-standard names)'
if hlist.0>0 then do
anind1=systempfilename(anind0'.???')
say "Note: you should add the contents of "anind1 " to "anind
foo=stream(anind1,'c','open write')
do ii=1 to hlist.0
call lineout anind1,'##'||hlist.ii.!ascii' 'hlist.ii.!file' 'hlist.ii
end /* do */
call lineout anind1
foo=stream(anind1,'c','close')
end
foo= RxgdImageDestroy(im)
exit
/**************************/
/* convert ff21b3 "hex" color code to decimal r g b values
If bad value, return ' /' */
get_from_hex:procedure
parse arg hval
hval=strip(strip(hval),,'"')
hval=strip(hval,,'#')
select
when length(hval)<>6 then return ' '
when verify(translate(hval),'0123456789ABCDEF')>0 then return ' '
otherwise do
a1=left(hval,2)
a2=substr(hval,3,2)
a3=substr(hval,5,2)
r=x2d(a1)
g=x2d(a2)
b=x2d(a3)
end
end /* do */
return r ' ' g ' ' b
/***********************/
/* some default names */
a_defname:procedure expose namelist.
parse arg achar
ii=pos(achar,namelist.0)
if ii>0 then do
return translate(namelist.ii)||'.GIF'
end
return 'ASC_'||c2d(achar)||'.GIF'