From e0090bbb91ef662456150c9b6536e889d056c54d Mon Sep 17 00:00:00 2001 From: perepujal Date: Mon, 12 Sep 2011 22:59:19 +0000 Subject: Clean up of old onscreen keyboard code, mostly passed to onscreen_keyboard.c --- diff --git a/src/tuxpaint.c b/src/tuxpaint.c index ff45b1c..28cdc87 100644 --- a/src/tuxpaint.c +++ b/src/tuxpaint.c @@ -824,7 +824,7 @@ static SDL_Surface *label; static SDL_Surface *save_canvas; static SDL_Surface *canvas_back; static SDL_Surface *img_starter, *img_starter_bkgd; -static SDL_Surface *key_board; + /* Update a rect. based on two x/y coords (not necessarly in order): */ static void update_screen(int x1, int y1, int x2, int y2) { @@ -1109,7 +1109,7 @@ static int starter_personal; static int template_personal; static int starter_modified; -static Uint8 canvas_color_r, canvas_color_g, canvas_color_b, key_board_color_r, key_board_color_g, key_board_color_b; +static Uint8 canvas_color_r, canvas_color_g, canvas_color_b; static Uint8 * touched; static int shape_radius; @@ -2077,37 +2077,7 @@ enum SHAPE_TOOL_MODE_DONE }; -void keybd_prepare(void); -void keybd_finish(void); -void apply_surface (int x, int y, SDL_Surface *source, SDL_Surface *destination, SDL_Rect *clip); -void drawkeybd(void ); -int regionhit(int x, int y, int w, int h); -void button(int id, int x, int y); -void on_screen_keyboardd(void ); -SDL_Surface *messager = NULL; -#define initial_x (2 * button_w + 80) -#define key_width 24 -#define key_height 24 - -TTF_Font *fontyy = NULL; - -SDL_Color textcolory = { 0, 0, 0 ,0}; - -const char *keybd_array[] = {"","Esc", " `", " 1"," 2"," 3"," 4"," 5"," 6"," 7"," 8"," 9"," 0"," -"," =","Back", - "Caps"," a"," b"," c"," d"," e"," f"," g"," h"," i"," j"," k"," l"," m"," n"," [", " ]"," \\","Ret", - " o"," p"," q"," r"," s"," t"," u"," v"," w"," x"," y"," z"," ,", " ."," /"," ;"," '\'","Alt","Shift"}; - -struct UIState -{ - int mousex; - int mousey; - int mousedown; - - int hotitem; - int activeitem; -} -uistate = {0,0,0,0,0}; int brushflag,xnew,ynew,eraflag,lineflag, magicflag, keybd_flag, keybd_position, keyglobal, initial_y, gen_key_flag, ide, activeflag, old_x, old_y; int cur_thing, shift_flag, caps_flag, enter_flag; @@ -3269,10 +3239,6 @@ static void mainloop(void) event.button.button <= 3) { - if (keybd_flag == 1) - { - uistate.mousedown = 1; - } if (HIT(r_tools)) { @@ -5052,11 +5018,6 @@ static void mainloop(void) /* printf("Killing scrolling\n"); */ } - if (keybd_flag == 1) - { - uistate.mousedown = 0; - } - if (button_down || emulate_button_pressed) { if (cur_tool == TOOL_BRUSH) @@ -5214,21 +5175,7 @@ static void mainloop(void) oldpos_x = event.motion.x; oldpos_y = event.motion.y; - if (keybd_flag == 1) - { -// uistate.mousedown = 1; - uistate.mousex = event.motion.x; - uistate.mousey = event.motion.y; - } - if ((uistate.mousex > initial_x) && (uistate.mousex < initial_x + key_width * 19) && keybd_flag == 1 && ((uistate.mousey > initial_y) && (uistate.mousey < (initial_y + (key_height * 3))))) - { - keyglobal = 1; - } - else - { - keyglobal = 0; - } /* FIXME: Is doing this every event too intensive? */ /* Should I check current cursor first? */ @@ -5442,10 +5389,6 @@ static void mainloop(void) if (button_down || emulate_button_pressed) { - if (keybd_flag == 1) - { - uistate.mousedown = 0; - } if (cur_tool == TOOL_BRUSH) { /* Pushing button and moving: Draw with the brush: */ @@ -23326,764 +23269,7 @@ int main(int argc, char *argv[]) return 0; } -// Check whether current mouse position is within a rectangle -int regionhit(int x, int y, int w, int h) -{ - if (uistate.mousex < x || - uistate.mousey < y || - uistate.mousex >= x + w || - uistate.mousey >= y + h) - return 0; - return 1; -} - -void button(int id, int x, int y) -{ - SDL_Rect dest,desti; - SDL_Surface *tmp_imgup; - SDL_Event event; - dest.x = x; - dest.y = y; - - // Check whether the button should be hot - if (regionhit(x, y, 24, 24)) - { - uistate.hotitem = id; - - if (uistate.activeitem == 0 && uistate.mousedown) - { - uistate.activeitem = id; - activeflag = 1; - } - } - - // Render button - SDL_BlitSurface(img_btnsm_up, NULL, screen, &dest); - if (caps_flag % 2 != 0) - { - desti.x = initial_x; - desti.y = initial_y + key_height; - SDL_BlitSurface(img_btnsm_down, NULL, screen, &desti); - } - if (uistate.hotitem == id) - { - if (uistate.activeitem == id) - { - // Button is both 'hot' and 'active' - if (activeflag == 1) - { - ide = id; - gen_key_flag = 1; - activeflag = 0; - uistate.activeitem = 0; - } - SDL_BlitSurface(img_btnsm_down, NULL, screen, &dest); - } - else - { - // Button is merely 'hot' - SDL_BlitSurface(img_btnsm_down, NULL, screen, &dest); - } - } - else - { - // button is not hot, but it may be active - SDL_BlitSurface(img_btnsm_up, NULL, screen, &dest); - } - - if (gen_key_flag == 1) - { - int i,j; - gen_key_flag = 0; - enter_flag = 0; - SDL_EnableUNICODE(1); -// printf("\n entered here %d th time \n", k); -// k++; - if (ide == 1) - { - event.key.keysym.sym = SDLK_ESCAPE; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = 27; - - } - else if (ide == 2) - { - event.key.keysym.sym = SDLK_BACKQUOTE; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = 96; - } - else if (ide == 3) - { - event.key.keysym.sym = SDLK_1; - if (shift_flag % 2 != 0) - event.key.keysym.mod = KMOD_RSHIFT; - else - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = 49; - } - else if (ide == 4) - { - event.key.keysym.sym = SDLK_2; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = 50; - } - else if (ide == 5) - { - event.key.keysym.sym = SDLK_3; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = 51; - } - else if (ide == 6) - { - event.key.keysym.sym = SDLK_4; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = 52; - } - else if (ide == 7) - { - event.key.keysym.sym = SDLK_5; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = 53; - } - else if (ide == 8) - { - event.key.keysym.sym = SDLK_6; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = 54; - } - else if (ide == 9) - { - event.key.keysym.sym = SDLK_7; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = 55; - } - else if (ide == 10) - { - event.key.keysym.sym = SDLK_8; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = 56; - } - else if (ide == 11) - { - event.key.keysym.sym = SDLK_9; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = 57; - } - else if (ide == 12) - { - event.key.keysym.sym = SDLK_0; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = 48; - } - else if (ide == 13) - { - event.key.keysym.sym = SDLK_MINUS; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = 45; - } - else if (ide == 14) - { - event.key.keysym.sym = SDLK_EQUALS; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = 61; - } - else if (ide == 15) - { - event.key.keysym.sym = SDLK_BACKSPACE; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = 8; - } - else if (ide == 16) - { - caps_flag++; - enter_flag = 1; - } - else if (ide == 17) - { - if (caps_flag % 2 != 0) - { - event.key.keysym.sym = SDLK_a; - event.key.keysym.mod = KMOD_CAPS; - event.key.keysym.unicode = 65; - } - else - { - event.key.keysym.sym = SDLK_a; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = (Uint16)'a'; - } - } - else if (ide == 18) - { - if (caps_flag % 2 != 0) - { - event.key.keysym.sym = SDLK_b; - event.key.keysym.mod = KMOD_CAPS; - event.key.keysym.unicode = 66; - } - else - { - event.key.keysym.sym = SDLK_b; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = (Uint16)'b'; - } - } - else if (ide == 19) - { - if (caps_flag % 2 != 0) - { - event.key.keysym.sym = SDLK_c; - event.key.keysym.mod = KMOD_CAPS; - event.key.keysym.unicode = 67; - } - else - { - event.key.keysym.sym = SDLK_c; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = (Uint16)'c'; - } - } - else if (ide == 20) - { - if (caps_flag % 2 != 0) - { - event.key.keysym.sym = SDLK_d; - event.key.keysym.mod = KMOD_CAPS; - event.key.keysym.unicode = 68; - } - else - { - event.key.keysym.sym = SDLK_d; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = (Uint16)'d'; - } - } - else if (ide == 21) - { - if (caps_flag % 2 != 0) - { - event.key.keysym.sym = SDLK_e; - event.key.keysym.mod = KMOD_CAPS; - event.key.keysym.unicode = 69; - } - else - { - event.key.keysym.sym = SDLK_e; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = (Uint16)'e'; - } - } - else if (ide == 22) - { - if (caps_flag % 2 != 0) - { - event.key.keysym.sym = SDLK_f; - event.key.keysym.mod = KMOD_CAPS; - event.key.keysym.unicode = 70; - } - else - { - event.key.keysym.sym = SDLK_f; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = (Uint16)'f'; - } - } - else if (ide == 23) - { - if (caps_flag % 2 != 0) - { - event.key.keysym.sym = SDLK_g; - event.key.keysym.mod = KMOD_CAPS; - event.key.keysym.unicode = 71; - } - else - { - event.key.keysym.sym = SDLK_g; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = (Uint16)'g'; - } - } - else if (ide == 24) - { - if (caps_flag % 2 != 0) - { - event.key.keysym.sym = SDLK_h; - event.key.keysym.mod = KMOD_CAPS; - event.key.keysym.unicode = 72; - } - else - { - event.key.keysym.sym = SDLK_h; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = (Uint16)'h'; - } - } - else if (ide == 25) - { - if (caps_flag % 2 != 0) - { - event.key.keysym.sym = SDLK_i; - event.key.keysym.mod = KMOD_CAPS; - event.key.keysym.unicode = 73; - } - else - { - event.key.keysym.sym = SDLK_i; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = (Uint16)'i'; - } - } - else if (ide == 26) - { - if (caps_flag % 2 != 0) - { - event.key.keysym.sym = SDLK_j; - event.key.keysym.mod = KMOD_CAPS; - event.key.keysym.unicode = 74; - } - else - { - event.key.keysym.sym = SDLK_j; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = (Uint16)'j'; - } - } - else if (ide == 27) - { - if (caps_flag % 2 != 0) - { - event.key.keysym.sym = SDLK_k; - event.key.keysym.mod = KMOD_CAPS; - event.key.keysym.unicode = 75; - } - else - { - event.key.keysym.sym = SDLK_k; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = (Uint16)'k'; - } - } - else if (ide == 28) - { - if (caps_flag % 2 != 0) - { - event.key.keysym.sym = SDLK_l; - event.key.keysym.mod = KMOD_CAPS; - event.key.keysym.unicode = 76; - } - else - { - event.key.keysym.sym = SDLK_l; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = (Uint16)'l'; - } - } - else if (ide == 29) - { - if (caps_flag % 2 != 0) - { - event.key.keysym.sym = SDLK_m; - event.key.keysym.mod = KMOD_CAPS; - event.key.keysym.unicode = 77; - } - else - { - event.key.keysym.sym = SDLK_m; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = (Uint16)'m'; - } - } - else if (ide == 30) - { - if (caps_flag % 2 != 0) - { - event.key.keysym.sym = SDLK_n; - event.key.keysym.mod = KMOD_CAPS; - event.key.keysym.unicode = 78; - } - else - { - event.key.keysym.sym = SDLK_n; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = (Uint16)'n'; - } - } - else if (ide == 31) - { - event.key.keysym.sym = SDLK_LEFTBRACKET; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = 91; - } - else if (ide == 32) - { - event.key.keysym.sym = SDLK_RIGHTBRACKET; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = 93; - } - else if (ide == 33) - { - event.key.keysym.sym = SDLK_BACKSLASH; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = 92; - } - else if (ide == 34) - { - event.key.keysym.sym = SDLK_RETURN; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = 13; - } - else if (ide == 35) - { - if (caps_flag % 2 != 0) - { - event.key.keysym.sym = SDLK_o; - event.key.keysym.mod = KMOD_CAPS; - event.key.keysym.unicode = 79; - } - else - { - event.key.keysym.sym = SDLK_o; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = (Uint16)'o'; - } - } - else if (ide == 36) - { - if (caps_flag % 2 != 0) - { - event.key.keysym.sym = SDLK_p; - event.key.keysym.mod = KMOD_CAPS; - event.key.keysym.unicode = 80; - } - else - { - event.key.keysym.sym = SDLK_p; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = (Uint16)'p'; - } - } - else if (ide == 37) - { - if (caps_flag % 2 != 0) - { - event.key.keysym.sym = SDLK_q; - event.key.keysym.mod = KMOD_CAPS; - event.key.keysym.unicode = 81; - } - else - { - event.key.keysym.sym = SDLK_q; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = (Uint16)'q'; - } - } - else if (ide == 38) - { - if (caps_flag % 2 != 0) - { - event.key.keysym.sym = SDLK_r; - event.key.keysym.mod = KMOD_CAPS; - event.key.keysym.unicode = 82; - } - else - { - event.key.keysym.sym = SDLK_r; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = (Uint16)'r'; - } - } - else if (ide == 39) - { - if (caps_flag % 2 != 0) - { - event.key.keysym.sym = SDLK_s; - event.key.keysym.mod = KMOD_CAPS; - event.key.keysym.unicode = 83; - } - else - { - event.key.keysym.sym = SDLK_s; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = (Uint16)'s'; - } - } - else if (ide == 40) - { - if (caps_flag % 2 != 0) - { - event.key.keysym.sym = SDLK_t; - event.key.keysym.mod = KMOD_CAPS; - event.key.keysym.unicode = 84; - } - else - { - event.key.keysym.sym = SDLK_t; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = (Uint16)'t'; - } - } - else if (ide == 41) - { - if (caps_flag % 2 != 0) - { - event.key.keysym.sym = SDLK_u; - event.key.keysym.mod = KMOD_CAPS; - event.key.keysym.unicode = 85; - } - else - { - event.key.keysym.sym = SDLK_u; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = (Uint16)'u'; - } - } - else if (ide == 42) - { - if (caps_flag % 2 != 0) - { - event.key.keysym.sym = SDLK_v; - event.key.keysym.mod = KMOD_CAPS; - event.key.keysym.unicode = 86; - } - else - { - event.key.keysym.sym = SDLK_v; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = (Uint16)'v'; - } - } - else if (ide == 43) - { - if (caps_flag % 2 != 0) - { - event.key.keysym.sym = SDLK_w; - event.key.keysym.mod = KMOD_CAPS; - event.key.keysym.unicode = 87; - } - else - { - event.key.keysym.sym = SDLK_w; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = (Uint16)'w'; - } - } - else if (ide == 44) - { - if (caps_flag % 2 != 0) - { - event.key.keysym.sym = SDLK_x; - event.key.keysym.mod = KMOD_CAPS; - event.key.keysym.unicode = 88; - } - else - { - event.key.keysym.sym = SDLK_x; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = (Uint16)'x'; - } - } - else if (ide == 45) - { - if (caps_flag % 2 != 0) - { - event.key.keysym.sym = SDLK_y; - event.key.keysym.mod = KMOD_CAPS; - event.key.keysym.unicode = 89; - } - else - { - event.key.keysym.sym = SDLK_y; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = (Uint16)'y'; - // event.key.keysym.unicode = 0x1008ff79; - } - } - else if (ide == 46) - { - if (caps_flag % 2 != 0) - { - event.key.keysym.sym = SDLK_z; - event.key.keysym.mod = KMOD_CAPS; - event.key.keysym.unicode = 90; - } - else - { - event.key.keysym.sym = SDLK_z; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = (Uint16)'z'; - } - } - else if (ide == 47) - { - event.key.keysym.sym = SDLK_COMMA; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = 44; - } - else if (ide == 48) - { - event.key.keysym.sym = SDLK_PERIOD; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = 46; - } - else if (ide == 49) - { - event.key.keysym.sym = SDLK_SLASH; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = 47; - } - else if (ide == 50) - { - event.key.keysym.sym = SDLK_SEMICOLON; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = 59; - } - else if (ide == 51) - { - event.key.keysym.sym = SDLK_QUOTEDBL; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = 34; - } - else if (ide == 52) - { - event.key.keysym.sym = SDLK_RALT; - event.key.keysym.mod = KMOD_NONE; - event.key.keysym.unicode = 307; - } - else if (ide == 53) - { - shift_flag++; - enter_flag = 1; - } - - if (enter_flag == 0) - { - event.key.type=SDL_KEYDOWN; - SDL_PushEvent(&event); - event.key.type=SDL_KEYUP; - SDL_PushEvent(&event); - } - } -} - -void keybd_prepare() -{ - /* FIXME we should use the current font to draw the keyboard */ - char * fontname; - fontname = malloc(128); - - sprintf(fontname, "%s/fonts/FreeSansBold.ttf", DATA_PREFIX); - fontyy = TTF_OpenFont( fontname, 12 ); - if (fontyy == NULL) - { - fprintf(stderr, "\nError: Can't open the font!\n" - "The Simple DirectMedia Layer error that occurred was:\n" - "%s\n\n", SDL_GetError()); - exit(1); - } - uistate.hotitem = 0; - free(fontname); -} -void keybd_finish() -{ - if (uistate.mousedown == 0) - { - uistate.activeitem = 0; - } - else - { - if (uistate.activeitem == 0) - uistate.activeitem = -1; - } - TTF_CloseFont (fontyy); -} - -void apply_surface (int x, int y, SDL_Surface *source, SDL_Surface *destination, SDL_Rect *clip) -{ - SDL_Rect offset; - - offset.x = x; - offset.y = y; - - SDL_BlitSurface( source, clip, destination, &offset ); -} - -void drawkeybd(void ) -{ - - int i; - for (i = 1; i <= 15; i++) - { - messager = TTF_RenderText_Solid( fontyy, keybd_array[i], textcolory ); - apply_surface( initial_x + (key_width)*(i-1), initial_y, messager, screen, NULL); - SDL_FreeSurface(messager); - } - - for (i = 1; i <= 19; i++) - { - messager = TTF_RenderText_Solid( fontyy, keybd_array[i+15], textcolory ); - apply_surface( initial_x + (key_width)*(i-1), initial_y + key_height, messager, screen, NULL); - SDL_FreeSurface(messager); - } - - for (i = 1; i <= 19; i++) - { - messager = TTF_RenderText_Solid( fontyy, keybd_array[i+34], textcolory ); - apply_surface( initial_x + (key_width)*(i-1), initial_y + (2 * key_height), messager, screen, NULL); - SDL_FreeSurface(messager); - } - -} - -void on_screen_keyboardd(void ) -{ - int i; - if (key_board != NULL) - SDL_FreeSurface(key_board); - - key_board = SDL_CreateRGBSurface(canvas->flags, - key_width * 19, - key_height * 3, - canvas->format->BitsPerPixel, - canvas->format->Rmask, - canvas->format->Gmask, - canvas->format->Bmask, 0); - key_board_color_r = 255; - key_board_color_g = 255; - key_board_color_b = 255; - - SDL_FillRect(key_board, NULL, SDL_MapRGB(key_board->format, 255, 255, 255)); - if (keybd_position == 0) - { - initial_y = 400; - } - else - { - initial_y = 5; - } - apply_surface( initial_x, initial_y, key_board, screen, NULL); - - keybd_prepare(); - - for (i = 1; i <= 15 ; i++) - button (i, initial_x + (key_width)*(i-1), initial_y); - - for (i = 1; i <= 19; i++) - button (i+15, initial_x + (key_width)*(i-1), initial_y + key_height); - - for (i = 1; i <= 19; i++) - button (i+34, initial_x + (key_width)*(i-1), initial_y + 2*key_height); - - drawkeybd(); - - keybd_finish(); - - SDL_UpdateRect(screen, 0, 0, 640, 480); - - /* SDL_Delay(10); */ /* FIXME: This should not be necessary! -bjk 2011.04.21 */ - - keybd_flag = 1; -} /* Moves a file to the trashcan (or deletes it) */ -- cgit v0.9.1