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