static void event_help( void ) { grEvent dummy_event; FTDemo_Display_Clear( display ); grSetLineHeight( 10 ); grGotoxy( 0, 0 ); grSetMargin( 2, 1 ); grGotobitmap( display->bitmap ); grWriteln( "FreeType String Viewer - part of the FreeType test suite" ); grLn(); grWriteln( "This program is used to display a string of text using" ); grWriteln( "the new convenience API of the FreeType 2 library." ); grLn(); grWriteln( "Use the following keys :" ); grLn(); grWriteln( " F1 or ? : display this help screen" ); grLn(); grWriteln( " a : toggle anti-aliasing" ); grWriteln( " b : toggle embedded bitmaps (and disable rotation)" ); grWriteln( " f : toggle forced auto-hinting" ); grWriteln( " h : toggle outline hinting" ); grLn(); grWriteln( " 1-2 : select rendering mode" ); grWriteln( " k : cycle through kerning modes" ); grWriteln( " t : cycle through kerning degrees" ); grWriteln( " V : toggle vertical rendering" ); grLn(); grWriteln( " G : toggle gamma correction" ); grWriteln( " g : increase gamma by 0.1" ); grWriteln( " v : decrease gamma by 0.1" ); grLn(); grWriteln( " n : next font" ); grWriteln( " p : previous font" ); grLn(); grWriteln( " Up : increase pointsize by 1 unit" ); grWriteln( " Down : decrease pointsize by 1 unit" ); grWriteln( " Page Up : increase pointsize by 10 units" ); grWriteln( " Page Down : decrease pointsize by 10 units" ); grLn(); grWriteln( " Right : rotate counter-clockwise" ); grWriteln( " Left : rotate clockwise" ); grWriteln( " F7 : big rotate counter-clockwise" ); grWriteln( " F8 : big rotate clockwise" ); grLn(); grWriteln( "press any key to exit this help screen" ); grRefreshSurface( display->surface ); grListenSurface( display->surface, gr_event_key, &dummy_event ); }
static void write_header( FT_Error error_code ) { FT_Face face; const char* basename; error = FTC_Manager_LookupFace( handle->cache_manager, handle->scaler.face_id, &face ); if ( error ) PanicZ( "can't access font file" ); if ( !status.header ) { basename = ft_basename( handle->current_font->filepathname ); switch ( error_code ) { case FT_Err_Ok: sprintf( status.header_buffer, "%.50s %.50s (file `%.100s')", face->family_name, face->style_name, basename ); break; case FT_Err_Invalid_Pixel_Size: sprintf( status.header_buffer, "Invalid pixel size (file `%.100s')", basename ); break; case FT_Err_Invalid_PPem: sprintf( status.header_buffer, "Invalid ppem value (file `%.100s')", basename ); break; default: sprintf( status.header_buffer, "File `%.100s': error 0x%04x", basename, (FT_UShort)error_code ); break; } status.header = status.header_buffer; } grWriteCellString( display->bitmap, 0, 0, status.header, display->fore_color ); sprintf( status.header_buffer, "at %g points, angle = %d", status.ptsize / 64.0, status.angle ); grWriteCellString( display->bitmap, 0, CELLSTRING_HEIGHT, status.header_buffer, display->fore_color ); grRefreshSurface( display->surface ); }
int main( void ) { FTDemo_Display* display; grEvent dummy; display = FTDemo_Display_New( gr_pixel_mode_rgb24 ); if ( !display ) { PanicZ( "could not allocate display surface" ); } grSetTitle( display->surface, "FreeType Gamma Matcher" ); Render_GammaGrid( display->bitmap ); grRefreshSurface( display->surface ); grListenSurface( display->surface, 0, &dummy ); exit( 0 ); /* for safety reasons */ return 0; /* never reached */ }