]> git.tdb.fi Git - ttf2png.git/commitdiff
Use stricter warnings and make the code compile with them
authorMikko Rasa <tdb@tdb.fi>
Fri, 23 Nov 2012 18:12:41 +0000 (20:12 +0200)
committerMikko Rasa <tdb@tdb.fi>
Fri, 23 Nov 2012 18:16:06 +0000 (20:16 +0200)
Makefile
ttf2png.c

index 6219108db9c0b7237eef8285dcd2ae8957c2fa9e..0bc7aad4364163f75f15b4b6ee627644d939fe10 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,5 @@
 ttf2png: ttf2png.c
-       gcc -Wall $^ -o $@ $(shell freetype-config --cflags --libs) $(shell pkg-config --cflags --libs libpng12)
+       gcc -Wall -Wextra -Werror -std=c89 -pedantic $^ -o $@ $(shell freetype-config --cflags --libs) $(shell pkg-config --cflags --libs libpng12)
 
 VER=0.3
 
index e702c9fe9446859a99a45c209511f192da00c495..ebc0ccce76f43fee0e93b3c43d756bc129a900bc 100644 (file)
--- a/ttf2png.c
+++ b/ttf2png.c
@@ -240,14 +240,14 @@ int main(int argc, char **argv)
                render_grid(&font, cellw, cellh, cpl, seq);
        if(invert)
        {
-               for(i=0; i<font.image.w*font.image.h; ++i)
+               for(i=0; (unsigned)i<font.image.w*font.image.h; ++i)
                        font.image.data[i] = 255-font.image.data[i];
        }
        save_png(out_fn, &font.image, alpha);
        if(def_fn)
                save_defs(def_fn, &font);
 
-       for(i=0; i<font.n_glyphs; ++i)
+       for(i=0; (unsigned)i<font.n_glyphs; ++i)
                free(font.glyphs[i].image.data);
        free(font.glyphs);
        free(font.image.data);
@@ -274,15 +274,17 @@ void usage()
 {
        printf("ttf2png - True Type Font to PNG converter\n"
                "Copyright (c) 2004-2008  Mikko Rasa, Mikkosoft Productions\n"
-               "Distributed under the GNU General Public License\n\n"
-               "Usage: ttf2png [options] <TTF file>\n\n"
-               "Accepted options (default values in [brackets])\n"
+               "Distributed under the GNU General Public License\n\n");
+
+       printf("Usage: ttf2png [options] <TTF file>\n\n");
+
+       printf("Accepted options (default values in [brackets])\n"
                "  -r  Range of characters to convert [0,255]\n"
                "  -s  Font size to use, in pixels [10]\n"
                "  -l  Number of characters to put in one line [auto]\n"
                "  -c  Character cell size, in pixels [auto]\n"
-               "  -o  Output file name (or - for stdout) [font.png]\n"
-               "  -a  Force autohinter\n"
+               "  -o  Output file name (or - for stdout) [font.png]\n");
+       printf("  -a  Force autohinter\n"
                "  -t  Render glyphs to alpha channel\n"
                "  -i  Invert colors of the glyphs\n"
                "  -v  Increase the level of verbosity\n"
@@ -443,7 +445,7 @@ void render_grid(Font *font, unsigned cellw, unsigned cellh, unsigned cpl, int s
                printf("Max size:  %u x %u\n", maxw, maxh);
                printf("Y range:   [%d %d]\n", bot, top);
                printf("Cell size: %u x %u\n", cellw, cellh);
-               if(maxw>cellw || top-bot>cellh)
+               if(maxw>cellw || (unsigned)(top-bot)>cellh)
                        fprintf(stderr, "Warning: character size exceeds cell size\n");
        }
 
@@ -473,7 +475,7 @@ void render_grid(Font *font, unsigned cellw, unsigned cellh, unsigned cpl, int s
        for(i=0; i<font->n_glyphs; ++i)
        {
                Glyph    *glyph;
-               int      ci, cx, cy;
+               unsigned ci, cx, cy;
                unsigned x, y;
 
                glyph = &font->glyphs[i];
@@ -495,7 +497,7 @@ void render_grid(Font *font, unsigned cellw, unsigned cellh, unsigned cpl, int s
 
                for(y=0; y<glyph->image.h; ++y) for(x=0; x<glyph->image.w; ++x)
                {
-                       if(cx+x<0 || cx+x>=font->image.w || cy+y<0 || cy+y>=font->image.h)
+                       if(cx+x>=font->image.w || cy+y>=font->image.h)
                                continue;
                        font->image.data[cx+x+(cy+y)*font->image.w] = 255-glyph->image.data[x+y*glyph->image.w];
                }
@@ -599,7 +601,7 @@ void render_packed(Font *font)
 
                for(y=0; y<glyph->image.h; ++y) for(x=0; x<glyph->image.w; ++x)
                {
-                       if(cx+x<0 || cx+x>=font->image.w || cy+y<0 || cy+y>=font->image.h)
+                       if(cx+x>=font->image.w || cy+y>=font->image.h)
                                continue;
                        font->image.data[cx+x+(cy+y)*font->image.w] = 255-glyph->image.data[x+y*glyph->image.w];
                }
@@ -660,8 +662,8 @@ int save_png(const char *fn, const Image *image, char alpha)
        FILE       *out;
        png_struct *pngs;
        png_info   *pngi;
-       png_byte   *rows[image->h];
-       int        i;
+       png_byte   **rows;
+       unsigned   i;
        png_byte   *data2;
        int        color;
 
@@ -692,6 +694,7 @@ int save_png(const char *fn, const Image *image, char alpha)
        }
 
        png_init_io(pngs, out);
+       rows = (png_byte **)malloc(image->h*sizeof(png_byte *));
        if(alpha)
        {
                data2 = (png_byte *)malloc(image->w*image->h*2);
@@ -714,6 +717,7 @@ int save_png(const char *fn, const Image *image, char alpha)
        png_set_rows(pngs, pngi, rows);
        png_write_png(pngs, pngi, PNG_TRANSFORM_IDENTITY, NULL);
        png_destroy_write_struct(&pngs, &pngi);
+       free(rows);
        if(alpha)
                free(data2);