New Magic: Double vision

WIP - needs icon & sfx
This commit is contained in:
Bill Kendrick 2023-03-22 00:15:07 -07:00
parent d0b9c89d4a
commit 9b9fc9c845
2 changed files with 23 additions and 6 deletions

View file

@ -7,7 +7,7 @@ Various contributors (see below, and AUTHORS.txt)
https://tuxpaint.org/
2023.March.21 (0.9.29) ### RC2
2023.March.22 (0.9.29) ### RC2
* Improvements to "Stamp" tool:
-----------------------------
* Stamps may now be rotated.
@ -62,6 +62,13 @@ https://tuxpaint.org/
Attribution 4.0 International (CC BY 4.0)
by https://freesound.org/people/juskiddink/)
* [WIP] "Double Vision" - separate and blend (50/50) the image,
simulating double vision.
Bill Kendrick <bill@newbreedsoftware.com>
(Closes https://sourceforge.net/p/tuxpaint/feature-requests/221/)
+ needs icon
+ needs sound effects
* "Saturate" & "Desaturate" - Increase or decrease color saturation.
Bill Kendrick <bill@newbreedsoftware.com>
(Sounds based on "can lid.wav", Creative Commons 0 (CC0 1.0)

View file

@ -3,7 +3,7 @@
Color separation effect (a la red/cyan aka red/blue 3D glasses).
Bill Kendrick
Last updated: February 22, 2023
Last updated: March 22, 2023
*/
#include <stdio.h>
@ -18,26 +18,32 @@
enum {
COLORSEP_TOOL_3DGLASSES,
COLORSEP_TOOL_COLORSEP,
COLORSEP_TOOL_DOUBLEVISION,
NUM_TOOLS
};
static char * colorsep_snd_filenames[NUM_TOOLS] = {
"3dglasses.ogg",
"colorsep.ogg"
"colorsep.ogg",
"colorsep.ogg" // FIXME
};
static char * colorsep_icon_filenames[NUM_TOOLS] = {
"3dglasses.png",
"colorsep.png"
"colorsep.png",
"colorsep.png" // FIXME
};
char * colorsep_names[NUM_TOOLS] = {
gettext_noop("3D Glasses"),
gettext_noop("Color Sep."),
gettext_noop("Double Vision"),
};
char * colorsep_descrs[NUM_TOOLS] = {
gettext_noop("Click and drag left and right to separate your picture's red and cyan, to make anaglyphs you can view with 3D glasses!"),
gettext_noop("Click and drag to separate your picture's colors.")
gettext_noop("Click and drag to separate your picture's colors."),
gettext_noop("Click and drag to simulate double vision."),
};
Mix_Chunk *snd_effects[NUM_TOOLS];
@ -190,10 +196,14 @@ colorsep_drag(magic_api * api ATTRIBUTE_UNUSED, int which, SDL_Surface * canvas,
r = r1;
g = g2;
b = b2;
} else {
} else if (which == COLORSEP_TOOL_COLORSEP) {
r = (Uint8) ((float) r1 * colorsep_r_pct) + ((float) r2 * (1.0 - colorsep_r_pct));
g = (Uint8) ((float) g1 * colorsep_g_pct) + ((float) g2 * (1.0 - colorsep_g_pct));
b = (Uint8) ((float) b1 * colorsep_b_pct) + ((float) b2 * (1.0 - colorsep_b_pct));
} else { /* which == COLORSEP_TOOL_DOUBLEVISION */
r = (Uint8) ((float) r1 * 0.5) + ((float) r2 * 0.5);
g = (Uint8) ((float) g1 * 0.5) + ((float) g2 * 0.5);
b = (Uint8) ((float) b1 * 0.5) + ((float) b2 * 0.5);
}
api->putpixel(canvas, xx, yy, SDL_MapRGB(canvas->format, r, g, b));