Added code for not tinting low-saturation ('gray') areas on stamps with the 'notintgray' property.
This commit is contained in:
parent
8fceab3e5e
commit
29306b3c55
2 changed files with 27 additions and 3 deletions
|
|
@ -7,7 +7,10 @@ bill@newbreedsoftware.com
|
||||||
http://www.newbreedsoftware.com/tuxpaint/
|
http://www.newbreedsoftware.com/tuxpaint/
|
||||||
|
|
||||||
|
|
||||||
2004.Jun.20 (0.9.14) [cvs]
|
2004.Jun.23 (0.9.14) [cvs]
|
||||||
|
* Fixed tinting of low-saturation stamps.
|
||||||
|
Karl Ove Hufthammer <karl@huftis.org>
|
||||||
|
|
||||||
* Improved Windows icon, based on SVG icon.
|
* Improved Windows icon, based on SVG icon.
|
||||||
Karl Ove Hufthammer <karl@huftis.org>
|
Karl Ove Hufthammer <karl@huftis.org>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -410,6 +410,7 @@ typedef struct info_type {
|
||||||
int tintable;
|
int tintable;
|
||||||
int mirrorable;
|
int mirrorable;
|
||||||
int flipable;
|
int flipable;
|
||||||
|
int tintgray;
|
||||||
} info_type;
|
} info_type;
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -643,6 +644,7 @@ void wait_for_sfx(void);
|
||||||
int current_language(void);
|
int current_language(void);
|
||||||
int stamp_colorable(int stamp);
|
int stamp_colorable(int stamp);
|
||||||
int stamp_tintable(int stamp);
|
int stamp_tintable(int stamp);
|
||||||
|
int stamp_tintgray(int stamp);
|
||||||
void rgbtohsv(Uint8 r8, Uint8 g8, Uint8 b8, float *h, float *s, float *v);
|
void rgbtohsv(Uint8 r8, Uint8 g8, Uint8 b8, float *h, float *s, float *v);
|
||||||
void hsvtorgb(float h, float s, float v, Uint8 *r8, Uint8 *g8, Uint8 *b8);
|
void hsvtorgb(float h, float s, float v, Uint8 *r8, Uint8 *g8, Uint8 *b8);
|
||||||
void show_progress_bar(void);
|
void show_progress_bar(void);
|
||||||
|
|
@ -3024,8 +3026,8 @@ void stamp_draw(int x, int y)
|
||||||
&r, &g, &b, &a);
|
&r, &g, &b, &a);
|
||||||
|
|
||||||
rgbtohsv(r, g, b, &stamp_hue, &stamp_sat, &stamp_val);
|
rgbtohsv(r, g, b, &stamp_hue, &stamp_sat, &stamp_val);
|
||||||
|
|
||||||
if (stamp_sat > 0.25)
|
if ( stamp_tintgray(cur_stamp) || stamp_sat > 0.25 )
|
||||||
hsvtorgb(col_hue, col_sat, stamp_val, &r, &g, &b);
|
hsvtorgb(col_hue, col_sat, stamp_val, &r, &g, &b);
|
||||||
// else
|
// else
|
||||||
// hsvtorgb(col_hue, col_sat, stamp_val, &r, &g, &b);
|
// hsvtorgb(col_hue, col_sat, stamp_val, &r, &g, &b);
|
||||||
|
|
@ -5331,6 +5333,7 @@ void setup(int argc, char * argv[])
|
||||||
inf_stamps[i]->tintable = 0;
|
inf_stamps[i]->tintable = 0;
|
||||||
inf_stamps[i]->colorable = 0;
|
inf_stamps[i]->colorable = 0;
|
||||||
inf_stamps[i]->mirrorable = 1;
|
inf_stamps[i]->mirrorable = 1;
|
||||||
|
inf_stamps[i]->tintgray = 1;
|
||||||
inf_stamps[i]->flipable = 1;
|
inf_stamps[i]->flipable = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -8154,6 +8157,7 @@ info_type * loadinfo(char * fname)
|
||||||
inf.colorable = 0;
|
inf.colorable = 0;
|
||||||
inf.tintable = 0;
|
inf.tintable = 0;
|
||||||
inf.mirrorable = 1;
|
inf.mirrorable = 1;
|
||||||
|
inf.tintgray = 1;
|
||||||
inf.flipable = 1;
|
inf.flipable = 1;
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -8197,6 +8201,8 @@ info_type * loadinfo(char * fname)
|
||||||
inf.tintable = 1;
|
inf.tintable = 1;
|
||||||
else if (strcmp(buf, "nomirror") == 0)
|
else if (strcmp(buf, "nomirror") == 0)
|
||||||
inf.mirrorable = 0;
|
inf.mirrorable = 0;
|
||||||
|
else if (strcmp(buf, "notintgray") == 0)
|
||||||
|
inf.tintgray = 0;
|
||||||
else if (strcmp(buf, "noflip") == 0)
|
else if (strcmp(buf, "noflip") == 0)
|
||||||
inf.flipable = 0;
|
inf.flipable = 0;
|
||||||
}
|
}
|
||||||
|
|
@ -11353,6 +11359,21 @@ int stamp_tintable(int stamp)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Returns whether low-saturation ('gray') parts of stamp can be tinted: */
|
||||||
|
|
||||||
|
int stamp_tintgray(int stamp)
|
||||||
|
{
|
||||||
|
if (inf_stamps[stamp] != NULL)
|
||||||
|
{
|
||||||
|
return inf_stamps[stamp]->tintgray;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void rgbtohsv(Uint8 r8, Uint8 g8, Uint8 b8, float *h, float *s, float *v)
|
void rgbtohsv(Uint8 r8, Uint8 g8, Uint8 b8, float *h, float *s, float *v)
|
||||||
{
|
{
|
||||||
float rgb_min, rgb_max, delta, r, g, b;
|
float rgb_min, rgb_max, delta, r, g, b;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue