mkfont: Add "no drop shadow" gradients.
This commit is contained in:
parent
5ff8bd2367
commit
453b64c179
1 changed files with 34 additions and 12 deletions
46
mkfont.c
46
mkfont.c
|
|
@ -329,7 +329,7 @@ palend:
|
|||
fclose(f);
|
||||
}
|
||||
|
||||
const char grads[8][20] =
|
||||
const char grads[12][20] =
|
||||
{
|
||||
"Flat (Shadow)",
|
||||
"Top-Bottom (Shadow)",
|
||||
|
|
@ -338,7 +338,11 @@ const char grads[8][20] =
|
|||
"Flat (Border)",
|
||||
"Top-Bottom (Border)",
|
||||
"Bottom-Top (Border)",
|
||||
"Centered (Border)"
|
||||
"Centered (Border)",
|
||||
"Flat",
|
||||
"Top-Bottom",
|
||||
"Bottom-Top",
|
||||
"Centered"
|
||||
};
|
||||
|
||||
#define LOADFLAGS FT_LOAD_PEDANTIC
|
||||
|
|
@ -349,7 +353,7 @@ int main( int argc, char **argv )
|
|||
if ( argc < 3 )
|
||||
{
|
||||
fprintf(stderr,"usage: mkfont <font name> <pxsize> <unicode range (hex)>"
|
||||
" [gradient type] [color palette] [-palinv]\n");
|
||||
" [gradient type (0,11)] [color palette] [-palinv]\n");
|
||||
return 1;
|
||||
}
|
||||
if ( FT_Init_FreeType(&ftlib) )
|
||||
|
|
@ -361,7 +365,15 @@ int main( int argc, char **argv )
|
|||
int pxsiz;
|
||||
sscanf(argv[2],"%d",&pxsiz);
|
||||
sscanf(argv[3],"%x-%x",&range[0],&range[1]);
|
||||
if ( argc > 4 ) sscanf(argv[4],"%d",&gradient);
|
||||
if ( argc > 4 )
|
||||
{
|
||||
sscanf(argv[4],"%d",&gradient);
|
||||
if ( (gradient < 0) || (gradient >= 12) )
|
||||
{
|
||||
fprintf(stderr,"warning: gradient type out of range, falling back to type 0.\n");
|
||||
gradient = 0;
|
||||
}
|
||||
}
|
||||
if ( argc > 6 ) palinv = !strcmp(argv[6],"-palinv");
|
||||
if ( argc > 5 ) loadpalette(argv[5]);
|
||||
if ( FT_New_Face(ftlib,argv[1],0,&fnt) )
|
||||
|
|
@ -433,16 +445,24 @@ int main( int argc, char **argv )
|
|||
}
|
||||
fprintf(stderr,"info: max cell size is %dx%d.\n",w,h);
|
||||
}
|
||||
iw = w+1;
|
||||
ih = h+1;
|
||||
if ( gradient&4 )
|
||||
if ( gradient&8 )
|
||||
{
|
||||
bordshift = 1;
|
||||
iw++;
|
||||
ih++;
|
||||
iw = w;
|
||||
ih = h;
|
||||
}
|
||||
else
|
||||
{
|
||||
iw = w+1;
|
||||
ih = h+1;
|
||||
if ( gradient&4 )
|
||||
{
|
||||
bordshift = 1;
|
||||
iw++;
|
||||
ih++;
|
||||
}
|
||||
}
|
||||
datsiz = palsize?(iw*ih*4):(iw*ih*2);
|
||||
fprintf(stderr,"info: gradient selected is '%s'.\n",grads[gradient&7]);
|
||||
fprintf(stderr,"info: gradient selected is '%s'.\n",grads[gradient]);
|
||||
idata = calloc(datsiz,1);
|
||||
uint32_t drawn = 0;
|
||||
for ( uint32_t i=range[0]; i<=range[1]; i++ )
|
||||
|
|
@ -471,7 +491,9 @@ int main( int argc, char **argv )
|
|||
fnt->glyph->bitmap_top++;
|
||||
valid = 0;
|
||||
oob = 0;
|
||||
if ( gradient&4 )
|
||||
if ( gradient&8 ) // no shadow nor gradient
|
||||
valid = draw_glyph(&fnt->glyph->bitmap,255,xx,yy,fnt->glyph->bitmap_left,h-fnt->glyph->bitmap_top);
|
||||
else if ( gradient&4 )
|
||||
{
|
||||
// draw outline first
|
||||
draw_glyph(&fnt->glyph->bitmap,0,xx,yy,fnt->glyph->bitmap_left,h-fnt->glyph->bitmap_top);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue