From ef3f150a88716c1b698f8abdae8dd77f4abca97c Mon Sep 17 00:00:00 2001 From: Bill Kendrick Date: Tue, 19 Mar 2024 23:13:02 -0700 Subject: [PATCH] Dither magic tools: Add icon Also, less darkening in "Keep Color" variation. --- docs/CHANGES.txt | 3 +-- magic/icons/dither.png | Bin 0 -> 14870 bytes magic/icons/dither_keep_color.png | Bin 0 -> 15388 bytes magic/src/dither.c | 8 ++++---- 4 files changed, 5 insertions(+), 6 deletions(-) create mode 100644 magic/icons/dither.png create mode 100644 magic/icons/dither_keep_color.png diff --git a/docs/CHANGES.txt b/docs/CHANGES.txt index 86b13b3d7..73474f825 100644 --- a/docs/CHANGES.txt +++ b/docs/CHANGES.txt @@ -6,7 +6,7 @@ Copyright (c) 2002-2024 Various contributors (see below, and AUTHORS.txt) https://tuxpaint.org/ -2024.March.15 (0.9.33) +2024.March.19 (0.9.33) * New Magic Tools: ---------------- * WIP Specular Reflection: Draws a slightly blurred, wavy, and @@ -22,7 +22,6 @@ https://tuxpaint.org/ or the currently-selected color; with "Dither (Keep Color)", X is a muted version of the original color. Bill Kendrick - + WIP Needs icon + WIP Needs sound effect * Improvements to Eraser tool: diff --git a/magic/icons/dither.png b/magic/icons/dither.png new file mode 100644 index 0000000000000000000000000000000000000000..85dd2fab7d024c7644a5f830ca2ba03c0866bc0f GIT binary patch literal 14870 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 literal 0 HcmV?d00001 diff --git a/magic/src/dither.c b/magic/src/dither.c index c7d9786b2..971ab32b3 100644 --- a/magic/src/dither.c +++ b/magic/src/dither.c @@ -5,7 +5,7 @@ (Using Atkinso dithering: https://en.wikipedia.org/wiki/Atkinson_dithering) by Bill Kendrick - Last updated: February 29, 2024 + Last updated: March 19, 2024 */ @@ -45,8 +45,8 @@ char * dither_descr[NUM_TOOLS][2] = { }; char * dither_icon_filenames[NUM_TOOLS] = { - "reflection.png", // FIXME - "reflection.png", // FIXME + "dither.png", + "dither_keep_color.png", }; char * dither_snd_filenames[NUM_TOOLS] = { @@ -323,7 +323,7 @@ dither_release(magic_api * api, int which, else { api->rgbtohsv(r, g, b, &h, &s, &v); - api->hsvtorgb(floor(h / 2.0) * 2.0, min(s + 0.5, 1.0), v / 2.0, &r, &g, &b); + api->hsvtorgb(floor(h / 2.0) * 2.0, min(s + 0.5, 1.0), v * 0.66, &r, &g, &b); api->putpixel(canvas, x, y, SDL_MapRGB(canvas->format, r, g, b)); } }