From f506acab628d313bb2e140ec936dc8970ba2f0d0 Mon Sep 17 00:00:00 2001 From: Mikko Rasa Date: Sat, 14 Apr 2018 15:01:41 +0300 Subject: [PATCH] Improve type usage Use unsigned for numbers for which negative values do not make sense. Add a typedef for bool to better annotate the intended use of flag variables. --- ttf2png.c | 70 ++++++++++++++++++++++++++++++++----------------------- 1 file changed, 41 insertions(+), 29 deletions(-) diff --git a/ttf2png.c b/ttf2png.c index ae559b1..d9869bf 100644 --- a/ttf2png.c +++ b/ttf2png.c @@ -61,14 +61,16 @@ typedef struct sFont Image image; } Font; +typedef int bool; + void usage(void); int convert_numeric_option(char, int); -void convert_code_point_range(char, int *, int *); -void convert_size(char, int *, int *); +void convert_code_point_range(char, unsigned *, unsigned *); +void convert_size(char, unsigned *, unsigned *); unsigned round_to_pot(unsigned); void *alloc_image_data(size_t, size_t); -int init_font(Font *, FT_Face, unsigned, unsigned, int); -int render_grid(Font *, unsigned, unsigned, unsigned, int); +int init_font(Font *, FT_Face, unsigned, unsigned, bool); +int render_grid(Font *, unsigned, unsigned, unsigned, bool); int render_packed(Font *, unsigned, unsigned); int save_defs(const char *, const Font *); int save_png(const char *, const Image *, char); @@ -78,19 +80,19 @@ char verbose = 0; int main(int argc, char **argv) { char *fn; - int begin = 0; - int end = 255; - int size = 10; - int cpl = 0; - int cellw = 0; - int cellh = 0; - char autohinter = 0; - char seq = 0; - char alpha = 0; - char invert = 0; - char pack = 0; - int margin = 0; - int padding = 1; + unsigned begin = 0; + unsigned end = 255; + unsigned size = 10; + unsigned cpl = 0; + unsigned cellw = 0; + unsigned cellh = 0; + bool autohinter = 0; + bool seq = 0; + bool alpha = 0; + bool invert = 0; + bool pack = 0; + unsigned margin = 0; + unsigned padding = 1; FT_Library freetype; FT_Face face; @@ -279,8 +281,9 @@ int convert_numeric_option(char opt, int min_value) return value; } -void convert_code_point_range(char opt, int *begin, int *end) +void convert_code_point_range(char opt, unsigned *begin, unsigned *end) { + int value; char *ptr; if(!strcmp(optarg, "all")) @@ -290,20 +293,25 @@ void convert_code_point_range(char opt, int *begin, int *end) return; } - *begin = strtol(optarg, &ptr, 0); - if(*begin>0 && *ptr==',') + value = strtol(optarg, &ptr, 0); + if(value>0 && *ptr==',') { - *end = strtol(ptr+1, &ptr, 0); - if(*end>0 && !*ptr) + *begin = value; + value = strtol(ptr+1, &ptr, 0); + if(value>0 && !*ptr) + { + *end = value; return; + } } printf("Invalid option argument in -%c %s\n", opt, optarg); exit(1); } -void convert_size(char opt, int *width, int *height) +void convert_size(char opt, unsigned *width, unsigned *height) { + int value; char *ptr; if(!strcmp(optarg, "auto")) @@ -319,14 +327,18 @@ void convert_size(char opt, int *width, int *height) return; } - *width = strtol(optarg, &ptr, 0); - if(*width>0) + value = strtol(optarg, &ptr, 0); + if(value>0) { + *width = value; if(*ptr=='x') { - *height = strtol(ptr+1, &ptr, 0); - if(*height>0 && !*ptr) + value = strtol(ptr+1, &ptr, 0); + if(value>0 && !*ptr) + { + *height = value; return; + } } else if(!*ptr) { @@ -375,7 +387,7 @@ void *alloc_image_data(size_t a, size_t b) return ptr; } -int init_font(Font *font, FT_Face face, unsigned first, unsigned last, int autohinter) +int init_font(Font *font, FT_Face face, unsigned first, unsigned last, bool autohinter) { unsigned i, j; unsigned size = 0; @@ -490,7 +502,7 @@ int init_font(Font *font, FT_Face face, unsigned first, unsigned last, int autoh return 0; } -int render_grid(Font *font, unsigned cellw, unsigned cellh, unsigned cpl, int seq) +int render_grid(Font *font, unsigned cellw, unsigned cellh, unsigned cpl, bool seq) { unsigned i; int top = 0, bot = 0; -- 2.45.2