From 951096eb8616b93215ab375aef8e81e8df98387e Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Mon, 3 Aug 2009 17:38:59 +0000 Subject: [PATCH] Patch by Magnus Bergman to allow setting zoom level with keyboard shortcuts. git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@971 416bcca6-2ee7-4201-b75f-2eb2f807beb1 --- const.h | 15 ++++++- engine.c | 52 ++++++++++++++++++++++++ gfx2.cfg | Bin 10133 -> 10211 bytes helpfile.h | 22 ++++++++-- hotkeys.c | 117 +++++++++++++++++++++++++++++++++++++++++++++++++++++ special.c | 22 ++++++++++ special.h | 1 + 7 files changed, 224 insertions(+), 5 deletions(-) diff --git a/const.h b/const.h index c0fcc269..82b07cd8 100644 --- a/const.h +++ b/const.h @@ -33,7 +33,7 @@ #define BETA1 98 ///< Version number for gfx2.cfg (3/4) #define BETA2 0 ///< Version number for gfx2.cfg (4/4) #define MAX_VIDEO_MODES 100 ///< Maximum number of video modes Grafx2 can propose. -#define NB_SHORTCUTS 145 ///< Number of actions that can have a key combination associated to it. +#define NB_SHORTCUTS 158 ///< Number of actions that can have a key combination associated to it. #define NB_ZOOM_FACTORS 12 ///< Number of zoom levels available in the magnifier. #define MENU_WIDTH 254 ///< Width of the menu (not counting the palette) #define MENU_HEIGHT 44 ///< Height of the menu. @@ -387,6 +387,19 @@ enum SPECIAL_ACTIONS SPECIAL_TRANSPARENCY_9, SPECIAL_TRANSPARENCY_0, SPECIAL_TILING_MENU, ///< This must be the last of the "effects" family + SPECIAL_ZOOM_1, + SPECIAL_ZOOM_2, + SPECIAL_ZOOM_3, + SPECIAL_ZOOM_4, + SPECIAL_ZOOM_5, + SPECIAL_ZOOM_6, + SPECIAL_ZOOM_8, + SPECIAL_ZOOM_10, + SPECIAL_ZOOM_12, + SPECIAL_ZOOM_14, + SPECIAL_ZOOM_16, + SPECIAL_ZOOM_18, + SPECIAL_ZOOM_20, NB_SPECIAL_SHORTCUTS ///< Number of special shortcuts }; diff --git a/engine.c b/engine.c index 5afabdc8..6919cfc0 100644 --- a/engine.c +++ b/engine.c @@ -905,6 +905,58 @@ void Main_handler(void) Transparency_set(0); Key=0; break; + case SPECIAL_ZOOM_1 : + Zoom_set(-1); + Key=0; + break; + case SPECIAL_ZOOM_2 : + Zoom_set(0); + Key=0; + break; + case SPECIAL_ZOOM_3 : + Zoom_set(1); + Key=0; + break; + case SPECIAL_ZOOM_4 : + Zoom_set(2); + Key=0; + break; + case SPECIAL_ZOOM_5 : + Zoom_set(3); + Key=0; + break; + case SPECIAL_ZOOM_6 : + Zoom_set(4); + Key=0; + break; + case SPECIAL_ZOOM_8 : + Zoom_set(5); + Key=0; + break; + case SPECIAL_ZOOM_10 : + Zoom_set(6); + Key=0; + break; + case SPECIAL_ZOOM_12 : + Zoom_set(7); + Key=0; + break; + case SPECIAL_ZOOM_14 : + Zoom_set(8); + Key=0; + break; + case SPECIAL_ZOOM_16 : + Zoom_set(9); + Key=0; + break; + case SPECIAL_ZOOM_18 : + Zoom_set(10); + Key=0; + break; + case SPECIAL_ZOOM_20 : + Zoom_set(11); + Key=0; + break; default : // Gestion des touches de raccourci de bouton: // Pour chaque bouton shortcut_button=-1; diff --git a/gfx2.cfg b/gfx2.cfg index c0cd18498ec3b0ba4a3eaf8dd7257f3c74ce08ef..6bb5e522d12a04914f8c3d457d21061234aad7dd 100644 GIT binary patch delta 99 zcmbR0|Ja|?+0C7aA&G%u%SO(0X77m%Y6=VtlNeqC$;k{#KynI$I*^>opaCSOG3Wxx m=?pJ`Yp+0C7aA&G$@Z6jwo^X7fbswx0ghz6Sg diff --git a/helpfile.h b/helpfile.h index 89fddbf7..165d890f 100644 --- a/helpfile.h +++ b/helpfile.h @@ -206,10 +206,24 @@ static const T_Help_table helptable_help[] = HELP_LINK ("Rotate brush: %s", SPECIAL_ROTATE_ANY_ANGLE) HELP_LINK ("Pipette: %s", 0x100+BUTTON_COLORPICKER) HELP_LINK ("Swap fore/back color:%s", 0x200+BUTTON_COLORPICKER) - HELP_LINK ("Magnifier mode: %s", 0x100+BUTTON_MAGNIFIER) - HELP_LINK ("Zoom factor menu: %s", 0x200+BUTTON_MAGNIFIER) - HELP_LINK ("Zoom in: %s", SPECIAL_ZOOM_IN) - HELP_LINK ("Zoom out: %s", SPECIAL_ZOOM_OUT) + HELP_TEXT ("Magnifier mode") + HELP_LINK (" Toggle: %s", 0x100+BUTTON_MAGNIFIER) + HELP_LINK (" Zoom factor menu: %s", 0x200+BUTTON_MAGNIFIER) + HELP_LINK (" Zoom in: %s", SPECIAL_ZOOM_IN) + HELP_LINK (" Zoom out: %s", SPECIAL_ZOOM_OUT) + HELP_LINK (" 1:1 (off) %s", SPECIAL_ZOOM_1) + HELP_LINK (" 2:1 %s", SPECIAL_ZOOM_2) + HELP_LINK (" 3:1 %s", SPECIAL_ZOOM_3) + HELP_LINK (" 4:1 %s", SPECIAL_ZOOM_4) + HELP_LINK (" 5:1 %s", SPECIAL_ZOOM_5) + HELP_LINK (" 6:1 %s", SPECIAL_ZOOM_6) + HELP_LINK (" 8:1 %s", SPECIAL_ZOOM_8) + HELP_LINK (" 10:1 %s", SPECIAL_ZOOM_10) + HELP_LINK (" 12:1 %s", SPECIAL_ZOOM_12) + HELP_LINK (" 14:1 %s", SPECIAL_ZOOM_14) + HELP_LINK (" 16:1 %s", SPECIAL_ZOOM_16) + HELP_LINK (" 18:1 %s", SPECIAL_ZOOM_18) + HELP_LINK (" 20:1 %s", SPECIAL_ZOOM_20) HELP_LINK ("Brush effects menu: %s", 0x100+BUTTON_BRUSH_EFFECTS) HELP_LINK ("Text: %s", 0x100+BUTTON_TEXT) HELP_LINK ("Resolution menu: %s", 0x100+BUTTON_RESOL) diff --git a/hotkeys.c b/hotkeys.c index da8f0382..b91c8a21 100644 --- a/hotkeys.c +++ b/hotkeys.c @@ -1182,6 +1182,110 @@ T_Key_config ConfigKey[NB_SHORTCUTS] = { true, SDLK_0, // 0 0}, + {145, + "Zoom 1:1", + "Turs magnifier mode off.", + "", + "", + true, + SDLK_1|MOD_CTRL, /* Ctrl + 1 */ + 0}, + {146, + "Zoom 2:1", + "Turs magnifier mode on and set its", + "factor to 2:1", + "", + true, + SDLK_2|MOD_CTRL, /* Ctrl + 2 */ + 0}, + {147, + "Zoom 3:1", + "Turs magnifier mode on and set its", + "factor to 3:1", + "", + true, + SDLK_3|MOD_CTRL, /* Ctrl + 3 */ + 0}, + {148, + "Zoom 4:1", + "Turs magnifier mode on and set its", + "factor to 4:1", + "", + true, + SDLK_4|MOD_CTRL, /* Ctrl + 4 */ + 0}, + {149, + "Zoom 5:1", + "Turs magnifier mode on and set its", + "factor to 5:1", + "", + true, + SDLK_5|MOD_CTRL, /* Ctrl + 5 */ + 0}, + {150, + "Zoom 6:1", + "Turs magnifier mode on and set its", + "factor to 6:1", + "", + true, + SDLK_6|MOD_CTRL, /* Ctrl + 6 */ + 0}, + {151, + "Zoom 8:1", + "Turs magnifier mode on and set its", + "factor to 8:1", + "", + true, + SDLK_7|MOD_CTRL, /* Ctrl + 7 */ + 0}, + {152, + "Zoom 10:1", + "Turs magnifier mode on and set its", + "factor to 10:1", + "", + true, + SDLK_8|MOD_CTRL, /* Ctrl + 8 */ + 0}, + {153, + "Zoom 12:1", + "Turs magnifier mode on and set its", + "factor to 12:1", + "", + true, + 0, + 0}, + {154, + "Zoom 14:1", + "Turs magnifier mode on and set its", + "factor to 14:1", + "", + true, + 0, + 0}, + {155, + "Zoom 16:1", + "Turs magnifier mode on and set its", + "factor to 16:1", + "", + true, + 0, + 0}, + {156, + "Zoom 18:1", + "Turs magnifier mode on and set its", + "factor to 18:1", + "", + true, + 0, + 0}, + {157, + "Zoom 20:1", + "Turs magnifier mode on and set its", + "factor to 20:1", + "", + true, + 0, + 0}, }; word Ordering[NB_SHORTCUTS]= @@ -1331,4 +1435,17 @@ word Ordering[NB_SHORTCUTS]= SPECIAL_TRANSPARENCY_8, // Sets transparency level 80% SPECIAL_TRANSPARENCY_9, // Sets transparency level 90% SPECIAL_TRANSPARENCY_0, // Sets transparency level 00% + SPECIAL_ZOOM_1, /**< Sets zoom factor to 1:1 (no magnification) */ + SPECIAL_ZOOM_2, /**< Sets zoom factor to 2:1 */ + SPECIAL_ZOOM_3, /**< Sets zoom factor to 3:1 */ + SPECIAL_ZOOM_4, /**< Sets zoom factor to 4:1 */ + SPECIAL_ZOOM_5, /**< Sets zoom factor to 5:1 */ + SPECIAL_ZOOM_6, /**< Sets zoom factor to 6:1 */ + SPECIAL_ZOOM_8, /**< Sets zoom factor to 8:1 */ + SPECIAL_ZOOM_10, /**< Sets zoom factor to 10:1 */ + SPECIAL_ZOOM_12, /**< Sets zoom factor to 12:1 */ + SPECIAL_ZOOM_14, /**< Sets zoom factor to 14:1 */ + SPECIAL_ZOOM_16, /**< Sets zoom factor to 16:1 */ + SPECIAL_ZOOM_18, /**< Sets zoom factor to 18:1 */ + SPECIAL_ZOOM_20, /**< Sets zoom factor to 20:1 */ }; diff --git a/special.c b/special.c index 9fa8483e..72f71ee4 100644 --- a/special.c +++ b/special.c @@ -362,3 +362,25 @@ void Zoom(short delta) Display_cursor(); } } + +/** + Set zoom value. Negative value means no zoom. +*/ +void Zoom_set(int index) +{ + Hide_cursor(); + if (index<0) + { + /* Zoom 1:1 */ + if (Main_magnifier_mode) + Unselect_button(BUTTON_MAGNIFIER); + } + else + { + Change_magnifier_factor(index); + if (!Main_magnifier_mode) + Select_button(BUTTON_MAGNIFIER,1); + Display_all_screen(); + } + Display_cursor(); +} diff --git a/special.h b/special.h index 30134671..78984697 100644 --- a/special.h +++ b/special.h @@ -41,3 +41,4 @@ void Scroll_screen(short delta_x,short delta_y); void Scroll_magnifier(short delta_x,short delta_y); void Zoom(short delta); +void Zoom_set(int index);