WIP Word-wrap long button labels
For https://sourceforge.net/p/tuxpaint/bugs/131/
This commit is contained in:
parent
db41252c82
commit
81d7b0026d
2 changed files with 42 additions and 4 deletions
|
|
@ -6,7 +6,7 @@ Copyright (c) 2002-2023
|
||||||
Various contributors (see below, and AUTHORS.txt)
|
Various contributors (see below, and AUTHORS.txt)
|
||||||
https://tuxpaint.org/
|
https://tuxpaint.org/
|
||||||
|
|
||||||
2023.April.9 (0.9.30)
|
2023.April.11 (0.9.30)
|
||||||
* Improvements to Stamp tool:
|
* Improvements to Stamp tool:
|
||||||
---------------------------
|
---------------------------
|
||||||
* Avoid playing English descriptive sound for a stamp
|
* Avoid playing English descriptive sound for a stamp
|
||||||
|
|
@ -29,6 +29,13 @@ https://tuxpaint.org/
|
||||||
Note: Bumps `TP_MAGIC_API_VERSION` to 0x00000008.
|
Note: Bumps `TP_MAGIC_API_VERSION` to 0x00000008.
|
||||||
Bill Kendrick <bill@newbreedsoftware.com>
|
Bill Kendrick <bill@newbreedsoftware.com>
|
||||||
|
|
||||||
|
* Other Improvements:
|
||||||
|
-------------------
|
||||||
|
* WIP Word-wrap long button labels.
|
||||||
|
(h/t Jozef Riha for the idea.)
|
||||||
|
Helps https://sourceforge.net/p/tuxpaint/bugs/131/
|
||||||
|
Bill Kendrick <bill@newbreedsoftware.com>
|
||||||
|
|
||||||
* Localization Updates:
|
* Localization Updates:
|
||||||
---------------------
|
---------------------
|
||||||
* Chinese (Simplified) translation
|
* Chinese (Simplified) translation
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
(See COPYING.txt)
|
(See COPYING.txt)
|
||||||
|
|
||||||
June 14, 2002 - April 9, 2023
|
June 14, 2002 - April 11, 2023
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
|
|
@ -1750,7 +1750,8 @@ static SDL_Surface *render_text(TuxPaint_Font * restrict font,
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
SDLPango_SetDefaultColor(font->pango_context, &pango_color);
|
SDLPango_SetDefaultColor(font->pango_context, &pango_color);
|
||||||
SDLPango_SetText(font->pango_context, str, -1);
|
// SDLPango_SetText(font->pango_context, str, -1);
|
||||||
|
SDLPango_SetText_GivenAlignment(font->pango_context, str, -1, SDLPANGO_ALIGN_CENTER);
|
||||||
ret = SDLPango_CreateSurfaceDraw(font->pango_context);
|
ret = SDLPango_CreateSurfaceDraw(font->pango_context);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -9757,6 +9758,7 @@ static SDL_Surface *do_render_button_label(const char *const label)
|
||||||
SDL_Color black = { 0, 0, 0, 0 };
|
SDL_Color black = { 0, 0, 0, 0 };
|
||||||
TuxPaint_Font *myfont;
|
TuxPaint_Font *myfont;
|
||||||
int want_h;
|
int want_h;
|
||||||
|
float height_mult;
|
||||||
char *td_str = textdir(gettext(label));
|
char *td_str = textdir(gettext(label));
|
||||||
char *upstr = uppercase(td_str);
|
char *upstr = uppercase(td_str);
|
||||||
|
|
||||||
|
|
@ -9786,6 +9788,35 @@ static SDL_Surface *do_render_button_label(const char *const label)
|
||||||
}
|
}
|
||||||
|
|
||||||
tmp_surf1 = render_text(myfont, upstr, black);
|
tmp_surf1 = render_text(myfont, upstr, black);
|
||||||
|
if (tmp_surf1 == NULL) {
|
||||||
|
fprintf(stderr, "Failed to render button '%s'!\n", upstr);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
height_mult = 1.0;
|
||||||
|
|
||||||
|
if (tmp_surf1->w >= button_w * 1.5) {
|
||||||
|
DEBUG_PRINTF("'%s' is very wide (%d) compared to button size (%d)\n", upstr, tmp_surf1->w, button_w);
|
||||||
|
if (strstr(upstr, " ") != NULL) {
|
||||||
|
int i, found = -1;
|
||||||
|
|
||||||
|
for (i = (strlen(upstr) * 3 / 4); i >= 0 && found == -1; i--) {
|
||||||
|
if (upstr[i] == ' ') {
|
||||||
|
found = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (found != -1) {
|
||||||
|
upstr[found] = '\n';
|
||||||
|
|
||||||
|
SDL_FreeSurface(tmp_surf1);
|
||||||
|
tmp_surf1 = render_text(myfont, upstr, black);
|
||||||
|
|
||||||
|
height_mult = 1.5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
free(upstr);
|
free(upstr);
|
||||||
|
|
||||||
tmp_surf = tmp_surf1;
|
tmp_surf = tmp_surf1;
|
||||||
|
|
@ -9801,7 +9832,7 @@ static SDL_Surface *do_render_button_label(const char *const label)
|
||||||
|
|
||||||
DEBUG_PRINTF("Rendered as: %d x %d\n", tmp_surf->w, tmp_surf->h);
|
DEBUG_PRINTF("Rendered as: %d x %d\n", tmp_surf->w, tmp_surf->h);
|
||||||
|
|
||||||
want_h = (int) (18 * button_scale + button_label_y_nudge);
|
want_h = (int) (18 * button_scale + button_label_y_nudge) * height_mult;
|
||||||
|
|
||||||
DEBUG_PRINTF(" button_w = %d -- min w = %d\n", button_w, min(button_w, tmp_surf->w));
|
DEBUG_PRINTF(" button_w = %d -- min w = %d\n", button_w, min(button_w, tmp_surf->w));
|
||||||
DEBUG_PRINTF(" want_h = %d -- min h = %d\n", want_h, min(want_h, tmp_surf->h));
|
DEBUG_PRINTF(" want_h = %d -- min h = %d\n", want_h, min(want_h, tmp_surf->h));
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue