From 55cdd3b49c43a9f488b7ec3fc800214d830bb460 Mon Sep 17 00:00:00 2001 From: Bill Kendrick Date: Wed, 19 Apr 2023 22:08:14 -0700 Subject: [PATCH] String magics: update to new plugin API; use XOR String 'V' and String corner magic tools preview with XOR effect. --- docs/CHANGES.txt | 4 ++++ magic/src/string.c | 53 +++++++++++++++++++++++++++++++++++----------- 2 files changed, 45 insertions(+), 12 deletions(-) diff --git a/docs/CHANGES.txt b/docs/CHANGES.txt index e585d0651..d843358bb 100644 --- a/docs/CHANGES.txt +++ b/docs/CHANGES.txt @@ -39,6 +39,10 @@ https://tuxpaint.org/ + Blur + Googly Eyes + WIP... more! + Bill Kendrick + + * String 'V' and String corner magic tools preview with XOR effect. + Bill Kendrick * Other Improvements: ------------------- diff --git a/magic/src/string.c b/magic/src/string.c index f2fa7e8ba..714c2cbc0 100644 --- a/magic/src/string.c +++ b/magic/src/string.c @@ -1,7 +1,7 @@ /* Strings -- draws string art. - Last updated: February 12, 2023 + Last updated: April 19, 2023 */ #include "tp_magic_api.h" #include "SDL_image.h" @@ -27,6 +27,8 @@ Mix_Chunk *string_snd[STRING_NUMTOOLS]; void string_callback(void *ptr, int which_tool, SDL_Surface * canvas, SDL_Surface * snapshot, int x, int y); +void string_callback_xor(void *ptr, int which_tool, SDL_Surface * canvas, + SDL_Surface * snapshot, int x, int y); void string_draw_triangle(magic_api * api, int which, SDL_Surface * canvas, SDL_Surface * snapshot, int ox, int oy, int x, int y, SDL_Rect * update_rect); @@ -71,7 +73,7 @@ int string_requires_colors(magic_api * api, int which); void string_release(magic_api * api, int which, SDL_Surface * canvas, SDL_Surface * snapshot, int x, int y, SDL_Rect * update_rect); -int string_init(magic_api * api); +int string_init(magic_api * api, Uint32 disabled_features); void string_shutdown(magic_api * api); void string_switchin(magic_api * api, int which, int mode, SDL_Surface * canvas, SDL_Surface * snapshot); @@ -80,6 +82,9 @@ void string_switchout(magic_api * api, int which, int mode, void string_click(magic_api * api, int which, int mode, SDL_Surface * canvas, SDL_Surface * snapshot, int x, int y, SDL_Rect * update_rect); +Uint8 string_accepted_sizes(magic_api * api ATTRIBUTE_UNUSED, int which ATTRIBUTE_UNUSED, int mode ATTRIBUTE_UNUSED); +Uint8 string_default_size(magic_api * api ATTRIBUTE_UNUSED, int which ATTRIBUTE_UNUSED, int mode ATTRIBUTE_UNUSED); +void string_set_size(magic_api * api ATTRIBUTE_UNUSED, int which ATTRIBUTE_UNUSED, int mode ATTRIBUTE_UNUSED, SDL_Surface * canvas ATTRIBUTE_UNUSED, SDL_Surface * last ATTRIBUTE_UNUSED, Uint8 size ATTRIBUTE_UNUSED, SDL_Rect * update_rect ATTRIBUTE_UNUSED); // Required functions @@ -207,7 +212,7 @@ void string_release(magic_api * api, int which, } } -int string_init(magic_api * api ATTRIBUTE_UNUSED) +int string_init(magic_api * api, Uint32 disabled_features ATTRIBUTE_UNUSED) { char fname[1024]; @@ -276,6 +281,15 @@ void string_callback(void *ptr, int which ATTRIBUTE_UNUSED, 255)); } +void string_callback_xor(void *ptr, int which ATTRIBUTE_UNUSED, + SDL_Surface * canvas, + SDL_Surface * snapshot ATTRIBUTE_UNUSED, int x, int y) +{ + magic_api *api = (magic_api *) ptr; + + api->xorpixel(canvas, x, y); +} + void string_click(magic_api * api, int which, int mode ATTRIBUTE_UNUSED, SDL_Surface * canvas, SDL_Surface * snapshot, int x, int y, @@ -416,13 +430,13 @@ void string_draw_triangle_preview(magic_api * api, int which, compute_middle(y, string_oy, string_oy, &middle_y); api->line((void *) api, which, canvas, snapshot, string_ox, string_oy, - string_ox, y, 1, string_callback); + string_ox, y, 1, string_callback_xor); api->line((void *) api, which, canvas, snapshot, string_ox, string_oy, x, - string_oy, 1, string_callback); + string_oy, 1, string_callback_xor); api->line((void *) api, which, canvas, snapshot, middle_x, middle_y, x, - string_oy, 1, string_callback); + string_oy, 1, string_callback_xor); api->line((void *) api, which, canvas, snapshot, string_ox, y, middle_x, - middle_y, 1, string_callback); + middle_y, 1, string_callback_xor); } void string_draw_angle_preview(magic_api * api, int which, @@ -441,7 +455,7 @@ void string_draw_angle_preview(magic_api * api, int which, SDL_BlitSurface(canvas_backup, update_rect, canvas, update_rect); api->line((void *) api, which, canvas, snapshot, string_ox, string_oy, - string_vertex_x, string_vertex_y, 1, string_callback); + string_vertex_x, string_vertex_y, 1, string_callback_xor); if (!string_vertex_done) { // if(!string_vertex_done) // maybe we face small children, draw square angles aligned to the drag @@ -456,12 +470,11 @@ void string_draw_angle_preview(magic_api * api, int which, compute_middle(string_oy, y, string_vertex_y, &middle_y); api->line((void *) api, which, canvas, snapshot, string_vertex_x, - string_vertex_y, x, y, 1, string_callback); + string_vertex_y, x, y, 1, string_callback_xor); api->line((void *) api, which, canvas, snapshot, string_ox, string_oy, - middle_x, middle_y, 1, string_callback); + middle_x, middle_y, 1, string_callback_xor); api->line((void *) api, which, canvas, snapshot, x, y, middle_x, middle_y, - 1, string_callback); - + 1, string_callback_xor); } void string_draw_angle(magic_api * api, int which ATTRIBUTE_UNUSED, @@ -570,3 +583,19 @@ void string_drag(magic_api * api, int which, } } + + + +Uint8 string_accepted_sizes(magic_api * api ATTRIBUTE_UNUSED, int which ATTRIBUTE_UNUSED, int mode ATTRIBUTE_UNUSED) +{ + return 0; +} + +Uint8 string_default_size(magic_api * api ATTRIBUTE_UNUSED, int which ATTRIBUTE_UNUSED, int mode ATTRIBUTE_UNUSED) +{ + return 0; +} + +void string_set_size(magic_api * api ATTRIBUTE_UNUSED, int which ATTRIBUTE_UNUSED, int mode ATTRIBUTE_UNUSED, SDL_Surface * canvas ATTRIBUTE_UNUSED, SDL_Surface * last ATTRIBUTE_UNUSED, Uint8 size ATTRIBUTE_UNUSED, SDL_Rect * update_rect ATTRIBUTE_UNUSED) +{ +}