This is SqView-Test.m in view mode; [Download] [Up]
// ------------------------------------------------------------------------- // @interface SqPixels:Object { int width; int height; unsigned char* pixels; } -(id)initWidth:(int)aWidth height:(int)aHeight; -(id)free; -(int)width; -(int)height; -(int)depth; -(unsigned char*)pixels; -(void)paintRectAt:(int)left :(int)top size:(int)rWidth :(int)rHeight withColor:(unsigned char)color; -(void)frameRectAt:(int)left :(int)top size:(int)rWidth :(int)rHeight withColor:(unsigned char)color; -(void)drawString:(char*)string at:(int)left :(int)baseLine withColor:(unsigned char)color; @end // SqPixels. // ------------------------------------------------------------------------- // @implementation SqPixels -(id)initWidth:(int)aWidth height:(int)aHeight { if((aWidth<=0)||(aHeight<=0)){ return(0); } self=[super init]; if(self!=0){ width=aWidth; height=aHeight; pixels=(unsigned char*)malloc(sizeof(unsigned char)*width*height); if(pixels==0){ [self free]; self=0; }else{ [self paintRectAt:0:0 size:width:height withColor:0]; } } return(self); }//init; -(id)free { if(pixels!=0){ free(pixels); } return([super free]); }//free; -(int)width { return(width); }//width; -(int)height { return(height); }//height; -(int)depth { return(8); }//depth; -(unsigned char*)pixels { return(pixels); }//pixels; -(void)paintRectAt:(int)left :(int)top size:(int)rWidth :(int)rHeight withColor:(unsigned char)color; { int bottom=top+rHeight; int right=left+rWidth; register int maxY=bottom*width; register int y; for(y=top*width;y<maxY;y+=width){ register int maxX=y+right; register int i; for(i=y+left;i<maxX;i++){ pixels[i]=color; } } }//paintRectAt::size::withColor:; -(void)frameRectAt:(int)left :(int)top size:(int)rWidth :(int)rHeight withColor:(unsigned char)color { int bottom=top+rHeight; int right=left+rWidth; register int maxX=top*width+right; register int maxY=bottom*width+left; register int i; register unsigned char* offset; if(bottom<top){ return; } // horizontal lines: offset=pixels+(bottom-top)*width; for(i=top*width+left;i<maxX;i++){ pixels[i]=color; offset[i]=color; } // vertical lines: offset=pixels+rWidth; for(i=top*width+left;i<maxY;i+=width){ pixels[i]=color; offset[i]=color; } }//frameRectAt::size::withColor:; #define CellWidth (8) #define CellHeight (10) #define CellBaseLine (8) typedef unsigned short CharCodeT; typedef CharCodeT EncodingT[256/*unsigned char*/]; typedef unsigned char CharacterImageT[CellHeight]; enum { //CharCodeT CC_delimiter, CC_mosaic00, CC_mosaic01, CC_mosaic02, CC_mosaic03, CC_mosaic04, CC_mosaic05, CC_mosaic06, CC_mosaic07, CC_mosaic08, CC_mosaic09, CC_mosaic10, CC_mosaic11, CC_mosaic12, CC_mosaic13, CC_mosaic14, CC_mosaic15, CC_mosaic16, CC_mosaic17, CC_mosaic18, CC_mosaic19, CC_mosaic20, CC_mosaic21, CC_mosaic22, CC_mosaic23, CC_mosaic24, CC_mosaic25, CC_mosaic26, CC_mosaic27, CC_mosaic28, CC_mosaic29, CC_mosaic30, CC_mosaic31, CC_mosaic32, CC_mosaic33, CC_mosaic34, CC_mosaic35, CC_mosaic36, CC_mosaic37, CC_mosaic38, CC_mosaic39, CC_mosaic40, CC_mosaic41, CC_mosaic42, CC_mosaic43, CC_mosaic44, CC_mosaic45, CC_mosaic46, CC_mosaic47, CC_mosaic48, CC_mosaic49, CC_mosaic50, CC_mosaic51, CC_mosaic52, CC_mosaic53, CC_mosaic54, CC_mosaic55, CC_mosaic56, CC_mosaic57, CC_mosaic58, CC_mosaic59, CC_mosaic60, CC_mosaic61, CC_mosaic62, CC_mosaic63, CC_disjmosaic00, CC_disjmosaic01, CC_disjmosaic02, CC_disjmosaic03, CC_disjmosaic04, CC_disjmosaic05, CC_disjmosaic06, CC_disjmosaic07, CC_disjmosaic08, CC_disjmosaic09, CC_disjmosaic10, CC_disjmosaic11, CC_disjmosaic12, CC_disjmosaic13, CC_disjmosaic14, CC_disjmosaic15, CC_disjmosaic16, CC_disjmosaic17, CC_disjmosaic18, CC_disjmosaic19, CC_disjmosaic20, CC_disjmosaic21, CC_disjmosaic22, CC_disjmosaic23, CC_disjmosaic24, CC_disjmosaic25, CC_disjmosaic26, CC_disjmosaic27, CC_disjmosaic28, CC_disjmosaic29, CC_disjmosaic30, CC_disjmosaic31, CC_disjmosaic32, CC_disjmosaic33, CC_disjmosaic34, CC_disjmosaic35, CC_disjmosaic36, CC_disjmosaic37, CC_disjmosaic38, CC_disjmosaic39, CC_disjmosaic40, CC_disjmosaic41, CC_disjmosaic42, CC_disjmosaic43, CC_disjmosaic44, CC_disjmosaic45, CC_disjmosaic46, CC_disjmosaic47, CC_disjmosaic48, CC_disjmosaic49, CC_disjmosaic50, CC_disjmosaic51, CC_disjmosaic52, CC_disjmosaic53, CC_disjmosaic54, CC_disjmosaic55, CC_disjmosaic56, CC_disjmosaic57, CC_disjmosaic58, CC_disjmosaic59, CC_disjmosaic60, CC_disjmosaic61, CC_disjmosaic62, CC_disjmosaic63, CC_A, CC_B, CC_C, CC_D, CC_E, CC_F, CC_G, CC_H, CC_I, CC_J, CC_K, CC_L, CC_M, CC_N, CC_O, CC_P, CC_Q, CC_R, CC_S, CC_T, CC_U, CC_V, CC_W, CC_X, CC_Y, CC_Z, CC_a, CC_b, CC_c, CC_d, CC_e, CC_f, CC_g, CC_h, CC_i, CC_j, CC_k, CC_l, CC_m, CC_n, CC_o, CC_p, CC_q, CC_r, CC_s, CC_t, CC_u, CC_v, CC_w, CC_x, CC_y, CC_z, CC_Acircumflex, CC_Ccedilla, CC_Eacute, CC_Egrave, CC_OE, CC_acircumflex, CC_adieresis, CC_agrave, CC_ccedilla, CC_eacute, CC_ecircumflex, CC_edieresis, CC_egrave, CC_icircumflex, CC_idieresis, CC_ocircumflex, CC_odieresis, CC_oe, CC_ucircumflex, CC_udieresis, CC_ugrave, CC_zero, CC_one, CC_two, CC_three, CC_four, CC_five, CC_six, CC_seven, CC_eight, CC_nine, CC_onequarter, CC_onehalf, CC_threequarters, CC_ampersand, CC_arrowdown, CC_arrowleft, CC_arrowright, CC_arrowup, CC_asciitilde, CC_asterisk, CC_at, CC_backslash, CC_barbottom, // CC_underscore CC_barhorizontal, CC_barleft, CC_barright, CC_bartop, CC_barvertical, CC_braceleft, CC_braceright, CC_bracketleft, CC_bracketright, CC_colon, CC_comma, CC_divide, CC_dollar, CC_equal, CC_exclam, CC_germandbls, CC_greater, CC_minus, // CC_hyphen CC_less, CC_numbersign, CC_paragraph, CC_parenleft, CC_parenright, CC_percent, CC_period, CC_plus, CC_plusminus, CC_question, CC_quotedbl, CC_quoteright, CC_quotesingle, CC_ring, CC_semicolon, CC_slash, CC_sterling, CC_space, CC_obliteration };//enum CharCodeT; static CharacterImageT FontGen[]= { {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},//CC_delimiter {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},//CC_mosaic00 {0x0F,0x0F,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},//CC_mosaic01 {0xF0,0xF0,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},//CC_mosaic02 {0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},//CC_mosaic03 {0xFF,0xFF,0xFF,0x0F,0x0F,0x0F,0x0F,0xFF,0xFF,0xFF},//CC_mosaic04 {0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0xFF,0xFF,0xFF},//CC_mosaic05 {0xF0,0xF0,0xF0,0x0F,0x0F,0x0F,0x0F,0xFF,0xFF,0xFF},//CC_mosaic06 {0x00,0x00,0x00,0x0F,0x0F,0x0F,0x0F,0xFF,0xFF,0xFF},//CC_mosaic07 {0xFF,0xFF,0xFF,0xF0,0xF0,0xF0,0xF0,0xFF,0xFF,0xFF},//CC_mosaic08 {0x0F,0x0F,0x0F,0xF0,0xF0,0xF0,0xF0,0xFF,0xFF,0xFF},//CC_mosaic09 {0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xFF,0xFF,0xFF},//CC_mosaic10 {0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0,0xFF,0xFF,0xFF},//CC_mosaic11 {0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF},//CC_mosaic12 {0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF},//CC_mosaic13 {0xF0,0xF0,0xF0,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF},//CC_mosaic14 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF},//CC_mosaic15 {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x0F,0x0F},//CC_mosaic16 {0x0F,0x0F,0x0F,0xFF,0xFF,0xFF,0xFF,0x0F,0x0F,0x0F},//CC_mosaic17 {0xF0,0xF0,0xF0,0xFF,0xFF,0xFF,0xFF,0x0F,0x0F,0x0F},//CC_mosaic18 {0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x0F,0x0F,0x0F},//CC_mosaic19 {0xFF,0xFF,0xFF,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F},//CC_mosaic20 {0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F},//CC_mosaic21 {0xF0,0xF0,0xF0,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F},//CC_mosaic22 {0x00,0x00,0x00,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F},//CC_mosaic23 {0xFF,0xFF,0xFF,0xF0,0xF0,0xF0,0xF0,0x0F,0x0F,0x0F},//CC_mosaic24 {0x0F,0x0F,0x0F,0xF0,0xF0,0xF0,0xF0,0x0F,0x0F,0x0F},//CC_mosaic25 {0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0x0F,0x0F,0x0F},//CC_mosaic26 {0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0,0x0F,0x0F,0x0F},//CC_mosaic27 {0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x0F,0x0F,0x0F},//CC_mosaic28 {0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00,0x0F,0x0F,0x0F},//CC_mosaic29 {0xF0,0xF0,0xF0,0x00,0x00,0x00,0x00,0x0F,0x0F,0x0F},//CC_mosaic30 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x0F},//CC_mosaic31 {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xF0,0xF0},//CC_mosaic32 {0x0F,0x0F,0x0F,0xFF,0xFF,0xFF,0xFF,0xF0,0xF0,0xF0},//CC_mosaic33 {0xF0,0xF0,0xF0,0xFF,0xFF,0xFF,0xFF,0xF0,0xF0,0xF0},//CC_mosaic34 {0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xF0,0xF0,0xF0},//CC_mosaic35 {0xFF,0xFF,0xFF,0x0F,0x0F,0x0F,0x0F,0xF0,0xF0,0xF0},//CC_mosaic36 {0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0xF0,0xF0,0xF0},//CC_mosaic37 {0xF0,0xF0,0xF0,0x0F,0x0F,0x0F,0x0F,0xF0,0xF0,0xF0},//CC_mosaic38 {0x00,0x00,0x00,0x0F,0x0F,0x0F,0x0F,0xF0,0xF0,0xF0},//CC_mosaic39 {0xFF,0xFF,0xFF,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0},//CC_mosaic40 {0x0F,0x0F,0x0F,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0},//CC_mosaic41 {0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0},//CC_mosaic42 {0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0},//CC_mosaic43 {0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xF0,0xF0,0xF0},//CC_mosaic44 {0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,0xF0},//CC_mosaic45 {0xF0,0xF0,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,0xF0},//CC_mosaic46 {0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0},//CC_mosaic47 {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00},//CC_mosaic48 {0x0F,0x0F,0x0F,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00},//CC_mosaic49 {0xF0,0xF0,0xF0,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00},//CC_mosaic50 {0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00},//CC_mosaic51 {0xFF,0xFF,0xFF,0x0F,0x0F,0x0F,0x0F,0x00,0x00,0x00},//CC_mosaic52 {0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x00,0x00,0x00},//CC_mosaic53 {0xF0,0xF0,0xF0,0x0F,0x0F,0x0F,0x0F,0x00,0x00,0x00},//CC_mosaic54 {0x00,0x00,0x00,0x0F,0x0F,0x0F,0x0F,0x00,0x00,0x00},//CC_mosaic55 {0xFF,0xFF,0xFF,0xF0,0xF0,0xF0,0xF0,0x00,0x00,0x00},//CC_mosaic56 {0x0F,0x0F,0x0F,0xF0,0xF0,0xF0,0xF0,0x00,0x00,0x00},//CC_mosaic57 {0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0x00,0x00,0x00},//CC_mosaic58 {0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0,0x00,0x00,0x00},//CC_mosaic59 {0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//CC_mosaic60 {0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//CC_mosaic61 {0xF0,0xF0,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//CC_mosaic62 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//CC_mosaic63 {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},//CC_disjmosaic00 {0x8F,0x8F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},//CC_disjmosaic01 {0xF8,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},//CC_disjmosaic02 {0x88,0x88,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},//CC_disjmosaic03 {0xFF,0xFF,0xFF,0x8F,0x8F,0x8F,0xFF,0xFF,0xFF,0xFF},//CC_disjmosaic04 {0x8F,0x8F,0xFF,0x8F,0x8F,0x8F,0xFF,0xFF,0xFF,0xFF},//CC_disjmosaic05 {0xF8,0xF8,0xFF,0x8F,0x8F,0x8F,0xFF,0xFF,0xFF,0xFF},//CC_disjmosaic06 {0x88,0x88,0xFF,0x8F,0x8F,0x8F,0xFF,0xFF,0xFF,0xFF},//CC_disjmosaic07 {0xFF,0xFF,0xFF,0xF8,0xF8,0xF8,0xFF,0xFF,0xFF,0xFF},//CC_disjmosaic08 {0x8F,0x8F,0xFF,0xF8,0xF8,0xF8,0xFF,0xFF,0xFF,0xFF},//CC_disjmosaic09 {0xF8,0xF8,0xFF,0xF8,0xF8,0xF8,0xFF,0xFF,0xFF,0xFF},//CC_disjmosaic10 {0x88,0x88,0xFF,0xF8,0xF8,0xF8,0xFF,0xFF,0xFF,0xFF},//CC_disjmosaic11 {0xFF,0xFF,0xFF,0x88,0x88,0x88,0xFF,0xFF,0xFF,0xFF},//CC_disjmosaic12 {0x8F,0x8F,0xFF,0x88,0x88,0x88,0xFF,0xFF,0xFF,0xFF},//CC_disjmosaic13 {0xF8,0xF8,0xFF,0x88,0x88,0x88,0xFF,0xFF,0xFF,0xFF},//CC_disjmosaic14 {0x88,0x88,0xFF,0x88,0x88,0x88,0xFF,0xFF,0xFF,0xFF},//CC_disjmosaic15 {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x8F,0x8F,0xFF},//CC_disjmosaic16 {0x8F,0x8F,0xFF,0xFF,0xFF,0xFF,0xFF,0x8F,0x8F,0xFF},//CC_disjmosaic17 {0xF8,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0x8F,0x8F,0xFF},//CC_disjmosaic18 {0x88,0x88,0xFF,0xFF,0xFF,0xFF,0xFF,0x8F,0x8F,0xFF},//CC_disjmosaic19 {0xFF,0xFF,0xFF,0x8F,0x8F,0x8F,0xFF,0x8F,0x8F,0xFF},//CC_disjmosaic20 {0x8F,0x8F,0xFF,0x8F,0x8F,0x8F,0xFF,0x8F,0x8F,0xFF},//CC_disjmosaic21 {0xF8,0xF8,0xFF,0x8F,0x8F,0x8F,0xFF,0x8F,0x8F,0xFF},//CC_disjmosaic22 {0x88,0x88,0xFF,0x8F,0x8F,0x8F,0xFF,0x8F,0x8F,0xFF},//CC_disjmosaic23 {0xFF,0xFF,0xFF,0xF8,0xF8,0xF8,0xFF,0x8F,0x8F,0xFF},//CC_disjmosaic24 {0x8F,0x8F,0xFF,0xF8,0xF8,0xF8,0xFF,0x8F,0x8F,0xFF},//CC_disjmosaic25 {0xF8,0xF8,0xFF,0xF8,0xF8,0xF8,0xFF,0x8F,0x8F,0xFF},//CC_disjmosaic26 {0x88,0x88,0xFF,0xF8,0xF8,0xF8,0xFF,0x8F,0x8F,0xFF},//CC_disjmosaic27 {0xFF,0xFF,0xFF,0x88,0x88,0x88,0xFF,0x8F,0x8F,0xFF},//CC_disjmosaic28 {0x8F,0x8F,0xFF,0x88,0x88,0x88,0xFF,0x8F,0x8F,0xFF},//CC_disjmosaic29 {0xF8,0xF8,0xFF,0x88,0x88,0x88,0xFF,0x8F,0x8F,0xFF},//CC_disjmosaic30 {0x88,0x88,0xFF,0x88,0x88,0x88,0xFF,0x8F,0x8F,0xFF},//CC_disjmosaic31 {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0xF8,0xFF},//CC_disjmosaic32 {0x8F,0x8F,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0xF8,0xFF},//CC_disjmosaic33 {0xF8,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0xF8,0xFF},//CC_disjmosaic34 {0x88,0x88,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0xF8,0xFF},//CC_disjmosaic35 {0xFF,0xFF,0xFF,0x8F,0x8F,0x8F,0xFF,0xF8,0xF8,0xFF},//CC_disjmosaic36 {0x8F,0x8F,0xFF,0x8F,0x8F,0x8F,0xFF,0xF8,0xF8,0xFF},//CC_disjmosaic37 {0xF8,0xF8,0xFF,0x8F,0x8F,0x8F,0xFF,0xF8,0xF8,0xFF},//CC_disjmosaic38 {0x88,0x88,0xFF,0x8F,0x8F,0x8F,0xFF,0xF8,0xF8,0xFF},//CC_disjmosaic39 {0xFF,0xFF,0xFF,0xF8,0xF8,0xF8,0xFF,0xF8,0xF8,0xFF},//CC_disjmosaic40 {0x8F,0x8F,0xFF,0xF8,0xF8,0xF8,0xFF,0xF8,0xF8,0xFF},//CC_disjmosaic41 {0xF8,0xF8,0xFF,0xF8,0xF8,0xF8,0xFF,0xF8,0xF8,0xFF},//CC_disjmosaic42 {0x88,0x88,0xFF,0xF8,0xF8,0xF8,0xFF,0xF8,0xF8,0xFF},//CC_disjmosaic43 {0xFF,0xFF,0xFF,0x88,0x88,0x88,0xFF,0xF8,0xF8,0xFF},//CC_disjmosaic44 {0x8F,0x8F,0xFF,0x88,0x88,0x88,0xFF,0xF8,0xF8,0xFF},//CC_disjmosaic45 {0xF8,0xF8,0xFF,0x88,0x88,0x88,0xFF,0xF8,0xF8,0xFF},//CC_disjmosaic46 {0x88,0x88,0xFF,0x88,0x88,0x88,0xFF,0xF8,0xF8,0xFF},//CC_disjmosaic47 {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x88,0x88,0xFF},//CC_disjmosaic48 {0x8F,0x8F,0xFF,0xFF,0xFF,0xFF,0xFF,0x88,0x88,0xFF},//CC_disjmosaic49 {0xF8,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0x88,0x88,0xFF},//CC_disjmosaic50 {0x88,0x88,0xFF,0xFF,0xFF,0xFF,0xFF,0x88,0x88,0xFF},//CC_disjmosaic51 {0xFF,0xFF,0xFF,0x8F,0x8F,0x8F,0xFF,0x88,0x88,0xFF},//CC_disjmosaic52 {0x8F,0x8F,0xFF,0x8F,0x8F,0x8F,0xFF,0x88,0x88,0xFF},//CC_disjmosaic53 {0xF8,0xF8,0xFF,0x8F,0x8F,0x8F,0xFF,0x88,0x88,0xFF},//CC_disjmosaic54 {0x88,0x88,0xFF,0x8F,0x8F,0x8F,0xFF,0x88,0x88,0xFF},//CC_disjmosaic55 {0xFF,0xFF,0xFF,0xF8,0xF8,0xF8,0xFF,0x88,0x88,0xFF},//CC_disjmosaic56 {0x8F,0x8F,0xFF,0xF8,0xF8,0xF8,0xFF,0x88,0x88,0xFF},//CC_disjmosaic57 {0xF8,0xF8,0xFF,0xF8,0xF8,0xF8,0xFF,0x88,0x88,0xFF},//CC_disjmosaic58 {0x88,0x88,0xFF,0xF8,0xF8,0xF8,0xFF,0x88,0x88,0xFF},//CC_disjmosaic59 {0xFF,0xFF,0xFF,0x88,0x88,0x88,0xFF,0x88,0x88,0xFF},//CC_disjmosaic60 {0x8F,0x8F,0xFF,0x88,0x88,0x88,0xFF,0x88,0x88,0xFF},//CC_disjmosaic61 {0xF8,0xF8,0xFF,0x88,0x88,0x88,0xFF,0x88,0x88,0xFF},//CC_disjmosaic62 {0x88,0x88,0xFF,0x88,0x88,0x88,0xFF,0x88,0x88,0xFF},//CC_disjmosaic63 {0xFF,0xC7,0xBB,0xBB,0xBB,0x83,0xBB,0xBB,0xFF,0xFF},//CC_A {0xFF,0x87,0xBB,0xBB,0x87,0xBB,0xBB,0x87,0xFF,0xFF},//CC_B {0xFF,0xC7,0xBB,0xBF,0xBF,0xBF,0xBB,0xC7,0xFF,0xFF},//CC_C {0xFF,0x87,0xBB,0xBB,0xBB,0xBB,0xBB,0x87,0xFF,0xFF},//CC_D {0xFF,0x83,0xBF,0xBF,0x8F,0xBF,0xBF,0x83,0xFF,0xFF},//CC_E {0xFF,0x83,0xBF,0xBF,0x8F,0xBF,0xBF,0xBF,0xFF,0xFF},//CC_F {0xFF,0xC7,0xBB,0xBF,0xBF,0xB3,0xBB,0xC3,0xFF,0xFF},//CC_G {0xFF,0xBB,0xBB,0xBB,0x83,0xBB,0xBB,0xBB,0xFF,0xFF},//CC_H {0xFF,0xC7,0xEF,0xEF,0xEF,0xEF,0xEF,0xC7,0xFF,0xFF},//CC_I {0xFF,0xE3,0xF7,0xF7,0xF7,0xF7,0xB7,0xCF,0xFF,0xFF},//CC_J {0xFF,0xBB,0xB7,0xAF,0x9F,0xAF,0xB7,0xBB,0xFF,0xFF},//CC_K {0xFF,0xBF,0xBF,0xBF,0xBF,0xBF,0xBF,0x83,0xFF,0xFF},//CC_L {0xFF,0xBB,0x93,0xAB,0xBB,0xBB,0xBB,0xBB,0xFF,0xFF},//CC_M {0xFF,0xBB,0xBB,0x9B,0xAB,0xB3,0xBB,0xBB,0xFF,0xFF},//CC_N {0xFF,0xC7,0xBB,0xBB,0xBB,0xBB,0xBB,0xC7,0xFF,0xFF},//CC_O {0xFF,0x87,0xBB,0xBB,0x87,0xBF,0xBF,0xBF,0xFF,0xFF},//CC_P {0xFF,0xC7,0xBB,0xBB,0xBB,0xAB,0xB7,0xCB,0xFF,0xFF},//CC_Q {0xFF,0x87,0xBB,0xBB,0x87,0xAF,0xB7,0xBB,0xFF,0xFF},//CC_R {0xFF,0xC7,0xBB,0xBF,0xC7,0xFB,0xBB,0xC7,0xFF,0xFF},//CC_S {0xFF,0x83,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xFF,0xFF},//CC_T {0xFF,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xC7,0xFF,0xFF},//CC_U {0xFF,0xBB,0xBB,0xBB,0xD7,0xD7,0xEF,0xEF,0xFF,0xFF},//CC_V {0xFF,0xBB,0xBB,0xBB,0xAB,0xAB,0xAB,0xD7,0xFF,0xFF},//CC_W {0xFF,0xBB,0xBB,0xD7,0xEF,0xD7,0xBB,0xBB,0xFF,0xFF},//CC_X {0xFF,0xBB,0xBB,0xD7,0xEF,0xEF,0xEF,0xEF,0xFF,0xFF},//CC_Y {0xFF,0x83,0xFB,0xF7,0xEF,0xDF,0xBF,0x83,0xFF,0xFF},//CC_Z {0xFF,0xFF,0xFF,0xCB,0xB3,0xBB,0xB3,0xCB,0xFF,0xFF},//CC_a {0xFF,0xBF,0xBF,0x87,0xBB,0xBB,0xBB,0x87,0xFF,0xFF},//CC_b {0xFF,0xFF,0xFF,0xC7,0xBF,0xBF,0xBF,0xC7,0xFF,0xFF},//CC_c {0xFF,0xFB,0xFB,0xC3,0xBB,0xBB,0xBB,0xC3,0xFF,0xFF},//CC_d {0xFF,0xFF,0xFF,0xC7,0xBB,0x83,0xBF,0xC7,0xFF,0xFF},//CC_e {0xFF,0xE7,0xDB,0xDF,0x8F,0xDF,0xDF,0xDF,0xFF,0xFF},//CC_f {0xFF,0xFF,0xFF,0xC3,0xBB,0xBB,0xC3,0xFB,0xDB,0xE7},//CC_g {0xFF,0xBF,0xBF,0xA7,0x9B,0xBB,0xBB,0xBB,0xFF,0xFF},//CC_h {0xFF,0xEF,0xFF,0xCF,0xEF,0xEF,0xEF,0xC7,0xFF,0xFF},//CC_i {0xFF,0xF7,0xFF,0xE7,0xF7,0xF7,0xF7,0xF7,0xB7,0xCF},//CC_j {0xFF,0xBF,0xBF,0xB7,0xAF,0x9F,0xAF,0xB7,0xFF,0xFF},//CC_k {0xFF,0x9F,0xDF,0xDF,0xDF,0xDF,0xDF,0x8F,0xFF,0xFF},//CC_l {0xFF,0xFF,0xFF,0x97,0xAB,0xAB,0xAB,0xAB,0xFF,0xFF},//CC_m {0xFF,0xFF,0xFF,0xA7,0x9B,0xBB,0xBB,0xBB,0xFF,0xFF},//CC_n {0xFF,0xFF,0xFF,0xC7,0xBB,0xBB,0xBB,0xC7,0xFF,0xFF},//CC_o {0xFF,0xFF,0xFF,0x87,0xBB,0xBB,0xBB,0x87,0xBF,0xBF},//CC_p {0xFF,0xFF,0xFF,0xC3,0xBB,0xBB,0xBB,0xC3,0xFB,0xFB},//CC_q {0xFF,0xFF,0xFF,0xA7,0x9B,0xBF,0xBF,0xBF,0xFF,0xFF},//CC_r {0xFF,0xFF,0xFF,0xC7,0xBF,0xC7,0xFB,0x87,0xFF,0xFF},//CC_s {0xFF,0xBF,0xBF,0x8F,0xBF,0xBF,0xBF,0xCF,0xFF,0xFF},//CC_t {0xFF,0xFF,0xFF,0xBB,0xBB,0xBB,0xB3,0xCB,0xFF,0xFF},//CC_u {0xFF,0xFF,0xFF,0xBB,0xBB,0xD7,0xD7,0xEF,0xFF,0xFF},//CC_v {0xFF,0xFF,0xFF,0xBB,0xBB,0xAB,0xAB,0xD7,0xFF,0xFF},//CC_w {0xFF,0xFF,0xFF,0xBB,0xD7,0xEF,0xD7,0xBB,0xFF,0xFF},//CC_x {0xFF,0xFF,0xFF,0xBB,0xBB,0xB3,0xCB,0xFB,0xBB,0xC7},//CC_y {0xFF,0xFF,0xFF,0x83,0xF7,0xEF,0xDF,0x83,0xFF,0xFF},//CC_z {0xEF,0xD7,0xC7,0xBB,0xBB,0x83,0xBB,0xBB,0xFF,0xFF},//CC_Acircumflex {0xFF,0xC7,0xBB,0xBF,0xBF,0xBF,0xBB,0xC7,0xF7,0xEF},//CC_Ccedilla {0xF7,0xEF,0x83,0xBF,0x8F,0xBF,0xBF,0x83,0xFF,0xFF},//CC_Eacute {0xDF,0xEF,0x83,0xBF,0x87,0xBF,0xBF,0x83,0xFF,0xFF},//CC_Egrave {0xFF,0xC3,0xAF,0xAF,0xA7,0xAF,0xAF,0xC3,0xFF,0xFF},//CC_OE {0xFF,0xEF,0xD7,0xCB,0xB3,0xBB,0xB3,0xCB,0xFF,0xFF},//CC_acircumflex {0xFF,0xD7,0xFF,0xCB,0xB3,0xBB,0xB3,0xCB,0xFF,0xFF},//CC_adieresis {0xFF,0xDF,0xEF,0xCB,0xB3,0xBB,0xB3,0xCB,0xFF,0xFF},//CC_agrave {0xFF,0xFF,0xFF,0xC7,0xBF,0xBF,0xBF,0xC7,0xEF,0xDF},//CC_ccedilla {0xFF,0xF7,0xEF,0xC7,0xBB,0x83,0xBF,0xC7,0xFF,0xFF},//CC_eacute {0xFF,0xEF,0xD7,0xC7,0xBB,0x83,0xBF,0xC7,0xFF,0xFF},//CC_ecircumflex {0xFF,0xD7,0xFF,0xC7,0xBB,0x83,0xBF,0xC7,0xFF,0xFF},//CC_edieresis {0xFF,0xDF,0xEF,0xC7,0xBB,0x83,0xBF,0xC7,0xFF,0xFF},//CC_egrave {0xFF,0xEF,0xD7,0xFF,0xCF,0xEF,0xEF,0xC7,0xFF,0xFF},//CC_icircumflex {0xFF,0xD7,0xFF,0xCF,0xEF,0xEF,0xEF,0xC7,0xFF,0xFF},//CC_idieresis {0xFF,0xEF,0xD7,0xFF,0xC7,0xBB,0xBB,0xC7,0xFF,0xFF},//CC_ocircumflex {0xFF,0xD7,0xFF,0xC7,0xBB,0xBB,0xBB,0xC7,0xFF,0xFF},//CC_odieresis {0xFF,0xFF,0xFF,0xC3,0xAD,0xA1,0xAF,0xC1,0xFF,0xFF},//CC_oe {0xFF,0xEF,0xD7,0xFF,0xBB,0xBB,0xB3,0xCB,0xFF,0xFF},//CC_ucircumflex {0xFF,0xFF,0xD7,0xFF,0xB7,0xB7,0xB7,0xCB,0xFF,0xFF},//CC_udieresis {0xFF,0xBF,0xCF,0xFF,0xB7,0xB7,0xB7,0xCB,0xFF,0xFF},//CC_ugrave {0xFF,0xEF,0xD7,0xBB,0xBB,0xBB,0xD7,0xEF,0xFF,0xFF},//CC_zero {0xFF,0xEF,0xCF,0xEF,0xEF,0xEF,0xEF,0xEF,0xFF,0xFF},//CC_one {0xFF,0xC7,0xBB,0xFB,0xE7,0xDF,0xBF,0x83,0xFF,0xFF},//CC_two {0xFF,0x83,0xFB,0xF7,0xE7,0xFB,0xBB,0xC7,0xFF,0xFF},//CC_three {0xFF,0xF7,0xE7,0xD7,0xB7,0x83,0xF7,0xF7,0xFF,0xFF},//CC_four {0xFF,0x83,0xBF,0x87,0xFB,0xFB,0xBB,0xC7,0xFF,0xFF},//CC_five {0xFF,0xE7,0xDF,0xBF,0x87,0xBB,0xBB,0xC7,0xFF,0xFF},//CC_six {0xFF,0x83,0xFB,0xF7,0xEF,0xDF,0xDF,0xDF,0xFF,0xFF},//CC_seven {0xFF,0xC7,0xBB,0xBB,0xC7,0xBB,0xBB,0xC7,0xFF,0xFF},//CC_eight {0xFF,0xC7,0xBB,0xBB,0xC3,0xFB,0xFB,0xC7,0xFF,0xFF},//CC_nine {0xFF,0xBF,0x3F,0xBF,0xBB,0xF3,0xEB,0xC1,0xFB,0xFF},//CC_onequarter {0xFF,0xBF,0x3F,0xBF,0xB3,0xED,0xFB,0xF7,0xE1,0xFF},//CC_onehalf {0xFF,0x1F,0xDF,0xBF,0xDB,0x33,0xEB,0xC1,0xFB,0xFF},//CC_threequarters {0xFF,0xDF,0xAF,0xAF,0xDF,0xAB,0xB7,0xCB,0xFF,0xFF},//CC_ampersand {0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xAB,0xC7,0xEF,0xFF},//CC_arrowdown {0xFF,0xFF,0xEF,0xDF,0x80,0xDF,0xEF,0xFF,0xFF,0xFF},//CC_arrowleft {0xFF,0xFF,0xF7,0xFB,0x01,0xFB,0xF7,0xFF,0xFF,0xFF},//CC_arrowright {0xFF,0xEF,0xC7,0xAB,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF},//CC_arrowup {0xFF,0xFF,0xFF,0xDF,0xAB,0xF7,0xFF,0xFF,0xFF,0xFF},//CC_asciitilde {0xFF,0xEF,0xAB,0xC7,0xEF,0xC7,0xAB,0xEF,0xFF,0xFF},//CC_asterisk {0xFF,0xC7,0xBB,0xA3,0xAB,0xA3,0xBF,0xC7,0xFF,0xFF},//CC_at {0x7F,0xBF,0xBF,0xDF,0xEF,0xF7,0xFB,0xFB,0xFD,0xFE},//CC_backslash {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00},//CC_barbottom {0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF},//CC_barhorizontal {0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F},//CC_barleft {0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE},//CC_barright {0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},//CC_bartop {0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF},//CC_barvertical {0xFF,0xE7,0xEF,0xEF,0xDF,0xEF,0xEF,0xE7,0xFF,0xFF},//CC_braceleft {0xFF,0xF3,0xFB,0xFB,0xFD,0xFB,0xFB,0xF3,0xFF,0xFF},//CC_braceright {0xFF,0xE3,0xEF,0xEF,0xEF,0xEF,0xEF,0xE3,0xFF,0xFF},//CC_bracketleft {0xFF,0xC7,0xF7,0xF7,0xF7,0xF7,0xF7,0xC7,0xFF,0xFF},//CC_bracketright {0xFF,0xFF,0xFF,0xEF,0xFF,0xFF,0xFF,0xEF,0xFF,0xFF},//CC_colon {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0xEF,0xDF,0xFF},//CC_comma {0xFF,0xFF,0xEF,0xFF,0x83,0xFF,0xEF,0xFF,0xFF,0xFF},//CC_divide {0xFF,0xEF,0xC7,0xAF,0xC7,0xEB,0xAB,0xC7,0xEF,0xFF},//CC_dollar {0xFF,0xFF,0xFF,0x83,0xFF,0x83,0xFF,0xFF,0xFF,0xFF},//CC_equal {0xFF,0xEF,0xEF,0xEF,0xEF,0xEF,0xFF,0xEF,0xFF,0xFF},//CC_exclam {0xFF,0x87,0xBB,0xA7,0xBB,0xBB,0xA7,0xBF,0xBF,0xFF},//CC_germandbls {0xFF,0xBF,0xDF,0xEF,0xF7,0xEF,0xDF,0xBF,0xFF,0xFF},//CC_greater {0xFF,0xFF,0xFF,0xFF,0xFF,0x83,0xFF,0xFF,0xFF,0xFF},//CC_minus {0xFF,0xF7,0xEF,0xDF,0xBF,0xDF,0xEF,0xF7,0xFF,0xFF},//CC_less {0xFF,0xFF,0xD7,0x83,0xD7,0x83,0xD7,0xFF,0xFF,0xFF},//CC_numbersign {0xFF,0xC7,0xBF,0xC7,0xBB,0xC7,0xFB,0xC7,0xFF,0xFF},//CC_paragraph {0xFF,0xEF,0xDF,0xBF,0xBF,0xBF,0xDF,0xEF,0xFF,0xFF},//CC_parenleft {0xFF,0xEF,0xF7,0xFB,0xFB,0xFB,0xF7,0xEF,0xFF,0xFF},//CC_parenright {0xFF,0x9F,0x9B,0xF7,0xEF,0xDF,0xB3,0xF3,0xFF,0xFF},//CC_percent {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0xFF,0xFF},//CC_period {0xFF,0xFF,0xEF,0xEF,0x83,0xEF,0xEF,0xFF,0xFF,0xFF},//CC_plus {0xFF,0xEF,0xEF,0x83,0xEF,0xEF,0xFF,0x83,0xFF,0xFF},//CC_plusminus {0xFF,0xC7,0xBB,0xFB,0xF7,0xEF,0xFF,0xEF,0xFF,0xFF},//CC_question {0xFF,0xD7,0xD7,0xD7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},//CC_quotedbl {0xFF,0xEF,0xEF,0xDF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},//CC_quoteright {0xFF,0xEF,0xEF,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},//CC_quotesingle {0xFF,0xCF,0xB7,0xCF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},//CC_ring {0xFF,0xFF,0xFF,0xEF,0xFF,0xFF,0xEF,0xEF,0xDF,0xFF},//CC_semicolon {0xFE,0xFD,0xFD,0xFB,0xF7,0xEF,0xDF,0xDF,0xBF,0x7F},//CC_slash {0xFF,0xEF,0xD7,0xDF,0x8F,0xDF,0xB7,0x87,0xFF,0xFF},//CC_sterling {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},//CC_space {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//CC_obliteration {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00} };//FontGen; static EncodingT Encoding={ CC_obliteration, CC_obliteration, CC_obliteration, CC_obliteration, CC_obliteration, CC_obliteration, CC_obliteration, CC_obliteration, CC_obliteration, CC_obliteration, CC_obliteration, CC_obliteration, CC_obliteration, CC_obliteration, CC_obliteration, CC_obliteration, CC_obliteration, CC_obliteration, CC_obliteration, CC_obliteration, CC_obliteration, CC_obliteration, CC_obliteration, CC_obliteration, CC_obliteration, CC_obliteration, CC_obliteration, CC_obliteration, CC_obliteration, CC_obliteration, CC_obliteration, CC_obliteration, CC_space, CC_exclam, CC_quotedbl, CC_numbersign, CC_dollar, CC_percent, CC_ampersand, CC_quoteright, CC_parenleft, CC_parenright, CC_asterisk, CC_plus, CC_comma, CC_minus, CC_period, CC_slash, CC_zero, CC_one, CC_two, CC_three, CC_four, CC_five, CC_six, CC_seven, CC_eight, CC_nine, CC_colon, CC_semicolon, CC_less, CC_equal, CC_greater, CC_question, CC_at, CC_A, CC_B, CC_C, CC_D, CC_E, CC_F, CC_G, CC_H, CC_I, CC_J, CC_K, CC_L, CC_M, CC_N, CC_O, CC_P, CC_Q, CC_R, CC_S, CC_T, CC_U, CC_V, CC_W, CC_X, CC_Y, CC_Z, CC_bracketleft, CC_backslash, CC_bracketright, CC_arrowup, CC_barbottom, CC_barhorizontal, CC_a, CC_b, CC_c, CC_d, CC_e, CC_f, CC_g, CC_h, CC_i, CC_j, CC_k, CC_l, CC_m, CC_n, CC_o, CC_p, CC_q, CC_r, CC_s, CC_t, CC_u, CC_v, CC_w, CC_x, CC_y, CC_z, CC_barleft, CC_barvertical, CC_barright, CC_bartop, CC_obliteration, CC_mosaic00, CC_mosaic01, CC_mosaic02, CC_mosaic03, CC_mosaic04, CC_mosaic05, CC_mosaic06, CC_mosaic07, CC_mosaic08, CC_mosaic09, CC_mosaic10, CC_mosaic11, CC_mosaic12, CC_mosaic13, CC_mosaic14, CC_mosaic15, CC_mosaic16, CC_mosaic17, CC_mosaic18, CC_mosaic19, CC_mosaic20, CC_mosaic21, CC_mosaic22, CC_mosaic23, CC_mosaic24, CC_mosaic25, CC_mosaic26, CC_mosaic27, CC_mosaic28, CC_mosaic29, CC_mosaic30, CC_mosaic31, CC_mosaic32, CC_mosaic33, CC_mosaic34, CC_mosaic35, CC_mosaic36, CC_mosaic37, CC_mosaic38, CC_mosaic39, CC_mosaic40, CC_mosaic41, CC_mosaic42, CC_mosaic43, CC_mosaic44, CC_mosaic45, CC_mosaic46, CC_mosaic47, CC_mosaic48, CC_mosaic49, CC_mosaic50, CC_mosaic51, CC_mosaic52, CC_mosaic53, CC_mosaic54, CC_mosaic55, CC_mosaic56, CC_mosaic57, CC_mosaic58, CC_mosaic59, CC_mosaic60, CC_mosaic61, CC_mosaic62, CC_mosaic63, CC_disjmosaic00, CC_disjmosaic01, CC_disjmosaic02, CC_disjmosaic03, CC_disjmosaic04, CC_disjmosaic05, CC_disjmosaic06, CC_disjmosaic07, CC_disjmosaic08, CC_disjmosaic09, CC_disjmosaic10, CC_disjmosaic11, CC_disjmosaic12, CC_disjmosaic13, CC_disjmosaic14, CC_disjmosaic15, CC_disjmosaic16, CC_disjmosaic17, CC_disjmosaic18, CC_disjmosaic19, CC_disjmosaic20, CC_disjmosaic21, CC_disjmosaic22, CC_disjmosaic23, CC_disjmosaic24, CC_disjmosaic25, CC_disjmosaic26, CC_disjmosaic27, CC_disjmosaic28, CC_disjmosaic29, CC_disjmosaic30, CC_disjmosaic31, CC_disjmosaic32, CC_disjmosaic33, CC_disjmosaic34, CC_disjmosaic35, CC_disjmosaic36, CC_disjmosaic37, CC_disjmosaic38, CC_disjmosaic39, CC_disjmosaic40, CC_disjmosaic41, CC_disjmosaic42, CC_disjmosaic43, CC_disjmosaic44, CC_disjmosaic45, CC_disjmosaic46, CC_disjmosaic47, CC_disjmosaic48, CC_disjmosaic49, CC_disjmosaic50, CC_disjmosaic51, CC_disjmosaic52, CC_disjmosaic53, CC_disjmosaic54, CC_disjmosaic55, CC_disjmosaic56, CC_disjmosaic57, CC_disjmosaic58, CC_disjmosaic59, CC_disjmosaic60, CC_disjmosaic61, CC_disjmosaic62, CC_disjmosaic63, };//Encoding -(void)drawChar:(char)character at:(int)left :(int)baseLine withColor:(unsigned char)color { unsigned char* offset=pixels+(baseLine-CellBaseLine)*width; CharacterImageT* image=&(FontGen[Encoding[(unsigned char)character]]); int j; if((left<0)||(left+CellWidth>width)||(baseLine-CellBaseLine<0) ||(baseLine+CellHeight-CellBaseLine>height)){ return; } for(j=0;j<CellHeight;j++,offset+=width){ unsigned char byte=(*image)[j]; unsigned char bit=0x80; int i; for(i=0;i<CellWidth;i++,bit>>=1){ if(!(bit&byte)){ offset[i]=color; } } } }//drawChar:at::withColor:; -(void)drawString:(char*)string at:(int)left :(int)baseLine withColor:(unsigned char)color { while((*string)!='\0'){ [self drawChar:(*string) at:left :baseLine withColor:color]; string++; left+=CellWidth; } }//drawString:at::withColor:; @end // SqPixels. // ------------------------------------------------------------------------- // @interface SqView(Test) -(void)testPattern; @end // SqView(Test). // ------------------------------------------------------------------------- // @implementation SqView(Test) -(void)testPattern { int i; int j; SqPixels* pixels=[[SqPixels alloc]initWidth:640 height:480]; if(pixels==0){ return; } for(j=0;j<8;j++){ char num[16]; sprintf(num," line #%d",j); [pixels drawString:num at:70:j*8 withColor:1]; for(i=0;i<8;i++){ [pixels paintRectAt:i*8:j*8 size:8:8 withColor:i*8+j]; } } [pixels frameRectAt:100:100 size:440:280 withColor:1]; [pixels paintRectAt:102:102 size:436:276 withColor:1]; [pixels paintRectAt:104:104 size:432:272 withColor:0]; [pixels drawString:"Hello World!" at:120:140 withColor:1]; [self ioShowDisplayBitsIndex:(int)[pixels pixels] width:[pixels width] height:[pixels height] depth:[pixels depth] affectedLeft:0 affectedRight:320 affectedTop:0 affectedBottom:480]; [self ioShowDisplayBitsIndex:(int)[pixels pixels] width:[pixels width] height:[pixels height] depth:[pixels depth] affectedLeft:320 affectedRight:640 affectedTop:0 affectedBottom:480]; [pixels free]; }//testPattern; @end // SqView(Test).
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.