Got stamp mirror and flip working again!

This commit is contained in:
William Kendrick 2005-07-16 05:06:21 +00:00
parent 9b6c43cfe0
commit 6d4847799e

View file

@ -27,7 +27,7 @@
#define VER_VERSION "0.9.15" #define VER_VERSION "0.9.15"
#define VER_DATE "2005-07-14" #define VER_DATE "2005-07-15"
/* Color depth for Tux Paint to run in, and store canvases in: */ /* Color depth for Tux Paint to run in, and store canvases in: */
@ -2256,6 +2256,9 @@ static void hsvtorgb(float h, float s, float v, Uint8 *r8, Uint8 *g8, Uint8 *b8)
static void show_progress_bar(void); static void show_progress_bar(void);
static int progress_bar_disabled; static int progress_bar_disabled;
SDL_Surface * flip_surface(SDL_Surface *s);
SDL_Surface * mirror_surface(SDL_Surface *s);
static void do_print(void); static void do_print(void);
static void strip_trailing_whitespace(char * buf); static void strip_trailing_whitespace(char * buf);
static void do_render_cur_text(int do_blit); static void do_render_cur_text(int do_blit);
@ -6592,10 +6595,76 @@ static void load_brush_dir(const char * const dir)
tp_ftw(buf, dirlen, 0, loadbrush_callback); tp_ftw(buf, dirlen, 0, loadbrush_callback);
} }
static void mirror_surface(SDL_Surface *s){ SDL_Surface * mirror_surface(SDL_Surface *s)
{
SDL_Surface * new_surf;
int x;
SDL_Rect src, dest;
/* Mirror surface: */
new_surf = duplicate_surface(s);
if (new_surf != NULL)
{
for (x = 0; x < s->w; x++)
{
src.x = x;
src.y = 0;
src.w = 1;
src.h = s->h;
dest.x = s->w - x - 1;
dest.y = 0;
SDL_BlitSurface(s, &src, new_surf, &dest);
}
SDL_FreeSurface(s);
return(new_surf);
}
else
{
return(s);
}
} }
static void flip_surface(SDL_Surface *s){ SDL_Surface * flip_surface(SDL_Surface *s)
{
SDL_Surface * new_surf;
int y;
SDL_Rect src, dest;
/* Flip surface: */
new_surf = duplicate_surface(s);
if (new_surf != NULL)
{
for (y = 0; y < s->h; y++)
{
src.x = 0;
src.y = y;
src.w = s->w;
src.h = 1;
dest.x = 0;
dest.y = s->h - y - 1;
SDL_BlitSurface(s, &src, new_surf, &dest);
}
SDL_FreeSurface(s);
return(new_surf);
}
else
{
return(s);
}
} }
static unsigned default_stamp_size; static unsigned default_stamp_size;
@ -6686,11 +6755,11 @@ static void set_active_stamp(void)
if(!active_stamp) if(!active_stamp)
active_stamp = thumbnail(img_dead40x40, 40, 40, 1); // copy it active_stamp = thumbnail(img_dead40x40, 40, 40, 1); // copy it
if(sd->mirrored) if(sd->mirrored)
mirror_surface(active_stamp); active_stamp = mirror_surface(active_stamp);
} }
if(sd->flipped) if(sd->flipped)
flip_surface(active_stamp); active_stamp = flip_surface(active_stamp);
} }
static void get_stamp_thumb(stamp_type *sd) static void get_stamp_thumb(stamp_type *sd)
@ -6735,7 +6804,7 @@ static void get_stamp_thumb(stamp_type *sd)
{ {
if(sd->flipped == sd->thumb_flipped) if(sd->flipped == sd->thumb_flipped)
return; return;
flip_surface(sd->thumbnail); sd->thumbnail = flip_surface(sd->thumbnail);
sd->thumb_flipped = !sd->thumb_flipped; sd->thumb_flipped = !sd->thumb_flipped;
return; return;
} }
@ -6757,13 +6826,13 @@ static void get_stamp_thumb(stamp_type *sd)
} }
if(wrongmirror && sd->no_premirror) if(wrongmirror && sd->no_premirror)
{ {
mirror_surface(wrongmirror); wrongmirror = mirror_surface(wrongmirror);
sd->thumbnail = wrongmirror; sd->thumbnail = wrongmirror;
sd->thumb_mirrored = !sd->thumb_mirrored; sd->thumb_mirrored = !sd->thumb_mirrored;
if(sd->flipped == sd->thumb_flipped) if(sd->flipped == sd->thumb_flipped)
return; return;
flip_surface(sd->thumbnail); sd->thumbnail = flip_surface(sd->thumbnail);
sd->thumb_flipped = !sd->thumb_flipped; sd->thumb_flipped = !sd->thumb_flipped;
return; return;
} }
@ -6794,11 +6863,11 @@ static void get_stamp_thumb(stamp_type *sd)
sd->thumbnail = bigimg; sd->thumbnail = bigimg;
if(need_mirror) if(need_mirror)
mirror_surface(sd->thumbnail); sd->thumbnail = mirror_surface(sd->thumbnail);
sd->thumb_mirrored = sd->mirrored; sd->thumb_mirrored = sd->mirrored;
if(sd->flipped) if(sd->flipped)
flip_surface(sd->thumbnail); sd->thumbnail = flip_surface(sd->thumbnail);
sd->thumb_flipped = sd->flipped; sd->thumb_flipped = sd->flipped;
if(sd->processed) if(sd->processed)
@ -15265,7 +15334,7 @@ static int mySDL_PollEvent(SDL_Event *event)
static SDL_Surface * duplicate_surface(SDL_Surface * orig) static SDL_Surface * duplicate_surface(SDL_Surface * orig)
{ {
/* /*
Uint32 amask; Uint32 amask;
amask = ~(orig->format->Rmask | amask = ~(orig->format->Rmask |
@ -15279,7 +15348,7 @@ static SDL_Surface * duplicate_surface(SDL_Surface * orig)
orig->format->Gmask, orig->format->Gmask,
orig->format->Bmask, orig->format->Bmask,
amask)); amask));
*/ */
return(SDL_DisplayFormatAlpha(orig)); return(SDL_DisplayFormatAlpha(orig));
} }