Preparing a space for Magic size control
Magic Controls (paint vs fullscreen) and Sizes (coming soon) can be enabled/disabled independently, and the list of Magic tools sizes itself accordingly.
This commit is contained in:
parent
b4962b32f3
commit
263b382338
2 changed files with 106 additions and 35 deletions
|
|
@ -25,7 +25,7 @@
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
(See COPYING.txt)
|
(See COPYING.txt)
|
||||||
|
|
||||||
Last updated: February 12, 2023
|
Last updated: April 12, 2023
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
@ -39,7 +39,7 @@
|
||||||
|
|
||||||
// Prototypes
|
// Prototypes
|
||||||
Uint32 blur_api_version(void);
|
Uint32 blur_api_version(void);
|
||||||
int blur_init(magic_api * api);
|
int blur_init(magic_api * api, Uint32 disabled_features);
|
||||||
int blur_get_tool_count(magic_api * api);
|
int blur_get_tool_count(magic_api * api);
|
||||||
SDL_Surface *blur_get_icon(magic_api * api, int which);
|
SDL_Surface *blur_get_icon(magic_api * api, int which);
|
||||||
char *blur_get_name(magic_api * api, int which);
|
char *blur_get_name(magic_api * api, int which);
|
||||||
|
|
@ -55,7 +55,11 @@ void blur_release(magic_api * api, int which, SDL_Surface * canvas,
|
||||||
void blur_shutdown(magic_api * api);
|
void blur_shutdown(magic_api * api);
|
||||||
void blur_set_color(magic_api * api, int which, SDL_Surface * canvas,
|
void blur_set_color(magic_api * api, int which, SDL_Surface * canvas,
|
||||||
SDL_Surface * last, Uint8 r, Uint8 g, Uint8 b, SDL_Rect * update_rect);
|
SDL_Surface * last, Uint8 r, Uint8 g, Uint8 b, SDL_Rect * update_rect);
|
||||||
|
void blur_set_size(magic_api * api, int which, SDL_Surface * canvas,
|
||||||
|
SDL_Surface * last, Uint8 sz, SDL_Rect * update_rect);
|
||||||
int blur_requires_colors(magic_api * api, int which);
|
int blur_requires_colors(magic_api * api, int which);
|
||||||
|
Uint8 blur_accepted_sizes(magic_api * api, int which);
|
||||||
|
Uint8 blur_default_size(magic_api * api, int which);
|
||||||
void blur_switchin(magic_api * api, int which, int mode,
|
void blur_switchin(magic_api * api, int which, int mode,
|
||||||
SDL_Surface * canvas);
|
SDL_Surface * canvas);
|
||||||
void blur_switchout(magic_api * api, int which, int mode,
|
void blur_switchout(magic_api * api, int which, int mode,
|
||||||
|
|
@ -99,9 +103,8 @@ Uint32 blur_api_version(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
//Load sounds
|
//Load sounds
|
||||||
int blur_init(magic_api * api)
|
int blur_init(magic_api * api, Uint32 disabled_features ATTRIBUTE_UNUSED)
|
||||||
{
|
{
|
||||||
|
|
||||||
int i;
|
int i;
|
||||||
char fname[1024];
|
char fname[1024];
|
||||||
|
|
||||||
|
|
@ -315,6 +318,12 @@ void blur_set_color(magic_api * api ATTRIBUTE_UNUSED, int which ATTRIBUTE_UNUSED
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Record the size from Tux Paint:
|
||||||
|
void blur_set_size(magic_api * api, int which, SDL_Surface * canvas,
|
||||||
|
SDL_Surface * last, Uint8 sz, SDL_Rect * update_rect) {
|
||||||
|
/* FIXME */
|
||||||
|
}
|
||||||
|
|
||||||
// Use colors:
|
// Use colors:
|
||||||
int blur_requires_colors(magic_api * api ATTRIBUTE_UNUSED,
|
int blur_requires_colors(magic_api * api ATTRIBUTE_UNUSED,
|
||||||
int which ATTRIBUTE_UNUSED)
|
int which ATTRIBUTE_UNUSED)
|
||||||
|
|
@ -322,6 +331,17 @@ int blur_requires_colors(magic_api * api ATTRIBUTE_UNUSED,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Uint8 blur_accepted_sizes(magic_api * api, int which) {
|
||||||
|
/* FIXME */
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
Uint8 blur_default_size(magic_api * api, int which) {
|
||||||
|
/* FIXME */
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
void blur_switchin(magic_api * api ATTRIBUTE_UNUSED,
|
void blur_switchin(magic_api * api ATTRIBUTE_UNUSED,
|
||||||
int which ATTRIBUTE_UNUSED, int mode ATTRIBUTE_UNUSED,
|
int which ATTRIBUTE_UNUSED, int mode ATTRIBUTE_UNUSED,
|
||||||
SDL_Surface * canvas ATTRIBUTE_UNUSED)
|
SDL_Surface * canvas ATTRIBUTE_UNUSED)
|
||||||
|
|
|
||||||
113
src/tuxpaint.c
113
src/tuxpaint.c
|
|
@ -22,7 +22,7 @@
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
(See COPYING.txt)
|
(See COPYING.txt)
|
||||||
|
|
||||||
June 14, 2002 - April 11, 2023
|
June 14, 2002 - April 12, 2023
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
|
|
@ -595,6 +595,8 @@ static void apply_label_node(int old_x, int old_y);
|
||||||
static void reposition_onscreen_keyboard(int y);
|
static void reposition_onscreen_keyboard(int y);
|
||||||
|
|
||||||
|
|
||||||
|
int calc_magic_control_rows(void);
|
||||||
|
|
||||||
static void reset_stamps(int *stamp_xored_rt, int *stamp_place_x,
|
static void reset_stamps(int *stamp_xored_rt, int *stamp_place_x,
|
||||||
int *stamp_place_y, int *stamp_tool_mode);
|
int *stamp_place_y, int *stamp_tool_mode);
|
||||||
|
|
||||||
|
|
@ -4226,23 +4228,11 @@ static void mainloop(void)
|
||||||
gd_controls.cols = 2;
|
gd_controls.cols = 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (cur_tool == TOOL_MAGIC)
|
else if (cur_tool == TOOL_MAGIC)
|
||||||
{
|
{
|
||||||
if (!disable_magic_controls)
|
gd_controls.cols = 2;
|
||||||
{
|
gd_controls.rows = calc_magic_control_rows();
|
||||||
/* Account for magic controls and group changing (left/right) buttons */
|
|
||||||
gd_controls.rows = 2;
|
|
||||||
gd_controls.cols = 2;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/* Magic controls are disabled; account for group changing (left/right) buttons */
|
|
||||||
gd_controls.rows = 1;
|
|
||||||
gd_controls.cols = 2;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (cur_tool == TOOL_SHAPES)
|
else if (cur_tool == TOOL_SHAPES)
|
||||||
{
|
{
|
||||||
if (!disable_shape_controls)
|
if (!disable_shape_controls)
|
||||||
|
|
@ -6024,16 +6014,8 @@ static void mainloop(void)
|
||||||
}
|
}
|
||||||
else if (cur_tool == TOOL_MAGIC)
|
else if (cur_tool == TOOL_MAGIC)
|
||||||
{
|
{
|
||||||
if (!disable_magic_controls)
|
gd_controls.cols = 2;
|
||||||
{
|
gd_controls.rows = calc_magic_control_rows();
|
||||||
gd_controls.rows = 2;
|
|
||||||
gd_controls.cols = 2;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
gd_controls.rows = 1;
|
|
||||||
gd_controls.cols = 2;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (cur_tool == TOOL_SHAPES)
|
else if (cur_tool == TOOL_SHAPES)
|
||||||
{
|
{
|
||||||
|
|
@ -6669,11 +6651,7 @@ static void mainloop(void)
|
||||||
if (cur_tool == TOOL_TEXT && !disable_stamp_controls)
|
if (cur_tool == TOOL_TEXT && !disable_stamp_controls)
|
||||||
control_rows = 2;
|
control_rows = 2;
|
||||||
if (cur_tool == TOOL_MAGIC)
|
if (cur_tool == TOOL_MAGIC)
|
||||||
{
|
control_rows = calc_magic_control_rows();
|
||||||
control_rows = 1;
|
|
||||||
if (!disable_magic_controls)
|
|
||||||
control_rows = 2;
|
|
||||||
}
|
|
||||||
if (cur_tool == TOOL_SHAPES && !disable_shape_controls)
|
if (cur_tool == TOOL_SHAPES && !disable_shape_controls)
|
||||||
control_rows = 1;
|
control_rows = 1;
|
||||||
if ((cur_tool == TOOL_BRUSH || cur_tool == TOOL_LINES)
|
if ((cur_tool == TOOL_BRUSH || cur_tool == TOOL_LINES)
|
||||||
|
|
@ -10342,9 +10320,11 @@ static void draw_magic(void)
|
||||||
|
|
||||||
/* How many can we show? */
|
/* How many can we show? */
|
||||||
|
|
||||||
most = (buttons_tall * gd_toolopt.cols) - gd_toolopt.cols - TOOLOFFSET - 2;
|
most = (buttons_tall * gd_toolopt.cols) - (gd_toolopt.cols * 2) - TOOLOFFSET - 2;
|
||||||
if (disable_magic_controls)
|
if (disable_magic_controls)
|
||||||
most = most + gd_toolopt.cols;
|
most = most + gd_toolopt.cols;
|
||||||
|
if (disable_magic_sizes)
|
||||||
|
most = most + gd_toolopt.cols;
|
||||||
|
|
||||||
if (num_magics[magic_group] > most + TOOLOFFSET)
|
if (num_magics[magic_group] > most + TOOLOFFSET)
|
||||||
{
|
{
|
||||||
|
|
@ -10543,6 +10523,51 @@ static void draw_magic(void)
|
||||||
h) / 2);
|
h) / 2);
|
||||||
|
|
||||||
SDL_BlitSurface(img_magic_fullscreen, NULL, screen, &dest);
|
SDL_BlitSurface(img_magic_fullscreen, NULL, screen, &dest);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Draw magic size controls: */
|
||||||
|
|
||||||
|
if (!disable_magic_sizes)
|
||||||
|
{
|
||||||
|
SDL_Surface *button_color;
|
||||||
|
int grp, cur;
|
||||||
|
int down;
|
||||||
|
|
||||||
|
down = 4;
|
||||||
|
if (disable_magic_controls)
|
||||||
|
down = 2;
|
||||||
|
|
||||||
|
|
||||||
|
grp = magic_group;
|
||||||
|
cur = cur_magic[magic_group];
|
||||||
|
|
||||||
|
|
||||||
|
/* FIXME */
|
||||||
|
|
||||||
|
button_color = img_btn_off; /* Unavailable */
|
||||||
|
|
||||||
|
dest.x = WINDOW_WIDTH - r_ttoolopt.w;
|
||||||
|
dest.y =
|
||||||
|
r_ttoolopt.h +
|
||||||
|
((most / gd_toolopt.cols +
|
||||||
|
(TOOLOFFSET + down) / gd_toolopt.cols) * button_h);
|
||||||
|
|
||||||
|
SDL_BlitSurface(button_color, NULL, screen, &dest);
|
||||||
|
|
||||||
|
|
||||||
|
/* FIXME */
|
||||||
|
|
||||||
|
button_color = img_btn_off; /* Unavailable */
|
||||||
|
|
||||||
|
dest.x = WINDOW_WIDTH - button_w;
|
||||||
|
dest.y =
|
||||||
|
r_ttoolopt.h +
|
||||||
|
((most / gd_toolopt.cols +
|
||||||
|
(TOOLOFFSET + down) / gd_toolopt.cols) * button_h);
|
||||||
|
|
||||||
|
SDL_BlitSurface(button_color, NULL, screen, &dest);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -33388,3 +33413,29 @@ static void reposition_onscreen_keyboard(int y)
|
||||||
update_screen_rect(&kbd_rect);
|
update_screen_rect(&kbd_rect);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* How many rows of controls (not actual Magic tool items)
|
||||||
|
* are to be displayed at the bottom of the selector?
|
||||||
|
* (Based on whether magic controls and/or magic sizes are
|
||||||
|
* disabled)
|
||||||
|
*
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
int calc_magic_control_rows(void) {
|
||||||
|
int r;
|
||||||
|
|
||||||
|
/* Start with group changing (left/right) buttons */
|
||||||
|
r = 1;
|
||||||
|
|
||||||
|
/* Add magic controls (paint vs fullscreen) */
|
||||||
|
if (!disable_magic_controls)
|
||||||
|
r++;
|
||||||
|
|
||||||
|
/* Add magic size controls */
|
||||||
|
if (!disable_magic_sizes)
|
||||||
|
r++;
|
||||||
|
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue