New style for color picker (HSV palette) button
Also mend a rendering issue with paint wells on the three dynamic color buttons.
This commit is contained in:
parent
d4869ac062
commit
23976aa651
3 changed files with 56 additions and 64 deletions
BIN
data/images/ui/color_picker_icon.png
Normal file
BIN
data/images/ui/color_picker_icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 6.4 KiB |
|
|
@ -79,6 +79,11 @@ https://tuxpaint.org/
|
||||||
Bill Kendrick <bill@newbreedsoftware.com> (code)
|
Bill Kendrick <bill@newbreedsoftware.com> (code)
|
||||||
h/t Mark Kim & TOYAMA Shin-ichi
|
h/t Mark Kim & TOYAMA Shin-ichi
|
||||||
|
|
||||||
|
* Made it easier to tell when color picker (HSV palette)
|
||||||
|
is the currently-selected color.
|
||||||
|
https://sourceforge.net/p/tuxpaint/bugs/279/
|
||||||
|
Bill Kendrick <bill@newbreedsoftware.com>
|
||||||
|
|
||||||
* Bug Fixes:
|
* Bug Fixes:
|
||||||
----------
|
----------
|
||||||
* In some window size / button size combinations, Eraser
|
* In some window size / button size combinations, Eraser
|
||||||
|
|
@ -110,8 +115,11 @@ https://tuxpaint.org/
|
||||||
(e.g., Windows)
|
(e.g., Windows)
|
||||||
Bill Kendrick <bill@newbreedsoftware.com>
|
Bill Kendrick <bill@newbreedsoftware.com>
|
||||||
|
|
||||||
* Mended bad rendering of color-picker (HSV palette) button when
|
* Mended bad rendering of color picker (HSV palette) button when
|
||||||
selecting a Label text with a color not found in built-in colors.
|
selecting a Label text with a color not found in built-in colors,
|
||||||
|
and mend unwanted outline around the chosen color in the
|
||||||
|
color selector (pipette), color picker (HSV palette) and
|
||||||
|
color mixer buttons.
|
||||||
Bill Kendrick <bill@newbreedsoftware.com>
|
Bill Kendrick <bill@newbreedsoftware.com>
|
||||||
|
|
||||||
* Localization Updates:
|
* Localization Updates:
|
||||||
|
|
|
||||||
108
src/tuxpaint.c
108
src/tuxpaint.c
|
|
@ -1679,7 +1679,7 @@ static SDL_Surface *img_shapes_corner, *img_shapes_center;
|
||||||
static SDL_Surface *img_bold, *img_italic;
|
static SDL_Surface *img_bold, *img_italic;
|
||||||
static SDL_Surface *img_label_select, *img_label_apply;
|
static SDL_Surface *img_label_select, *img_label_apply;
|
||||||
static SDL_Surface *img_color_picker, *img_color_picker_thumb, *img_color_picker_val;
|
static SDL_Surface *img_color_picker, *img_color_picker_thumb, *img_color_picker_val;
|
||||||
static SDL_Surface *img_paintwell, *img_color_sel, *img_color_mix;
|
static SDL_Surface *img_paintwell, *img_color_sel, *img_color_mix, *img_color_picker_icon;
|
||||||
static SDL_Surface *img_color_grab;
|
static SDL_Surface *img_color_grab;
|
||||||
static int color_picker_x, color_picker_y, color_picker_v;
|
static int color_picker_x, color_picker_y, color_picker_v;
|
||||||
static int color_mixer_reset;
|
static int color_mixer_reset;
|
||||||
|
|
@ -2191,7 +2191,7 @@ static void draw_color_mixer_blank_example(void);
|
||||||
static void calc_color_mixer_average(float *out_h, float *out_s, float *out_v);
|
static void calc_color_mixer_average(float *out_h, float *out_s, float *out_v);
|
||||||
static void draw_color_mixer_tooltip(void);
|
static void draw_color_mixer_tooltip(void);
|
||||||
static void draw_color_mix_undo_redo(void);
|
static void draw_color_mix_undo_redo(void);
|
||||||
static void render_color_button(int the_color, SDL_Surface * decoration, SDL_Surface * icon);
|
static void render_color_button(int the_color, SDL_Surface * icon);
|
||||||
static void handle_color_changed(void);
|
static void handle_color_changed(void);
|
||||||
static void magic_set_color(void);
|
static void magic_set_color(void);
|
||||||
static void magic_set_size(void);
|
static void magic_set_size(void);
|
||||||
|
|
@ -23852,7 +23852,7 @@ static int do_color_sel(int temp_mode)
|
||||||
color_hexes[COLOR_SELECTOR][2] = b;
|
color_hexes[COLOR_SELECTOR][2] = b;
|
||||||
|
|
||||||
/* Re-render color selector to show the current color it contains: */
|
/* Re-render color selector to show the current color it contains: */
|
||||||
render_color_button(COLOR_SELECTOR, NULL, img_color_sel);
|
render_color_button(COLOR_SELECTOR, img_color_sel);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (chose);
|
return (chose);
|
||||||
|
|
@ -24574,7 +24574,7 @@ static int do_color_picker(int prev_color)
|
||||||
|
|
||||||
|
|
||||||
/* Re-render color picker to show the current color it contains: */
|
/* Re-render color picker to show the current color it contains: */
|
||||||
render_color_button(COLOR_PICKER, img_color_picker_thumb, NULL);
|
render_color_button(COLOR_PICKER, img_color_picker_icon);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -25435,7 +25435,7 @@ static int do_color_mix(void)
|
||||||
|
|
||||||
|
|
||||||
/* Re-render color mixer to show the current color it contains: */
|
/* Re-render color mixer to show the current color it contains: */
|
||||||
render_color_button(COLOR_MIXER, NULL, img_color_mix);
|
render_color_button(COLOR_MIXER, img_color_mix);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -25759,9 +25759,9 @@ static void draw_color_mixer_tooltip(void)
|
||||||
* with their current color.
|
* with their current color.
|
||||||
*
|
*
|
||||||
* @param int the_color - the color within the palette (e.g., COLOR_PICKER) (its RGB values will be grabbed via global color_hexes[], and the new button will be rendered into the appropriate img_color_btns[])
|
* @param int the_color - the color within the palette (e.g., COLOR_PICKER) (its RGB values will be grabbed via global color_hexes[], and the new button will be rendered into the appropriate img_color_btns[])
|
||||||
* @param SDL_Surface * decoration - a decoration bitmap to be applied to the button (or NULL if none) (e.g., the color picker rainbow that appears around the color picker button's paintwell)
|
* @param SDL_Surface * icon - a bitmap to be applied to the button (or NULL if none) (e.g., the pipette icon that appears over the color selector)
|
||||||
*/
|
*/
|
||||||
static void render_color_button(int the_color, SDL_Surface * decoration, SDL_Surface * icon)
|
static void render_color_button(int the_color, SDL_Surface * icon)
|
||||||
{
|
{
|
||||||
SDL_Surface *tmp_btn_up, *tmp_btn_down;
|
SDL_Surface *tmp_btn_up, *tmp_btn_down;
|
||||||
SDL_Rect dest;
|
SDL_Rect dest;
|
||||||
|
|
@ -25808,30 +25808,18 @@ static void render_color_button(int the_color, SDL_Surface * decoration, SDL_Sur
|
||||||
|
|
||||||
aa = a / 255.0;
|
aa = a / 255.0;
|
||||||
|
|
||||||
if (decoration != NULL)
|
putpixels[img_color_btns[the_color]->format->BytesPerPixel]
|
||||||
{
|
(img_color_btns[the_color], x, y,
|
||||||
putpixels[img_color_btns[the_color]->format->BytesPerPixel]
|
SDL_MapRGB(img_color_btns[the_color]->format,
|
||||||
(img_color_btns[the_color], x, y, getpixels[decoration->format->BytesPerPixel] (decoration, x, y));
|
linear_to_sRGB(rh * aa + ru * (1.0 - aa)),
|
||||||
putpixels[img_color_btns[the_color + NUM_COLORS]->
|
linear_to_sRGB(gh * aa + gu * (1.0 - aa)), linear_to_sRGB(bh * aa + bu * (1.0 - aa))));
|
||||||
format->BytesPerPixel] (img_color_btns[the_color + NUM_COLORS], x, y,
|
|
||||||
getpixels[decoration->format->BytesPerPixel] (decoration, x, y));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (a == 255)
|
putpixels[img_color_btns[the_color + NUM_COLORS]->
|
||||||
{
|
format->BytesPerPixel] (img_color_btns[the_color + NUM_COLORS], x, y,
|
||||||
putpixels[img_color_btns[the_color]->format->BytesPerPixel]
|
SDL_MapRGB(img_color_btns[the_color + NUM_COLORS]->format,
|
||||||
(img_color_btns[the_color], x, y,
|
linear_to_sRGB(rh * aa + rd * (1.0 - aa)),
|
||||||
SDL_MapRGB(img_color_btns[the_color]->format,
|
linear_to_sRGB(gh * aa + gd * (1.0 - aa)),
|
||||||
linear_to_sRGB(rh * aa + ru * (1.0 - aa)),
|
linear_to_sRGB(bh * aa + bd * (1.0 - aa))));
|
||||||
linear_to_sRGB(gh * aa + gu * (1.0 - aa)), linear_to_sRGB(bh * aa + bu * (1.0 - aa))));
|
|
||||||
|
|
||||||
putpixels[img_color_btns[the_color + NUM_COLORS]->
|
|
||||||
format->BytesPerPixel] (img_color_btns[the_color + NUM_COLORS], x, y,
|
|
||||||
SDL_MapRGB(img_color_btns[the_color + NUM_COLORS]->format,
|
|
||||||
linear_to_sRGB(rh * aa + rd * (1.0 - aa)),
|
|
||||||
linear_to_sRGB(gh * aa + gd * (1.0 - aa)),
|
|
||||||
linear_to_sRGB(bh * aa + bd * (1.0 - aa))));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -26216,7 +26204,7 @@ static struct label_node *search_label_list(struct label_node **ref_head, Uint16
|
||||||
color_hexes[select_color][1] = tmp_node->save_color.g;
|
color_hexes[select_color][1] = tmp_node->save_color.g;
|
||||||
color_hexes[select_color][2] = tmp_node->save_color.b;
|
color_hexes[select_color][2] = tmp_node->save_color.b;
|
||||||
|
|
||||||
render_color_button(COLOR_PICKER, img_color_picker_thumb, NULL);
|
render_color_button(COLOR_PICKER, img_color_picker_icon);
|
||||||
draw_colors(COLORSEL_CLOBBER);
|
draw_colors(COLORSEL_CLOBBER);
|
||||||
render_brush(); /* FIXME: render_brush should be called at the start of Brush and Line tools? */
|
render_brush(); /* FIXME: render_brush should be called at the start of Brush and Line tools? */
|
||||||
}
|
}
|
||||||
|
|
@ -29856,6 +29844,7 @@ static void setup(void)
|
||||||
img_scroll_down_off = loadimagerb(DATA_PREFIX "images/ui/scroll_down_off.png");
|
img_scroll_down_off = loadimagerb(DATA_PREFIX "images/ui/scroll_down_off.png");
|
||||||
img_color_sel = loadimagerb(DATA_PREFIX "images/ui/csel.png");
|
img_color_sel = loadimagerb(DATA_PREFIX "images/ui/csel.png");
|
||||||
img_color_mix = loadimagerb(DATA_PREFIX "images/ui/cmix.png");
|
img_color_mix = loadimagerb(DATA_PREFIX "images/ui/cmix.png");
|
||||||
|
img_color_picker_icon = loadimagerb(DATA_PREFIX "images/ui/color_picker_icon.png");
|
||||||
img_color_grab = loadimagerb(DATA_PREFIX "images/ui/color_grab.png");
|
img_color_grab = loadimagerb(DATA_PREFIX "images/ui/color_grab.png");
|
||||||
|
|
||||||
if (onscreen_keyboard)
|
if (onscreen_keyboard)
|
||||||
|
|
@ -30112,37 +30101,23 @@ static void setup(void)
|
||||||
double gh = sRGB_to_linear_table[color_hexes[i][1]];
|
double gh = sRGB_to_linear_table[color_hexes[i][1]];
|
||||||
double bh = sRGB_to_linear_table[color_hexes[i][2]];
|
double bh = sRGB_to_linear_table[color_hexes[i][2]];
|
||||||
|
|
||||||
if (i == COLOR_PICKER)
|
putpixels[img_color_btns[i]->format->BytesPerPixel]
|
||||||
{
|
(img_color_btns[i], x, y,
|
||||||
putpixels[img_color_btns[i]->format->BytesPerPixel]
|
SDL_MapRGB(img_color_btns[i]->format,
|
||||||
(img_color_btns[i], x, y,
|
linear_to_sRGB(rh * aa + ru * (1.0 - aa)),
|
||||||
getpixels[img_color_picker_thumb->format->BytesPerPixel] (img_color_picker_thumb, x, y));
|
linear_to_sRGB(gh * aa + gu * (1.0 - aa)), linear_to_sRGB(bh * aa + bu * (1.0 - aa))));
|
||||||
putpixels[img_color_btns[i + NUM_COLORS]->format->BytesPerPixel] (img_color_btns[i + NUM_COLORS], x, y,
|
putpixels[img_color_btns[i + NUM_COLORS]->format->BytesPerPixel] (img_color_btns[i + NUM_COLORS], x, y,
|
||||||
getpixels[img_color_picker_thumb->
|
SDL_MapRGB(img_color_btns
|
||||||
format->BytesPerPixel]
|
[i + NUM_COLORS]->format,
|
||||||
(img_color_picker_thumb, x, y));
|
linear_to_sRGB(rh * aa +
|
||||||
}
|
rd * (1.0 -
|
||||||
|
aa)),
|
||||||
if (i < COLOR_PICKER || a == 0)
|
linear_to_sRGB(gh * aa +
|
||||||
{
|
gd * (1.0 -
|
||||||
putpixels[img_color_btns[i]->format->BytesPerPixel]
|
aa)),
|
||||||
(img_color_btns[i], x, y,
|
linear_to_sRGB(bh * aa +
|
||||||
SDL_MapRGB(img_color_btns[i]->format,
|
bd * (1.0 -
|
||||||
linear_to_sRGB(rh * aa + ru * (1.0 - aa)),
|
aa))));
|
||||||
linear_to_sRGB(gh * aa + gu * (1.0 - aa)), linear_to_sRGB(bh * aa + bu * (1.0 - aa))));
|
|
||||||
putpixels[img_color_btns[i + NUM_COLORS]->format->BytesPerPixel] (img_color_btns[i + NUM_COLORS], x, y,
|
|
||||||
SDL_MapRGB(img_color_btns
|
|
||||||
[i + NUM_COLORS]->format,
|
|
||||||
linear_to_sRGB(rh * aa +
|
|
||||||
rd * (1.0 -
|
|
||||||
aa)),
|
|
||||||
linear_to_sRGB(gh * aa +
|
|
||||||
gd * (1.0 -
|
|
||||||
aa)),
|
|
||||||
linear_to_sRGB(bh * aa +
|
|
||||||
bd * (1.0 -
|
|
||||||
aa))));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -30160,6 +30135,15 @@ static void setup(void)
|
||||||
dest.h = img_color_sel->h;
|
dest.h = img_color_sel->h;
|
||||||
SDL_BlitSurface(img_color_sel, NULL, img_color_btns[i], &dest);
|
SDL_BlitSurface(img_color_sel, NULL, img_color_btns[i], &dest);
|
||||||
}
|
}
|
||||||
|
else if (i == COLOR_PICKER || i == COLOR_SELECTOR + NUM_COLORS)
|
||||||
|
{
|
||||||
|
/* Color selector; draw rainbow */
|
||||||
|
dest.x = (img_color_btns[i]->w - img_color_picker_icon->w) / 2;
|
||||||
|
dest.y = (img_color_btns[i]->h - img_color_picker_icon->h) / 2;
|
||||||
|
dest.w = img_color_picker_icon->w;
|
||||||
|
dest.h = img_color_picker_icon->h;
|
||||||
|
SDL_BlitSurface(img_color_picker_icon, NULL, img_color_btns[i], &dest);
|
||||||
|
}
|
||||||
else if (i == COLOR_MIXER || i == COLOR_MIXER + NUM_COLORS)
|
else if (i == COLOR_MIXER || i == COLOR_MIXER + NUM_COLORS)
|
||||||
{
|
{
|
||||||
/* Color mixer; draw palette */
|
/* Color mixer; draw palette */
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue