From 1f2c6c3c4ecbc0286f9d0fb06bfbb194a02465ec Mon Sep 17 00:00:00 2001 From: Pere Pujal i Carabantes Date: Sat, 22 Jun 2019 00:20:45 +0200 Subject: [PATCH 01/20] Starter frame_heart.png was wrongly discarded as being the .png version of frame_hearts.svg. --- src/tuxpaint.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tuxpaint.c b/src/tuxpaint.c index abf25a7fc..dca48fae3 100644 --- a/src/tuxpaint.c +++ b/src/tuxpaint.c @@ -18820,7 +18820,7 @@ static int do_new_dialog(void) f2 = &(fs[k].f); strcpy(fname2, f2->d_name); - if (strstr(fname2, fname) == fname2 && strcasestr(fname2, ".svg") != NULL) + if (strstr(fname, fname2) == fname2 && strcasestr(fname2, ".svg") != NULL) { /* SVG of this bitmap exists; we'll skip it */ skip = 1; From 79384801742ad513cf9c8ecb87467936cdbe7b0d Mon Sep 17 00:00:00 2001 From: Bill Kendrick Date: Fri, 30 Aug 2019 00:00:18 -0700 Subject: [PATCH 02/20] Clean up GCC warnings (2019-08-29 edition) Updated most parts of the code that were throwing warnings in GCC. --- docs/CHANGES.txt | 2 ++ magic/src/alien.c | 9 ++---- magic/src/calligraphy.c | 24 ++------------- magic/src/emboss.c | 7 ++--- magic/src/fold.c | 26 +++++++++++----- magic/src/fretwork.c | 10 ++++-- magic/src/perspective.c | 10 +++--- magic/src/rails.c | 5 ++- magic/src/string.c | 20 +++--------- src/i18n.c | 18 ++--------- src/im.c | 20 ++++++------ src/macos.c | 8 +++-- src/macos.h | 6 ++-- src/onscreen_keyboard.c | 15 ++++++--- src/parse.gperf | 4 +++ src/tuxpaint.c | 67 +++++++++++++++++------------------------ 16 files changed, 110 insertions(+), 141 deletions(-) diff --git a/docs/CHANGES.txt b/docs/CHANGES.txt index ebbb44d66..9d407601a 100644 --- a/docs/CHANGES.txt +++ b/docs/CHANGES.txt @@ -42,6 +42,8 @@ $Id$ (Thanks to Flavio Airundo for the idea; closes https://sourceforge.net/p/tuxpaint/feature-requests/188/) + * Updated most parts of the code that were throwing warnings in GCC. + * Documentation updates --------------------- * Mended link to MinGW/MSYS instructions at John Popplewell's website. diff --git a/magic/src/alien.c b/magic/src/alien.c index 360dd57c5..013629797 100644 --- a/magic/src/alien.c +++ b/magic/src/alien.c @@ -1,12 +1,12 @@ /* alien.c -// + alien, Modifies the colours of the image. Tux Paint - A simple drawing program for children. Credits: Andrew Corcoran inspired by the Alien Map GIMP plugin - Copyright (c) 2002-2007 by Bill Kendrick and others; see AUTHORS.txt + Copyright (c) 2002-2019 by Bill Kendrick and others; see AUTHORS.txt bill@newbreedsoftware.com http://www.tuxpaint.org/ @@ -25,7 +25,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA (See COPYING.txt) - Last updated: June 6, 2008 + Last updated: August 29, 2019 $Id$ */ @@ -168,9 +168,6 @@ static void do_alien_pixel(void *ptr, int which ATTRIBUTE_UNUSED, // Do the effect for the full image static void do_alien_full(void *ptr, SDL_Surface * canvas, SDL_Surface * last, int which) { - - magic_api *api = (magic_api *) ptr; - int x, y; for (y = 0; y < last->h; y++) diff --git a/magic/src/calligraphy.c b/magic/src/calligraphy.c index ae2a455d3..d2a529386 100644 --- a/magic/src/calligraphy.c +++ b/magic/src/calligraphy.c @@ -4,7 +4,7 @@ Calligraphy Magic Tool Plugin Tux Paint - A simple drawing program for children. - Copyright (c) 2002-2008 by Bill Kendrick and others; see AUTHORS.txt + Copyright (c) 2002-2019 by Bill Kendrick and others; see AUTHORS.txt bill@newbreedsoftware.com http://www.tuxpaint.org/ @@ -23,7 +23,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA (See COPYING.txt) - Last updated: July 8, 2008 + Last updated: August 29, 2019 $Id$ */ @@ -137,7 +137,6 @@ void calligraphy_drag(magic_api * api, int which ATTRIBUTE_UNUSED, SDL_Surface * { Point2D *curve; int i, n_points, thick, new_thick; - Uint32 colr; SDL_Rect src, dest; // if (SDL_GetTicks() < calligraphy_last_time + 5) @@ -184,8 +183,6 @@ void calligraphy_drag(magic_api * api, int which ATTRIBUTE_UNUSED, SDL_Surface * calligraphy_ComputeBezier(calligraphy_control_points, n_points, curve); - colr = SDL_MapRGB(canvas->format, calligraphy_r, calligraphy_g, calligraphy_b); - new_thick = 40 - min((n_points /* / 2 */ ), 32); for (i = 0; i < n_points - 1; i++) @@ -218,23 +215,6 @@ void calligraphy_drag(magic_api * api, int which ATTRIBUTE_UNUSED, SDL_Surface * dest.y = y; SDL_BlitSurface(calligraphy_colored_brush, &src, canvas, &dest); - - /* Old way; using putpixel: - SDL_LockSurface(canvas); - - for (j = -(thick / 2); j < (thick / 2) + 1; j++) - { - x = curve[i].x + j; - y = curve[i].y - (j / 2); // 30 degrees - - api->putpixel(canvas, x, y, colr); - api->putpixel(canvas, x + 1, y, colr); - api->putpixel(canvas, x, y + 1, colr); - api->putpixel(canvas, x + 1, y + 1, colr); - } - - SDL_UnlockSurface(canvas); - */ } calligraphy_old_thick = (calligraphy_old_thick + new_thick) / 2; diff --git a/magic/src/emboss.c b/magic/src/emboss.c index 0ffcbf43c..ec3127252 100644 --- a/magic/src/emboss.c +++ b/magic/src/emboss.c @@ -4,7 +4,7 @@ Emboss Magic Tool Plugin Tux Paint - A simple drawing program for children. - Copyright (c) 2002-2008 by Bill Kendrick and others; see AUTHORS.txt + Copyright (c) 2002-2019 by Bill Kendrick and others; see AUTHORS.txt bill@newbreedsoftware.com http://www.tuxpaint.org/ @@ -23,7 +23,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA (See COPYING.txt) - Last updated: July 8, 2008 + Last updated: August 29, 2019 $Id$ */ @@ -114,7 +114,7 @@ static void do_emboss(void *ptr, int which ATTRIBUTE_UNUSED, SDL_Surface * canva magic_api *api = (magic_api *) ptr; int xx, yy; Uint8 r1, g1, b1, r2, g2, b2; - int r, g, b; + int r; float h, s, v; int avg1, avg2; @@ -139,7 +139,6 @@ static void do_emboss(void *ptr, int which ATTRIBUTE_UNUSED, SDL_Surface * canva r = 0; if (r > 255) r = 255; - g = b = r; v = (r / 255.0); diff --git a/magic/src/fold.c b/magic/src/fold.c index 125ed0391..87dfab482 100644 --- a/magic/src/fold.c +++ b/magic/src/fold.c @@ -1,3 +1,9 @@ +/* + * Folds the picture down from the corners. + * + * Last updated: 2019-08-29 + */ + //optimized version soon :) //when "folding" same corner many times it gives strange results. Now it's allowed. Let me know //if you think it shouldn't be. @@ -138,25 +144,29 @@ void fold_draw(magic_api * api, int which, right_step_y = (float)(y - left_arm_y) / (float)(left_arm_x - fold_ox); left_step_x = (float)(x - right_arm_x) / (float)(right_arm_y - fold_oy); left_step_y = (float)(y - right_arm_y) / (float)(right_arm_y - fold_oy); + + left_y = (float)right_arm_y / left_arm_x * (left_arm_x - canvas->w); + right_x = (float)left_arm_x / right_arm_y * (right_arm_y - canvas->h); + for (w = 0; w < canvas->w; w += 0.5) - for (h = 0; h < canvas->h; h += 0.5) - { - dist_x = right_step_x * w + left_step_x * h; - dist_y = right_step_y * w + left_step_y * h; - api->putpixel(canvas, x - dist_x, y - dist_y, api->getpixel(temp, w, h)); - } + { + for (h = 0; h < canvas->h; h += 0.5) + { + dist_x = right_step_x * w + left_step_x * h; + dist_y = right_step_y * w + left_step_y * h; + api->putpixel(canvas, x - dist_x, y - dist_y, api->getpixel(temp, w, h)); + } + } // Erasing the triangle. // The 1 pixel in plus is a workaround for api-line not getting the end in some lines. if (left_arm_x > canvas->w) { - left_y = (float)right_arm_y / left_arm_x * (left_arm_x - canvas->w); for (h = 0; h <= right_arm_y; h++) api->line((void *)api, which, canvas, snapshot, canvas->w, left_y - h, -1, right_arm_y - h, 1, fold_erase); } else if (right_arm_y > canvas->h) { - right_x = (float)left_arm_x / right_arm_y * (right_arm_y - canvas->h); for (w = 0; w <= left_arm_x; w++) api->line((void *)api, which, canvas, snapshot, left_arm_x - w, 0, right_x - w, canvas->h + 1, 1, fold_erase); } diff --git a/magic/src/fretwork.c b/magic/src/fretwork.c index f6d555527..45aac5a33 100644 --- a/magic/src/fretwork.c +++ b/magic/src/fretwork.c @@ -1,3 +1,9 @@ +/* + * Draws fretwork + * + * Last updated: 2019-08-29 + */ + #include "tp_magic_api.h" #include "SDL_image.h" #include "SDL_mixer.h" @@ -25,7 +31,7 @@ Mix_Chunk *fretwork_snd; unsigned int img_w, img_h; unsigned int fretwork_segments_x, fretwork_segments_y; //how many segments do we have? -static int fretwork_math_ceil(int x, int y); //ceil() in cstdlib returns float and is relative slow, so we'll use our one +inline int fretwork_math_ceil(int x, int y); //ceil() in cstdlib returns float and is relative slow, so we'll use our one static Uint8 *fretwork_status_of_segments; //a place to store an info about bitmap used for selected segment static char **fretwork_images; //the pathes to all the images needed static unsigned int fretwork_segment_modified; //which segment was modified this time? @@ -239,7 +245,7 @@ void fretwork_switchout(magic_api * api ATTRIBUTE_UNUSED, int which ATTRIBUTE_UN // Interactivity functions -static int fretwork_math_ceil(int x, int y) +inline int fretwork_math_ceil(int x, int y) { int temp; diff --git a/magic/src/perspective.c b/magic/src/perspective.c index 2143eecc6..b8d087d4a 100644 --- a/magic/src/perspective.c +++ b/magic/src/perspective.c @@ -8,7 +8,7 @@ Credits: Andrew Corcoran - Copyright (c) 2002-2009 by Bill Kendrick and others; see AUTHORS.txt + Copyright (c) 2002-2019 by Bill Kendrick and others; see AUTHORS.txt bill@newbreedsoftware.com http://www.tuxpaint.org/ @@ -27,7 +27,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA (See COPYING.txt) - Last updated: May 6, 2009 + Last updated: August 29, 2019 $Id$ */ @@ -86,9 +86,11 @@ void perspective_line(void *ptr_to_api, int which, SDL_Surface * canvas, SDL_Sur +/* Unused? static const int perspective_AMOUNT = 300; static const int perspective_RADIUS = 16; static const double perspective_SHARPEN = 1.0; +*/ Uint8 perspective_r, perspective_g, perspective_b; int corner; int dash; @@ -396,12 +398,10 @@ void perspective_release(magic_api * api, int which, } else { - int aux_x, aux_y, aux_h, aux_w; + int aux_h, aux_w; aux_h = canvas->h * canvas->h / new_h; aux_w = canvas->w * aux_h / canvas->h; - aux_x = canvas->w / 2 - aux_w / 2; - aux_y = canvas->h / 2 - aux_h / 2; update_rect->x = canvas->w / 2 - aux_w / 2; update_rect->y = canvas->h / 2 - aux_h / 2; diff --git a/magic/src/rails.c b/magic/src/rails.c index 1f7895f65..d203f8227 100644 --- a/magic/src/rails.c +++ b/magic/src/rails.c @@ -24,7 +24,7 @@ Mix_Chunk *rails_snd; unsigned int img_w, img_h; unsigned int rails_segments_x, rails_segments_y; //how many segments do we have? -static int rails_math_ceil(int x, int y); //ceil() in cstdlib returns float and is relative slow, so we'll use our one +inline int rails_math_ceil(int x, int y); //ceil() in cstdlib returns float and is relative slow, so we'll use our one static Uint8 *rails_status_of_segments; //a place to store an info about bitmap used for selected segment static char **rails_images; //the pathes to all the images needed static unsigned int rails_segment_modified; //which segment was modified this time? @@ -51,7 +51,6 @@ void rails_release(magic_api * api, int which, void rails_shutdown(magic_api * api); void rails_switchin(magic_api * api, int which, int mode, SDL_Surface * canvas); void rails_switchout(magic_api * api, int which, int mode, SDL_Surface * canvas); -static int rails_math_ceil(int x, int y); inline unsigned int rails_get_segment(int x, int y); inline void rails_extract_coords_from_segment(unsigned int segment, Sint16 * x, Sint16 * y); static void rails_flip(void *ptr, SDL_Surface * dest, SDL_Surface * src); @@ -193,7 +192,7 @@ void rails_switchout(magic_api * api ATTRIBUTE_UNUSED, int which ATTRIBUTE_UNUSE // Interactivity functions -static int rails_math_ceil(int x, int y) +inline int rails_math_ceil(int x, int y) { int temp; diff --git a/magic/src/string.c b/magic/src/string.c index 09a8a0f0f..24b3c16c6 100644 --- a/magic/src/string.c +++ b/magic/src/string.c @@ -1,3 +1,8 @@ +/* + * Strings -- draws string art. + * + * Last modified: 2019-08-29 + */ #include "tp_magic_api.h" #include "SDL_image.h" #include "SDL_mixer.h" @@ -353,20 +358,9 @@ void string_draw_triangle_preview(magic_api * api, int which, SDL_Rect * update_rect) { int middle_x, middle_y; - int w, h; scale_coords(&ox, &oy, &x, &y); - w = max(string_ox, x) - min(string_ox, x); - h = max(string_oy, y) - min(string_oy, y); - /* - This is enouth if you move the mouse slowly, but if you move the mouse fast, - there are rests of old previews left around. - update_rect->w=max(max(string_ox,x),max(ox,x))-min(min(string_ox,x),min(ox,x)) +80; - update_rect->h=max(max(string_oy,y),max(oy,y))-min(min(string_oy,y),min(oy,y)) +80; - update_rect->x=min(string_ox,x) -40; - update_rect->y=min(string_oy,y) -40; - */ update_rect->x = 0; update_rect->y = 0; update_rect->w = canvas->w; @@ -387,13 +381,9 @@ void string_draw_angle_preview(magic_api * api, int which, int ox, __attribute__ ((unused)) int oy, int x, int y, SDL_Rect * update_rect) { - int w, h; int middle_x, middle_y; int dx, dy; - w = max(string_ox, x) - min(string_ox, x); - h = max(string_oy, y) - min(string_oy, y); - update_rect->x = 0; update_rect->y = 0; update_rect->w = canvas->w; diff --git a/src/i18n.c b/src/i18n.c index 37c95c1c9..df6fb1a03 100644 --- a/src/i18n.c +++ b/src/i18n.c @@ -4,7 +4,7 @@ For Tux Paint Language-related functions - Copyright (c) 2002-2014 by Bill Kendrick and others + Copyright (c) 2002-2019 by Bill Kendrick and others bill@newbreedsoftware.com http://www.tuxpaint.org/ @@ -25,7 +25,7 @@ $Id$ - June 14, 2002 - December 11, 2016 + June 14, 2002 - August 29, 2019 */ #include @@ -986,7 +986,6 @@ static int set_current_language(const char *restrict locale_choice) MUST_CHECK; static int set_current_language(const char *restrict loc) { int i; - int y_nudge = 0; char *oldloc; char *env_language; @@ -1104,7 +1103,6 @@ static int set_current_language(const char *restrict loc) if (lang_y_nudge[i][0] == langint) { wished_langs[j].lang_y_nudge = lang_y_nudge[i][1]; - //printf("y_nudge = %d\n", y_nudge); break; } } @@ -1130,18 +1128,6 @@ static int set_current_language(const char *restrict loc) need_right_to_left = wished_langs[0].need_right_to_left; need_right_to_left_word = wished_langs[0].need_right_to_left_word; -#if 0 - for (i = 0; lang_y_nudge[i][0] != -1; i++) - { - // printf("lang_y_nudge[%d][0] = %d\n", i, lang_y_nudge[i][0]); - if (lang_y_nudge[i][0] == langint) - { - y_nudge = lang_y_nudge[i][1]; - //printf("y_nudge = %d\n", y_nudge); - break; - } - } -#endif #ifdef DEBUG fprintf(stderr, "DEBUG: Language is %s (%d) %s/%s\n", lang_prefix, langint, need_right_to_left ? "(RTL)" : "", need_right_to_left_word ? "(RTL words)" : ""); diff --git a/src/im.c b/src/im.c index f30b653fc..7808a336e 100644 --- a/src/im.c +++ b/src/im.c @@ -2,7 +2,7 @@ im.c Input method handling - Copyright (c)2007 by Mark K. Kim and others + Copyright (c) 2007-2019 by Mark K. Kim and others This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -905,12 +905,12 @@ static int im_event_zh_tw(IM_DATA * im, SDL_keysym ks) case IM_REQ_FREE: /* Free allocated resources */ charmap_free(&cm); - /* go onto full reset */ + __attribute__ ((fallthrough)); /* go onto full reset */ case IM_REQ_RESET_FULL: /* Full reset */ cm.section = SEC_ENGLISH; im->tip_text = im_tip_text[IM_TIP_ENGLISH]; - /* go onto soft reset */ + __attribute__ ((fallthrough)); /* go onto soft reset */ case IM_REQ_RESET_SOFT: /* Soft reset */ im->s[0] = L'\0'; @@ -1124,12 +1124,12 @@ static int im_event_th(IM_DATA * im, SDL_keysym ks) case IM_REQ_FREE: /* Free allocated resources */ charmap_free(&cm); - /* go onto full reset */ + __attribute__ ((fallthrough)); /* go onto full reset */ case IM_REQ_RESET_FULL: /* Full reset */ cm.section = SEC_ENGLISH; im->tip_text = im_tip_text[IM_TIP_ENGLISH]; - /* go onto soft reset */ + __attribute__ ((fallthrough)); /* go onto soft reset */ case IM_REQ_RESET_SOFT: /* Soft reset */ im->s[0] = L'\0'; @@ -1343,12 +1343,12 @@ static int im_event_ja(IM_DATA * im, SDL_keysym ks) case IM_REQ_FREE: /* Free allocated resources */ charmap_free(&cm); - /* go onto full reset */ + __attribute__ ((fallthrough)); /* go onto full reset */ case IM_REQ_RESET_FULL: /* Full reset */ cm.section = SEC_ENGLISH; im->tip_text = im_tip_text[IM_TIP_ENGLISH]; - /* go onto soft reset */ + __attribute__ ((fallthrough)); /* go onto soft reset */ case IM_REQ_RESET_SOFT: /* Soft reset */ im->s[0] = L'\0'; @@ -1590,12 +1590,12 @@ static int im_event_ko(IM_DATA * im, SDL_keysym ks) case IM_REQ_FREE: /* Free allocated resources */ charmap_free(&cm); - /* go onto full reset */ + __attribute__ ((fallthrough)); /* go onto full reset */ case IM_REQ_RESET_FULL: /* Full reset */ cm.section = SEC_ENGLISH; im->tip_text = im_tip_text[IM_TIP_ENGLISH]; - /* go onto soft reset */ + __attribute__ ((fallthrough)); /* go onto soft reset */ case IM_REQ_RESET_SOFT: /* Soft reset */ im->s[0] = L'\0'; @@ -1681,7 +1681,7 @@ static int im_event_ko(IM_DATA * im, SDL_keysym ks) im->redraw--; ks.unicode = L'\0'; } - /* continue processing: */ + __attribute__ ((fallthrough)); /* continue processing: */ /* Actual character processing */ default: diff --git a/src/macos.c b/src/macos.c index ae405aba5..148661f5b 100644 --- a/src/macos.c +++ b/src/macos.c @@ -1,7 +1,9 @@ /* * FIXME */ +#include #include +#include #include "macos.h" #define MACOS_FONTS_PATH "%s/Library/Fonts" @@ -12,7 +14,7 @@ /** * FIXME */ -const char *macos_fontsPath() +const char *macos_fontsPath(void) { static char *p = NULL; @@ -35,7 +37,7 @@ const char *macos_fontsPath() /** * FIXME */ -const char *macos_preferencesPath() +const char *macos_preferencesPath(void) { static char *p = NULL; @@ -58,7 +60,7 @@ const char *macos_preferencesPath() /** * FIXME */ -const char *macos_globalPreferencesPath() +const char *macos_globalPreferencesPath(void) { return MACOS_GLOBAL_PREFERENCES_PATH; } diff --git a/src/macos.h b/src/macos.h index 1fe467bee..db965d61b 100644 --- a/src/macos.h +++ b/src/macos.h @@ -1,9 +1,9 @@ #ifndef __MACOS_H__ #define __MACOS_H__ -const char *macos_fontsPath(); -const char *macos_preferencesPath(); -const char *macos_globalPreferencesPath(); +const char *macos_fontsPath(void); +const char *macos_preferencesPath(void); +const char *macos_globalPreferencesPath(void); #endif /* __MACOS_H__ */ diff --git a/src/onscreen_keyboard.c b/src/onscreen_keyboard.c index 08fe7341b..c0674cebe 100644 --- a/src/onscreen_keyboard.c +++ b/src/onscreen_keyboard.c @@ -155,6 +155,7 @@ static struct osk_layout *load_layout(on_screen_keyboard * keyboard, char *layou char *filename; char *key, *value; osk_layout *layout; + char * __attribute__((unused)) tmp_ptr; layout = malloc(sizeof(osk_layout)); layout->name = NULL; @@ -205,7 +206,7 @@ static struct osk_layout *load_layout(on_screen_keyboard * keyboard, char *layou while (!feof(fi)) { - fgets(line, 1023, fi); + tmp_ptr = fgets(line, 1023, fi); if (is_blank_or_comment(line)) continue; @@ -277,6 +278,7 @@ void load_hlayout(osk_layout * layout, char *hlayout_name) char *key, *fontpath; char *plain_label, *top_label, *altgr_label, *shift_altgr_label; FILE *fi; + char * __attribute__((unused)) tmp_ptr; key_number = line_number = 0; width = height = 0; @@ -342,7 +344,7 @@ void load_hlayout(osk_layout * layout, char *hlayout_name) allocated = 1; } - fgets(line, 1023, fi); + tmp_ptr = fgets(line, 1023, fi); if (is_blank_or_comment(line)) continue; @@ -466,6 +468,7 @@ void load_keymap(osk_layout * layout, char *keymap_name) char *ksname1, *ksname2, *ksname3, *ksname4; char *line; FILE *fi; + char * __attribute__((unused)) tmp_ptr; filename = malloc(sizeof(char) * 255); @@ -502,7 +505,7 @@ void load_keymap(osk_layout * layout, char *keymap_name) while (!feof(fi)) { - fgets(line, 1023, fi); + tmp_ptr = fgets(line, 1023, fi); if (is_blank_or_comment(line)) continue; @@ -652,6 +655,7 @@ static void load_composemap(osk_layout * layout, char *composemap_name) char **pointer; char *line; FILE *fi; + char * __attribute__((unused)) tmp_ptr; pointer = malloc(sizeof(wchar_t *)); filename = malloc(sizeof(char) * 255); @@ -684,7 +688,7 @@ static void load_composemap(osk_layout * layout, char *composemap_name) while (!feof(fi)) { - fgets(line, 1023, fi); + tmp_ptr = fgets(line, 1023, fi); if (is_blank_or_comment(line)) continue; @@ -760,6 +764,7 @@ static void load_keysymdefs(osk_layout * layout, char *keysymdefs_name) char *filename; char *line; FILE *fi; + char * __attribute__((unused)) tmp_ptr; filename = malloc(sizeof(char) * 255); @@ -789,7 +794,7 @@ static void load_keysymdefs(osk_layout * layout, char *keysymdefs_name) while (!feof(fi)) { - fgets(line, 1023, fi); + tmp_ptr = fgets(line, 1023, fi); if (strncmp("#define XK_", line, 11) != 0) continue; diff --git a/src/parse.gperf b/src/parse.gperf index 25b4fb014..7780d75b6 100644 --- a/src/parse.gperf +++ b/src/parse.gperf @@ -37,6 +37,10 @@ struct cfg #define NEGBOOL(x) (void*)(offsetof(struct cfginfo,x)|NEG) #define IMM(x) imm_##x +/* Prototypes of what's in tuxpaint.c: */ +void show_version(int details); +void show_usage(int exitcode); + static void imm_version(void) { show_version(0); diff --git a/src/tuxpaint.c b/src/tuxpaint.c index dca48fae3..2cf755bf6 100644 --- a/src/tuxpaint.c +++ b/src/tuxpaint.c @@ -22,7 +22,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA (See COPYING.txt) - June 14, 2002 - April 3, 2019 + June 14, 2002 - August 29, 2019 */ @@ -457,9 +457,7 @@ static void mtw(wchar_t * wtok, char *tok) #else #include -#include -/* #include "rsvg.h" */ -/* #include "rsvg-cairo.h" */ + #if !defined(RSVG_H) || !defined(RSVG_CAIRO_H) #error "---------------------------------------------------" #error "If you installed libRSVG from packages, be sure" @@ -2040,17 +2038,19 @@ static char *debug_gettext(const char *str); static int charsize(Uint16 c); #endif -static SDL_Surface *load_kpx(char *file); +static SDL_Surface *load_kpx(const char *file); #ifndef NOSVG -static SDL_Surface *load_svg(char *file); +static SDL_Surface *load_svg(const char *file); static float pick_best_scape(unsigned int orig_w, unsigned int orig_h, unsigned int max_w, unsigned int max_h); #endif -static SDL_Surface *myIMG_Load_RWops(char *file); -static SDL_Surface *myIMG_Load(char *file); +static SDL_Surface *myIMG_Load_RWops(const char *file); +static SDL_Surface *myIMG_Load(const char *file); static int trash(char *path); int file_exists(char *path); +int generate_fontconfig_cache_spinner(SDL_Surface * screen); + #define MAX_UTF8_CHAR_LENGTH 6 @@ -7731,7 +7731,7 @@ static int generate_fontconfig_cache_real(void) /** * FIXME */ -static int generate_fontconfig_cache(void *vp) +static int generate_fontconfig_cache(__attribute__((unused)) void *vp) { return generate_fontconfig_cache_real(); } @@ -9344,13 +9344,6 @@ static SDL_Surface *thumbnail2(SDL_Surface * src, int max_x, int max_y, int keep for (x = 0; x < max_x; x++) { #ifndef LOW_QUALITY_THUMBNAILS - -#ifdef GAMMA_CORRECTED_THUMBNAILS - /* per: http://www.4p8.com/eric.brasseur/gamma.html */ - float gamma = 2.2; - float gamma_invert = 1.0 / gamma; -#endif - tr = 0; tg = 0; tb = 0; @@ -9365,9 +9358,8 @@ static SDL_Surface *thumbnail2(SDL_Surface * src, int max_x, int max_y, int keep SDL_GetRGBA(getpixel(src, src_x, src_y), src->format, &r, &g, &b, &a); #ifdef GAMMA_CORRECTED_THUMBNAILS -// tr = tr + pow((float)r, gamma); -// tb = tb + pow((float)b, gamma); -// tg = tg + pow((float)g, gamma); + /* per: http://www.4p8.com/eric.brasseur/gamma.html */ + tr = tr + sRGB_to_linear_table[r]; tg = tg + sRGB_to_linear_table[g]; tb = tb + sRGB_to_linear_table[b]; @@ -9390,9 +9382,6 @@ static SDL_Surface *thumbnail2(SDL_Surface * src, int max_x, int max_y, int keep ta = ta / tmp; #ifdef GAMMA_CORRECTED_THUMBNAILS -// tr = ceil(pow(tr, gamma_invert)); -// tg = ceil(pow(tg, gamma_invert)); -// tb = ceil(pow(tb, gamma_invert)); tr = linear_to_sRGB(tr); tg = linear_to_sRGB(tg); tb = linear_to_sRGB(tb); @@ -11285,7 +11274,8 @@ static void load_starter_id(char *saved_id, FILE * fil) char fname[FILENAME_MAX]; FILE *fi; char color_tag; - int r, g, b, tmp; + int r, g, b, __attribute__((unused))tmp; + char * __attribute__((unused)) tmp_ptr; rname = NULL; @@ -11343,7 +11333,7 @@ static void load_starter_id(char *saved_id, FILE * fil) if (!feof(fi) && color_tag == 'T') { - tmp = fgets(template_id, sizeof(template_id), fi); + tmp_ptr = fgets(template_id, sizeof(template_id), fi); template_id[strlen(template_id) - 1] = '\0'; tmp = fscanf(fi, "%d", &template_personal); /* FIXME: Debug only? */ @@ -11371,12 +11361,12 @@ static void load_starter_id(char *saved_id, FILE * fil) /** * FIXME */ -static SDL_Surface *load_starter_helper(char *path_and_basename, char *extension, SDL_Surface * (*load_func) (char *)) +static SDL_Surface *load_starter_helper(char *path_and_basename, const char *extension, SDL_Surface * (*load_func) (const char *)) { char *ext; char fname[256]; SDL_Surface *surf; - int i; + unsigned int i; ext = strdup(extension); snprintf(fname, sizeof(fname), "%s.%s", path_and_basename, ext); @@ -11890,7 +11880,7 @@ static int do_prompt_image_flash_snd(const char *const text, int i; SDL_Surface *alpha_surf; #endif - int img1_w, img2_w, img3_w, max_img_w, img_x, img_y, offset; + int img1_w, img2_w, img3_w, max_img_w, img_y, offset; SDL_Surface *img1b; int free_img1b; int txt_left, txt_right, img_left, btn_left, txt_btn_left, txt_btn_right; @@ -12071,7 +12061,6 @@ static int do_prompt_image_flash_snd(const char *const text, /* Draw the images (if any, and if not animated): */ - img_x = img_left; img_y = 100 + PROMPTOFFSETY + 4; if (img1b != NULL) @@ -13236,9 +13225,9 @@ static void set_chunk_data(unsigned char **chunk_data, size_t * chunk_data_len, strcat(headers, "Tuxpaint\n"); strcat(headers, "Tuxpaint_" VER_VERSION "\n"); - sprintf(line, "%d%s", uncompressed_size, "\n"); + sprintf(line, "%lu%s", uncompressed_size, "\n"); strcat(headers, line); - sprintf(line, "%d%s", dataLen, "\n"); + sprintf(line, "%lu%s", dataLen, "\n"); strcat(headers, line); headersLen = strlen(headers); @@ -17210,7 +17199,7 @@ static void handle_active(SDL_Event * event) SDL_Flip(screen); } } - if (event->active.state & SDL_APPINPUTFOCUS | SDL_APPACTIVE) + if (event->active.state & (SDL_APPINPUTFOCUS | SDL_APPACTIVE)) { if (event->active.gain == 1) { @@ -17477,7 +17466,7 @@ static int paintsound(int size) /* Old libcairo1, svg and svg-cairo based code Based on cairo-demo/sdl/main.c from Cairo (GPL'd, (c) 2004 Eric Windisch): */ -static SDL_Surface *load_svg(char *file) +static SDL_Surface *load_svg(const char *file) { svg_cairo_t *scr; int bpp, btpp, stride; @@ -17636,7 +17625,7 @@ static SDL_Surface *load_svg(char *file) * FIXME */ /* New libcairo2, rsvg and rsvg-cairo based code */ -static SDL_Surface *load_svg(char *file) +static SDL_Surface *load_svg(const char *file) { cairo_surface_t *cairo_surf; cairo_t *cr; @@ -17887,7 +17876,7 @@ static float pick_best_scape(unsigned int orig_w, unsigned int orig_h, unsigned */ /* FIXME: we can remove this after SDL folks fix their bug at http://bugzilla.libsdl.org/show_bug.cgi?id=1485 */ /* Try to load an image with IMG_Load(), if it fails, then try with RWops() */ -static SDL_Surface *myIMG_Load_RWops(char *file) +static SDL_Surface *myIMG_Load_RWops(const char *file) { SDL_Surface *surf; FILE *fi; @@ -17921,7 +17910,7 @@ static SDL_Surface *myIMG_Load_RWops(char *file) if we notice it's an SVG file (if available!); call load_kpx() if we notice it's a KPX file (JPEG with wrapper); otherwise call SDL_Image lib's IMG_Load() (for PNGs, JPEGs, BMPs, etc.) */ -static SDL_Surface *myIMG_Load(char *file) +static SDL_Surface *myIMG_Load(const char *file) { if (strlen(file) > 4 && strcasecmp(file + strlen(file) - 4, ".kpx") == 0) { @@ -17942,7 +17931,7 @@ static SDL_Surface *myIMG_Load(char *file) /** * FIXME */ -static SDL_Surface *load_kpx(char *file) +static SDL_Surface *load_kpx(const char *file) { SDL_RWops *data; FILE *fi; @@ -19819,7 +19808,7 @@ static int do_color_sel(void) int i, dx, dy; int done, chose; int back_left, back_top; - int color_sel_x, color_sel_y; + int color_sel_x = 0, color_sel_y = 0; SDL_Surface *tmp_btn_up, *tmp_btn_down; Uint32(*getpixel_tmp_btn_up) (SDL_Surface *, int, int); @@ -21130,7 +21119,7 @@ static void render_all_nodes_starting_at(struct label_node **node) * FIXME */ /* FIXME: This should search for the top-down of the overlaping labels and only re-render from it */ -static void derender_node(struct label_node **ref_head) +static void derender_node(__attribute__((unused)) struct label_node **ref_head) { SDL_Rect r_tmp_derender; @@ -22890,7 +22879,7 @@ static void setup_config(char *argv[]) { char *token; - token = strtok(tmpcfg.joystick_buttons_ignore, ","); + token = strtok((char *) tmpcfg.joystick_buttons_ignore, ","); while (token != NULL) { if (strtof(token, NULL) < 0 || strtof(token, NULL) > 254) From e5c3cdfcf5e16a9b0fc3e7766bfea1d9c326b3ae Mon Sep 17 00:00:00 2001 From: begasus Date: Fri, 6 Sep 2019 13:45:56 +0200 Subject: [PATCH 03/20] Haiku fixes --- Makefile | 2 -- src/fonts.c | 4 +++- src/i18n.c | 4 ++-- src/im.c | 18 +++++++++--------- src/tuxpaint.c | 4 ++-- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Makefile b/Makefile index e3fc13b3e..2a6449e04 100644 --- a/Makefile +++ b/Makefile @@ -131,7 +131,6 @@ ARCH_HEADERS:=$($(OS)_ARCH_HEADERS) # For macOS, the prefix is relative to DESTDIR. windows_PREFIX:=/usr/local osx_PREFIX:=Resources -beos_PREFIX=$(shell finddir B_APPS_DIRECTORY)/TuxPaint linux_PREFIX:=/usr/local PREFIX:=$($(OS)_PREFIX) @@ -462,7 +461,6 @@ trans: windows_ARCH_INSTALL:= osx_ARCH_INSTALL:=install-macbundle TuxPaint.dmg -beos_ARCH_INSTALL:=install-haiku linux_ARCH_INSTALL:=install-kde install-kde-icons ARCH_INSTALL:=$($(OS)_ARCH_INSTALL) diff --git a/src/fonts.c b/src/fonts.c index d6a5ad525..f7290e95b 100644 --- a/src/fonts.c +++ b/src/fonts.c @@ -970,10 +970,12 @@ static void loadfonts(SDL_Surface * screen, const char *const dir) result = find_directory(B_SYSTEM_FONTS_DIRECTORY, volume, false, buffer, sizeof(buffer)); loadfonts(screen, buffer); - result = find_directory(B_COMMON_FONTS_DIRECTORY, volume, false, buffer, sizeof(buffer)); + result = find_directory(B_SYSTEM_NONPACKAGED_FONTS_DIRECTORY, volume, false, buffer, sizeof(buffer)); loadfonts(screen, buffer); result = find_directory(B_USER_FONTS_DIRECTORY, volume, false, buffer, sizeof(buffer)); loadfonts(screen, buffer); + result = find_directory(B_USER_NONPACKAGED_FONTS_DIRECTORY, volume, false, buffer, sizeof(buffer)); + loadfonts(screen, buffer); #elif defined(__APPLE__) loadfonts(screen, "/System/Library/Fonts"); loadfonts(screen, "/Library/Fonts"); diff --git a/src/i18n.c b/src/i18n.c index df6fb1a03..ce94092dc 100644 --- a/src/i18n.c +++ b/src/i18n.c @@ -986,8 +986,10 @@ static int set_current_language(const char *restrict locale_choice) MUST_CHECK; static int set_current_language(const char *restrict loc) { int i; + int j = 0; char *oldloc; char *env_language; + char *env_language_lang; if (strlen(loc) > 0) @@ -1082,8 +1084,6 @@ static int set_current_language(const char *restrict loc) mysetenv("LANGUAGE", "C"); } env_language = strdup(getenv("LANGUAGE")); - int j = 0; - char *env_language_lang; if (*env_language) { diff --git a/src/im.c b/src/im.c index 7808a336e..138cfad4f 100644 --- a/src/im.c +++ b/src/im.c @@ -905,12 +905,12 @@ static int im_event_zh_tw(IM_DATA * im, SDL_keysym ks) case IM_REQ_FREE: /* Free allocated resources */ charmap_free(&cm); - __attribute__ ((fallthrough)); /* go onto full reset */ + // // __attribute__ ((fallthrough)); /* go onto full reset */ case IM_REQ_RESET_FULL: /* Full reset */ cm.section = SEC_ENGLISH; im->tip_text = im_tip_text[IM_TIP_ENGLISH]; - __attribute__ ((fallthrough)); /* go onto soft reset */ + // __attribute__ ((fallthrough)); /* go onto soft reset */ case IM_REQ_RESET_SOFT: /* Soft reset */ im->s[0] = L'\0'; @@ -1124,12 +1124,12 @@ static int im_event_th(IM_DATA * im, SDL_keysym ks) case IM_REQ_FREE: /* Free allocated resources */ charmap_free(&cm); - __attribute__ ((fallthrough)); /* go onto full reset */ + // __attribute__ ((fallthrough)); /* go onto full reset */ case IM_REQ_RESET_FULL: /* Full reset */ cm.section = SEC_ENGLISH; im->tip_text = im_tip_text[IM_TIP_ENGLISH]; - __attribute__ ((fallthrough)); /* go onto soft reset */ + // __attribute__ ((fallthrough)); /* go onto soft reset */ case IM_REQ_RESET_SOFT: /* Soft reset */ im->s[0] = L'\0'; @@ -1343,12 +1343,12 @@ static int im_event_ja(IM_DATA * im, SDL_keysym ks) case IM_REQ_FREE: /* Free allocated resources */ charmap_free(&cm); - __attribute__ ((fallthrough)); /* go onto full reset */ + // __attribute__ ((fallthrough)); /* go onto full reset */ case IM_REQ_RESET_FULL: /* Full reset */ cm.section = SEC_ENGLISH; im->tip_text = im_tip_text[IM_TIP_ENGLISH]; - __attribute__ ((fallthrough)); /* go onto soft reset */ + // __attribute__ ((fallthrough)); /* go onto soft reset */ case IM_REQ_RESET_SOFT: /* Soft reset */ im->s[0] = L'\0'; @@ -1590,12 +1590,12 @@ static int im_event_ko(IM_DATA * im, SDL_keysym ks) case IM_REQ_FREE: /* Free allocated resources */ charmap_free(&cm); - __attribute__ ((fallthrough)); /* go onto full reset */ + // __attribute__ ((fallthrough)); /* go onto full reset */ case IM_REQ_RESET_FULL: /* Full reset */ cm.section = SEC_ENGLISH; im->tip_text = im_tip_text[IM_TIP_ENGLISH]; - __attribute__ ((fallthrough)); /* go onto soft reset */ + // __attribute__ ((fallthrough)); /* go onto soft reset */ case IM_REQ_RESET_SOFT: /* Soft reset */ im->s[0] = L'\0'; @@ -1681,7 +1681,7 @@ static int im_event_ko(IM_DATA * im, SDL_keysym ks) im->redraw--; ks.unicode = L'\0'; } - __attribute__ ((fallthrough)); /* continue processing: */ + // __attribute__ ((fallthrough)); /* continue processing: */ /* Actual character processing */ default: diff --git a/src/tuxpaint.c b/src/tuxpaint.c index 2cf755bf6..2435b4884 100644 --- a/src/tuxpaint.c +++ b/src/tuxpaint.c @@ -19809,6 +19809,7 @@ static int do_color_sel(void) int done, chose; int back_left, back_top; int color_sel_x = 0, color_sel_y = 0; + int want_animated_popups = 1; SDL_Surface *tmp_btn_up, *tmp_btn_down; Uint32(*getpixel_tmp_btn_up) (SDL_Surface *, int, int); @@ -19829,7 +19830,6 @@ static int do_color_sel(void) /* FIXME this is the first step to make animated popups optional, to be removed from here when implemented in a more general way */ - int want_animated_popups = 1; hide_blinking_cursor(); @@ -22438,7 +22438,7 @@ static void setup_config(char *argv[]) char buffer[B_PATH_NAME_LENGTH + B_FILE_NAME_LENGTH]; status_t result; - result = find_directory(B_USER_DIRECTORY, volume, false, buffer, sizeof(buffer)); + result = find_directory(B_USER_SETTINGS_DIRECTORY, volume, false, buffer, sizeof(buffer)); asprintf((char **)&savedir, "%s/%s", buffer, "TuxPaint"); #elif __APPLE__ savedir = strdup(macos_preferencesPath()); From df49986fab4fbae49c44d9c1ea69dadaf4dff74c Mon Sep 17 00:00:00 2001 From: Bill Kendrick Date: Thu, 12 Sep 2019 20:27:03 -0700 Subject: [PATCH 04/20] Add a FALL_THROUGH macro to compiler.h Older gcc's don't support `__attribute__ ((fallthrough))` (see https://sourceforge.net/u/begasus/tuxpaint/ci/e5c3cdfcf5e16a9b0fc3e7766bfea1d9c326b3ae/ "Haiku Fixes" by Luc), so adding a new macro to compiler.h that is defined as "((void)0)" on older compilers. --- src/compiler.h | 14 ++++++++++++-- src/im.c | 19 +++++++++---------- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/src/compiler.h b/src/compiler.h index 5afeec307..82efd7a9c 100644 --- a/src/compiler.h +++ b/src/compiler.h @@ -5,7 +5,7 @@ for Tux Paint Mostly by Albert Cahalan - Copyright (c) 2002-2006 + Copyright (c) 2002-2019 http://www.newbreedsoftware.com/tuxpaint/ @@ -24,7 +24,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA (See COPYING.txt) - June 14, 2002 - December 30, 2017 + June 14, 2002 - September 12, 2019 $Id$ */ @@ -127,3 +127,13 @@ #undef CLOCK_ASM #define CLOCK_ASM(x) x=42 #endif + +/* h/t https://tutel.me/c/programming/questions/45349079/how+to+use+__attribute__fallthrough+correctly+in+gcc */ +#ifndef FALLTHROUGH +#if defined(__GNUC__) && __GNUC__ >= 7 + #define FALL_THROUGH __attribute__ ((fallthrough)) +#else + #define FALL_THROUGH ((void)0) +#endif /* __GNUC__ >= 7 */ +#endif + diff --git a/src/im.c b/src/im.c index 138cfad4f..ac7d5862b 100644 --- a/src/im.c +++ b/src/im.c @@ -45,7 +45,6 @@ #include "im.h" - /* *************************************************************************** * I18N GETTEXT */ @@ -905,12 +904,12 @@ static int im_event_zh_tw(IM_DATA * im, SDL_keysym ks) case IM_REQ_FREE: /* Free allocated resources */ charmap_free(&cm); - // // __attribute__ ((fallthrough)); /* go onto full reset */ + FALL_THROUGH; /* go onto full reset */ case IM_REQ_RESET_FULL: /* Full reset */ cm.section = SEC_ENGLISH; im->tip_text = im_tip_text[IM_TIP_ENGLISH]; - // __attribute__ ((fallthrough)); /* go onto soft reset */ + FALL_THROUGH; /* go onto soft reset */ case IM_REQ_RESET_SOFT: /* Soft reset */ im->s[0] = L'\0'; @@ -1124,12 +1123,12 @@ static int im_event_th(IM_DATA * im, SDL_keysym ks) case IM_REQ_FREE: /* Free allocated resources */ charmap_free(&cm); - // __attribute__ ((fallthrough)); /* go onto full reset */ + FALL_THROUGH; /* go onto full reset */ case IM_REQ_RESET_FULL: /* Full reset */ cm.section = SEC_ENGLISH; im->tip_text = im_tip_text[IM_TIP_ENGLISH]; - // __attribute__ ((fallthrough)); /* go onto soft reset */ + FALL_THROUGH; /* go onto soft reset */ case IM_REQ_RESET_SOFT: /* Soft reset */ im->s[0] = L'\0'; @@ -1343,12 +1342,12 @@ static int im_event_ja(IM_DATA * im, SDL_keysym ks) case IM_REQ_FREE: /* Free allocated resources */ charmap_free(&cm); - // __attribute__ ((fallthrough)); /* go onto full reset */ + FALL_THROUGH; /* go onto full reset */ case IM_REQ_RESET_FULL: /* Full reset */ cm.section = SEC_ENGLISH; im->tip_text = im_tip_text[IM_TIP_ENGLISH]; - // __attribute__ ((fallthrough)); /* go onto soft reset */ + FALL_THROUGH; /* go onto soft reset */ case IM_REQ_RESET_SOFT: /* Soft reset */ im->s[0] = L'\0'; @@ -1590,12 +1589,12 @@ static int im_event_ko(IM_DATA * im, SDL_keysym ks) case IM_REQ_FREE: /* Free allocated resources */ charmap_free(&cm); - // __attribute__ ((fallthrough)); /* go onto full reset */ + FALL_THROUGH; /* go onto full reset */ case IM_REQ_RESET_FULL: /* Full reset */ cm.section = SEC_ENGLISH; im->tip_text = im_tip_text[IM_TIP_ENGLISH]; - // __attribute__ ((fallthrough)); /* go onto soft reset */ + FALL_THROUGH; /* go onto soft reset */ case IM_REQ_RESET_SOFT: /* Soft reset */ im->s[0] = L'\0'; @@ -1681,7 +1680,7 @@ static int im_event_ko(IM_DATA * im, SDL_keysym ks) im->redraw--; ks.unicode = L'\0'; } - // __attribute__ ((fallthrough)); /* continue processing: */ + FALL_THROUGH; /* continue processing: */ /* Actual character processing */ default: From d79173eae47c57c65b8f66cba8694700ad70077a Mon Sep 17 00:00:00 2001 From: Bill Kendrick Date: Thu, 12 Sep 2019 21:16:45 -0700 Subject: [PATCH 05/20] Doc'ing Luc's Haiku updates --- docs/AUTHORS.txt | 6 +++--- docs/CHANGES.txt | 7 ++++++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/docs/AUTHORS.txt b/docs/AUTHORS.txt index a95ba2d9d..673ade41f 100644 --- a/docs/AUTHORS.txt +++ b/docs/AUTHORS.txt @@ -2,12 +2,12 @@ AUTHORS.txt for Tux Paint Tux Paint - A simple drawing program for children. -Copyright (c) 2002-2018 +Copyright (c) 2002-2019 Various contributors (see below, and CHANGES.txt) http://www.tuxpaint.org/ -June 17, 2002 - August 30, 2018 +June 17, 2002 - September 12, 2019 $Id$ @@ -1069,7 +1069,7 @@ $Id$ Alessandro Pasotti * BeOS coding and builds - Luc 'Begasus' Schrijvers + Luc 'Begasus' Schrijvers Scott McCreary Marcin 'Shard' Konicki [retired] diff --git a/docs/CHANGES.txt b/docs/CHANGES.txt index 9d407601a..0e5bcd52b 100644 --- a/docs/CHANGES.txt +++ b/docs/CHANGES.txt @@ -8,7 +8,12 @@ http://www.tuxpaint.org/ $Id$ -2019.Apr.3 (0.9.24) +2019.Sep.12 (0.9.24) + * Ports & Building + ---------------- + * Updates to build on Haiku. + Luc 'Begasus' Schrijvers + * Bug Fixes --------- * Correct issue that prevented Tux Paint from lauching on Mac OS X 10.7. From 2911b35a50664f187971daa09324c80d836d9c18 Mon Sep 17 00:00:00 2001 From: Bill Kendrick Date: Thu, 12 Sep 2019 23:04:13 -0700 Subject: [PATCH 06/20] Elevate "Fill" from Magic Tool to real Tool Replace the somewhat-recently-added "nothing" item in the tool bar with the "Fill" tool, which has been converted back from a Magic tool to a regular tool. Also, change bash "==" to sh "=" in "if [ ... ]" tests in Makefile. Also, link to math library (via "-lm") to make sure "max()" is available to magic tools. Also, add missing mention of "--newcolorslast" and "--newcolorsfirst" to manpage. --- Makefile | 23 +- {magic/icons => data/images/tools}/fill.png | Bin {magic => data}/sounds/fill.wav | Bin docs/CHANGES.txt | 6 + docs/en/README.txt | 12 +- docs/en/html/README.html | 13 +- docs/html/images/tool_fill.png | Bin 0 -> 3049 bytes magic/magic-docs/src/magic-docs.php | 6 +- magic/src/fill.c | 268 -------------------- src/fill.c | 160 ++++++++++++ src/fill.h | 37 +++ src/manpage/tuxpaint.1 | 13 +- src/sounds.h | 8 +- src/tools.h | 16 +- src/tuxpaint.c | 37 ++- 15 files changed, 295 insertions(+), 304 deletions(-) rename {magic/icons => data/images/tools}/fill.png (100%) rename {magic => data}/sounds/fill.wav (100%) create mode 100644 docs/html/images/tool_fill.png delete mode 100644 magic/src/fill.c create mode 100644 src/fill.c create mode 100644 src/fill.h diff --git a/Makefile b/Makefile index 2a6449e04..75c3300d8 100644 --- a/Makefile +++ b/Makefile @@ -1,10 +1,10 @@ # Tux Paint - A simple drawing program for children. -# Copyright (c) 2002-2018 +# Copyright (c) 2002-2019 # Various contributors (see AUTHORS.txt) # http://www.tuxpaint.org/ -# June 14, 2002 - December 18, 2018 +# June 14, 2002 - September 12, 2019 # The version number, for release: @@ -481,7 +481,7 @@ install: install-bin install-data install-man install-doc \ @echo @echo "--------------------------------------------------------------" @echo - @if [ "x$(OS)" == "xosx" ]; then \ + @if [ "x$(OS)" = "xosx" ]; then \ echo "All done! Now you can double click $(BUNDLE) to run the"; \ echo "program!!! TuxPaint.dmg has also been created for"; \ echo "distribution."; \ @@ -876,7 +876,7 @@ install-dlls: @cp `which libstdc++-6.dll` $(BIN_PREFIX) @cp `which libfribidi-0.dll` $(BIN_PREFIX) @cp `which libpthread-2.dll` $(BIN_PREFIX) - @if [ "x$(BDIST_WIN9X)" == "x" ]; then \ + @if [ "x$(BDIST_WIN9X)" = "x" ]; then \ cp `which libxml2-2.dll` $(BIN_PREFIX); \ cp `which libcairo-2.dll` $(BIN_PREFIX); \ cp `which libfontconfig-1.dll` $(BIN_PREFIX); \ @@ -898,7 +898,7 @@ install-dlls: cp `which bz2-1.dll` $(BIN_PREFIX); \ fi @strip -s $(BIN_PREFIX)/*.dll - @if [ "x$(BDIST_WIN9X)" == "x" ]; then \ + @if [ "x$(BDIST_WIN9X)" = "x" ]; then \ echo; \ echo "...Installing Configuration Files..."; \ cp -R win32/etc/ $(BIN_PREFIX); \ @@ -1021,7 +1021,7 @@ TuxPaint.dmg: # Build the program! tuxpaint: obj/tuxpaint.o obj/i18n.o obj/im.o obj/cursor.o obj/pixels.o \ - obj/rgblinear.o obj/playsound.o obj/fonts.o obj/parse.o \ + obj/rgblinear.o obj/playsound.o obj/fonts.o obj/parse.o obj/fill.o \ obj/progressbar.o obj/dirwalk.o obj/get_fname.o obj/onscreen_keyboard.o \ $(ARCH_LIBS) @echo @@ -1037,7 +1037,7 @@ tuxpaint: obj/tuxpaint.o obj/i18n.o obj/im.o obj/cursor.o obj/pixels.o \ obj/tuxpaint.o: src/tuxpaint.c \ src/i18n.h src/im.h src/cursor.h src/pixels.h \ - src/rgblinear.h src/playsound.h src/fonts.h \ + src/rgblinear.h src/playsound.h src/fonts.h src/fill.h \ src/progressbar.h src/dirwalk.h src/get_fname.h \ src/compiler.h src/debug.h \ src/tools.h src/titles.h src/colors.h src/shapes.h \ @@ -1136,6 +1136,13 @@ obj/playsound.o: src/playsound.c src/playsound.h \ @$(CC) $(CFLAGS) $(DEBUG_FLAGS) $(SDL_CFLAGS) $(DEFS) \ -c src/playsound.c -o obj/playsound.o +obj/fill.o: src/fill.c src/fill.h \ + src/rgblinear.h src/playsound.h src/pixels.h + @echo + @echo "...Compiling flood fill tool..." + @$(CC) $(CFLAGS) $(DEBUG_FLAGS) $(SDL_CFLAGS) $(DEFS) \ + -c src/fill.c -o obj/fill.o + obj/progressbar.o: src/progressbar.c src/progressbar.h \ src/compiler.h src/debug.h @echo @@ -1226,7 +1233,7 @@ PLUGIN_LIBS:=$($(OS)_PLUGIN_LIBS) #MAGIC_CFLAGS:=-g3 -O2 -fvisibility=hidden -fno-common -W -Wstrict-prototypes -Wmissing-prototypes -Wall $(MAGIC_SDL_CPPFLAGS) -Isrc/ MAGIC_CFLAGS:=-g3 -O2 -fno-common -W -Wstrict-prototypes -Wmissing-prototypes -Wall $(MAGIC_SDL_CPPFLAGS) -Isrc/ $(ARCH_CFLAGS) -SHARED_FLAGS:=-shared -fpic +SHARED_FLAGS:=-shared -fpic -lm MAGIC_C:=$(wildcard magic/src/*.c) MAGIC_SO:=$(patsubst magic/src/%.c,magic/%.$(SO_TYPE),$(MAGIC_C)) diff --git a/magic/icons/fill.png b/data/images/tools/fill.png similarity index 100% rename from magic/icons/fill.png rename to data/images/tools/fill.png diff --git a/magic/sounds/fill.wav b/data/sounds/fill.wav similarity index 100% rename from magic/sounds/fill.wav rename to data/sounds/fill.wav diff --git a/docs/CHANGES.txt b/docs/CHANGES.txt index 0e5bcd52b..bf18dc769 100644 --- a/docs/CHANGES.txt +++ b/docs/CHANGES.txt @@ -9,6 +9,12 @@ http://www.tuxpaint.org/ $Id$ 2019.Sep.12 (0.9.24) + * New tools + --------- + * Fill + Not actually a new tool, but promoted from a "Magic" tool + to a full-fledge tool in the "Tools" bar. + * Ports & Building ---------------- * Updates to build on Haiku. diff --git a/docs/en/README.txt b/docs/en/README.txt index e87dff5d1..28b30d1f3 100644 --- a/docs/en/README.txt +++ b/docs/en/README.txt @@ -6,7 +6,7 @@ Copyright 2002-2019 by various contributors; see AUTHORS.txt http://www.tuxpaint.org/ - June 14, 2002 - April 3, 2019 + June 14, 2002 - September 12, 2019 ---------------------------------------------------------------------- @@ -375,6 +375,16 @@ Available Tools left [Alt] * Thai — right [Alt] + ---------------------------------------------------------------------- + + Fill + + The 'Fill' tool 'flood-fills' a contiguous area of your + drawing with a solid color of your choice. + + Note: Prior to Tux Paint 0.9.24, this was a "Magic" tool + (see below). + ---------------------------------------------------------------------- Magic (Special Effects) diff --git a/docs/en/html/README.html b/docs/en/html/README.html index 049cd4c96..5ac5e6efc 100644 --- a/docs/en/html/README.html +++ b/docs/en/html/README.html @@ -22,7 +22,7 @@ version

June 14, 2002 - - April 3, 2019

+ September 12, 2019

@@ -507,6 +507,17 @@ version
+
Fill
+
+ + +

The 'Fill' tool 'flood-fills' a contiguous area of your drawing + with a solid color of your choice.

+ +

Note: Prior to Tux Paint 0.9.24, this was a "Magic" tool (see below).

+ +
+
Magic (Special Effects)
diff --git a/docs/html/images/tool_fill.png b/docs/html/images/tool_fill.png new file mode 100644 index 0000000000000000000000000000000000000000..5507f67af2f273005e9c9627ac0d800211c3f08f GIT binary patch literal 3049 zcmVs)f)@}5H0^P_po%^&+0-}8R>;~jmK#Y02;7wXngy0Xs2>-&2PnRKGZo;ego zJP)8h9XwWT1h$R<=bY6i0w);y4^QpM=L;J)Uh?Iye=iJzBS%JFBc>?gb5>MR+o zKOH>Q3CJ)HK7TYtQ|iukWgI_<{BXfyjBzs=Ka4Kecrg+E*&R zEkHwm9Z%`WI4bLEKa3FO39BpK_9m~{002@-Ykk9Y@7a9$RRF-u!O7mC^)eu&FrRbk z%}^2mEkHqN4v$Wyz4KkJ9~!jiW@Gxir*H7!L?QA?MbcaTYi{Iu(S*brg!o3&WESKK_?<^2Oys zKIZ^}WvD&-{Nptj*Qzsbeft%SM*a6s?7r;_-?`+ncLBiFmkpeI{>I~Dqs>O0h3nNB z5fKq0(vF+UbpgQI^EST!`faNQ&P@?{L3DJy3ILX*_rC4ymCMQ+0EWkAT5}>GLTDHf zFa?$H6h)ENPFJBPmoH{>U3cE`)r&5@+}`^5tzW5}c1Al7dw$!f&4gjF z=kZ_v?zfKs010)&8G5CH;Oi!sFyHR{!+%U9$J z-OLOEVc|Qm6z$1OWsAwNh+^iLG-1 zK&=_*rWeNU46*lUtsF)CPH-lW(|>)>34T0}=JNsI(#`Lz*JdmRvbabgS;9~$ zWu>%rOB5naPELr(jW>TPj3A0sNQRKDTLq!f#;}brL{za}`pFr6@u~Kmjm@HH+AE z7)QIKTt|O;`$v@4Q5bfhN%3W}*;T98)T=W{n6i@kFDWZqs#>BQ5s?}lei;B9SGy4h zPNae)+aa)sMgSYvR(!41Lag+xtA}^~7!gx? z9LIU`xfhkfr-lyMbTu-3h+q}Y}%o<*4l9v^;K4{Sz9O+Em@B|aDNc^&mMl& z4^5*PR_k81+N{-@o)<)+Awr#TRnw0UFzHMsKP7e?x~euKOCHoX7+O zKm=ICFa(kD0#k4J)oOEQrrxM~z8@~>D^MZl+HFvpN^ZIROGwmgGyvePU5_}fYX|yU z3#0`F;>}k&sl`ypxw<=_fjI2ZUcdJGfBMkYf7S}E@3Wi&b`p+S;F9fNYhD28&S!LQ zF^lOAnh*)oCmDnwZk`Io020X(Om_c;i9v5MOXZ$iLSMYA7X$%d0FLz*7C3R)ykX$E zy@T^s+KXXf5f)(k&X^n~VurBXlhfty98r9@NRMJMu~sjH*~=@uZ_|bsp5LD~@B7u0 zH{bf1)0Zwc0sz1Q9hF%;NlQ3@S@RNMxjUyFP34|k-8X<>&pYWeY*&>Q-!1mP@U0(Q z@xBk*mYc~8oO>Psun2(VpuMsHpyW55qui5oG!X!t(N~=Nm{mFvZdSYifYOfRW^56G zcV9TLZ||T8K-yI?F*S^DEVUT$%?Zpn&lFY&a5dcNF ztWp5`^~2F>X{9((4~0cq&=Z?4;y-@d=Qm$*H2`SGiQ_p9>^YSVXMk3k6?<+Jk)@TQ zqZOpzhgL4@eP!slJv7B#5k#;f#8PaE`(X+e_t7pio?5`k1PW?>OwS-Gs&-i?oQ z{gq9ii1&svuVV^8M}h%Zu+k9_tzoU8EXBDGM1&!p%<$^|Qu_HkIm7})hIj8h3R-7#8OPDeX3vvugN&3fQ<1L$ZA0u(Z|v^P`f&deRHlOg+zV;XsH rTzQ@6=u={dn3b$!Dj+V*iJAWg@^aP+9^G@j00000NkvXXu0mjf9_Y6C literal 0 HcmV?d00001 diff --git a/magic/magic-docs/src/magic-docs.php b/magic/magic-docs/src/magic-docs.php index ef3d98765..00c9a7991 100644 --- a/magic/magic-docs/src/magic-docs.php +++ b/magic/magic-docs/src/magic-docs.php @@ -5,7 +5,7 @@ individual HTML files for each of them, and an index.html that links to them all. */ /* Bill Kendrick */ -/* Oct. 8, 2009 - August 30, 2018 */ +/* Oct. 8, 2009 - September 12, 2019 */ /* Authors of the Magic tools: */ @@ -114,10 +114,6 @@ $tools = array( 'author'=>$AUTHOR_KENDRICK, 'see'=>array('Edges', 'Silhouette')), - array('name'=>'Fill', - 'desc'=>'This floods the picture with a color. It lets you quickly fill parts of the picture, as if it were a coloring book.', - 'author'=>$AUTHOR_KENDRICK), - array('name'=>'Fisheye', 'desc'=>'Warp parts of your picture like it\'s being seen through a fisheye lens.', 'author'=>$AUTHOR_ADAMR), diff --git a/magic/src/fill.c b/magic/src/fill.c deleted file mode 100644 index 75f4fda12..000000000 --- a/magic/src/fill.c +++ /dev/null @@ -1,268 +0,0 @@ -/* - fill.c - - Fill Magic Tool Plugin - Tux Paint - A simple drawing program for children. - - Copyright (c) 2002-2008 by Bill Kendrick and others; see AUTHORS.txt - bill@newbreedsoftware.com - http://www.tuxpaint.org/ - - Flood fill code based on Wikipedia example: - http://www.wikipedia.org/wiki/Flood_fill/C_example - by Damian Yerrick - http://www.wikipedia.org/wiki/Damian_Yerrick - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - (See COPYING.txt) - - Last updated: July 8, 2008 - $Id$ -*/ - -#include -#include -#include "tp_magic_api.h" -#include "SDL_image.h" - - -/* Our globals: */ - -static Mix_Chunk *fill_snd; -static Uint8 fill_r, fill_g, fill_b; - -/* Local function prototypes: */ - -static int colors_close(magic_api * api, SDL_Surface * canvas, Uint32 c1, Uint32 c2); -static void do_flood_fill(magic_api * api, SDL_Surface * canvas, int x, int y, Uint32 cur_colr, Uint32 old_colr); -int fill_modes(magic_api * api, int which); -void fill_switchout(magic_api * api, int which, int mode, SDL_Surface * canvas); -void fill_switchin(magic_api * api, int which, int mode, SDL_Surface * canvas); -int fill_requires_colors(magic_api * api, int which); -void fill_set_color(magic_api * api, Uint8 r, Uint8 g, Uint8 b); -void fill_shutdown(magic_api * api); -void fill_release(magic_api * api, int which, - SDL_Surface * canvas, SDL_Surface * last, int x, int y, SDL_Rect * update_rect); -void fill_click(magic_api * api, int which, int mode, - SDL_Surface * canvas, SDL_Surface * last, int x, int y, SDL_Rect * update_rect); -void fill_drag(magic_api * api, int which, SDL_Surface * canvas, - SDL_Surface * last, int ox, int oy, int x, int y, SDL_Rect * update_rect); -char *fill_get_description(magic_api * api, int which, int mode); -char *fill_get_name(magic_api * api, int which); -int fill_get_tool_count(magic_api * api); -SDL_Surface *fill_get_icon(magic_api * api, int which); -Uint32 fill_api_version(void); -int fill_init(magic_api * api); - - -// No setup required: -int fill_init(magic_api * api) -{ - char fname[1024]; - - snprintf(fname, sizeof(fname), "%s/sounds/magic/fill.wav", api->data_directory); - fill_snd = Mix_LoadWAV(fname); - - return (1); -} - -Uint32 fill_api_version(void) -{ - return (TP_MAGIC_API_VERSION); -} - -// We have multiple tools: -int fill_get_tool_count(magic_api * api ATTRIBUTE_UNUSED) -{ - return (1); -} - -// Load our icons: -SDL_Surface *fill_get_icon(magic_api * api, int which ATTRIBUTE_UNUSED) -{ - char fname[1024]; - - snprintf(fname, sizeof(fname), "%s/images/magic/fill.png", api->data_directory); - - return (IMG_Load(fname)); -} - -// Return our names, localized: -char *fill_get_name(magic_api * api ATTRIBUTE_UNUSED, int which ATTRIBUTE_UNUSED) -{ - return (strdup(gettext_noop("Fill"))); -} - -// Return our descriptions, localized: -char *fill_get_description(magic_api * api ATTRIBUTE_UNUSED, int which ATTRIBUTE_UNUSED, int mode ATTRIBUTE_UNUSED) -{ - return (strdup(gettext_noop("Click in the picture to fill that area with color."))); -} - - -// Affect the canvas on drag: -void fill_drag(magic_api * api ATTRIBUTE_UNUSED, int which ATTRIBUTE_UNUSED, SDL_Surface * canvas ATTRIBUTE_UNUSED, - SDL_Surface * last ATTRIBUTE_UNUSED, int ox ATTRIBUTE_UNUSED, int oy ATTRIBUTE_UNUSED, - int x ATTRIBUTE_UNUSED, int y ATTRIBUTE_UNUSED, SDL_Rect * update_rect ATTRIBUTE_UNUSED) -{ -} - -// Affect the canvas on click: -void fill_click(magic_api * api, int which ATTRIBUTE_UNUSED, int mode ATTRIBUTE_UNUSED, - SDL_Surface * canvas ATTRIBUTE_UNUSED, SDL_Surface * last ATTRIBUTE_UNUSED, - int x, int y, SDL_Rect * update_rect) -{ - do_flood_fill(api, canvas, x, y, SDL_MapRGB(canvas->format, fill_r, fill_g, fill_b), api->getpixel(canvas, x, y)); - - update_rect->x = 0; - update_rect->y = 0; - update_rect->w = canvas->w; - update_rect->h = canvas->h; -} - -void fill_release(magic_api * api ATTRIBUTE_UNUSED, int which ATTRIBUTE_UNUSED, - SDL_Surface * canvas ATTRIBUTE_UNUSED, SDL_Surface * last ATTRIBUTE_UNUSED, - int x ATTRIBUTE_UNUSED, int y ATTRIBUTE_UNUSED, SDL_Rect * update_rect ATTRIBUTE_UNUSED) -{ -} - -void fill_shutdown(magic_api * api ATTRIBUTE_UNUSED) -{ - Mix_FreeChunk(fill_snd); -} - -// Record the color from Tux Paint: -void fill_set_color(magic_api * api ATTRIBUTE_UNUSED, Uint8 r, Uint8 g, Uint8 b) -{ - fill_r = r; - fill_g = g; - fill_b = b; -} - -// Use colors: -int fill_requires_colors(magic_api * api ATTRIBUTE_UNUSED, int which ATTRIBUTE_UNUSED) -{ - return 1; -} - - -static int colors_close(magic_api * api, SDL_Surface * canvas, Uint32 c1, Uint32 c2) -{ - Uint8 r1, g1, b1, r2, g2, b2; - - if (c1 == c2) - { - /* Get it over with quick, if possible! */ - - return 1; - } - else - { - double r, g, b; - - SDL_GetRGB(c1, canvas->format, &r1, &g1, &b1); - SDL_GetRGB(c2, canvas->format, &r2, &g2, &b2); - - // use distance in linear RGB space - r = api->sRGB_to_linear(r1) - api->sRGB_to_linear(r2); - r *= r; - g = api->sRGB_to_linear(g1) - api->sRGB_to_linear(g2); - g *= g; - b = api->sRGB_to_linear(b1) - api->sRGB_to_linear(b2); - b *= b; - - // easy to confuse: - // dark grey, brown, purple - // light grey, tan - // red, orange - return r + g + b < 0.04; - } -} - - -static void do_flood_fill(magic_api * api, SDL_Surface * canvas, int x, int y, Uint32 cur_colr, Uint32 old_colr) -{ - int fillL, fillR, i, in_line; - static unsigned char prog_anim; - - - if (cur_colr == old_colr || colors_close(api, canvas, cur_colr, old_colr)) - return; - - - fillL = x; - fillR = x; - - prog_anim++; - if ((prog_anim % 4) == 0) - { - api->update_progress_bar(); - api->playsound(fill_snd, (x * 255) / canvas->w, 255); - } - - - /* Find left side, filling along the way */ - - in_line = 1; - - while (in_line) - { - api->putpixel(canvas, fillL, y, cur_colr); - fillL--; - - in_line = (fillL < 0) ? 0 : colors_close(api, canvas, api->getpixel(canvas, fillL, y), old_colr); - } - - fillL++; - - /* Find right side, filling along the way */ - - in_line = 1; - while (in_line) - { - api->putpixel(canvas, fillR, y, cur_colr); - fillR++; - - in_line = (fillR >= canvas->w) ? 0 : colors_close(api, canvas, api->getpixel(canvas, fillR, y), old_colr); - } - - fillR--; - - - /* Search top and bottom */ - - for (i = fillL; i <= fillR; i++) - { - if (y > 0 && colors_close(api, canvas, api->getpixel(canvas, i, y - 1), old_colr)) - do_flood_fill(api, canvas, i, y - 1, cur_colr, old_colr); - - if (y < canvas->h && colors_close(api, canvas, api->getpixel(canvas, i, y + 1), old_colr)) - do_flood_fill(api, canvas, i, y + 1, cur_colr, old_colr); - } -} - -void fill_switchin(magic_api * api ATTRIBUTE_UNUSED, int which ATTRIBUTE_UNUSED, int mode ATTRIBUTE_UNUSED, - SDL_Surface * canvas ATTRIBUTE_UNUSED) -{ -} - -void fill_switchout(magic_api * api ATTRIBUTE_UNUSED, int which ATTRIBUTE_UNUSED, int mode ATTRIBUTE_UNUSED, - SDL_Surface * canvas ATTRIBUTE_UNUSED) -{ -} - -int fill_modes(magic_api * api ATTRIBUTE_UNUSED, int which ATTRIBUTE_UNUSED) -{ - return (MODE_PAINT); -} diff --git a/src/fill.c b/src/fill.c new file mode 100644 index 000000000..2fce7d215 --- /dev/null +++ b/src/fill.c @@ -0,0 +1,160 @@ +/* + fill.c + + Fill tool + Tux Paint - A simple drawing program for children. + + Copyright (c) 2002-2019 by Bill Kendrick and others; see AUTHORS.txt + bill@newbreedsoftware.com + http://www.tuxpaint.org/ + + Flood fill code based on Wikipedia example: + http://www.wikipedia.org/wiki/Flood_fill/C_example + by Damian Yerrick - http://www.wikipedia.org/wiki/Damian_Yerrick + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + (See COPYING.txt) + + Last updated: September 12, 2019 + $Id$ +*/ + +#include +#include +#include "fill.h" +#include "rgblinear.h" +#include "playsound.h" +#include "pixels.h" + + +/* Local function prototypes: */ + +int colors_close(SDL_Surface * canvas, Uint32 c1, Uint32 c2); + + +int colors_close(SDL_Surface * canvas, Uint32 c1, Uint32 c2) +{ + Uint8 r1, g1, b1, r2, g2, b2; + + if (c1 == c2) + { + /* Get it over with quick, if possible! */ + + return 1; + } + else + { + double r, g, b; + + SDL_GetRGB(c1, canvas->format, &r1, &g1, &b1); + SDL_GetRGB(c2, canvas->format, &r2, &g2, &b2); + + // use distance in linear RGB space + r = sRGB_to_linear_table[r1] - sRGB_to_linear_table[r2]; + r *= r; + g = sRGB_to_linear_table[g1] - sRGB_to_linear_table[g2]; + g *= g; + b = sRGB_to_linear_table[b1] - sRGB_to_linear_table[b2]; + b *= b; + + // easy to confuse: + // dark grey, brown, purple + // light grey, tan + // red, orange + return r + g + b < 0.04; + } +} + + +void do_flood_fill(SDL_Surface * canvas, int x, int y, Uint32 cur_colr, Uint32 old_colr, int * x1, int * y1, int * x2, int * y2) +{ + int fillL, fillR, i, in_line; + static unsigned char prog_anim; + + + if (cur_colr == old_colr || colors_close(canvas, cur_colr, old_colr)) + return; + + if (y < *y1) + { + *y1 = y; + } + if (y > *y2) + { + *y2 = y; + } + + + fillL = x; + fillR = x; + + prog_anim++; + if ((prog_anim % 4) == 0) + { + /* FIXME: api->update_progress_bar(); */ + playsound(canvas, 1, SND_FILL, 1, x, SNDDIST_NEAR); + } + + + /* Find left side, filling along the way */ + + in_line = 1; + + while (in_line) + { + putpixels[canvas->format->BytesPerPixel] (canvas, fillL, y, cur_colr); + fillL--; + + in_line = (fillL < 0) ? 0 : colors_close(canvas, getpixels[canvas->format->BytesPerPixel] (canvas, fillL, y), old_colr); + } + + if (fillL < *x1) + { + *x1 = fillL; + } + + fillL++; + + /* Find right side, filling along the way */ + + in_line = 1; + while (in_line) + { + putpixels[canvas->format->BytesPerPixel] (canvas, fillR, y, cur_colr); + fillR++; + + in_line = (fillR >= canvas->w) ? 0 : colors_close(canvas, getpixels[canvas->format->BytesPerPixel] (canvas, fillR, y), old_colr); + } + + if (fillR > *x2) + { + *x2 = fillR; + } + + fillR--; + + + /* Search top and bottom */ + + for (i = fillL; i <= fillR; i++) + { + if (y > 0 && colors_close(canvas, getpixels[canvas->format->BytesPerPixel] (canvas, i, y - 1), old_colr)) + do_flood_fill(canvas, i, y - 1, cur_colr, old_colr, x1, y1, x2, y2); + + if (y < canvas->h && colors_close(canvas, getpixels[canvas->format->BytesPerPixel] (canvas, i, y + 1), old_colr)) + do_flood_fill(canvas, i, y + 1, cur_colr, old_colr, x1, y1, x2, y2); + } +} + diff --git a/src/fill.h b/src/fill.h new file mode 100644 index 000000000..2e37a09aa --- /dev/null +++ b/src/fill.h @@ -0,0 +1,37 @@ +/* + fill.h + + Fill tool + Tux Paint - A simple drawing program for children. + + Copyright (c) 2002-2019 by Bill Kendrick and others; see AUTHORS.txt + bill@newbreedsoftware.com + http://www.tuxpaint.org/ + + Flood fill code based on Wikipedia example: + http://www.wikipedia.org/wiki/Flood_fill/C_example + by Damian Yerrick - http://www.wikipedia.org/wiki/Damian_Yerrick + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + (See COPYING.txt) + + Last updated: September 12, 2019 + $Id$ +*/ + +#include "SDL.h" + +void do_flood_fill(SDL_Surface * canvas, int x, int y, Uint32 cur_colr, Uint32 old_colr, int * x1, int * y1, int * x2, int * y2); + diff --git a/src/manpage/tuxpaint.1 b/src/manpage/tuxpaint.1 index 6c1df5f09..0c4a2535a 100644 --- a/src/manpage/tuxpaint.1 +++ b/src/manpage/tuxpaint.1 @@ -1,5 +1,5 @@ -.\" tuxpaint.1 - 2018.09.24 -.TH TUXPAINT 1 "24 September 2018" "0.9.23c" "Tux Paint" +.\" tuxpaint.1 - 2019.09.12 +.TH TUXPAINT 1 "12 September 2019" "0.9.24" "Tux Paint" .SH NAME tuxpaint -- "Tux Paint", a drawing program for young children. @@ -61,6 +61,8 @@ tuxpaint -- "Tux Paint", a drawing program for young children. .br [\-\-nolabel] .br +[\-\-newcolorslast] +.br [\-\-mirrorstamps] .br [\-\-mouse-accessibility] @@ -187,6 +189,8 @@ tuxpaint -- "Tux Paint", a drawing program for young children. .br [\-\-label] .br +[\-\-newcolorsfirst] +.br [\-\-dontmirrorstamps] .br [\-\-stampsize=default] @@ -408,6 +412,11 @@ controllable.) Disable or enable (default) the \fILabel\fP tool, which lets you create text which can be altered or moved later. +.TP 8 +.B \-\-newcolorslast \-\-newcolorsfirst +List solid (blank) colors at the end, or beginning (default) of the +options displayed when using the \fINew\fP tool to start a new picture. + .TP 8 .B \-\-mirrorstamps \-\-dontmirrorstamps With \fImirrorstamps\fP set, stamps which can be mirrored will appear diff --git a/src/sounds.h b/src/sounds.h index ed850f74c..bdbde6e2c 100644 --- a/src/sounds.h +++ b/src/sounds.h @@ -4,7 +4,7 @@ For Tux Paint List of sound effects. - Copyright (c) 2002-2007 by Bill Kendrick and others + Copyright (c) 2002-2019 by Bill Kendrick and others bill@newbreedsoftware.com http://www.tuxpaint.org/ @@ -23,7 +23,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA (See COPYING.txt) - June 15, 2002 - July 5, 2007 + June 15, 2002 - September 12, 2019 $Id$ */ @@ -67,6 +67,7 @@ enum SND_TUXOK, /* "Ok" */ SND_THICK, SND_THIN, + SND_FILL, NUM_SOUNDS }; @@ -107,7 +108,8 @@ static const char *sound_fnames[NUM_SOUNDS] = { DATA_PREFIX "sounds/youcannot.wav", DATA_PREFIX "sounds/tuxok.wav", DATA_PREFIX "sounds/thick.wav", - DATA_PREFIX "sounds/thin.wav" + DATA_PREFIX "sounds/thin.wav", + DATA_PREFIX "sounds/fill.wav" }; #endif diff --git a/src/tools.h b/src/tools.h index 0336e27fc..99d55c1cd 100644 --- a/src/tools.h +++ b/src/tools.h @@ -19,11 +19,11 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA (See COPYING.txt) - Copyright (c) 2002-2009 by Bill Kendrick + Copyright (c) 2002-2019 by Bill Kendrick bill@newbreedsoftware.com http://www.tuxpaint.org/ - June 14, 2002 - October 9, 2009 + June 14, 2002 - September 12, 2019 $Id$ */ @@ -41,7 +41,7 @@ enum TOOL_SHAPES, TOOL_TEXT, TOOL_LABEL, - TOOL_NA, + TOOL_FILL, TOOL_MAGIC, TOOL_UNDO, TOOL_REDO, @@ -76,8 +76,8 @@ const char *const tool_names[NUM_TOOLS] = { // Label tool gettext_noop("Label"), - // Reserved... - " ", + // Fill tool + gettext_noop("Fill"), // "Magic" effects tools (blur, flip image, etc.) gettext_noop("Magic"), @@ -132,8 +132,8 @@ const char *const tool_tips[NUM_TOOLS] = { gettext_noop ("Choose a style of text. Click on your drawing and you can start typing. Press [Enter] or [Tab] to complete the text. By using the selector button and clicking an existing label, you can move it, edit it and change its text style."), - // Reserved... - " ", + // Fill tool instructions + gettext_noop("Click in the picture to fill that area with color."), // Magic tool instruction gettext_noop("Pick a magical effect to use on your drawing!"), @@ -185,7 +185,7 @@ const char *const tool_img_fnames[NUM_TOOLS] = { DATA_PREFIX "images/tools/shapes.png", DATA_PREFIX "images/tools/text.png", DATA_PREFIX "images/tools/label.png", - DATA_PREFIX "images/ui/dead40x40.png", + DATA_PREFIX "images/tools/fill.png", DATA_PREFIX "images/tools/magic.png", DATA_PREFIX "images/tools/undo.png", DATA_PREFIX "images/tools/redo.png", diff --git a/src/tuxpaint.c b/src/tuxpaint.c index 2435b4884..7976db2f6 100644 --- a/src/tuxpaint.c +++ b/src/tuxpaint.c @@ -503,6 +503,8 @@ static void mtw(wchar_t * wtok, char *tok) #include "tip_tux.h" #include "great.h" +#include "fill.h" + #include "im.h" @@ -3065,6 +3067,12 @@ static void mainloop(void) draw_brushes(); draw_colors(COLORSEL_ENABLE); } + else if (cur_tool == TOOL_FILL) + { + keybd_flag = 0; + draw_none(); + draw_colors(COLORSEL_ENABLE); + } else if (cur_tool == TOOL_SHAPES) { keybd_flag = 0; @@ -4376,6 +4384,24 @@ static void mainloop(void) if (mouseaccessibility) emulate_button_pressed = !emulate_button_pressed; } + else if (cur_tool == TOOL_FILL) + { + int x1, y1, x2, y2; + + /* Fill */ + x1 = x2 = old_x; + y1 = y2 = old_y; + + do_flood_fill(canvas, old_x, old_y, + SDL_MapRGB(canvas->format, + color_hexes[cur_color][0], + color_hexes[cur_color][1], + color_hexes[cur_color][2]), + getpixels[canvas->format->BytesPerPixel] (canvas, old_x, old_y), + &x1, &y1, &x2, &y2); + + update_canvas(x1, y1, x2, y2); + } else if (cur_tool == TOOL_TEXT || cur_tool == TOOL_LABEL) { /* Text and Label Tools! */ @@ -4549,7 +4575,8 @@ static void mainloop(void) if (cur_tool == TOOL_BRUSH || cur_tool == TOOL_STAMP || cur_tool == TOOL_SHAPES || cur_tool == TOOL_LINES || - cur_tool == TOOL_MAGIC || cur_tool == TOOL_TEXT || cur_tool == TOOL_ERASER || cur_tool == TOOL_LABEL) + cur_tool == TOOL_MAGIC || cur_tool == TOOL_TEXT || + cur_tool == TOOL_ERASER || cur_tool == TOOL_LABEL) { /* Left tools scroll */ @@ -5151,7 +5178,7 @@ static void mainloop(void) do_setcursor(cursor_brush); else if (cur_tool == TOOL_STAMP) do_setcursor(cursor_tiny); - else if (cur_tool == TOOL_LINES) + else if (cur_tool == TOOL_LINES || cur_tool == TOOL_FILL) do_setcursor(cursor_crosshair); else if (cur_tool == TOOL_SHAPES) { @@ -5182,7 +5209,6 @@ static void mainloop(void) do_setcursor(cursor_arrow); } } - else if (cur_tool == TOOL_MAGIC) do_setcursor(cursor_wand); else if (cur_tool == TOOL_ERASER) @@ -10110,11 +10136,6 @@ static void reset_avail_tools(void) tool_avail[TOOL_LABEL] = 0; - /* TBD... */ - - tool_avail[TOOL_NA] = 0; - - /* Disable save? */ if (disable_save) From 2117db234ef45448cedcb4b863fc33373f5b4e7c Mon Sep 17 00:00:00 2001 From: Bill Kendrick Date: Sat, 14 Sep 2019 09:33:22 -0700 Subject: [PATCH 07/20] Generate & install starter thumbnails again I cannot recall[*] why we disabled the steps to generate thumbnails of starters (".thumbs/STARTERNAME-t.png") and install them in the system directory (e.g., /usr/local/share/tuxpaint/starters/.thumbs/), but every time one goes to create a new image ("New"), it took a very long time to show. [*] If anyone remembers ~a decade ago, and has a good reason, let me know! Also, remove "Makefile" as a prerequisite for some targets; if anything major changes in there, it's expected one will run "make clean" or remove the binary/etc. target and rebuild. (Rebuilding "tuxpaint.o" every time I edited something unrelated in Makefile was really annoying :) ) --- Makefile | 15 ++++++--------- src/tuxpaint.c | 5 ++--- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/Makefile b/Makefile index 75c3300d8..f497ad8e2 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,7 @@ # Various contributors (see AUTHORS.txt) # http://www.tuxpaint.org/ -# June 14, 2002 - September 12, 2019 +# June 14, 2002 - September 14, 2019 # The version number, for release: @@ -285,8 +285,7 @@ MOUSE_CFLAGS:=-Isrc/$(MOUSEDIR) -D$(CURSOR_SHAPES)_CURSOR_SHAPES # "make" with no arguments builds the program and man page from sources: # .PHONY: all -all: tuxpaint translations magic-plugins tp-magic-config -# thumb-starters +all: tuxpaint translations magic-plugins tp-magic-config thumb-starters @echo @echo "--------------------------------------------------------------" @echo @@ -475,9 +474,8 @@ install: install-bin install-data install-man install-doc \ install-default-config install-example-stamps \ install-example-starters install-example-templates \ install-bash-completion \ - install-osk \ + install-osk install-thumb-starters \ $(ARCH_INSTALL) -#install-thumb-starters @echo @echo "--------------------------------------------------------------" @echo @@ -1056,8 +1054,7 @@ obj/tuxpaint.o: src/tuxpaint.c \ src/$(MOUSEDIR)/watch.xbm src/$(MOUSEDIR)/watch-mask.xbm \ src/$(MOUSEDIR)/up.xbm src/$(MOUSEDIR)/up-mask.xbm \ src/$(MOUSEDIR)/down.xbm src/$(MOUSEDIR)/down-mask.xbm \ - $(ARCH_HEADERS) \ - Makefile + $(ARCH_HEADERS) @echo @echo "...Compiling Tux Paint from source..." $(CC) $(CFLAGS) $(DEBUG_FLAGS) $(SDL_CFLAGS) $(FRIBIDI_CFLAGS) $(SVG_CFLAGS) $(MOUSE_CFLAGS) $(DEFS) \ @@ -1170,7 +1167,7 @@ obj/win32_print.o: src/win32_print.c src/win32_print.h src/debug.h @$(CC) $(CFLAGS) $(DEBUG_FLAGS) $(SDL_CFLAGS) $(DEFS) \ -c src/win32_print.c -o obj/win32_print.o -obj/postscript_print.o: src/postscript_print.c Makefile \ +obj/postscript_print.o: src/postscript_print.c \ src/postscript_print.h src/debug.h @echo @echo "...Compiling PostScript print support..." @@ -1201,7 +1198,7 @@ src/tp_magic_api.h: src/tp_magic_api.h.in @(echo "/*\n\n\n\n\n\n\n\nDO NOT EDIT ME!\n\n\n\n\n\n\n\n*/" ; cat src/tp_magic_api.h.in) | sed -e s/__APIVERSION__/$(MAGIC_API_VERSION)/ > src/tp_magic_api.h -tp-magic-config: src/tp-magic-config.sh.in Makefile +tp-magic-config: src/tp-magic-config.sh.in @echo @echo "...Generating 'Magic' tool API configuration script..." @sed -e s/__VERSION__/$(VER_VERSION)/ \ diff --git a/src/tuxpaint.c b/src/tuxpaint.c index 7976db2f6..75f338763 100644 --- a/src/tuxpaint.c +++ b/src/tuxpaint.c @@ -18777,7 +18777,8 @@ static int do_new_dialog(void) /* Support legacy BMP files for load: */ || strcasestr(f->d_name, ".bmp") != NULL /* Support for KPX (Kid Pix templates; just a JPEG with resource fork header): */ - || strcasestr(f->d_name, ".kpx") != NULL || strcasestr(f->d_name, ".jpg") != NULL + || strcasestr(f->d_name, ".kpx") != NULL + || strcasestr(f->d_name, ".jpg") != NULL #ifndef NOSVG || strcasestr(f->d_name, ".svg") != NULL #endif @@ -18916,8 +18917,6 @@ static int do_new_dialog(void) If it exists, it should give a better idea of what the starter looks like, compared to the overlay image... */ - /* FIXME: Add .jpg support -bjk 2007.03.22 */ - /* (Try JPEG first) */ snprintf(fname, sizeof(fname), "%s/%s-back", dirname[d_places[num_files]], d_names[num_files]); From 73dc07b608a0ae82e291e800620c46411ff19717 Mon Sep 17 00:00:00 2001 From: Bill Kendrick Date: Sat, 14 Sep 2019 10:11:05 -0700 Subject: [PATCH 08/20] Way better scaling of Starter thumbnails Providing better command-line args to ImageMagick `convert` to produce nice-looking thumbnail PNGs of Starter images. (N.B. - I'm using "ImageMagick" Version: 8:6.9.7.4+dfsg-16ubuntu6.7) --- Makefile | 6 ++++-- docs/CHANGES.txt | 5 ++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index f497ad8e2..344e354e0 100644 --- a/Makefile +++ b/Makefile @@ -694,16 +694,18 @@ STARTER_BACK_NAME=$(or $(wildcard $(subst starters/.thumbs,starters,$(@:-t.png=- $(wildcard $(subst starters/.thumbs,starters,$(@:-t.png=-back.png))),\ $(wildcard $(subst starters/.thumbs,starters,$(@:-t.png=-back.jpeg)))) +CONVERT_OPTS:=-alpha Background -alpha Off -gamma 0.454545 +depth -resize !132x80 -background white -interlace none + $(THUMB_STARTERS): @echo -n "." @mkdir -p starters/.thumbs @if [ "x" != "x"$(STARTER_BACK_NAME) ] ; \ then \ composite $(STARTER_NAME) $(STARTER_BACK_NAME) obj/tmp.png ; \ - convert -scale !132x80 -background white -alpha Background -alpha Off obj/tmp.png $@ ; \ + convert $(CONVERT_OPTS) obj/tmp.png $@ ; \ rm obj/tmp.png ; \ else \ - convert -scale !132x80 -background white -alpha Background -alpha Off $(STARTER_NAME) $@ ; \ + convert $(CONVERT_OPTS) $(STARTER_NAME) $@ ; \ fi $(INSTALLED_THUMB_STARTERS): $(DATA_PREFIX)/%: % diff --git a/docs/CHANGES.txt b/docs/CHANGES.txt index bf18dc769..b125790a8 100644 --- a/docs/CHANGES.txt +++ b/docs/CHANGES.txt @@ -8,7 +8,7 @@ http://www.tuxpaint.org/ $Id$ -2019.Sep.12 (0.9.24) +2019.Sep.14 (0.9.24) * New tools --------- * Fill @@ -55,6 +55,9 @@ $Id$ * Updated most parts of the code that were throwing warnings in GCC. + * Build process generates thumbnails of included Starter images. + When installed, this greatly increases the speed of the "New" dialog. + * Documentation updates --------------------- * Mended link to MinGW/MSYS instructions at John Popplewell's website. From 2eebe7347fa238eac7c3ded90d4932d36dc1ec80 Mon Sep 17 00:00:00 2001 From: Bill Kendrick Date: Sat, 14 Sep 2019 10:14:45 -0700 Subject: [PATCH 09/20] Rename Jigsaw* Starters to jigsaw* Using lowercase filenames in these parts, for consistency. (Err, except "Makefile") --- starters/{Jigsaw_3x3.png => jigsaw_3x3.png} | Bin starters/{Jigsaw_5x5.png => jigsaw_5x5.png} | Bin 2 files changed, 0 insertions(+), 0 deletions(-) rename starters/{Jigsaw_3x3.png => jigsaw_3x3.png} (100%) rename starters/{Jigsaw_5x5.png => jigsaw_5x5.png} (100%) diff --git a/starters/Jigsaw_3x3.png b/starters/jigsaw_3x3.png similarity index 100% rename from starters/Jigsaw_3x3.png rename to starters/jigsaw_3x3.png diff --git a/starters/Jigsaw_5x5.png b/starters/jigsaw_5x5.png similarity index 100% rename from starters/Jigsaw_5x5.png rename to starters/jigsaw_5x5.png From dd8b60a6fb0fa5f69be0211b95fd2e78971156bc Mon Sep 17 00:00:00 2001 From: Bill Kendrick Date: Sat, 14 Sep 2019 10:15:45 -0700 Subject: [PATCH 10/20] Adding '.thumbs' dirs to .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 3f829341b..e555a90e7 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ TuxPaint.dmg *.dylib *.dylib.dSYM .DS_Store +*.thumbs From 98a1002356805a5e342a95f06e5c1e352e0e9ab0 Mon Sep 17 00:00:00 2001 From: Bill Kendrick Date: Sat, 14 Sep 2019 10:21:44 -0700 Subject: [PATCH 11/20] Resaved some starters to make `convert` happy --- starters/frame_gold.png | Bin 15112 -> 48403 bytes starters/frame_picture.png | Bin 3937 -> 5340 bytes starters/frame_television.png | Bin 10109 -> 18815 bytes starters/jigsaw_3x3.png | Bin 3578 -> 6279 bytes starters/jigsaw_5x5.png | Bin 3177 -> 7727 bytes starters/rocket.png | Bin 1968 -> 2693 bytes starters/shipwreck.png | Bin 27658 -> 35930 bytes 7 files changed, 0 insertions(+), 0 deletions(-) diff --git a/starters/frame_gold.png b/starters/frame_gold.png index 7ae3d00bd8bdd5c9ea5643769d4f38748addeb48..e1f267103ab54f3e5961a41f2ade13dcb7a5b9cd 100644 GIT binary patch literal 48403 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%0D>h-r)X@#f#>&+vrjIJv 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 AzW@LL diff --git a/starters/frame_picture.png b/starters/frame_picture.png index 305d0f7b703d30eaa23e63e89402249cf927dd07..1bb262daf096a8175b31a075fe947e84ddbaa394 100644 GIT binary patch literal 5340 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 literal 3937 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 YDI4|?AHIYD{s)0BoHNE{VF~2_0?i?sSO5S3 diff --git a/starters/frame_television.png b/starters/frame_television.png index 03a56cc1e11afa18ec1d910d718b46f0b879c975..e0d4bb1dd78356817a05673ebc893e48eb7f7e5a 100644 GIT binary patch literal 18815 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 V7ie`JxOV^m002ovPDHLkV1kN#Q*{6U literal 10109 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 diff --git a/starters/jigsaw_3x3.png b/starters/jigsaw_3x3.png index 4313ed8a14423c91fe7976f2cc46c701edbe255e..51b08da0322dc484c33dd48b60055fa1bce17d47 100644 GIT binary patch literal 6279 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

$=a?eU7$LgjECxf~0oa zSsj2NVIl=gxTSXH(2>Ahz85Z>^a%t%A!wKX$>V`1y@(-a0#6fdcRTF!(myE% z#-;DJvOE;}b+Ye^zm`$4_5MrBOH1ih8i$_V)LFYlRAen>arn-hv$njcv|m)Su7%%S zgb&9OP|;OG$#hF32m1W*N-Yid93GL0!U;h-vd~94ieo^(Q?y>R$|gjJ06f9ty6PO1 zP=#jyGNCsb_sBXB7?YX-8!u%P@5a(WgnzSMlUnBrR42Gdf?PY znRE?Xb+M)kJZ6W)!}sb7qkkK;x+nZZ-AOZBP8L`Iw|cF)bMH+4%%BT5gapnOzoFs2 z=rxW~KEGIYXeK?+X09q;&ny|N(7Q3Z$Gk#re=B2pH1m`pOnCTnxsr^%1p0}SZq(?# zawd;V(2JSoKJ52(fO}|X?$jdfaZWjpkE5Z3GU+U1*#Rs+Uw%dRLjcYoeMY-s=K-7-m7|Guo zW5GS1#hBamj~2yG=w_R8PXyOZFrA_gncBG&CjUf}`YIEIlLtz+fMZuDSG{z=o#pbL z!QXEj3-XB%^r)8@ zs&FMkV8QPW*c}A1;PAVP`eA9uCX{D5Z8|Y@ZN9Fo{f;w~rJl6}7_p4bcwMSqn|z<$ zq_MsHM$x;jtGerak7fO;WvoWOCvMveAUsTQl?weF9$$RB(A{9cx)H z@*$^_+1Nj3`=;Pv!Ol41dg|b9~snVjv4W7V9EXLQa`Dw zk&cCsABC0rDP#WSgVdnTjlqUGv-=}ek?GQr*Uym!P6;_@F)qP&sNp>{Z+5TIb0Bka zirqw;n_^SY$K*yec#1#S>6<>jc++*>_%CT?F&IfyiN_w(1`hF28 zF^&fI5cpHk{B}yCW%p{?bWS{#x<0YWvd0IkXp~7BXKcn7FDy1Q`224}*UYy`quk6d zw7J5139m%{F8zqVvz362r_7E8PE3c)b)BEb&VEh8%ua4ix}fAjETK#3UXLZAgya*c zb5lKRx#s)njCYqwDEILzRLVe>(MY&=DcU&N-cQ8Y20HA;oAb4g_Bz2UXAK)g)KE6U z6;A+2JnR$mu+a@1833o_(KC3Lq?W^a=d(QX0#KXDa z-r>h9CTeRaYVi0oSXgrCcHt7?pk&R??vnNe&bf;b>qW@j3rdwJ-`}mr%mln5Tong8 z?&5s!c!LnRVW#Q*T;Y<0*2=JNJ(dtSx-RGVD(*xmY9j!VC~Jb2#-*-m+k=JWtR@ZE zxrZ)BfG>r+#QIv{N0fEy16?E{swvSceFK6uaRJcMgKEBCK z0=(wF29=^8^skZlM!J4rBq$p1CXYuZxqlS~VFT0VziUhXI-k=*y#p2nmFc{4?TkUm z?K*5MPS;Jd$Gk_12x6E=KGf_`k-JIo-@lrzU$}CwVf)z2<_T?U14U#2XCbz_9*G94 zH@|8+gFO>~N53q1sxv77l;*W%lI>uuE>>xT0C@j{$Nfg%9b5jrUpo`Js3lki!yN$V z#Uk!?LxRHMI3T_CzfYnR%b2__x$XM=am;D%(Kx3KOTq(-Gj!e4z?TjQk-Wi>cm9)n zU>WSctBGMT^Vbi(h;3X@rtmoyD08#SSI3X(VCq3)5K}Qexrw@?=AUr-L9m6aOY-lj zZx!vbt~?sA5o~de`r-I%0vN_{1od>P*m3%I)yv{xc1>7ZAtmhLDeh)#ftRyygx(2d zfJI{EF}?y^Zf@KG%?RR?XGg#$2`VoY0yP+bl4=xB_&*`)H<}4onOck;KE~1OvlP_j z=B~e|7w9Vi5ppGdnUGVEfd0}=F^ec_D@|T`&@4<4_=n@eVRUX&Z_}9D8h}ohKQ)!$ zN$x9m2S1i|Zos@qv7D2W+Lf|vy$E#e<5U3g={S>?oVykBVB#(Ym%C^}MG?_vF7_B_ z187faX;4>$HkFaTdEy}a<^k7Qo-njsKPB{hxzngBl<$W-nA>MC1%)}PEz^yK@Gm?PSM zywI9T0=0^Jw1XOfCA`uI<%(ZkXkL-n+4Gaz0YcP132J=fviL`*@0~p#H~TqY=#6IEaVB=sKC#l5 zBAU@fZt#@rSl=&ieb+!Y4R4<2wylp;)&^1Uc|v}tU)!VDgVKAayLR}e ziXZ0dGt~e|UuN9z+N=SSA{7t!Qe>`2EB?Gn9b!?Rs*%vcw&>6lD_ys-p|)dtRj{%c zv~2We>GZGSd(TXzDK_m4iiCQA{9cs1_?gKepH+`K>g>Vx)=a@F3|~_48pSv+rvFT+ zl}2sQx@=?xCy#7HL8&*c4#*7^vQbxbdoy4~z8zh^B=u~pQ|RU&4B%lvQvY&!s_kbB z*V4dI>{jBdXmy4zYhfHfZS+mA=@5rP`~QWF3qR+JE1n< zb?s)lcoPKgkk^YfW^kzIjTlf>0zcEcG8_d5N|)Z0(4d}9G7aJNZU>d9s7P2)jwUz@ z>a{OsIXf4J3cqPJ}&I5x~eW17a1APsK4izPrn@CqZg^i^J|-qaH**_#FmB(M=GSFrUs5355l)-taEHzT0oDXdl1+cQbcl#2@D9=k;p zt_ZJ%qkvbY7AS;C8e_H^T&KHGTjWx|I5@&^Y3>ceS0`m!8FT}Iq0*APNHObcGVW;Q` z`P%X9anYh&I*dl!5Q{4!txI{s8e$>a<}Dy`Ap{=bjO5WgO#b zy0wO%z?BhQ%)p2GwrZs9L z1X2=|B~YDWVnd^YVEDU^CWbcsBDjhJ0%J8V%Pb}ExSGfn1d-r;ft?9Eo-ptWn$HK= z^t|_Y`N3?x_0azF8!N-V6Mo06*piL%NC=@<*n)TO0$9pbB=k zxDBm#|6h~r1!pLDI-&FmR57P)WU*?u17>b*k~CMuVWbZzm71f$4r z8m9PzD||Ihur`BrepE4p;qLJ@K5mQ1$n=SEWD-+CWtB+Dk^JhT;sMO34QXh&v?cC+e%@##P)Ej%Z`flG1NlNbcV1`scYy&e;HPCn`V-ybJ|=fYZn8 z(Tk;slsUbGXIYSS#!eE0pkLS5R3tBU7!)!15)bb9KKk59`9|PA(kwSk0^O2mv{BJ6 zfo}3EjW?h*CieD@Cj_l)6WdLdJZ^g4*M6gnhwGhIX1V5!|T_d*tu z4#e6nq=D5pTV>8_9?bl)tT>16JKLAZ_FlK&e$$zweHMW7sccVf+_>g~Pi@!JloI}3 zleUI6@*7?|eH(jCW;IbraFybX#nzrN-`Z6bu@nX)6L;12@42Hl7cic0vv_pM+_&QT zgB&_iP0p#P3H4$(MiE&}jMK2w(%h#N-{|4qixnFdS_{{uP@5QGaM9skt-@V6#W@q@jm0mi4r)$ia| z)E5rNZ#t!!F)BF$Ch7o9?I47d%fb@C+S4v|nbzcGJNNCuJ`1~`o+WpG> zS7ShL@Z6)7g2oG=Z-+@cPmMnK@ss`l5Q$p@zU8>9O>2*)l@$WcT;p~9AHDMO@q`}O znT|7Y`sC}r+x4z2kGC2yc|hI{@&0)?EF`k};zS>iVE4{Phm)?-GqW(U@@`Km;J;DD zc(!-la6?u0)mAX&3y#N`ZQZ*BNUqpl8&g~kZgx0=g~={KLJC~h*1Oz3_QtkJfd4x& z8b4bjg;6OPfldKL7nBjurBgxyVcyW6)PHx(I<{XFgH+JhDGRx(()l=SgnD5qtpIbfFxr8denx6?7i@h9@*p4 z9Mlmc3|I~*ax45lKGVe%iLR`+f9Ls?)vGZqzZo7$mcj@_SyV@~xFHO3f-jz=t`bXdxC${MsoX7r(n-0;IusFgLOEpg=ZZ_gQA&E&d}~uqfz7r*HZV=?BY% z|3~KZ<9~%(1pS$~cgX~E8a+Jl@$C|siz2=ROmqd{Y74k`UmOct0=om7o|`W1Fgt0o zmjYr93S@rrQdwKNR$VjA5975qWIsn*Kqb!2ep$G5 zPI3pp+?uYcIq_>Eae(+OP%fb(5u(%uir45FJ(z8@8JI{*PBju9oIJ5CyD^1s$dl)t zlk2}=4S(6nH}PVw0OYqkt|CQI@%cYvEoT#QF~ymxQs32TE*?DNGsS(H)Lzutl-FZ0QmfucqN z(!x*xAdz1tcHU?*dofCB$aewE%BY*vP|>+T!h7D%A1<84I$5shkgpejZDCv6Cqo9H znZ;fQ%U5396@BlQ{#F-Sbqf7CfchdCJaApF1nxI5Qjvk#E}HOC4%W%C-}Q%|Dl$h4 z3}<$`J!Im5pC@+ET>m96EcHGOkClRX2g4(PDd``endcLgSe~s)l;fS zNXT@L_j0p?Tw7l)b7N^>+@0C{Jbj{K-ExP^n}3Z@#L%0V@Tf6pVR>_?&6EUQCOhOQ zL?YRAva3F?ptt!Lz)jz!LQgf_+11z^q6+rSY?Naf^nIO*%^qet@1-Xr@!mINoSqvy zxsEFO@xn%?S{c#%K|}uKsv~m?pEFdlH;S5??S!f)!CMe8D zl}V^C?PPIWw$5-u2OF(EpFDn()N`SLiu@5NZXCEE0;iB>O4rjxogkJNFBYd9tnfs2 zL=EA^nS)W_@(4cB{UVlSFE!fhj(2uS2!oR@k1Pz-R4I zy-9)>8To0I0>~PHMh>pa=6$gyV8ZA}5nLcAh7w^N7-=+`zQEyYqSt2q@aYU z^&`1t_I=yQu&r+VkbaxRSfo3PP8gckKBtzpDnSFdX5W}k(P~Tft|q*G`z{8ouxEu` z_|?|CvZrceb-{B5i|BedC*W7#@Wrt!Rh$bV*lMmsMm(#+uc7I7`gqQ))`$!{el?!G zZqr3-;p$Mt65aQTjH=NpXA5gIhGYQnIX^tm4=AT)^h2^5%oHj`fdYH;IJ*eM#BFRSHnECeDoI9`w?`!et&QQmG*tyt!hU( zc6=QsdjP&9xtRkFg2#ykg2q@80|&lVv4pTKeeML^JQ^O}Kq3cSbxbAL}Zap7A2OC=6zR!@iv=>W(P#1i`kXdj<>BnqcnIV*&DUaL8AOH=S6!%;R0 z_k7}u@>>lM^fY6^_^3W27E>Ud+qMkO$6zjCfu3&$vAIXyw9!WwYc$>?d(f8wX!{4z z{(Je|1N)~HhH1_R+&$Z|RQ`#}`0)FKqW#{_hTv4i;%fDV(tk+(ZfvT?&@5oV25O!b zfP0_c)bIpHuZU|5gZcZ24vMC7TjQ|k;g&s-8I{4t^rtysw(E1mz$I*k)bZZ(rjMd~ RH3a_bwsy37w$mf#{{W!uA5#DT literal 3177 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 literal 1968 zcmd5+X;4#F6n+UI2^t_ktP!z*QUMi-3jtXo3Sp^;h%Dl;1gJ7p_T5pIR2x)4Q3s^R zGJq9IBE$_vQ+Sd{Er=BmND!hD2?4?;21FqAMjXZI&;DrdyfcVGMp=ah;4s?X z*?yNt5@MuxB&MB8fM3g$OWN`^wRz-@G^5ZGo9Wa<^60B#lHjaB$FF(v1U9%JWwu2i z+vK_&@F~_fWPL8l_oi)+@q!i>hho5ZA{Iy2C*g@mJDMH|g$CgtdBg8i?EA1MMSP3R z*=sA2t6WPhjkCAI{sUPg9Q%z11CeXqK!V#Gi4nBWb-3hShj|xc9NnZW^XEii2g81f!qW?Zi>s@EbeSg`$W{Wj6D z4Ky3o=>MhB643PoN%6^0o$%?KA{(m>iUST9IvtD#sYKUjBbJV(F>T4jR-+b&#(-^U z*f2a88foeLQ|OB&8cQz zJU?YCGGTRjA)RVm6(|+Dg%!kOI^R3`!sOg}dM%?>=*9xn(yJu~8LN7$q~aWiPTg)ElLbJt+T$Mu zFCLESCOUbM3BxQ{x*^QyT75)bj6+=lI4tQ>lddP%83#Z?qPYixdIEo5W@8;zcy_p7 zFt|TFJpL6tmy4!{-$~F)j3{dlm#!tzJ?km?Ez@x|mC-6Lv}i5W$TDu^4X&(zZq|o4 zX=+TOo0SX3T3?TpAGVpPop6Db)LF-3iX74dD0Astk6aj4BQtd^1Ha@U%>F^!9`KrtWSoi_}Ah`?g zCMr^}EN7Z&Dfd!5?}M}bTvVLp0_b6AU#)SB#?b8^ SW}>~VBJE6dwXfPu`{{2Z*w>H% diff --git a/starters/shipwreck.png b/starters/shipwreck.png index 9ccf9bde78f56b7a9b53a1e25a40bc6b037beeb3..a4bfca695ab4f60db6733f1c9302a07cb359fa8e 100644 GIT binary patch literal 35930 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 z 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 Date: Sat, 14 Sep 2019 10:36:36 -0700 Subject: [PATCH 12/20] Generating thumbnails for Template images Also generating and installing thumbnails of Template images, thus getting "New" dialog to open extremely quickly. (Pretty much "instantaneously" on my 8 year old laptop with Intel i3 @ ~2GHz and Intel 320-series SSD (214 MB/s).) --- Makefile | 45 +++++++++++++++++++++++++++++++++++++++++---- docs/CHANGES.txt | 2 +- 2 files changed, 42 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 344e354e0..54b12f75c 100644 --- a/Makefile +++ b/Makefile @@ -276,6 +276,8 @@ DEBUG_FLAGS:= MOUSE_CFLAGS:=-Isrc/$(MOUSEDIR) -D$(CURSOR_SHAPES)_CURSOR_SHAPES +CONVERT_OPTS:=-alpha Background -alpha Off +depth -resize !132x80 -background white -interlace none + .SUFFIXES: ############################################################################# @@ -285,7 +287,7 @@ MOUSE_CFLAGS:=-Isrc/$(MOUSEDIR) -D$(CURSOR_SHAPES)_CURSOR_SHAPES # "make" with no arguments builds the program and man page from sources: # .PHONY: all -all: tuxpaint translations magic-plugins tp-magic-config thumb-starters +all: tuxpaint translations magic-plugins tp-magic-config thumb-starters thumb-templates @echo @echo "--------------------------------------------------------------" @echo @@ -473,8 +475,9 @@ install: install-bin install-data install-man install-doc \ install-icon install-gettext install-im install-importscript \ install-default-config install-example-stamps \ install-example-starters install-example-templates \ + install-thumb-starters install-thumb-templates \ install-bash-completion \ - install-osk install-thumb-starters \ + install-osk \ $(ARCH_INSTALL) @echo @echo "--------------------------------------------------------------" @@ -688,14 +691,14 @@ INSTALLED_THUMB_STARTERS:=$(patsubst %,$(DATA_PREFIX)/%,$(THUMB_STARTERS)) STARTER_NAME=$(or $(wildcard $(subst starters/.thumbs,starters,$(@:-t.png=.svg))),\ $(wildcard $(subst starters/.thumbs,starters,$(@:-t.png=.png))),\ + $(wildcard $(subst starters/.thumbs,starters,$(@:-t.png=.jpg))),\ $(wildcard $(subst starters/.thumbs,starters,$(@:-t.png=.jpeg)))) STARTER_BACK_NAME=$(or $(wildcard $(subst starters/.thumbs,starters,$(@:-t.png=-back.svg))),\ $(wildcard $(subst starters/.thumbs,starters,$(@:-t.png=-back.png))),\ + $(wildcard $(subst starters/.thumbs,starters,$(@:-t.png=-back.jpg))),\ $(wildcard $(subst starters/.thumbs,starters,$(@:-t.png=-back.jpeg)))) -CONVERT_OPTS:=-alpha Background -alpha Off -gamma 0.454545 +depth -resize !132x80 -background white -interlace none - $(THUMB_STARTERS): @echo -n "." @mkdir -p starters/.thumbs @@ -748,6 +751,40 @@ echo-install-example-templates: .PHONY: install-example-templates install-example-templates: echo-install-example-templates install-example-template-dirs $(INSTALLED_TEMPLATES) +THUMB_TEMPLATES:=$(sort $(patsubst templates%, templates/.thumbs%-t.png, $(basename $(subst -back.,.,$(TEMPLATES))))) +INSTALLED_THUMB_TEMPLATES:=$(patsubst %,$(DATA_PREFIX)/%,$(THUMB_TEMPLATES)) + +TEMPLATE_NAME=$(or $(wildcard $(subst templates/.thumbs,templates,$(@:-t.png=.svg))),\ + $(wildcard $(subst templates/.thumbs,templates,$(@:-t.png=.png))),\ + $(wildcard $(subst templates/.thumbs,templates,$(@:-t.png=.jpg))),\ + $(wildcard $(subst templates/.thumbs,templates,$(@:-t.png=.jpeg)))) + +$(THUMB_TEMPLATES): + @echo -n "." + @mkdir -p templates/.thumbs + @convert $(CONVERT_OPTS) $(TEMPLATE_NAME) $@ ; \ + +$(INSTALLED_THUMB_TEMPLATES): $(DATA_PREFIX)/%: % + @install -D -m 644 $< $@ + +.PHONY: echo-thumb-templates +echo-thumb-templates: + @echo + @echo "...Generating thumbnails for templates..." + +# Create thumbnails for templates +.PHONY: thumb-templates +thumb-templates: echo-thumb-templates $(THUMB_TEMPLATES) + +.PHONY: echo-install-thumb-templates +echo-install-thumb-templates: + @echo + @echo "...Installing thumbnails for templates..." + +# Install thumb templates +.PHONY: install-thumb-templates +install-thumb-templates: echo-install-thumb-templates $(INSTALLED_THUMB_TEMPLATES) + # Install a launcher icon for the Nokia 770. .PHONY: install-nokia770 diff --git a/docs/CHANGES.txt b/docs/CHANGES.txt index b125790a8..15b16e475 100644 --- a/docs/CHANGES.txt +++ b/docs/CHANGES.txt @@ -55,7 +55,7 @@ $Id$ * Updated most parts of the code that were throwing warnings in GCC. - * Build process generates thumbnails of included Starter images. + * Build process generates thumbnails of included Starters and Templates. When installed, this greatly increases the speed of the "New" dialog. * Documentation updates From 4c3ad460ee524d64cfde8f9d7b031e0d7ecc1412 Mon Sep 17 00:00:00 2001 From: Bill Kendrick Date: Sat, 14 Sep 2019 10:52:59 -0700 Subject: [PATCH 13/20] "New" dialog: fix bad dir: Starter/Template thumbs Made sure "New" dialog created correct thumbnail subdirectories for personal Starters & Templates (e.g., ~/.tuxpaint/starters/thumbs/) --- docs/CHANGES.txt | 3 +++ src/tuxpaint.c | 9 +++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/docs/CHANGES.txt b/docs/CHANGES.txt index 15b16e475..23ca81f08 100644 --- a/docs/CHANGES.txt +++ b/docs/CHANGES.txt @@ -37,6 +37,9 @@ $Id$ or configure Tux Paint to always bring up the dialog upon print. Mark K. Kim + * Made sure "New" dialog created correct thumbnail subdirectories + for personal Starters & Templates (e.g., ~/.tuxpaint/starters/thumbs/) + * Other Improvements ------------------ * Added ability to move color palette options to the end of diff --git a/src/tuxpaint.c b/src/tuxpaint.c index 75f338763..83c327c62 100644 --- a/src/tuxpaint.c +++ b/src/tuxpaint.c @@ -18901,11 +18901,12 @@ static int do_new_dialog(void) { /* No thumbnail - load original: */ - /* Make sure we have a ~/.tuxpaint/saved directory: */ - if (make_directory("saved", "Can't create user data directory")) + /* Make sure we have a ~/.tuxpaint/[starters|templates] directory: */ + if (make_directory(dirname[d_places[num_files]], "Can't create user data directory")) { - /* (Make sure we have a .../saved/.thumbs/ directory:) */ - make_directory("saved/.thumbs", "Can't create user data thumbnail directory"); + /* (Make sure we have a .../[starters|templates]/.thumbs/ directory:) */ + snprintf(fname, sizeof(fname), "%s/.thumbs", dirname[d_places[num_files]]); + make_directory(fname, "Can't create user data thumbnail directory"); } img = NULL; From 8f9ea4cb692fcb747e48e0182a0c5ba2d188fb7d Mon Sep 17 00:00:00 2001 From: Bill Kendrick Date: Sat, 14 Sep 2019 10:55:54 -0700 Subject: [PATCH 14/20] Remove starter/color/etc. debug from New dialog Some printf() debugging belonged inside an #ifdef DEBUG... --- src/tuxpaint.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tuxpaint.c b/src/tuxpaint.c index 83c327c62..8b9724dc1 100644 --- a/src/tuxpaint.c +++ b/src/tuxpaint.c @@ -19058,9 +19058,9 @@ static int do_new_dialog(void) #ifdef DEBUG printf("%d files and colors were found!\n", num_files); -#endif printf("first_color = %d\nfirst_starter = %d\nfirst_template = %d\nnum_files = %d\n\n", first_color, first_starter, first_template, num_files); +#endif /* Let user choose a color or image: */ From a54dd570b409cfd16b44d7149e3c0c9b7a8d6712 Mon Sep 17 00:00:00 2001 From: Bill Kendrick Date: Sat, 14 Sep 2019 11:16:46 -0700 Subject: [PATCH 15/20] Make sure Fill uses undo (but also intelligently) "Fill", as a new main-toolbar tool, was not recording snapshots of the image for the "Undo" tool. Mended. However, also updated the tool so that it doesn't _bother_ recording into the undo buffer if the fill action is a no-op (e.g., clicking the same spot a second time, or otherwise attempting to fill an area with a color that's identical to what's already on the canvas). --- docs/CHANGES.txt | 5 ++++- src/fill.c | 12 +++++++++++- src/fill.h | 3 ++- src/tuxpaint.c | 39 +++++++++++++++++++++++++-------------- 4 files changed, 42 insertions(+), 17 deletions(-) diff --git a/docs/CHANGES.txt b/docs/CHANGES.txt index 23ca81f08..b54407ede 100644 --- a/docs/CHANGES.txt +++ b/docs/CHANGES.txt @@ -13,7 +13,10 @@ $Id$ --------- * Fill Not actually a new tool, but promoted from a "Magic" tool - to a full-fledge tool in the "Tools" bar. + to a full-fledge tool in the "Tools" bar. However, also + avoids filling "Undo" buffer with snapshots of the drawing, + if the fill does nothing (e.g., if you click the same spot + a second time). * Ports & Building ---------------- diff --git a/src/fill.c b/src/fill.c index 2fce7d215..f33f0516b 100644 --- a/src/fill.c +++ b/src/fill.c @@ -27,7 +27,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA (See COPYING.txt) - Last updated: September 12, 2019 + Last updated: September 14, 2019 $Id$ */ @@ -78,6 +78,16 @@ int colors_close(SDL_Surface * canvas, Uint32 c1, Uint32 c2) } +int would_flood_fill(SDL_Surface * canvas, int x, int y, Uint32 cur_colr, Uint32 old_colr) +{ + if (cur_colr == old_colr || colors_close(canvas, cur_colr, old_colr)) + { + return 0; + } else { + return 1; + } +} + void do_flood_fill(SDL_Surface * canvas, int x, int y, Uint32 cur_colr, Uint32 old_colr, int * x1, int * y1, int * x2, int * y2) { int fillL, fillR, i, in_line; diff --git a/src/fill.h b/src/fill.h index 2e37a09aa..9677bc459 100644 --- a/src/fill.h +++ b/src/fill.h @@ -27,11 +27,12 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA (See COPYING.txt) - Last updated: September 12, 2019 + Last updated: September 14, 2019 $Id$ */ #include "SDL.h" +int would_flood_fill(SDL_Surface * canvas, int x, int y, Uint32 cur_colr, Uint32 old_colr); void do_flood_fill(SDL_Surface * canvas, int x, int y, Uint32 cur_colr, Uint32 old_colr, int * x1, int * y1, int * x2, int * y2); diff --git a/src/tuxpaint.c b/src/tuxpaint.c index 8b9724dc1..1f2021e4d 100644 --- a/src/tuxpaint.c +++ b/src/tuxpaint.c @@ -4384,24 +4384,35 @@ static void mainloop(void) if (mouseaccessibility) emulate_button_pressed = !emulate_button_pressed; } - else if (cur_tool == TOOL_FILL) + else if (cur_tool == TOOL_FILL) { - int x1, y1, x2, y2; + Uint32 draw_color, canv_color; /* Fill */ - x1 = x2 = old_x; - y1 = y2 = old_y; - do_flood_fill(canvas, old_x, old_y, - SDL_MapRGB(canvas->format, - color_hexes[cur_color][0], - color_hexes[cur_color][1], - color_hexes[cur_color][2]), - getpixels[canvas->format->BytesPerPixel] (canvas, old_x, old_y), - &x1, &y1, &x2, &y2); + draw_color = SDL_MapRGB(canvas->format, + color_hexes[cur_color][0], + color_hexes[cur_color][1], + color_hexes[cur_color][2]); + canv_color = getpixels[canvas->format->BytesPerPixel] (canvas, old_x, old_y); - update_canvas(x1, y1, x2, y2); - } + if (would_flood_fill(canvas, old_x, old_y, draw_color, canv_color)) + { + /* We only bother recording an undo buffer + (which may kill our redos) if we're about + to actually change the picture */ + int x1, y1, x2, y2; + + rec_undo_buffer(); + + x1 = x2 = old_x; + y1 = y2 = old_y; + + do_flood_fill(canvas, old_x, old_y, draw_color, canv_color, &x1, &y1, &x2, &y2); + + update_canvas(x1, y1, x2, y2); + } + } else if (cur_tool == TOOL_TEXT || cur_tool == TOOL_LABEL) { /* Text and Label Tools! */ @@ -18778,7 +18789,7 @@ static int do_new_dialog(void) || strcasestr(f->d_name, ".bmp") != NULL /* Support for KPX (Kid Pix templates; just a JPEG with resource fork header): */ || strcasestr(f->d_name, ".kpx") != NULL - || strcasestr(f->d_name, ".jpg") != NULL + || strcasestr(f->d_name, ".jpg") != NULL #ifndef NOSVG || strcasestr(f->d_name, ".svg") != NULL #endif From 41847ae4af3380d8fcb0bc9de18fdb92e5118086 Mon Sep 17 00:00:00 2001 From: Bill Kendrick Date: Sat, 14 Sep 2019 12:00:39 -0700 Subject: [PATCH 16/20] FIXME note in Makefile: starter/template thumbs... The thumbnails for starters & templates are NOT being re-generated when the source images are modified -- only when the thumbnail is missing. Needs an update to the target's prerequisites (but I'm very rusty with this level of Makefile magic). Also, update some Starter source images so they work better with flood fill (Bald Eagle, World map, Gecko). --- Makefile | 2 ++ docs/CHANGES.txt | 3 +++ starters/bald_eagle.svg | 24 ++++++++++++++---------- starters/gecko.svg | 24 ++++++++++++++---------- starters/worldmap.png | Bin 34289 -> 47948 bytes 5 files changed, 33 insertions(+), 20 deletions(-) diff --git a/Makefile b/Makefile index 54b12f75c..32c843877 100644 --- a/Makefile +++ b/Makefile @@ -699,6 +699,7 @@ STARTER_BACK_NAME=$(or $(wildcard $(subst starters/.thumbs,starters,$(@:-t.png=- $(wildcard $(subst starters/.thumbs,starters,$(@:-t.png=-back.jpg))),\ $(wildcard $(subst starters/.thumbs,starters,$(@:-t.png=-back.jpeg)))) +# FIXME: Need to be able to update a thumbnail if the source image is modified -bjk 2019.09.14 $(THUMB_STARTERS): @echo -n "." @mkdir -p starters/.thumbs @@ -759,6 +760,7 @@ TEMPLATE_NAME=$(or $(wildcard $(subst templates/.thumbs,templates,$(@:-t.png=.sv $(wildcard $(subst templates/.thumbs,templates,$(@:-t.png=.jpg))),\ $(wildcard $(subst templates/.thumbs,templates,$(@:-t.png=.jpeg)))) +# FIXME: Need to be able to update a thumbnail if the source image is modified -bjk 2019.09.14 $(THUMB_TEMPLATES): @echo -n "." @mkdir -p templates/.thumbs diff --git a/docs/CHANGES.txt b/docs/CHANGES.txt index b54407ede..ff1f27099 100644 --- a/docs/CHANGES.txt +++ b/docs/CHANGES.txt @@ -64,6 +64,9 @@ $Id$ * Build process generates thumbnails of included Starters and Templates. When installed, this greatly increases the speed of the "New" dialog. + * Updated some Starter source images so they work better with + flood fill (Bald Eagle, World map, Gecko). + * Documentation updates --------------------- * Mended link to MinGW/MSYS instructions at John Popplewell's website. diff --git a/starters/bald_eagle.svg b/starters/bald_eagle.svg index f38284a9e..d7586a567 100644 --- a/starters/bald_eagle.svg +++ b/starters/bald_eagle.svg @@ -1,5 +1,6 @@ + + inkscape:window-y="0" + inkscape:current-layer="svg2282" + inkscape:window-maximized="0" /> + id="path2291" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccscssccscccsccsssccccccccccsccccsccccsccccscsccsscccccccscscsccccscsccccccccscscscsccccssscscccssccssccsccccccccscccccccscscsssscccssccccccccccssccssccccccscscccccccscccccsscscscccccssccccssccssccscccccsccccsccsccsccccsccscccccscsscscccccsscccccscsscccssscscsccsscccscscccscssscccsccsccscccscccccssssccccccccccscccscccsssscccscccccccsscscsccsssccscccccscccccscccccsssccccccccsscsccccccccccccsssscccsssscccsscsccccccsccsccccscccsscssccsscccsccsccccssccccscscsccccsccccccccssccsscsccssccccsscccccccssscccsssccccsccccscsscccccccccccccscccscscssccscccsscsssccscccccccccccsccscccsccsccccsccccscscsccscssscccscccsccccccscsccscccscccccccssccsscccscsscssscccccccccccccscsssssssssscsssccscccsccccccccscccscccscsscsccssssssscssccssccccccccccscsccccccscccsccscscssscscccccscccccccsscccsccscccsscsccccccccscsccccscsccccccssscssccscssccscccssccscccssssccsscccccscsscccsccssccccscccccsccccccccscccccssscsccccsccscscccsccccsccsscccccscsssscccccscssscscsssscsccsccssssscccsccccccccccccccccccsccscssccccccscsscsccccccccccccccsscscccscssssccccscccccssccccsssscscscccccccccccccsscccssccccccccccccccscccssscscccccssccccssccsssccccccccccscccscccccscscscccscscscscsccccccscsccccccccssccccccccsscsscccccsscsccscccccsssccscscccccccccccssccccssccccscsssssccssccccccccscscscccscscsscssccccccscsccscsscccccccsscccscscccssccccsccccccscscsccccsccccscccccccccsscsccssccccccccsccccscssscccccccscccccssccssccsccsscccccscsccsccssssscccsccscsssssssssssccccsccssccscccccccssccssscsscssccsccccccscccsccsssccssscccsssscsccscsccccccssscsscccccccssccccssccsscccccccccscsccssccscccccscscccscscscssscsscccssccccscccccsscccssscssccsccsccccccsccccccccsccsscccsssccscccscccsccscccccccsccccssscccscsscsscscsccsscssccssscssscssscccsscsscccscscscccscccsccccscccsccscscccscsccssssscccccscsccssccscccccscccssssscsccscccccsscsscscsccccccccccccccccscccccscsccscsssccccccscccccccscsccssccscccscssscccccccscccsscccccscccscccccccccsccsssscsssccccccscccccccsccscccccccscscscsssscsscssscscsccssccssccscccscsscssccccsccscscssssscscccsssssssssscccccccscccccccscccccscccssscsscccssscscccccsscsccscccsccsscccscsccsccsssccccccccccscsccccssssccccscsscsscccccscccscccsssccccccccccccscccssscssccsccccsccccscssscssscsccccccccccsccccsscssccsscsssccssscccscsccccscsscccccccsccccccsscsccccccccccsccssccccccssccscscscccccscsscccscsccccccccccscccsscsscscccssccccccccscsccccccsccccscccccsccscscccccscccssccccccscccccccsccccccsccccccccccccccscscccscccccsccccsccscsccssssssssssssssssscssccsccsssssssssscccscssssscsscsssssscssssssssscssscsscccscccscscssccscscccscscsccscscsscsssssssssssscscsccscssssssscscssscscccccssssssccscccsccccccscsccscccccscccccccccccscssssccscssscscscsssscscccccsccccsccscccccsccsccsccccccccscccccccccccssscsccccscscscccccccsscssccssssccsssccccccssccsccsssccssccccccscsccssccscccsscccscccssscscccscscsscccsssccssscssscscccsscccsccsccccccccccscscc" /> diff --git a/starters/gecko.svg b/starters/gecko.svg index 7557fe96e..7ccc3ec72 100644 --- a/starters/gecko.svg +++ b/starters/gecko.svg @@ -1,5 +1,6 @@ + + inkscape:window-y="0" + inkscape:current-layer="svg2279" + inkscape:window-maximized="0" /> + id="path2288" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccsscscccccssscsscscccssscccccccccccsccccccssscsccccccscsssccccsccccccscsssccccccsscccsssscccccccsccccccscccsccscscsscccscssscsssscsscscccscccsscscccsccccscsscccscscscscsccscccccscscsccsscsscsscccccccccccccccccscsscscccccccssccccccccssccscccsscsccccsccssccccccscccccsccsccccsccscccsccsccccccccscsccccccccccccccscccccccccscscccscsscssscscccsssscscccccccscccscssccccsccccccccccsscscccsssssscccccccccccccccscccscsccccccsccccccscccccscccsccccccsscccccccccccscsccccscscccccsscccscccsccccscccccsscsscscscscsccccscsccsccccsscccccccsssccccsccsssccsccccscscscsccccsccscsccssccccccccscscsssccccsccccccssccscccccscccccccccccsscsccscccccccscccccssssssscsccssccsccscccccsccscccssscccccccsccscccccscscsccscscsccscsscccscssscssccsccccscscsccccccccsccssccccccscccsccccccscccccscccccscsccccscsssccccccccsccccscccccscccsscsccsccsscsssscscssscccccsccscccscccccscccssscscccccccccccscccccccscsccccscccccccsccccssccsccccccscccccscccccsccscccscsscsccccccscccccccsscssccccccsccccccscccccccccsccccscccscccccsssccccccsccccccscscccccccssccccccscccsccccscccccssccccccscsccccccccccccsccccccsscccscsccccccccscccsccccssscsccccccssscccsscsscscccccccccccccssccccccscccccccccccccscssssscccsccscccscsscssssscsccsccssccsccsscscccccccscccccscccscsccscccccssscccsccsccccscsccsscssccccsssccsscccccssssscsccscccsscscssccssssssccccccscccccccsssssscccsccscccsccscsscsscccscccccccscscssccscccccscscsscssccccscscccccsscssscsccscccscccccsccccscccccsccssscsssssscccsscccccccccccssscccsscsccccccsccccccccscscccsccscccccccscccccccccccsccccssccssccccssscsscccscccsccsccsccsccssscccsccccscsccsccccccccccccsscccsssccccccccccccssccccsccsscscsccscccccsccccccsccsccssssscsscscscsscsssscccsscccccccscccccccccssccccccsccsccccscssssscccccscccccccccsssccsccsssscccssscccsccccccsccccscscsssccccsccccsccccccccccccscsssccscsccccccsscscssccscscsssscscccsccsscccccccccccssscccsccscsccscccccscsscsscscssssscsccccccccccccscccsssccsccccssscsscsscscsccsssccccsccccscsssscccccccscsccccccccccccccccsscscccsccccsccccscccccccccccccccccccccscscccccsssccscccccccsccscccsccccssccssscccsccccccccccssccssscssscsccscscssccccsccccccccscccccccccccccccsccssssscssccscsccsscccsccsccccccscscscccccscssscccccccscccssssscsscsccsccccccsccsccccscsccscccccccccsscssccccsscscccsssssccscscssccscsccssssscssscsccccsssssccsccssccccccccccscccccscccccccssssssscsscscscccccccccscscssccsccscccccccccccscscccscccccccsccsccccccsscccssssscccccccscssccccssssssscccsscsscsscccccssscccscccsccsscccccccccscccccccscsccccccccscccsssccsccsccsscccccsscccccccccscsccscscccccccscccccccscssscccsccccccccccscccccccscsccccccsscccscsccccsccssssssccsccsccccscccccccscscccccccsccssccssccccccccccccsccsssssssscccsscccsscsccccsccsscsccsccccccccsccsscssccccsccccscccccsccccscsccccccccscccccccccccccccscscccscccccccccccsccccscsssssssssscccccccsssscscccccccscccssssscccsccscccsccccccssssssssssssccccccsscssscsccccsscscccscsccsccsscccccccscccsccccscccccccsccccssscsccscsccccsssscccsscsscsssscsccsscccccssssscscscscccscsscsccssssscscccccscscccccsccsccccccssccscscsscscsccscccccccscccccscccccccsscccccccccccccccscccccsccccscssssscccccccscccssccsccccsccsccsccccsccccsscccsscccsccscccccscsscccssscsscssscssssccsscccccsscccsscccccssscssssccssccssscccsccccsccccccsssscsccccccsccccccccsscsscccccccccsscscsccccssccsssccsscccssccccsccscscsccsccscsccccccscscsssssssssssccccsscssccccccccsssscccscccccccsssscsccsccccccccsccscscsscsccccccscccccccccccscccccccsccccsssscccccccssssscscccsscccccccccscccccccccccsccccscscssssssscccccccsccccccccccccccccscccccccccccsccccsccsccsccccssssssssssccccccccsccscccccssccccccssccccccccscccsccccccssscscsscccsscccccscscccsscccsscscccccccsscccccccssssssscssssscscsssssccccccssccccccccsccccscscccsccccccsssscscccsccccsccsccccccscccccsccccccccccssccccsccsccccscsccscsscccccccccccsscssccccccsssssssssssccssscccccsssssssssssssscssscssssscccscccsccccsccsscscsccccscccccccccccccsccccccscsccccsccscsssssssccccccccccccsccscssccccsccccccscccccsscsssssscsccccccccssccccccccccccccccscsccccccccccscsccccccscccccssccsscccccsccscccssscccccsscsscccccccsccsccccccccsccccccscccccccccccccsccccsscssssscccsccscsccccscccsscsscssssccccscsssssccccccccscccccscscscccccccccscsscccccsccccsccscccsccccsccsscccccccscccscscccscsccccccccccscccscsssccccsccssccssscsscsssccscccsscccssccccccccccsccccccssssccccccscssccsccscccssscsscsssssccsscsscccsccsscsssccscccsscsccssscsccccccccccccccscccccccssccccssssscscccscssccscccccccsscsccssccccccccccccsssssscccccccsssscscccccsccscccssccscccsccccccccsscscsscccssssscssccssscsscccssccssssssscccscsccsscccccccccsssssccccccccccsccccccccsccccccccccsssssscssssscsssssssccsccsccccscssccccccccssscccccsccccsccssssscsscscssssssscccccssssssccscscsccscsccccccccscssssscccccccccsccssssssccscsccssccsssscssccccsscccccsccssccccsscssssccsscsscccscscscccssscss" /> diff --git a/starters/worldmap.png b/starters/worldmap.png index d9dfa2d369742a089501945e63d6e87094cd9572..846d9db1f3802f0062e500d26f1932f8dd449002 100644 GIT binary patch literal 47948 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 z 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 N002ovPDHLkV1ix@V=w>! literal 34289 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�dq^Nu#AbhBPxUcHrrGm!c>Oax}?7et? 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 From aade790b1caaeee95164b0b59635f820783e0e32 Mon Sep 17 00:00:00 2001 From: Bill Kendrick Date: Sat, 14 Sep 2019 12:10:26 -0700 Subject: [PATCH 17/20] Remove unused x/y args to would_flood_fill() Copy-pasta'd them --- src/fill.c | 2 +- src/fill.h | 2 +- src/tuxpaint.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/fill.c b/src/fill.c index f33f0516b..450d21fdc 100644 --- a/src/fill.c +++ b/src/fill.c @@ -78,7 +78,7 @@ int colors_close(SDL_Surface * canvas, Uint32 c1, Uint32 c2) } -int would_flood_fill(SDL_Surface * canvas, int x, int y, Uint32 cur_colr, Uint32 old_colr) +int would_flood_fill(SDL_Surface * canvas, Uint32 cur_colr, Uint32 old_colr) { if (cur_colr == old_colr || colors_close(canvas, cur_colr, old_colr)) { diff --git a/src/fill.h b/src/fill.h index 9677bc459..aeba095c7 100644 --- a/src/fill.h +++ b/src/fill.h @@ -33,6 +33,6 @@ #include "SDL.h" -int would_flood_fill(SDL_Surface * canvas, int x, int y, Uint32 cur_colr, Uint32 old_colr); +int would_flood_fill(SDL_Surface * canvas, Uint32 cur_colr, Uint32 old_colr); void do_flood_fill(SDL_Surface * canvas, int x, int y, Uint32 cur_colr, Uint32 old_colr, int * x1, int * y1, int * x2, int * y2); diff --git a/src/tuxpaint.c b/src/tuxpaint.c index 1f2021e4d..ed11f2eaf 100644 --- a/src/tuxpaint.c +++ b/src/tuxpaint.c @@ -4396,7 +4396,7 @@ static void mainloop(void) color_hexes[cur_color][2]); canv_color = getpixels[canvas->format->BytesPerPixel] (canvas, old_x, old_y); - if (would_flood_fill(canvas, old_x, old_y, draw_color, canv_color)) + if (would_flood_fill(canvas, draw_color, canv_color)) { /* We only bother recording an undo buffer (which may kill our redos) if we're about From 850a3cd853e5b797f515312a0a4154e37c513368 Mon Sep 17 00:00:00 2001 From: Bill Kendrick Date: Sat, 14 Sep 2019 12:19:00 -0700 Subject: [PATCH 18/20] Squelch Starter save debugging Wrap another loose printf() in #ifdef DEBUG... --- src/tuxpaint.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/tuxpaint.c b/src/tuxpaint.c index ed11f2eaf..8e93cbe27 100644 --- a/src/tuxpaint.c +++ b/src/tuxpaint.c @@ -13334,7 +13334,9 @@ static void do_png_embed_data(png_structp png_ptr) /* Starter foreground */ if (img_starter) { +#ifdef DEBUG printf("Saving starter... %d\n", (int)(intptr_t) img_starter); //EP added (intptr_t) to avoid warning on x64 +#endif sbk_pixs = malloc(img_starter->h * img_starter->w * 4); compressedLen = compressBound(img_starter->h * img_starter->w * 4); From 9db366237c633c3934ab4ab885946014f5f35371 Mon Sep 17 00:00:00 2001 From: Bill Kendrick Date: Sat, 21 Sep 2019 15:59:53 -0700 Subject: [PATCH 19/20] Starter/Template thumbnails: larger We'd rather scale down larger thumbnails, than scale up (which would be blurry) small ones. --- Makefile | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 32c843877..c246b61eb 100644 --- a/Makefile +++ b/Makefile @@ -276,7 +276,11 @@ DEBUG_FLAGS:= MOUSE_CFLAGS:=-Isrc/$(MOUSEDIR) -D$(CURSOR_SHAPES)_CURSOR_SHAPES -CONVERT_OPTS:=-alpha Background -alpha Off +depth -resize !132x80 -background white -interlace none +# On an average-sized screen (e.g., 800x600 window), the thumbnails +# are 132x80. On larger screens, they will be bigger (since the New dialog +# is always 4x4 thumbnails); therefore, generating larger thumbs, which can +# be still be scaled down fairly quickly (esp. complicated SVG ones). +CONVERT_OPTS:=-alpha Background -alpha Off +depth -resize !264x160 -background white -interlace none .SUFFIXES: From f7d30d3222a891506350ae96e4a3439bcd4f6264 Mon Sep 17 00:00:00 2001 From: Bill Kendrick Date: Sat, 21 Sep 2019 16:33:55 -0700 Subject: [PATCH 20/20] Added --nostereo option Ability to disable stereo panning effect (e.g., paint brush, UI elements sound effect feedback, etc.), useful for users with hearing impairment in one ear, or situations where one speaker or headphone is being used. Use "--nostereo" command-line option or "nostereo=yes" config. file option. --- docs/CHANGES.txt | 8 +- docs/en/OPTIONS.txt | 571 ++++++++++++++++++----------------- docs/en/README.txt | 2 +- docs/en/html/OPTIONS.html | 12 +- docs/en/html/README.html | 2 +- src/manpage/tuxpaint.1 | 14 +- src/parse.gperf | 1 + src/parse.h | 1 + src/playsound.c | 38 ++- src/playsound.h | 4 +- src/tuxpaint-completion.bash | 1 + src/tuxpaint.c | 14 +- src/tuxpaint.conf | 9 +- 13 files changed, 367 insertions(+), 310 deletions(-) diff --git a/docs/CHANGES.txt b/docs/CHANGES.txt index ff1f27099..91cfb47bc 100644 --- a/docs/CHANGES.txt +++ b/docs/CHANGES.txt @@ -8,7 +8,7 @@ http://www.tuxpaint.org/ $Id$ -2019.Sep.14 (0.9.24) +2019.Sep.21 (0.9.24) * New tools --------- * Fill @@ -67,6 +67,12 @@ $Id$ * Updated some Starter source images so they work better with flood fill (Bald Eagle, World map, Gecko). + * Ability to disable stereo panning effect (e.g., paint brush, UI + elements sound effect feedback, etc.), useful for users with + hearing impairment in one ear, or situations where one speaker or + headphone is being used. Use "--nostereo" command-line option + or "nostereo=yes" config. file option. + * Documentation updates --------------------- * Mended link to MinGW/MSYS instructions at John Popplewell's website. diff --git a/docs/en/OPTIONS.txt b/docs/en/OPTIONS.txt index 88f707e7b..0797db276 100644 --- a/docs/en/OPTIONS.txt +++ b/docs/en/OPTIONS.txt @@ -3,10 +3,10 @@ Options Documentation - Copyright (c) 2002-2018 by various contributors; see AUTHORS.txt + Copyright (c) 2002-2019 by various contributors; see AUTHORS.txt http://www.tuxpaint.org/ - December 18, 2018 + September 21, 2019 ---------------------------------------------------------------------- @@ -129,6 +129,11 @@ Windows Users used to reenable sounds if they were disabled using this option.) + nostereo=yes + Disable stereo panning support. (Useful for users with hearing + impairment in one ear, or places where a single speaker or + headphone is being used.) + noquit=yes Disable the on-screen "Quit" button and prevent the [Escape] @@ -963,6 +968,7 @@ Windows Users --allowscreensaver --startblank --nosound + --nostereo --noquit --noprint --printdelay=SECONDS @@ -1036,6 +1042,7 @@ Windows Users --disablescreensaver --startlast --sound + --stereo --quit --print --printdelay=0 @@ -1137,287 +1144,285 @@ Command-Line Informational Options Available Languages +------------------------------------------------------------------+ - | |Language |Language |Input Method | - |Locale Code |(native name) |(English name) |Cycle Key | - | | | |Combination | - |----------------+----------------+---------------+----------------| - |C | |English | | - |----------------+----------------+---------------+----------------| - |ach_UG |Acoli |Acholi | | - |----------------+----------------+---------------+----------------| - |af_ZA | |Afrikaans | | - |----------------+----------------+---------------+----------------| - |ak_GH | |Akan | | - |----------------+----------------+---------------+----------------| - |am_ET | |Amharic | | - |----------------+----------------+---------------+----------------| - |an_ES | |Aragones | | - |----------------+----------------+---------------+----------------| - |ar_SA | |Arabic | | - |----------------+----------------+---------------+----------------| - |as_IN | |Assamese | | - |----------------+----------------+---------------+----------------| - |ast_ES | |Asturian | | - |----------------+----------------+---------------+----------------| - |az_AZ | |Azerbaijani | | - |----------------+----------------+---------------+----------------| - |bm_ML | |Bambara | | - |----------------+----------------+---------------+----------------| - |bn_IN | |Bengali | | - |----------------+----------------+---------------+----------------| - |be_BY |Bielaruskaja |Belarusian | | - |----------------+----------------+---------------+----------------| - |bg_BG | |Bulgarian | | - |----------------+----------------+---------------+----------------| - |bo_CN (*) | |Tibetan | | - |----------------+----------------+---------------+----------------| - |br_FR |Brezhoneg |Breton | | - |----------------+----------------+---------------+----------------| - |brx_IN | |Bodo | | - |----------------+----------------+---------------+----------------| - |bs_BA | |Bosnian | | - |----------------+----------------+---------------+----------------| - |ca_ES |Català |Catalan | | - |----------------+----------------+---------------+----------------| - |ca_ES@valencia |Valencia |Valencian | | - |----------------+----------------+---------------+----------------| - |cgg_UG |Chiga |Kiga | | - |----------------+----------------+---------------+----------------| - |cs_CZ |Cesky |Czech | | - |----------------+----------------+---------------+----------------| - |cy_GB |Cymraeg |Welsh | | - |----------------+----------------+---------------+----------------| - |da_DK |Dansk |Danish | | - |----------------+----------------+---------------+----------------| - |de_DE |Deutsch |German | | - |----------------+----------------+---------------+----------------| - |doi_IN | |Dogri | | - |----------------+----------------+---------------+----------------| - |et_EE | |Estonian | | - |----------------+----------------+---------------+----------------| - |el_GR (*) | |Greek | | - |----------------+----------------+---------------+----------------| - |en_AU | |Australian | | - | | |English | | - |----------------+----------------+---------------+----------------| - |en_CA | |Canadian | | - | | |English | | - |----------------+----------------+---------------+----------------| - |en_GB | |British English| | - |----------------+----------------+---------------+----------------| - |en_ZA | |South African | | - | | |English | | - |----------------+----------------+---------------+----------------| - |eo | |Esperanto | | - |----------------+----------------+---------------+----------------| - |es_ES |Español |Spanish | | - |----------------+----------------+---------------+----------------| - |es_MX |Español-Mejicano|Mexican Spanish| | - |----------------+----------------+---------------+----------------| - |eu_ES |Euskara |Basque | | - |----------------+----------------+---------------+----------------| - |fa_IR | |Persian | | - |----------------+----------------+---------------+----------------| - |ff_SN |Fulah |Fula | | - |----------------+----------------+---------------+----------------| - |fi_FI |Suomi |Finnish | | - |----------------+----------------+---------------+----------------| - |fo_FO | |Faroese | | - |----------------+----------------+---------------+----------------| - |fr_FR |Français |French | | - |----------------+----------------+---------------+----------------| - |ga_IE |Gàidhlig |Irish Gaelic | | - |----------------+----------------+---------------+----------------| - |gd_GB |Ghaidhlig |Scottish Gaelic| | - |----------------+----------------+---------------+----------------| - |gl_ES |Galego |Galician | | - |----------------+----------------+---------------+----------------| - |gos_NL |Zudelk |Gronings | | - | |Veenkelonioals | | | - |----------------+----------------+---------------+----------------| - |gu_IN | |Gujarati | | - |----------------+----------------+---------------+----------------| - |he_IL (*) | |Hebrew | | - |----------------+----------------+---------------+----------------| - |hi_IN (*) | |Hindi | | - |----------------+----------------+---------------+----------------| - |hr_HR |Hrvatski |Croatian | | - |----------------+----------------+---------------+----------------| - |hu_HU |Magyar |Hungarian | | - |----------------+----------------+---------------+----------------| - |hy_AM |Hayeren |Armenian | | - |----------------+----------------+---------------+----------------| - |id_ID |Bahasa Indonesia|Indonesian | | - |----------------+----------------+---------------+----------------| - |is_IS |Íslenska |Icelandic | | - |----------------+----------------+---------------+----------------| - |it_IT |Italiano |Italian | | - |----------------+----------------+---------------+----------------| - |iu_CA | |Inuktitut | | - |----------------+----------------+---------------+----------------| - |ja_JP (*) | |Japanese |right [Alt] | - |----------------+----------------+---------------+----------------| - |ka_GE | |Georgian | | - |----------------+----------------+---------------+----------------| - |kab | |Kabyle | | - |----------------+----------------+---------------+----------------| - |km_KH | |Khmer | | - |----------------+----------------+---------------+----------------| - |kn_IN | |Kannada | | - |----------------+----------------+---------------+----------------| - |ko_KR (*) | |Korean |right [Alt] or | - | | | |left [Alt] | - |----------------+----------------+---------------+----------------| - |kok_IN | |Konkani | | - | | |(Devaganari) | | - |----------------+----------------+---------------+----------------| - |kok@roman | |Konkani (Roman)| | - |----------------+----------------+---------------+----------------| - |ks_IN@devanagari| |Kashmiri | | - | | |(Devanagari) | | - |----------------+----------------+---------------+----------------| - |ks_IN | |Kashmiri | | - | | |(Perso-Arabic) | | - |----------------+----------------+---------------+----------------| - |ku_TR | |Kurdish | | - |----------------+----------------+---------------+----------------| - |lb_LU |Letzebuergesch |Luxembourgish | | - |----------------+----------------+---------------+----------------| - |lg_UG | |Luganda | | - |----------------+----------------+---------------+----------------| - |lt_LT |Lietuviu |Lithuanian | | - |----------------+----------------+---------------+----------------| - |lv_LV | |Latvian | | - |----------------+----------------+---------------+----------------| - |mk_MK | |Macedonian | | - |----------------+----------------+---------------+----------------| - |mai_IN | |Maithili | | - |----------------+----------------+---------------+----------------| - |ml_IN | |Malayalam | | - |----------------+----------------+---------------+----------------| - |mn_MN | |Mongolian | | - |----------------+----------------+---------------+----------------| - |mni_IN | |Manipuri | | - | | |(Bengali) | | - |----------------+----------------+---------------+----------------| - |mni@meiteimayek | |Manipuri | | - | | |(Meitei Mayek) | | - |----------------+----------------+---------------+----------------| - |mr_IN | |Marathi | | - |----------------+----------------+---------------+----------------| - |ms_MY | |Malay | | - |----------------+----------------+---------------+----------------| - |nb_NO |Norsk (bokmål) |Norwegian | | - | | |Bokmål | | - |----------------+----------------+---------------+----------------| - |ne_NP |Nepali | | | - |----------------+----------------+---------------+----------------| - |nl_NL | |Dutch | | - |----------------+----------------+---------------+----------------| - |nn_NO |Norsk (nynorsk) |Norwegian | | - | | |Nynorsk | | - |----------------+----------------+---------------+----------------| - |nr_ZA | |Ndebele | | - |----------------+----------------+---------------+----------------| - |nso_ZA |Sesotho sa Leboa|Northern Sotho | | - |----------------+----------------+---------------+----------------| - |oc_FR | |Occitan | | - |----------------+----------------+---------------+----------------| - |oj_CA | |Ojibwe |Ojibway | - |----------------+----------------+---------------+----------------| - |pa_IN | |Punjabi | | - |----------------+----------------+---------------+----------------| - |or_IN | |Odia |Oriya | - |----------------+----------------+---------------+----------------| - |pl_PL |Polski |Polish | | - |----------------+----------------+---------------+----------------| - |pt_BR |Portugês |Brazilian | | - | |Brazileiro |Portuguese | | - |----------------+----------------+---------------+----------------| - |pt_PT |Portugês |Portuguese | | - |----------------+----------------+---------------+----------------| - |ro_RO | |Romanian | | - |----------------+----------------+---------------+----------------| - |ru_RU |Russkiy |Russian | | - |----------------+----------------+---------------+----------------| - |rw_RW | |Kinyarwanda | | - |----------------+----------------+---------------+----------------| - |sa_IN | |Sanskrit | | - |----------------+----------------+---------------+----------------| - |sat_IN | |Santali | | - | | |(Devaganari) | | - |----------------+----------------+---------------+----------------| - |sat@olchiki | |Santali | | - | | |(Ol-Chikii) | | - |----------------+----------------+---------------+----------------| - |shs_CA |Secwepemctin |Shuswap | | - |----------------+----------------+---------------+----------------| - |si_LK | |Sinhala | | - |----------------+----------------+---------------+----------------| - |sd_IN@devanagari| |Sindhi | | - | | |(Devanagari) | | - |----------------+----------------+---------------+----------------| - |sd_IN | |Sindhi | | - |----------------+----------------+---------------+----------------| - |sk_SK | |Slovak | | - |----------------+----------------+---------------+----------------| - |sl_SI | |Slovenian | | - |----------------+----------------+---------------+----------------| - |son | |Songhay | | - |----------------+----------------+---------------+----------------| - |sq_AL | |Albanian | | - |----------------+----------------+---------------+----------------| - |sr_YU | |Serbian | | - | | |(cyrillic) | | - |----------------+----------------+---------------+----------------| - |sr_RS@latin | |Serbian (latin)| | - |----------------+----------------+---------------+----------------| - |su_ID | |Sundanese | | - |----------------+----------------+---------------+----------------| - |sv_SE |Svenska |Swedish | | - |----------------+----------------+---------------+----------------| - |sw_TZ | |Swahili | | - |----------------+----------------+---------------+----------------| - |ta_IN (*) | |Tamil | | - |----------------+----------------+---------------+----------------| - |te_IN (*) | |Telugu | | - |----------------+----------------+---------------+----------------| - |th_TH (*) | |Thai | | - |----------------+----------------+---------------+----------------| - |tl_PH (*) | |Tagalog | | - |----------------+----------------+---------------+----------------| - |tlh |tlhIngan |Klingon | | - |----------------+----------------+---------------+----------------| - |tr_TR | |Turkish | | - |----------------+----------------+---------------+----------------| - |tw_GH | |Twi | | - |----------------+----------------+---------------+----------------| - |uk_UA | |Ukrainian | | - |----------------+----------------+---------------+----------------| - |ur_IN | |Urdu | | - |----------------+----------------+---------------+----------------| - |ve_ZA | |Venda | | - |----------------+----------------+---------------+----------------| - |vec |Venèto |Venetian | | - |----------------+----------------+---------------+----------------| - |vi_VN | |Vietnamese | | - |----------------+----------------+---------------+----------------| - |wa_BE | |Walloon | | - |----------------+----------------+---------------+----------------| - |wo_SN | |Wolof | | - |----------------+----------------+---------------+----------------| - |xh_ZA | |Xhosa | | - |----------------+----------------+---------------+----------------| - |zh_CN (*) | |Chinese | | - | | |(Simplified) | | - |----------------+----------------+---------------+----------------| - |zh_TW (*) | |Chinese | | - | | |(Traditional) | | - |----------------+----------------+---------------+----------------| - |zam | |Zapotec | | - | | |(Miahuatlan) | | - |----------------+----------------+---------------+----------------| - |zu_ZA | |Zulu | | + | |Language |Language |Input Method | + |Locale Code |(native name) |(English name) |Cycle Key | + | | | |Combination | + |----------------+----------------+----------------+---------------| + |C | |English | | + |----------------+----------------+----------------+---------------| + |ach_UG |Acoli |Acholi | | + |----------------+----------------+----------------+---------------| + |af_ZA | |Afrikaans | | + |----------------+----------------+----------------+---------------| + |ak_GH | |Akan | | + |----------------+----------------+----------------+---------------| + |am_ET | |Amharic | | + |----------------+----------------+----------------+---------------| + |an_ES | |Aragones | | + |----------------+----------------+----------------+---------------| + |ar_SA | |Arabic | | + |----------------+----------------+----------------+---------------| + |as_IN | |Assamese | | + |----------------+----------------+----------------+---------------| + |ast_ES | |Asturian | | + |----------------+----------------+----------------+---------------| + |az_AZ | |Azerbaijani | | + |----------------+----------------+----------------+---------------| + |bm_ML | |Bambara | | + |----------------+----------------+----------------+---------------| + |bn_IN | |Bengali | | + |----------------+----------------+----------------+---------------| + |be_BY |Bielaruskaja |Belarusian | | + |----------------+----------------+----------------+---------------| + |bg_BG | |Bulgarian | | + |----------------+----------------+----------------+---------------| + |bo_CN (*) | |Tibetan | | + |----------------+----------------+----------------+---------------| + |br_FR |Brezhoneg |Breton | | + |----------------+----------------+----------------+---------------| + |brx_IN | |Bodo | | + |----------------+----------------+----------------+---------------| + |bs_BA | |Bosnian | | + |----------------+----------------+----------------+---------------| + |ca_ES |Català |Catalan | | + |----------------+----------------+----------------+---------------| + |ca_ES@valencia |Valencia |Valencian | | + |----------------+----------------+----------------+---------------| + |cgg_UG |Chiga |Kiga | | + |----------------+----------------+----------------+---------------| + |cs_CZ |Cesky |Czech | | + |----------------+----------------+----------------+---------------| + |cy_GB |Cymraeg |Welsh | | + |----------------+----------------+----------------+---------------| + |da_DK |Dansk |Danish | | + |----------------+----------------+----------------+---------------| + |de_DE |Deutsch |German | | + |----------------+----------------+----------------+---------------| + |doi_IN | |Dogri | | + |----------------+----------------+----------------+---------------| + |et_EE | |Estonian | | + |----------------+----------------+----------------+---------------| + |el_GR (*) | |Greek | | + |----------------+----------------+----------------+---------------| + |en_AU | |Australian | | + | | |English | | + |----------------+----------------+----------------+---------------| + |en_CA | |Canadian English| | + |----------------+----------------+----------------+---------------| + |en_GB | |British English | | + |----------------+----------------+----------------+---------------| + |en_ZA | |South African | | + | | |English | | + |----------------+----------------+----------------+---------------| + |eo | |Esperanto | | + |----------------+----------------+----------------+---------------| + |es_ES |Español |Spanish | | + |----------------+----------------+----------------+---------------| + |es_MX |Español-Mejicano|Mexican Spanish | | + |----------------+----------------+----------------+---------------| + |eu_ES |Euskara |Basque | | + |----------------+----------------+----------------+---------------| + |fa_IR | |Persian | | + |----------------+----------------+----------------+---------------| + |ff_SN |Fulah |Fula | | + |----------------+----------------+----------------+---------------| + |fi_FI |Suomi |Finnish | | + |----------------+----------------+----------------+---------------| + |fo_FO | |Faroese | | + |----------------+----------------+----------------+---------------| + |fr_FR |Français |French | | + |----------------+----------------+----------------+---------------| + |ga_IE |Gàidhlig |Irish Gaelic | | + |----------------+----------------+----------------+---------------| + |gd_GB |Ghaidhlig |Scottish Gaelic | | + |----------------+----------------+----------------+---------------| + |gl_ES |Galego |Galician | | + |----------------+----------------+----------------+---------------| + |gos_NL |Zudelk |Gronings | | + | |Veenkelonioals | | | + |----------------+----------------+----------------+---------------| + |gu_IN | |Gujarati | | + |----------------+----------------+----------------+---------------| + |he_IL (*) | |Hebrew | | + |----------------+----------------+----------------+---------------| + |hi_IN (*) | |Hindi | | + |----------------+----------------+----------------+---------------| + |hr_HR |Hrvatski |Croatian | | + |----------------+----------------+----------------+---------------| + |hu_HU |Magyar |Hungarian | | + |----------------+----------------+----------------+---------------| + |hy_AM |Hayeren |Armenian | | + |----------------+----------------+----------------+---------------| + |id_ID |Bahasa Indonesia|Indonesian | | + |----------------+----------------+----------------+---------------| + |is_IS |Íslenska |Icelandic | | + |----------------+----------------+----------------+---------------| + |it_IT |Italiano |Italian | | + |----------------+----------------+----------------+---------------| + |iu_CA | |Inuktitut | | + |----------------+----------------+----------------+---------------| + |ja_JP (*) | |Japanese |right [Alt] | + |----------------+----------------+----------------+---------------| + |ka_GE | |Georgian | | + |----------------+----------------+----------------+---------------| + |kab | |Kabyle | | + |----------------+----------------+----------------+---------------| + |km_KH | |Khmer | | + |----------------+----------------+----------------+---------------| + |kn_IN | |Kannada | | + |----------------+----------------+----------------+---------------| + |ko_KR (*) | |Korean |right [Alt] or | + | | | |left [Alt] | + |----------------+----------------+----------------+---------------| + |kok_IN | |Konkani | | + | | |(Devaganari) | | + |----------------+----------------+----------------+---------------| + |kok@roman | |Konkani (Roman) | | + |----------------+----------------+----------------+---------------| + |ks_IN@devanagari| |Kashmiri | | + | | |(Devanagari) | | + |----------------+----------------+----------------+---------------| + |ks_IN | |Kashmiri | | + | | |(Perso-Arabic) | | + |----------------+----------------+----------------+---------------| + |ku_TR | |Kurdish | | + |----------------+----------------+----------------+---------------| + |lb_LU |Letzebuergesch |Luxembourgish | | + |----------------+----------------+----------------+---------------| + |lg_UG | |Luganda | | + |----------------+----------------+----------------+---------------| + |lt_LT |Lietuviu |Lithuanian | | + |----------------+----------------+----------------+---------------| + |lv_LV | |Latvian | | + |----------------+----------------+----------------+---------------| + |mk_MK | |Macedonian | | + |----------------+----------------+----------------+---------------| + |mai_IN | |Maithili | | + |----------------+----------------+----------------+---------------| + |ml_IN | |Malayalam | | + |----------------+----------------+----------------+---------------| + |mn_MN | |Mongolian | | + |----------------+----------------+----------------+---------------| + |mni_IN | |Manipuri | | + | | |(Bengali) | | + |----------------+----------------+----------------+---------------| + |mni@meiteimayek | |Manipuri (Meitei| | + | | |Mayek) | | + |----------------+----------------+----------------+---------------| + |mr_IN | |Marathi | | + |----------------+----------------+----------------+---------------| + |ms_MY | |Malay | | + |----------------+----------------+----------------+---------------| + |nb_NO |Norsk (bokmål) |Norwegian Bokmål| | + |----------------+----------------+----------------+---------------| + |ne_NP |Nepali | | | + |----------------+----------------+----------------+---------------| + |nl_NL | |Dutch | | + |----------------+----------------+----------------+---------------| + |nn_NO |Norsk (nynorsk) |Norwegian | | + | | |Nynorsk | | + |----------------+----------------+----------------+---------------| + |nr_ZA | |Ndebele | | + |----------------+----------------+----------------+---------------| + |nso_ZA |Sesotho sa Leboa|Northern Sotho | | + |----------------+----------------+----------------+---------------| + |oc_FR | |Occitan | | + |----------------+----------------+----------------+---------------| + |oj_CA | |Ojibwe |Ojibway | + |----------------+----------------+----------------+---------------| + |pa_IN | |Punjabi | | + |----------------+----------------+----------------+---------------| + |or_IN | |Odia |Oriya | + |----------------+----------------+----------------+---------------| + |pl_PL |Polski |Polish | | + |----------------+----------------+----------------+---------------| + |pt_BR |Portugês |Brazilian | | + | |Brazileiro |Portuguese | | + |----------------+----------------+----------------+---------------| + |pt_PT |Portugês |Portuguese | | + |----------------+----------------+----------------+---------------| + |ro_RO | |Romanian | | + |----------------+----------------+----------------+---------------| + |ru_RU |Russkiy |Russian | | + |----------------+----------------+----------------+---------------| + |rw_RW | |Kinyarwanda | | + |----------------+----------------+----------------+---------------| + |sa_IN | |Sanskrit | | + |----------------+----------------+----------------+---------------| + |sat_IN | |Santali | | + | | |(Devaganari) | | + |----------------+----------------+----------------+---------------| + |sat@olchiki | |Santali | | + | | |(Ol-Chikii) | | + |----------------+----------------+----------------+---------------| + |shs_CA |Secwepemctin |Shuswap | | + |----------------+----------------+----------------+---------------| + |si_LK | |Sinhala | | + |----------------+----------------+----------------+---------------| + |sd_IN@devanagari| |Sindhi | | + | | |(Devanagari) | | + |----------------+----------------+----------------+---------------| + |sd_IN | |Sindhi | | + |----------------+----------------+----------------+---------------| + |sk_SK | |Slovak | | + |----------------+----------------+----------------+---------------| + |sl_SI | |Slovenian | | + |----------------+----------------+----------------+---------------| + |son | |Songhay | | + |----------------+----------------+----------------+---------------| + |sq_AL | |Albanian | | + |----------------+----------------+----------------+---------------| + |sr_YU | |Serbian | | + | | |(cyrillic) | | + |----------------+----------------+----------------+---------------| + |sr_RS@latin | |Serbian (latin) | | + |----------------+----------------+----------------+---------------| + |su_ID | |Sundanese | | + |----------------+----------------+----------------+---------------| + |sv_SE |Svenska |Swedish | | + |----------------+----------------+----------------+---------------| + |sw_TZ | |Swahili | | + |----------------+----------------+----------------+---------------| + |ta_IN (*) | |Tamil | | + |----------------+----------------+----------------+---------------| + |te_IN (*) | |Telugu | | + |----------------+----------------+----------------+---------------| + |th_TH (*) | |Thai | | + |----------------+----------------+----------------+---------------| + |tl_PH (*) | |Tagalog | | + |----------------+----------------+----------------+---------------| + |tlh |tlhIngan |Klingon | | + |----------------+----------------+----------------+---------------| + |tr_TR | |Turkish | | + |----------------+----------------+----------------+---------------| + |tw_GH | |Twi | | + |----------------+----------------+----------------+---------------| + |uk_UA | |Ukrainian | | + |----------------+----------------+----------------+---------------| + |ur_IN | |Urdu | | + |----------------+----------------+----------------+---------------| + |ve_ZA | |Venda | | + |----------------+----------------+----------------+---------------| + |vec |Venèto |Venetian | | + |----------------+----------------+----------------+---------------| + |vi_VN | |Vietnamese | | + |----------------+----------------+----------------+---------------| + |wa_BE | |Walloon | | + |----------------+----------------+----------------+---------------| + |wo_SN | |Wolof | | + |----------------+----------------+----------------+---------------| + |xh_ZA | |Xhosa | | + |----------------+----------------+----------------+---------------| + |zh_CN (*) | |Chinese | | + | | |(Simplified) | | + |----------------+----------------+----------------+---------------| + |zh_TW (*) | |Chinese | | + | | |(Traditional) | | + |----------------+----------------+----------------+---------------| + |zam | |Zapotec | | + | | |(Miahuatlan) | | + |----------------+----------------+----------------+---------------| + |zu_ZA | |Zulu | | +------------------------------------------------------------------+ (*) - These languages require their own fonts, since they are not diff --git a/docs/en/README.txt b/docs/en/README.txt index 28b30d1f3..325889a26 100644 --- a/docs/en/README.txt +++ b/docs/en/README.txt @@ -6,7 +6,7 @@ Copyright 2002-2019 by various contributors; see AUTHORS.txt http://www.tuxpaint.org/ - June 14, 2002 - September 12, 2019 + June 14, 2002 - September 21, 2019 ---------------------------------------------------------------------- diff --git a/docs/en/html/OPTIONS.html b/docs/en/html/OPTIONS.html index e01243862..230f6a9b6 100644 --- a/docs/en/html/OPTIONS.html +++ b/docs/en/html/OPTIONS.html @@ -16,10 +16,10 @@ version

