X-Git-Url: http://git.mutantstargoat.com?p=winnie;a=blobdiff_plain;f=src%2Fsdl%2Fmouse.cc;fp=src%2Fsdl%2Fmouse.cc;h=0000000000000000000000000000000000000000;hp=3ba98a062f82613af7d5f0c97e3734ff9d0381c3;hb=b4c8d68e0357683cec82fb8a9c5a4447155b3192;hpb=9261ecb0ad85bdf8b21e17b7309ddaeb76a57d96 diff --git a/src/sdl/mouse.cc b/src/sdl/mouse.cc deleted file mode 100644 index 3ba98a0..0000000 --- a/src/sdl/mouse.cc +++ /dev/null @@ -1,127 +0,0 @@ -/* -winnie - an experimental window system - -Copyright (C) 2013 Eleni Maria Stea - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . - -Author: Eleni Maria Stea -*/ - -#ifdef WINNIE_SDL -#include - -#include "mouse.h" -#include "shalloc.h" -#include "wm.h" -#include "window.h" -#include "winnie.h" - -extern SDL_Event sdl_event; - -struct Mouse { - int pointer_x; - int pointer_y; - int bnstate; -}; - -static Mouse *mouse; - -bool init_mouse() -{ - if(!(mouse = (Mouse*)sh_malloc(sizeof *mouse))) { - return false; - } - get_subsys()->mouse_offset = (int)((char*)mouse - (char*)get_pool()); - - memset(mouse, 0, sizeof *mouse); - return true; -} - -void destroy_mouse() -{ - sh_free(mouse); -} - -void set_mouse_bounds(const Rect &rect) -{ -} - -int get_mouse_fd() -{ - return -1; -} - -void process_mouse_event() -{ - int bn; - MouseMotionFuncType motion_callback = 0; - MouseButtonFuncType button_callback = 0; - - Window *win; - if(!(win = wm->get_grab_window())) { - win = wm->get_window_at_pos(mouse->pointer_x, mouse->pointer_y); - if(win) { - wm->set_focused_window(win); - } - else { - wm->set_focused_window(0); - } - } - - switch(sdl_event.type) { - case SDL_MOUSEMOTION: - mouse->pointer_x = sdl_event.motion.x; - mouse->pointer_y = sdl_event.motion.y; - if(win && (motion_callback = win->get_mouse_motion_callback())) { - Rect rect = win->get_absolute_rect(); - motion_callback(win, mouse->pointer_x - rect.x, mouse->pointer_y - rect.y); - } - break; - - case SDL_MOUSEBUTTONUP: - case SDL_MOUSEBUTTONDOWN: - bn = sdl_event.button.button - SDL_BUTTON_LEFT; - if(sdl_event.button.state == SDL_PRESSED) { - mouse->bnstate |= 1 << bn; - } - else { - mouse->bnstate &= ~(1 << bn); - } - if(win && (button_callback = win->get_mouse_button_callback())) { - Rect rect = win->get_absolute_rect(); - button_callback(win, bn, sdl_event.button.state, mouse->pointer_x - rect.x, mouse->pointer_y - rect.y); - } - } -} - -void get_pointer_pos(int *x, int *y) -{ - *x = mouse->pointer_x; - *y = mouse->pointer_y; -} - -int get_button_state() -{ - return mouse->bnstate; -} - -int get_button(int bn) -{ - if(bn < 0 || bn >= 3) { - return 0; - } - return (mouse->bnstate & (1 << bn)) != 0; -} -#endif // WINNIE_SDL