/[freetype]/ft2demos/src/ftview.c
ViewVC logotype

Diff of /ft2demos/src/ftview.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.61 by freetype, Thu Sep 22 20:43:10 2005 UTC revision 1.62 by olvaffe, Thu Dec 8 09:14:29 2005 UTC
# Line 821  Next: Line 821  Next:
821    }    }
822    
823    
824    static char*    static void
825    error_message( FT_Error error_code )    write_header( FT_Error error_code )
826    {    {
827      FT_Face      face;      FT_Face      face;
828      const char*  basename;      const char*  basename;
829        const char*  format;
830    
831    
832      error = FTC_Manager_LookupFace( handle->cache_manager,      error = FTC_Manager_LookupFace( handle->cache_manager,
# Line 833  Next: Line 834  Next:
834      if ( error )      if ( error )
835        PanicZ( "can't access font file" );        PanicZ( "can't access font file" );
836    
837      basename = ft_basename( handle->current_font->filepathname );      if ( !status.header )
   
     switch ( error_code )  
838      {      {
839          basename = ft_basename( handle->current_font->filepathname );
840    
841          switch ( error_code )
842          {
843        case FT_Err_Ok:        case FT_Err_Ok:
844          sprintf( status.header_buffer, "%s %s (file `%s')", face->family_name,          sprintf( status.header_buffer, "%s %s (file `%s')", face->family_name,
845              face->style_name, basename );                   face->style_name, basename );
846          break;          break;
847        case FT_Err_Invalid_Pixel_Size:        case FT_Err_Invalid_Pixel_Size:
848          sprintf( status.header_buffer, "Invalid pixel size (file `%s')", basename );          sprintf( status.header_buffer, "Invalid pixel size (file `%s')", basename );
# Line 849  Next: Line 852  Next:
852          break;          break;
853        default:        default:
854          sprintf( status.header_buffer, "File `%s': error 0x%04x", basename,          sprintf( status.header_buffer, "File `%s': error 0x%04x", basename,
855              (FT_UShort)error_code );                   (FT_UShort)error_code );
856          break;          break;
857          }
858    
859          status.header = status.header_buffer;
860      }      }
861    
862      return status.header_buffer;      grWriteCellString( display->bitmap, 0, 0, status.header, display->fore_color );
863    
864        format = ( status.encoding != FT_ENCODING_NONE )
865                 ? "at %d points, first char code = 0x%x"
866                 : "at %d points, first glyph index = %d";
867    
868        snprintf( status.header_buffer, 256, format, status.ptsize, status.Num );
869    
870        if ( FT_HAS_GLYPH_NAMES( face ) )
871        {
872          char*  p;
873          int    format_len, gindex, size;
874    
875    
876          size = strlen( status.header_buffer );
877          p    = status.header_buffer + size;
878          size = 256 - size;
879    
880          format = ", name = ";
881          format_len = strlen( format );
882    
883          if ( size >= format_len + 2 )
884          {
885            gindex = status.Num;
886            if ( status.encoding != FT_ENCODING_NONE )
887              gindex = FTDemo_Get_Index( handle, status.Num );
888    
889            strcpy( p, format );
890            if ( FT_Get_Glyph_Name( face, gindex, p + format_len, size - format_len ) )
891              *p = '\0';
892          }
893        }
894    
895        status.header = status.header_buffer;
896        grWriteCellString( display->bitmap, 0, HEADER_HEIGHT, status.header_buffer,
897                           display->fore_color );
898    
899        grRefreshSurface( display->surface );
900    }    }
901    
902    
903    static void    static void
904    usage( char*  execname )    usage( char*  execname )
905    {    {
# Line 949  Next: Line 993  Next:
993          char*  argv[] )          char*  argv[] )
994    {    {
995      grEvent      event;      grEvent      event;
     const char*  header_format;  
996    
997    
998      parse_cmdline( &argc, &argv );      parse_cmdline( &argc, &argv );
# Line 975  Next: Line 1018  Next:
1018      }      }
1019  #endif  #endif
1020    
     header_format = status.encoding != FT_ENCODING_NONE  
                     ? "at %d points, first char code = 0x%x"  
                     : "at %d points, first glyph index = %d";  
   
1021      /* Initialize engine */      /* Initialize engine */
1022      handle = FTDemo_New( status.encoding );      handle = FTDemo_New( status.encoding );
1023    
# Line 1027  Next: Line 1066  Next:
1066          break;          break;
1067        }        }
1068    
1069        if ( !status.header )        write_header( error );
         status.header = error_message( error );  
   
       /* write header */  
       grWriteCellString( display->bitmap, 0, 0, status.header, display->fore_color );  
       sprintf( status.header_buffer, header_format, status.ptsize, status.Num );  
       grWriteCellString( display->bitmap, 0, HEADER_HEIGHT, status.header_buffer,  
                          display->fore_color );  
   
       grRefreshSurface( display->surface );  
1070    
1071        if ( status.dump_cache_stats )        if ( status.dump_cache_stats )
1072        {        {

Legend:
Removed from v.1.61  
changed lines
  Added in v.1.62

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26