Options Documentation

-

Copyright (c) 2002-2018 by various contributors; see AUTHORS.txt
+

Copyright (c) 2002-2019 by various contributors; see AUTHORS.txt
http://www.tuxpaint.org/

-

December 18, 2018

+

September 21, 2019

@@ -174,6 +174,12 @@ version cannot be used to reenable sounds if they were disabled using this option.)
+
nostereo=yes
+
+ Disable stereo panning support. (Useful for users with hearing impairment + in one ear, or places where a single speaker or headphone is being used.) +
+
noquit=yes

Disable the on-screen "Quit" button and prevent the [Escape] key @@ -1512,6 +1518,7 @@ version --allowscreensaver
--startblank
--nosound
+ --nostereo
--noquit
--noprint
--printdelay=SECONDS
@@ -1588,6 +1595,7 @@ version --disablescreensaver
--startlast
--sound
+ --stereo
--quit
--print
--printdelay=0
diff --git a/docs/en/html/README.html b/docs/en/html/README.html index 5ac5e6efc..63796688d 100644 --- a/docs/en/html/README.html +++ b/docs/en/html/README.html @@ -22,7 +22,7 @@ version

June 14, 2002 - - September 12, 2019

+ September 21, 2019

diff --git a/src/manpage/tuxpaint.1 b/src/manpage/tuxpaint.1 index 0c4a2535a..0040cf1a0 100644 --- a/src/manpage/tuxpaint.1 +++ b/src/manpage/tuxpaint.1 @@ -1,5 +1,5 @@ -.\" tuxpaint.1 - 2019.09.12 -.TH TUXPAINT 1 "12 September 2019" "0.9.24" "Tux Paint" +.\" tuxpaint.1 - 2019.09.21 +.TH TUXPAINT 1 "21 September 2019" "0.9.24" "Tux Paint" .SH NAME tuxpaint -- "Tux Paint", a drawing program for young children. @@ -23,6 +23,8 @@ tuxpaint -- "Tux Paint", a drawing program for young children. .br [\-\-nosound] .br +[\-\-nostereo] +.br [\-\-noquit] .br [\-\-noprint] @@ -153,6 +155,8 @@ tuxpaint -- "Tux Paint", a drawing program for young children. .br [\-\-sound] .br +[\-\-stereo] +.br [\-\-quit] .br [\-\-print] @@ -277,7 +281,7 @@ orientations are both supported. (Also see \-\-orient, below.) .TP 8 .B \-\-orient=landscape \-\-orient=portrait -If \-\-orient=portraitis set, asks \fITux Paint\fP to swap the WIDTH and HEIGHT +If \-\-orient=portrait is set, asks \fITux Paint\fP to swap the WIDTH and HEIGHT values it uses for windowed or fullscreen mode, without having to actually change the WIDTH and HEIGHT values in the configuration file or on the command-line. (This is useful on devices where the screen can be rotated, @@ -287,6 +291,10 @@ e.g. tablet PCs.) .B \-\-nosound \-\-sound Disable or enable (default) sound. +.TP 8 +.B \-\-nostereo \-\-stereo +Disable or enable (default) stereo panning support. + .TP 8 .B \-\-noquit \-\-quit Disable or enable (default) the on-screen \fIQuit\fP button and \fIEscape\fP diff --git a/src/parse.gperf b/src/parse.gperf index 7780d75b6..916701295 100644 --- a/src/parse.gperf +++ b/src/parse.gperf @@ -146,6 +146,7 @@ shortcuts, NEGBOOL(noshortcuts) showcursor, NEGBOOL(hide_cursor) simpleshapes, POSBOOL(simple_shapes) sound, POSBOOL(use_sound) +stereo, POSBOOL(use_stereo) stampcontrols, NEGBOOL(disable_stamp_controls) stamps, NEGBOOL(dont_load_stamps) stampsize, MULTI(stamp_size_override) diff --git a/src/parse.h b/src/parse.h index 65e58b073..b78bb9a8b 100644 --- a/src/parse.h +++ b/src/parse.h @@ -54,6 +54,7 @@ struct cfginfo const char *start_blank; const char *use_print_config; const char *use_sound; + const char *use_stereo; const char *wheely; const char *mouseaccessibility; const char *onscreen_keyboard; diff --git a/src/playsound.c b/src/playsound.c index 56aef1131..82d9ec929 100644 --- a/src/playsound.c +++ b/src/playsound.c @@ -1,7 +1,7 @@ /* playsound.c - Copyright (c) 2002-2009 + Copyright (c) 2002-2019 http://www.tuxpaint.org/ This program is free software; you can redistribute it and/or modify @@ -31,6 +31,7 @@ Mix_Chunk *sounds[NUM_SOUNDS]; int mute; int use_sound = 1; +int use_stereo = 1; static int old_sound[4] = { -1, -1, -1, -1 }; /** @@ -80,22 +81,31 @@ void playsound(SDL_Surface * screen, int chan, int s, int override, int x, int y dist = (255 * ((screen->h - 1) - y)) / (screen->h - 1); } - if (x == SNDPOS_LEFT) - left = 255 - dist; - else if (x == SNDPOS_CENTER) - left = (255 - dist) / 2; - else if (x == SNDPOS_RIGHT) - left = 0; + + if (use_stereo) + { + if (x == SNDPOS_LEFT) + left = 255 - dist; + else if (x == SNDPOS_CENTER) + left = (255 - dist) / 2; + else if (x == SNDPOS_RIGHT) + left = 0; + else + { + if (x < 0) + x = 0; + else if (x >= screen->w) + x = screen->w - 1; + + left = ((255 - dist) * ((screen->w - 1) - x)) / (screen->w - 1); + } + } else { - if (x < 0) - x = 0; - else if (x >= screen->w) - x = screen->w - 1; - - left = ((255 - dist) * ((screen->w - 1) - x)) / (screen->w - 1); + /* Stereo disabled; treat everything like a SNDPOS_CENTER + (equal amount in each of the left/right channels) */ + left = (255 - dist) / 2; } - #ifdef DEBUG printf("Panning of sound #%d in channel %d, left=%d, right=%d\n", s, chan, left, (255 - dist) - left); fflush(stdout); diff --git a/src/playsound.h b/src/playsound.h index d6f39a822..c0d9097f0 100644 --- a/src/playsound.h +++ b/src/playsound.h @@ -1,6 +1,6 @@ /* playsound.h - Copyright (c) 2002-2009 + Copyright (c) 2002-2019 http://www.tuxpaint.org/ This program is free software; you can redistribute it and/or modify @@ -35,7 +35,7 @@ #define SNDDIST_NEAR -999 extern Mix_Chunk *sounds[NUM_SOUNDS]; -extern int mute, use_sound; +extern int mute, use_sound, use_stereo; void playsound(SDL_Surface * screen, int chan, int s, int override, int x, int y); diff --git a/src/tuxpaint-completion.bash b/src/tuxpaint-completion.bash index 63c7511b4..ac849f4d7 100644 --- a/src/tuxpaint-completion.bash +++ b/src/tuxpaint-completion.bash @@ -30,6 +30,7 @@ _tuxpaint() --orient=landscape --orient=portrait \ -b --startblank --startlast \ --sound -q --nosound \ + --stereo --nostereo \ -x --noquit --quit -p --print --noprint \ --complexshapes -s --simpleshapes \ diff --git a/src/tuxpaint.c b/src/tuxpaint.c index 8e93cbe27..849afc8ab 100644 --- a/src/tuxpaint.c +++ b/src/tuxpaint.c @@ -22,7 +22,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA (See COPYING.txt) - June 14, 2002 - August 29, 2019 + June 14, 2002 - September 21, 2019 */ @@ -6456,6 +6456,7 @@ void show_usage(int exitcode) " [--orient=landscape | --orient=portrait]\n" " [--disablescreensaver | --allowscreensaver ]\n" " [--sound | --nosound]\n" + " [--stereo | --nostereo]\n" " [--colorfile FILE]\n" "\n" " Mouse/Keyboard:\n" @@ -18574,7 +18575,15 @@ static void magic_playsound(Mix_Chunk * snd, int left_right, int up_down) else if (left_right > 255) left_right = 255; - left = ((255 - dist) * (255 - left_right)) / 255; + if (use_stereo) + { + left = ((255 - dist) * (255 - left_right)) / 255; + } + else + { + /* Stereo disabled; no panning (see playsound.c) */ + left = (255 - dist) / 2; + } Mix_SetPanning(0, left, (255 - dist) - left); #endif @@ -22590,6 +22599,7 @@ static void setup_config(char *argv[]) SETBOOL(start_blank); SETBOOL(use_print_config); SETBOOL(use_sound); + SETBOOL(use_stereo); SETBOOL(wheely); SETBOOL(mouseaccessibility); SETBOOL(onscreen_keyboard); diff --git a/src/tuxpaint.conf b/src/tuxpaint.conf index 88b34bae1..8e68914b5 100644 --- a/src/tuxpaint.conf +++ b/src/tuxpaint.conf @@ -7,7 +7,7 @@ # http://www.tuxpaint.org/ # # Default distribution version last modified: -# April 30, 2012 +# September 21, 2019 # # $Id$ @@ -76,6 +76,13 @@ # sound=yes +### Disable stereo sound (only use mono)? +### ------------------------------------- +# +# nostereo=yes +# stereo=yes + + ### Disable the on-screen 'Quit' button in the toolbar? ### --------------------------------------------------- ### Note: Pressing the [Escape] key,