home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / scheme / pcscheme / geneva / sources.exe / SOURCES / HERSHEY / MAKECHAR.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1993-03-25  |  2.1 KB  |  106 lines

  1. #include    <stdio.h>
  2. #include    <stdlib.h>
  3. #include    <graphics.h>
  4.  
  5. extern char    _BGI_auto;
  6.  
  7. #define MK_FP( seg,ofs )( (void _seg * )( seg ) +( void near * )( ofs ))
  8.  
  9. void    setenv( char *what, char *is )
  10. {
  11.     unsigned    psp;
  12.     char far     *env;
  13.     char    *t;
  14. asm {
  15.     mov    ah, 62h            // get psp
  16.     int    21h
  17. }
  18.     psp = _BX;
  19.     env = (char far *) MK_FP( *( (unsigned far *) MK_FP( psp, 0x2c )), 0 );
  20.  
  21.     while( *env )
  22.     {
  23.         for( t = what; *t; t++ )
  24.         if( *t != *env++ )
  25.             goto    failed;
  26.         if( *env++ == '=')
  27.         {
  28.             while( (*env++ = *is++) != 0 );
  29.             *env++ = 0;
  30.             return;
  31.         }
  32. failed:
  33.         while( *env )
  34.             env++;
  35.         env++;
  36.     }
  37. }
  38.  
  39. void       far _Cdecl restorecrtmode(void) {}
  40.  
  41. void    process( int driver, int mode, char *fname, char *print, int from, int to )
  42. {
  43.     int    i, font;
  44.     char    avail[256], s[2] = "?";
  45.  
  46.     fprintf( stderr, "(%s ", fname );
  47.  
  48.     font = installuserfont( fname );
  49.  
  50.     initgraph( &driver, &mode, "../bin");
  51.     settextstyle( font, HORIZ_DIR, 5 );
  52.     settextjustify( LEFT_TEXT, BOTTOM_TEXT );
  53.     
  54.     for( i = from; i <= to; i++ )
  55.     {
  56.         *s = i;
  57.         avail[i] = (textwidth( s ) > 0);
  58.     }
  59.     closegraph();
  60.  
  61.     for( i = from; i <= to; i++ )
  62.     if( avail[i] )
  63.     {
  64.         fprintf( stderr, "[%d] ", i );
  65.         {
  66.             char    s[20];
  67.             sprintf( s, print, i );
  68.             setenv( "PS$", s );
  69.         }
  70.         initgraph( &driver, &mode, "../bin");
  71.         settextstyle( font, HORIZ_DIR, 5 );
  72.         settextjustify( LEFT_TEXT, BOTTOM_TEXT );
  73.         setviewport( 0, 0, 100, 100, 0 );    // no clipping
  74. //        rectangle( 1, 1, 98, 98 );
  75.         *s = i;
  76.         outtextxy( 1, 70, s );
  77. //        fprintf( stderr, "%d,%d", textheight(s), textwidth(s) );
  78.         closegraph();
  79.     }
  80.     fprintf( stderr, ") ");
  81. }
  82.  
  83. int    main( int argc, char *argv[] )
  84. {
  85.     char    s[256];
  86.     int    i, driver, mode;
  87.  
  88.     if( !getenv("PS$") )
  89.     {
  90.         putenv("PS$=dummy");
  91.         system( argv[0] );
  92.         return    0;
  93.     }
  94.     _BGI_auto = 0xa5;
  95.     driver = installuserdriver( "PS", 0 );
  96.     mode = 6;        // encapsulated 100x100
  97. //driver = 1;
  98. //mode = 1;
  99.     process( driver, mode, "sy20", "*s%d.eps", 1, 255 );
  100.     process( driver, mode, "sy10", "*t%d.eps", 1, 255 );
  101.     process( driver, mode, "gr2b", "*g%d.eps", 1, 255 );
  102.     process( driver, mode, "rm2l", "*l%d.eps", 1, 6 );
  103.  
  104.     return    0;
  105. }
  106.