home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 18 REXX / 18-REXX.zip / rexxface.zip / ascii2xbm.cmd < prev    next >
OS/2 REXX Batch file  |  1998-02-01  |  2KB  |  64 lines

  1. /*
  2.  *  ascii2xbm.cmd  --- width=48 ascii-picture to width=48 XBM converter
  3.  *
  4.  *         Copyright (C) 1997-1998  OKUNISHI Fujikazu
  5.  *
  6.  * Author:  OKUNISHI Fujikazu <fuji0924@mbox.kyoto-inet.or.jp>
  7.  * Created: Aug 09, 1997
  8.  * Revised: Feb  1, 1998
  9.  *
  10.  * how2use:
  11.  *  ex.)  ascii2xbm.cmd ascii.picture > my.xbm [RET]
  12.  */
  13.  
  14.   Parse Arg IN .
  15.  
  16.   If IN='' Then Do
  17.     If Lines()==0 Then Exit 255
  18.     IN='STDIN'
  19.     name='nobody'
  20.   End
  21.   Else If Stream(IN,'C','Query Exist') =''
  22.     Then Exit 255
  23.     Else Do
  24.       name=Filespec('Name',IN); lp=Lastpos('.',name)
  25.       If lp>1 Then name=Left(name,lp -1)
  26.               Else name='nobody'
  27.     End
  28.  
  29.   OUT='STDOUT'
  30.  
  31.   Do i=1 By 1 While Lines(IN)
  32.     str.i=Translate(Left(Linein(IN),48),'wwWWWWW_','ozM$HZ# ')
  33.     line1.i=''; line2.i='';
  34.     Do j=1 to 48
  35.       d= Substr(str.i,j,1)
  36.       If d='_' Then Do; d1.j=0; d2.j=0; End
  37.       If d='w' Then Do; d1.j=0; d2.j=1; End
  38.       If d='"' Then Do; d1.j=1; d2.j=0; End
  39.       If d='W' Then Do; d1.j=1; d2.j=1; End
  40.       line1.i=line1.i||d1.j; line2.i=line2.i||d2.j
  41.     End
  42.     line1.i=B2X(line1.i); line2.i=B2X(line2.i)
  43. /*  Say i line1.i;Say i line2.i*/
  44.   End
  45.  
  46.   Call LineOut OUT,'#define' name || '_width 48'
  47.   Call LineOut OUT,'#define' name || '_height' (i-1)*2
  48.   Call LineOut OUT,'static char' name || '_bits[] = {'
  49.  
  50.   Do j=1 To i-1
  51.     str1.j='';str2.j='';
  52.     Do m=1 By 2 To 12
  53.       d1.m = '0x' || B2X(Reverse(X2B(Substr(line1.j,m,2)))) ||','
  54.       d2.m = '0x' || B2X(Reverse(X2B(Substr(line2.j,m,2)))) ||','
  55.       str1.j = str1.j ||d1.m; str2.j = str2.j ||d2.m
  56.     End
  57.     Call CharOut OUT, str1.j||str2.j
  58.   End
  59.   Call CharOut OUT,'};' ; Call LineOut OUT /*close*/
  60.  
  61. Exit
  62.  
  63. /* end of procedure */
  64.