From 204fa6d3b04dcaf1f3e35851f26fdd7eb63007be Mon Sep 17 00:00:00 2001 From: avolkov Date: Fri, 24 Feb 2006 19:20:17 +0000 Subject: [PATCH] Extended font specification (for other drivers) git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@2258 8092fc87-c524-0410-9efc-e669fe64eaf9 --- tools/map/large300.map | 16 +++++++++------- tools/map/mapgen.c | 43 +++++++++++++----------------------------- tools/map/sdlpngdrv.c | 8 +++++++- 3 files changed, 29 insertions(+), 38 deletions(-) diff --git a/tools/map/large300.map b/tools/map/large300.map index 81f65c9d9..05c70f3be 100755 --- a/tools/map/large300.map +++ b/tools/map/large300.map @@ -11,6 +11,7 @@ image.dpi.y=300 # width and height in inches; v-trimmed A3 image.width=11.69 image.height=14.56 +# color specified as RRGGBB in hexadecimal image.backcolor=200020 # layer Order image.layers=sois,grid,soinames,clusters,stars,starnums,cnames @@ -26,8 +27,8 @@ grid.origin.y=0.6 grid.width=10.49 grid.height=10.49 grid.color=9566cb -# font: Arial Bold -grid.font.name=Arialbd.ttf +grid.font.name=Arial Bold +grid.font.filename=Arialbd.ttf # font point size is in 1/64th of an inch grid.font.size=8 # weight is in 1/64th of an inch @@ -39,8 +40,8 @@ grid.marks.color=8771b6 stars.definition=stars.map stars.numcolor=989898 -# font: Times New Roman -stars.desig.font.name=Times.ttf +stars.desig.font.name=Times New Roman +stars.desig.font.filename=Times.ttf stars.desig.font.size=4 # designation letters/symbols in utf8 for the specified font # using Greek letters @@ -107,8 +108,8 @@ stars.W.3.color=f0f0f0 # Star Clusters clusters.definition=clusters.map -# font: Arial Narrow Bold -clusters.names.font.name=Arialnb.ttf +clusters.names.font.name=Arial Narrow Bold +clusters.names.font.filename=Arialnb.ttf clusters.names.font.size=7 clusters.names.color=7aa2ef clusters.lines.color=8181a9 @@ -116,7 +117,8 @@ clusters.lines.weight=0.75 # Spheres of Influence -sois.font.name=Arialbd.ttf +sois.font.name=Arial Bold +sois.font.filename=Arialbd.ttf sois.font.size=16 sois.count=14 diff --git a/tools/map/mapgen.c b/tools/map/mapgen.c index 3a2ada63d..ad8bf2646 100755 --- a/tools/map/mapgen.c +++ b/tools/map/mapgen.c @@ -187,6 +187,7 @@ typedef struct soi_t* sois; int csois; const char* soifont; + const char* soifontfile; double soifontsize; object_t* objs; @@ -295,35 +296,15 @@ int main(int argc, char *argv[]) drv->drawFilledRect(NULL, scr.backclr); -#if 0 - drawSpheres(drv, &scr); - drawGrid(drv, &scr); - drawSphereNames(drv, &scr); - drawClusterLines(drv, &scr); - drawStars(drv, &scr); - drawStarDesignations(drv, &scr); - drawClusterNames(drv, &scr); -#endif drawLayers(drv, &scr); - -#if 0 + ret = drv->write(); + if (ret) { - int w = 7; - void drawLine(SDL_Surface* dst, int x0, int y0, int x1, int y1, Uint32 color, int weight); - - drawLine(img, 100, 3500, 150, 3300, 0xffffffff, w); - drawLine(img, 100, 3550, 150, 3490, 0xffffffff, w); - drawLine(img, 100, 3575, 150, 3525, 0xffffffff, w); - drawLine(img, 100, 3600, 200, 3570, 0xffffffff, w); - drawLine(img, 100, 3650, 200, 3680, 0xffffffff, w); - drawLine(img, 100, 3675, 150, 3725, 0xffffffff, w); - drawLine(img, 100, 3700, 150, 3760, 0xffffffff, w); - drawLine(img, 100, 3750, 150, 3950, 0xffffffff, w); + mg_verbose(1, "Driver could not write to the device\n"); + break; } -#endif - drv->write(); drv->end(); ret = EXIT_SUCCESS; @@ -436,19 +417,20 @@ static int parseFont(mg_font_t* fnt, const char* key) { char buf[128]; const char* name; + const char* filename; double size; sprintf(buf, "%s.name", key); name = scr_GetString(buf); - if (!name) - return 0; + sprintf(buf, "%s.filename", key); + filename = scr_GetString(buf); sprintf(buf, "%s.size", key); size = scr_GetFloatDef(buf, 10) / 64.0; - *fnt = drv->loadFont(name, size, name); + *fnt = drv->loadFont(name, size, filename); if (!*fnt) - mg_verbose(1, "Warning: cannot load font '%s'\n", name); + mg_verbose(1, "Warning: cannot load font '%s' (%s)\n", name, filename); return *fnt != NULL; } @@ -980,9 +962,9 @@ static soi_t* loadSois(const char* key, int count, script_t* scr) soi->radius = scr_GetFloatDef(buf, 0); sprintf(buf, "%s.%d.%s", key, i, "font.size"); fntsize = scr_GetFloatDef(buf, scr->soifontsize) / 64.0; - soi->font = drv->loadFont(scr->soifont, fntsize, scr->soifont); + soi->font = drv->loadFont(scr->soifont, fntsize, scr->soifontfile); if (!soi->font) - mg_verbose(1, "Warning: cannot load font '%s'\n", scr->soifont); + mg_verbose(1, "Warning: cannot load font '%s' (%s)\n", scr->soifont, scr->soifontfile); } return tab; @@ -1048,6 +1030,7 @@ static int readScript(script_t* scr, FILE* f) scr->csois = scr_GetIntegerDef("sois.count", 0); scr->soifont = scr_GetString("sois.font.name"); + scr->soifontfile = scr_GetString("sois.font.filename"); scr->soifontsize = scr_GetFloatDef("sois.font.size", 16); scr->sois = loadSois("sois", scr->csois, scr); diff --git a/tools/map/sdlpngdrv.c b/tools/map/sdlpngdrv.c index aa23f1699..7735fc3a5 100755 --- a/tools/map/sdlpngdrv.c +++ b/tools/map/sdlpngdrv.c @@ -400,11 +400,17 @@ static mg_font_t drv_loadFont(const char* name, double size, const char* filenam char buf[512]; struct mg_font* fnt; + if (!filename) + { + mg_verbose(1, "sdlpng: filename not specified for font '%s'\n", name); + return 0; + } + fnt = calloc(1, sizeof(*fnt)); if (!fnt) return 0; fnt->size = inchToPixelsY(size); - fnt->name = strcopy(name); + fnt->name = strcopy(name ? name : ""); sprintf(buf, "%s/%s", fontdir, filename); fnt->font = TTF_OpenFont(buf, fnt->size); if (!fnt->font)