ftmulti.c: Will now accept any filename. It will no longer append `.ttf'
or `.ttc'. Reformatted. ftcalc.c, ftdebug.c: Minor formatting stuff.
This commit is contained in:
parent
5b401bb918
commit
026bd17b41
|
@ -2,7 +2,7 @@
|
|||
/* */
|
||||
/* The FreeType project -- a free and portable quality TrueType renderer. */
|
||||
/* */
|
||||
/* Copyright 1996-1999 by */
|
||||
/* Copyright 1996-2000 by */
|
||||
/* D. Turner, R.Wilhelm, and W. Lemberg */
|
||||
/* */
|
||||
/* */
|
||||
|
@ -39,10 +39,11 @@
|
|||
char* new_header = 0;
|
||||
|
||||
const unsigned char* Text = (unsigned char*)
|
||||
"The quick brown fox jumped over the lazy dog 0123456789 \
|
||||
\342\352\356\373\364\344\353\357\366\374\377\340\371\351\350\347 \
|
||||
&#~\"\'(-`_^@)=+\260 ABCDEFGHIJKLMNOPQRSTUVWXYZ \
|
||||
$\243^\250*\265\371%!\247:/;.,?<>";
|
||||
"The quick brown fox jumped over the lazy dog 0123456789 "
|
||||
"\342\352\356\373\364\344\353\357\366\374\377\340\371\351\350\347 "
|
||||
"&#~\"\'(-`_^@)=+\260 ABCDEFGHIJKLMNOPQRSTUVWXYZ "
|
||||
"$\243^\250*\265\371%!\247:/;.,?<>";
|
||||
|
||||
FT_Library library; /* the FreeType library */
|
||||
FT_Face face; /* the font face */
|
||||
FT_Size size; /* the font size */
|
||||
|
@ -88,22 +89,26 @@ $\243^\250*\265\371%!\247:/;.,?<>";
|
|||
#ifdef DEBUG
|
||||
#define LOG( x ) LogMessage##x
|
||||
#else
|
||||
#define LOG(x) /* rien */
|
||||
#define LOG( x ) /* empty */
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG
|
||||
static void LogMessage( const char* fmt, ... )
|
||||
static
|
||||
void LogMessage( const char* fmt, ... )
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
|
||||
va_start( ap, fmt );
|
||||
vfprintf( stderr, fmt, ap );
|
||||
va_end( ap );
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/* PanicZ */
|
||||
static void PanicZ( const char* message )
|
||||
static
|
||||
void PanicZ( const char* message )
|
||||
{
|
||||
fprintf( stderr, "%s\n error = 0x%04x\n", message, error );
|
||||
exit( 1 );
|
||||
|
@ -111,17 +116,21 @@ $\243^\250*\265\371%!\247:/;.,?<>";
|
|||
|
||||
|
||||
/* Clears the Bit bitmap/pixmap */
|
||||
static void Clear_Display( void )
|
||||
static
|
||||
void Clear_Display( void )
|
||||
{
|
||||
long size = (long)bit.pitch * bit.rows;
|
||||
|
||||
if (size < 0) size = -size;
|
||||
|
||||
if ( size < 0 )
|
||||
size = -size;
|
||||
memset( bit.buffer, 0, size );
|
||||
}
|
||||
|
||||
|
||||
/* Initialize the display bitmap named Bit */
|
||||
static int Init_Display()
|
||||
/* Initialize the display bitmap named `bit' */
|
||||
static
|
||||
void Init_Display( void )
|
||||
{
|
||||
grInitDevices();
|
||||
|
||||
|
@ -135,7 +144,6 @@ $\243^\250*\265\371%!\247:/;.,?<>";
|
|||
PanicZ( "could not allocate display surface\n" );
|
||||
|
||||
graph_init = 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
@ -148,17 +156,20 @@ $\243^\250*\265\371%!\247:/;.,?<>";
|
|||
static
|
||||
char bit_buffer[MAX_BUFFER];
|
||||
|
||||
|
||||
/* Render a single glyph with the "grays" component */
|
||||
static FT_Error Render_Glyph( int x_offset,
|
||||
static
|
||||
FT_Error Render_Glyph( int x_offset,
|
||||
int y_offset )
|
||||
{
|
||||
/* first, render the glyph into an intermediate buffer */
|
||||
FT_Bitmap bit2;
|
||||
grBitmap bit3;
|
||||
int width, height, pitch, size;
|
||||
int left, right, top, bottom;
|
||||
int x_top, y_top;
|
||||
|
||||
/* first, render the glyph into an intermediate buffer */
|
||||
|
||||
left = FLOOR( glyph->metrics.horiBearingX );
|
||||
right = CEIL( glyph->metrics.horiBearingX + glyph->metrics.width );
|
||||
width = TRUNC( right - left );
|
||||
|
@ -169,7 +180,8 @@ $\243^\250*\265\371%!\247:/;.,?<>";
|
|||
|
||||
if ( glyph->format == ft_glyph_format_outline )
|
||||
{
|
||||
pitch = ( antialias ? (width+3) & -4 : (width+7) >> 3 );
|
||||
pitch = antialias ? ( width + 3 ) & -4
|
||||
: ( width + 7 ) >> 3;
|
||||
size = pitch * height;
|
||||
|
||||
if ( size > MAX_BUFFER )
|
||||
|
@ -206,37 +218,48 @@ $\243^\250*\265\371%!\247:/;.,?<>";
|
|||
bit3.grays = 0;
|
||||
}
|
||||
|
||||
/* Then, blit the image to the target surface */
|
||||
/* then, blit the image to the target surface */
|
||||
|
||||
x_top = x_offset + TRUNC( left );
|
||||
y_top = y_offset - TRUNC( top );
|
||||
|
||||
/*
|
||||
#if 0
|
||||
if ( bit.pitch < 0 )
|
||||
y_top = bit.rows - y_top;
|
||||
*/
|
||||
#endif
|
||||
|
||||
grBlitGlyphToBitmap( &bit, &bit3, x_top, y_top, fore_color );
|
||||
return 0;
|
||||
|
||||
return FT_Err_Ok;
|
||||
}
|
||||
|
||||
static FT_Error Reset_Scale( int pointSize )
|
||||
|
||||
static
|
||||
FT_Error Reset_Scale( int pointSize )
|
||||
{
|
||||
FT_Error error;
|
||||
|
||||
|
||||
error = FT_Set_Char_Size( face, pointSize << 6,
|
||||
pointSize << 6,
|
||||
res,
|
||||
res );
|
||||
if ( error )
|
||||
{
|
||||
/* to be written */
|
||||
}
|
||||
|
||||
return FT_Err_Ok;
|
||||
}
|
||||
|
||||
|
||||
static FT_Error LoadChar( int idx, int hint )
|
||||
static
|
||||
FT_Error LoadChar( int idx,
|
||||
int hint )
|
||||
{
|
||||
int flags;
|
||||
|
||||
|
||||
flags = FT_LOAD_DEFAULT;
|
||||
|
||||
if ( !hint )
|
||||
|
@ -249,14 +272,16 @@ $\243^\250*\265\371%!\247:/;.,?<>";
|
|||
}
|
||||
|
||||
|
||||
|
||||
static FT_Error Render_All( int first_glyph, int ptsize )
|
||||
static
|
||||
FT_Error Render_All( int first_glyph,
|
||||
int ptsize )
|
||||
{
|
||||
FT_F26Dot6 start_x, start_y, step_x, step_y, x, y;
|
||||
int i;
|
||||
|
||||
FT_Error error;
|
||||
|
||||
|
||||
start_x = 4;
|
||||
start_y = 36 + ptsize;
|
||||
|
||||
|
@ -312,7 +337,9 @@ $\243^\250*\265\371%!\247:/;.,?<>";
|
|||
}
|
||||
|
||||
|
||||
static FT_Error Render_Text( int first_glyph, int ptsize )
|
||||
static
|
||||
FT_Error Render_Text( int first_glyph,
|
||||
int ptsize )
|
||||
{
|
||||
FT_F26Dot6 start_x, start_y, step_x, step_y, x, y;
|
||||
int i;
|
||||
|
@ -320,6 +347,7 @@ $\243^\250*\265\371%!\247:/;.,?<>";
|
|||
FT_Error error;
|
||||
const unsigned char* p;
|
||||
|
||||
|
||||
start_x = 4;
|
||||
start_y = 32 + size->metrics.y_ppem;
|
||||
|
||||
|
@ -331,11 +359,17 @@ $\243^\250*\265\371%!\247:/;.,?<>";
|
|||
|
||||
i = first_glyph;
|
||||
p = Text;
|
||||
while (i > 0 && *p) { p++; i--; }
|
||||
while ( i > 0 && *p )
|
||||
{
|
||||
p++;
|
||||
i--;
|
||||
}
|
||||
|
||||
while ( *p )
|
||||
{
|
||||
if ( !(error = LoadChar( FT_Get_Char_Index( face, (unsigned char)*p ), hinted )) )
|
||||
if ( !( error = LoadChar( FT_Get_Char_Index( face,
|
||||
(unsigned char)*p ),
|
||||
hinted ) ) )
|
||||
{
|
||||
#ifdef DEBUG
|
||||
if ( i <= first_glyph + 6 )
|
||||
|
@ -374,11 +408,14 @@ $\243^\250*\265\371%!\247:/;.,?<>";
|
|||
}
|
||||
|
||||
|
||||
static void Help( )
|
||||
static
|
||||
void Help( void )
|
||||
{
|
||||
grEvent dummy_event;
|
||||
|
||||
|
||||
Clear_Display();
|
||||
|
||||
grGotoxy( 0, 0 );
|
||||
grSetMargin( 2, 1 );
|
||||
grGotobitmap( &bit );
|
||||
|
@ -395,7 +432,7 @@ $\243^\250*\265\371%!\247:/;.,?<>";
|
|||
grWriteln(" h : toggle outline hinting" );
|
||||
grWriteln(" b : toggle embedded bitmaps" );
|
||||
grWriteln(" l : toggle low precision rendering" );
|
||||
grWriteln(" g : toggle between 'smooth' and 'standard' anti-aliaser" );
|
||||
grWriteln(" g : toggle between `smooth' and `standard' anti-aliaser" );
|
||||
grWriteln(" space : toggle rendering mode" );
|
||||
grLn();
|
||||
grWriteln(" Up : increase pointsize by 1 unit" );
|
||||
|
@ -419,7 +456,9 @@ $\243^\250*\265\371%!\247:/;.,?<>";
|
|||
grListenSurface( surface, gr_event_key, &dummy_event );
|
||||
}
|
||||
|
||||
static void reset_raster( void )
|
||||
|
||||
static
|
||||
void reset_raster( void )
|
||||
{
|
||||
if ( antialias && use_grays )
|
||||
FT_Set_Raster( library, &ft_grays_raster );
|
||||
|
@ -428,7 +467,8 @@ $\243^\250*\265\371%!\247:/;.,?<>";
|
|||
}
|
||||
|
||||
|
||||
static int Process_Event( grEvent* event )
|
||||
static
|
||||
int Process_Event( grEvent* event )
|
||||
{
|
||||
int i, axis;
|
||||
|
||||
|
@ -438,19 +478,24 @@ $\243^\250*\265\371%!\247:/;.,?<>";
|
|||
case grKEY( 'q' ):
|
||||
return 0;
|
||||
|
||||
case grKeyF1:
|
||||
case grKEY( '?' ):
|
||||
Help();
|
||||
return 1;
|
||||
|
||||
/* mode keys */
|
||||
|
||||
case grKEY( 'a' ):
|
||||
antialias = !antialias;
|
||||
new_header = ( antialias
|
||||
? "anti-aliasing is now on"
|
||||
: "anti-aliasing is now off" );
|
||||
new_header = antialias ? "anti-aliasing is now on"
|
||||
: "anti-aliasing is now off";
|
||||
reset_raster();
|
||||
return 1;
|
||||
|
||||
case grKEY( 'b' ):
|
||||
use_sbits = !use_sbits;
|
||||
new_header = ( use_sbits
|
||||
? "embedded bitmaps are now used when available"
|
||||
: "embedded bitmaps are now ignored" );
|
||||
new_header = use_sbits ? "embedded bitmaps are now used if available"
|
||||
: "embedded bitmaps are now ignored";
|
||||
return 1;
|
||||
|
||||
case grKEY( 'n' ):
|
||||
|
@ -459,56 +504,105 @@ $\243^\250*\265\371%!\247:/;.,?<>";
|
|||
|
||||
case grKEY( 'g' ):
|
||||
use_grays = !use_grays;
|
||||
new_header = ( use_grays
|
||||
? "now using the smooth anti-aliaser"
|
||||
: "now using the standard anti-aliaser" );
|
||||
new_header = use_grays ? "now using the smooth anti-aliaser"
|
||||
: "now using the standard anti-aliaser";
|
||||
reset_raster();
|
||||
break;
|
||||
|
||||
case grKEY( 'l' ):
|
||||
low_prec = !low_prec;
|
||||
new_header = ( low_prec
|
||||
? "rendering precision is now forced to low"
|
||||
: "rendering precision is now normal" );
|
||||
new_header = low_prec ? "rendering precision is now forced to low"
|
||||
: "rendering precision is now normal";
|
||||
break;
|
||||
|
||||
case grKEY( 'h' ):
|
||||
hinted = !hinted;
|
||||
new_header = ( hinted
|
||||
? "glyph hinting is now active"
|
||||
: "glyph hinting is now ignored" );
|
||||
new_header = hinted ? "glyph hinting is now active"
|
||||
: "glyph hinting is now ignored";
|
||||
break;
|
||||
|
||||
case grKEY( ' ' ):
|
||||
render_mode ^= 1;
|
||||
new_header = ( render_mode
|
||||
? "rendering all glyphs in font"
|
||||
: "rendering test text string" );
|
||||
new_header = render_mode ? "rendering all glyphs in font"
|
||||
: "rendering test text string";
|
||||
break;
|
||||
|
||||
case grKeyF1:
|
||||
case grKEY('?'):
|
||||
Help();
|
||||
return 1;
|
||||
/* MM related keys */
|
||||
|
||||
case grKeyF3: i = -20; axis = 0; goto Do_Axis;
|
||||
case grKeyF4: i = 20; axis = 0; goto Do_Axis;
|
||||
case grKeyF5: i = -20; axis = 1; goto Do_Axis;
|
||||
case grKeyF6: i = 20; axis = 1; goto Do_Axis;
|
||||
case grKeyF7: i = -20; axis = 2; goto Do_Axis;
|
||||
case grKeyF8: i = 20; axis = 2; goto Do_Axis;
|
||||
case grKeyF3:
|
||||
i = -20;
|
||||
axis = 0;
|
||||
goto Do_Axis;
|
||||
|
||||
case grKeyPageUp: i = 10; goto Do_Scale;
|
||||
case grKeyPageDown: i = -10; goto Do_Scale;
|
||||
case grKeyUp: i = 1; goto Do_Scale;
|
||||
case grKeyDown: i = -1; goto Do_Scale;
|
||||
case grKeyF4:
|
||||
i = 20;
|
||||
axis = 0;
|
||||
goto Do_Axis;
|
||||
|
||||
case grKeyF5:
|
||||
i = -20;
|
||||
axis = 1;
|
||||
goto Do_Axis;
|
||||
|
||||
case grKeyF6:
|
||||
i = 20;
|
||||
axis = 1;
|
||||
goto Do_Axis;
|
||||
|
||||
case grKeyF7:
|
||||
i = -20;
|
||||
axis = 2;
|
||||
goto Do_Axis;
|
||||
|
||||
case grKeyF8:
|
||||
i = 20;
|
||||
axis = 2;
|
||||
goto Do_Axis;
|
||||
|
||||
/* scaling related keys */
|
||||
|
||||
case grKeyPageUp:
|
||||
i = 10;
|
||||
goto Do_Scale;
|
||||
|
||||
case grKeyPageDown:
|
||||
i = -10;
|
||||
goto Do_Scale;
|
||||
|
||||
case grKeyUp:
|
||||
i = 1;
|
||||
goto Do_Scale;
|
||||
|
||||
case grKeyDown:
|
||||
i = -1;
|
||||
goto Do_Scale;
|
||||
|
||||
/* glyph index related keys */
|
||||
|
||||
case grKeyLeft:
|
||||
i = -1;
|
||||
goto Do_Glyph;
|
||||
|
||||
case grKeyRight:
|
||||
i = 1;
|
||||
goto Do_Glyph;
|
||||
|
||||
case grKeyF9:
|
||||
i = -100;
|
||||
goto Do_Glyph;
|
||||
|
||||
case grKeyF10:
|
||||
i = 100;
|
||||
goto Do_Glyph;
|
||||
|
||||
case grKeyF11:
|
||||
i = -1000;
|
||||
goto Do_Glyph;
|
||||
|
||||
case grKeyF12:
|
||||
i = 1000;
|
||||
goto Do_Glyph;
|
||||
|
||||
case grKeyLeft: i = -1; goto Do_Glyph;
|
||||
case grKeyRight: i = 1; goto Do_Glyph;
|
||||
case grKeyF9: i = -100; goto Do_Glyph;
|
||||
case grKeyF10: i = 100; goto Do_Glyph;
|
||||
case grKeyF11: i = -1000; goto Do_Glyph;
|
||||
case grKeyF12: i = 1000; goto Do_Glyph;
|
||||
default:
|
||||
;
|
||||
}
|
||||
|
@ -520,6 +614,7 @@ $\243^\250*\265\371%!\247:/;.,?<>";
|
|||
FT_MM_Axis* a = multimaster.axis + axis;
|
||||
FT_Long pos = design_pos[axis];
|
||||
|
||||
|
||||
pos += i;
|
||||
if ( pos < a->minimum ) pos = a->minimum;
|
||||
if ( pos > a->maximum ) pos = a->maximum;
|
||||
|
@ -544,8 +639,8 @@ $\243^\250*\265\371%!\247:/;.,?<>";
|
|||
}
|
||||
|
||||
|
||||
|
||||
static void usage( char* execname )
|
||||
static
|
||||
void usage( char* execname )
|
||||
{
|
||||
fprintf( stderr, "\n" );
|
||||
fprintf( stderr, "ftmulti: multiple masters font viewer - part of FreeType\n" );
|
||||
|
@ -562,13 +657,13 @@ $\243^\250*\265\371%!\247:/;.,?<>";
|
|||
}
|
||||
|
||||
|
||||
int main( int argc, char** argv )
|
||||
int
|
||||
main( int argc,
|
||||
char* argv[] )
|
||||
{
|
||||
int i, old_ptsize, orig_ptsize, file;
|
||||
int old_ptsize, orig_ptsize, file;
|
||||
int first_glyph = 0;
|
||||
int XisSetup = 0;
|
||||
char filename[128 + 4];
|
||||
char alt_filename[128 + 4];
|
||||
char* execname;
|
||||
int option;
|
||||
int file_loaded;
|
||||
|
@ -616,7 +711,8 @@ $\243^\250*\265\371%!\247:/;.,?<>";
|
|||
|
||||
/* Initialize engine */
|
||||
error = FT_Init_FreeType( &library );
|
||||
if (error) PanicZ( "Could not initialise FreeType library" );
|
||||
if ( error )
|
||||
PanicZ( "Could not initialize FreeType library" );
|
||||
|
||||
/* retrieve the standard raster's interface */
|
||||
(void)FT_Get_Raster( library, ft_glyph_format_outline, &std_raster );
|
||||
|
@ -627,61 +723,44 @@ $\243^\250*\265\371%!\247:/;.,?<>";
|
|||
hinted = 1;
|
||||
file_loaded = 0;
|
||||
|
||||
#ifndef macintosh
|
||||
i = strlen( argv[file] );
|
||||
while ( i > 0 && argv[file][i] != '\\' && argv[file][i] != '/' )
|
||||
{
|
||||
if ( argv[file][i] == '.' )
|
||||
i = 0;
|
||||
i--;
|
||||
}
|
||||
#endif
|
||||
|
||||
filename[128] = '\0';
|
||||
alt_filename[128] = '\0';
|
||||
|
||||
strncpy( filename, argv[file], 128 );
|
||||
strncpy( alt_filename, argv[file], 128 );
|
||||
|
||||
#ifndef macintosh
|
||||
if ( i >= 0 )
|
||||
{
|
||||
strncpy( filename + strlen( filename ), ".ttf", 4 );
|
||||
strncpy( alt_filename + strlen( alt_filename ), ".ttc", 4 );
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Load face */
|
||||
error = FT_New_Face( library, filename, 0, &face );
|
||||
if (error) goto Display_Font;
|
||||
error = FT_New_Face( library, argv[file], 0, &face );
|
||||
if ( error )
|
||||
goto Display_Font;
|
||||
|
||||
/* retrieve multiple master information */
|
||||
error = FT_Get_Multi_Master( face, &multimaster );
|
||||
if (error) goto Display_Font;
|
||||
if ( error )
|
||||
goto Display_Font;
|
||||
|
||||
/* set the current position to the minimum of each axis */
|
||||
/* set the current position to the median of each axis */
|
||||
{
|
||||
int n;
|
||||
|
||||
|
||||
for ( n = 0; n < multimaster.num_axis; n++ )
|
||||
design_pos[n] =
|
||||
( multimaster.axis[n].minimum + multimaster.axis[n].maximum ) / 2;
|
||||
}
|
||||
|
||||
error = FT_Set_MM_Design_Coordinates( face, multimaster.num_axis, design_pos );
|
||||
if (error) goto Display_Font;
|
||||
error = FT_Set_MM_Design_Coordinates( face,
|
||||
multimaster.num_axis,
|
||||
design_pos );
|
||||
if ( error )
|
||||
goto Display_Font;
|
||||
|
||||
file_loaded++;
|
||||
|
||||
error = Reset_Scale( ptsize );
|
||||
if (error) goto Display_Font;
|
||||
if ( error )
|
||||
goto Display_Font;
|
||||
|
||||
num_glyphs = face->num_glyphs;
|
||||
glyph = face->glyph;
|
||||
size = face->size;
|
||||
|
||||
Display_Font:
|
||||
/* initialise graphics if needed */
|
||||
/* initialize graphics if needed */
|
||||
if ( !XisSetup )
|
||||
{
|
||||
XisSetup = 1;
|
||||
|
@ -707,6 +786,7 @@ $\243^\250*\265\371%!\247:/;.,?<>";
|
|||
{
|
||||
int key;
|
||||
|
||||
|
||||
Clear_Display();
|
||||
|
||||
if ( file_loaded >= 1 )
|
||||
|
@ -724,7 +804,7 @@ $\243^\250*\265\371%!\247:/;.,?<>";
|
|||
sprintf( Header, "%s %s (file %s)",
|
||||
face->family_name,
|
||||
face->style_name,
|
||||
ft_basename( filename ) );
|
||||
ft_basename( argv[file] ) );
|
||||
|
||||
if ( !new_header )
|
||||
new_header = Header;
|
||||
|
@ -735,10 +815,16 @@ $\243^\250*\265\371%!\247:/;.,?<>";
|
|||
sprintf( Header, "axis: " );
|
||||
{
|
||||
int n;
|
||||
|
||||
|
||||
for ( n = 0; n < multimaster.num_axis; n++ )
|
||||
{
|
||||
char temp[32];
|
||||
sprintf( temp, " %s:%ld", multimaster.axis[n].name, design_pos[n] );
|
||||
|
||||
|
||||
sprintf( temp, " %s:%ld",
|
||||
multimaster.axis[n].name,
|
||||
design_pos[n] );
|
||||
strcat( Header, temp );
|
||||
}
|
||||
}
|
||||
|
@ -750,8 +836,8 @@ $\243^\250*\265\371%!\247:/;.,?<>";
|
|||
}
|
||||
else
|
||||
{
|
||||
sprintf( Header, "%s : is not a multiple masters font file or could not be opened",
|
||||
ft_basename(filename) );
|
||||
sprintf( Header, "%s : not an MM font file, or could not be opened",
|
||||
ft_basename( argv[file] ) );
|
||||
}
|
||||
|
||||
grWriteCellString( &bit, 0, 8, Header, fore_color );
|
||||
|
@ -759,7 +845,7 @@ $\243^\250*\265\371%!\247:/;.,?<>";
|
|||
|
||||
grListenSurface( surface, 0, &event );
|
||||
if ( !( key = Process_Event( &event ) ) )
|
||||
goto Fin;
|
||||
goto End;
|
||||
|
||||
if ( key == 'n' )
|
||||
{
|
||||
|
@ -792,11 +878,12 @@ $\243^\250*\265\371%!\247:/;.,?<>";
|
|||
}
|
||||
}
|
||||
|
||||
Fin:
|
||||
End:
|
||||
#if 0
|
||||
grDoneSurface( surface );
|
||||
grDone();
|
||||
#endif
|
||||
|
||||
printf( "Execution completed successfully.\n" );
|
||||
printf( "Fails = %d\n", Fail );
|
||||
|
||||
|
@ -806,4 +893,3 @@ $\243^\250*\265\371%!\247:/;.,?<>";
|
|||
|
||||
|
||||
/* End */
|
||||
|
||||
|
|
|
@ -645,7 +645,7 @@
|
|||
lo = x->lo;
|
||||
|
||||
if ( r >= (FT_Word32)y ) /* we know y is to be treated as unsigned here */
|
||||
return ( s < 0 ) ? 0x80000001L : 0x7FFFFFFFL;
|
||||
return ( s < 0 ) ? 0x80000001UL : 0x7FFFFFFFUL;
|
||||
/* Return Max/Min Int32 if division overflow. */
|
||||
/* This includes division by zero! */
|
||||
q = 0;
|
||||
|
|
Loading…
Reference in New Issue