diff options
| author | Karl Kurbjun <kkurbjun@gmail.com> | 2009-08-02 07:05:30 +0000 |
|---|---|---|
| committer | Karl Kurbjun <kkurbjun@gmail.com> | 2009-08-02 07:05:30 +0000 |
| commit | 0131a3873e0cb05bd357326b441f2cbc1884c657 (patch) | |
| tree | bf224f3e36c3b052f3583d5692eae12d9c922f55 /apps/plugins/lib/touchscreen.c | |
| parent | e9b061a7174298c61dd1f935a38654e07f573197 (diff) | |
| download | rockbox-0131a3873e0cb05bd357326b441f2cbc1884c657.zip rockbox-0131a3873e0cb05bd357326b441f2cbc1884c657.tar.gz rockbox-0131a3873e0cb05bd357326b441f2cbc1884c657.tar.bz2 rockbox-0131a3873e0cb05bd357326b441f2cbc1884c657.tar.xz | |
Pluginlib: Add support for general buttons. Add menu and quit buttons to Reversi. MRobe 500: Modify touch handler to return the previous data always rather than 0 when there is no touch.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22110 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins/lib/touchscreen.c')
| -rw-r--r-- | apps/plugins/lib/touchscreen.c | 135 |
1 files changed, 0 insertions, 135 deletions
diff --git a/apps/plugins/lib/touchscreen.c b/apps/plugins/lib/touchscreen.c deleted file mode 100644 index 5b75173..0000000 --- a/apps/plugins/lib/touchscreen.c +++ /dev/null @@ -1,135 +0,0 @@ -/*************************************************************************** -* __________ __ ___. -* Open \______ \ ____ ____ | | _\_ |__ _______ ___ -* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / -* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < -* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ -* \/ \/ \/ \/ \/ -* $Id$ -* -* Copyright (C) 2008 by Maurus Cuelenaere -* -* 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 2 -* of the License, or (at your option) any later version. -* -* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -* KIND, either express or implied. -* -****************************************************************************/ - -#include "plugin.h" - -#ifdef HAVE_TOUCHSCREEN - -#include "touchscreen.h" - -unsigned int touchscreen_map(struct ts_mappings *map, int x, int y) -{ - int i; - for(i=0; i < map->amount; i++) - { - #define _MAP(x) (map->mappings[x]) - if(x > _MAP(i).tl_x && x < (_MAP(i).tl_x+_MAP(i).width) - && y > _MAP(i).tl_y && y < (_MAP(i).tl_y+_MAP(i).height)) - return i; - } - - return -1; -} - -unsigned int touchscreen_map_raster(struct ts_raster *map, int x, int y, struct ts_raster_result *result) -{ - int res1_x, res2_x, res1_y, res2_y; - - if((x - map->tl_x) < 0 || - (x - map->tl_x) > map->width) - return -1; - res1_x = (x - map->tl_x)/(map->raster_width); - res2_x = (x - map->tl_x)%(map->raster_width); - - if((y - map->tl_y) < 0 || - (y - map->tl_y) > map->height) - return -1; - res1_y = (y - map->tl_y)/(map->raster_height); - res2_y = (y - map->tl_y)%(map->raster_height); - - if(res2_x == 0 || res2_y == 0) /* pen hit a raster boundary */ - return -2; - else - { - (*result).x = res1_x; - (*result).y = res1_y; - return 1; - } -} - -struct ts_raster_button_result touchscreen_raster_map_button(struct ts_raster_button_mapping *map, int x, int y, int button) -{ - struct ts_raster_button_result ret = {0, {0, 0}, {0, 0}}; - struct ts_raster_result tmp; - - ret.action = TS_ACTION_NONE; - if(touchscreen_map_raster(map->raster, x, y, &tmp) != 1) - return ret; - - #define NOT_HANDLED (ret.action == TS_ACTION_NONE) - if((button == BUTTON_REPEAT) && (map->_prev_btn_state != BUTTON_REPEAT) && map->drag_drop_enable) - { - map->_prev_x = tmp.x; - map->_prev_y = tmp.y; - } - if((button == BUTTON_REL) && (map->_prev_btn_state == BUTTON_REPEAT) && map->drag_drop_enable) - { - ret.action = TS_ACTION_DRAG_DROP; - ret.from.x = map->_prev_x; - ret.from.y = map->_prev_y; - ret.to.x = tmp.x; - ret.to.y = tmp.y; - } - if((button == BUTTON_REL) && map->double_click_enable && NOT_HANDLED) - { - if(map->_prev_x == tmp.x && map->_prev_y == tmp.y) - { - ret.action = TS_ACTION_DOUBLE_CLICK; - ret.from.x = ret.to.x = tmp.x; - ret.from.y = ret.to.y = tmp.y; - } - else - { - map->_prev_x = tmp.x; - map->_prev_y = tmp.y; - } - } - if((button & BUTTON_REL || button & BUTTON_REPEAT) && map->two_d_movement_enable && NOT_HANDLED) - { - if((map->two_d_from.x == tmp.x) ^ (map->two_d_from.y == tmp.y)) - { - ret.action = TS_ACTION_TWO_D_MOVEMENT; - ret.from.x = map->two_d_from.x; - ret.from.y = map->two_d_from.y; - ret.to.x = map->two_d_from.x + (map->two_d_from.x == tmp.x ? 0 : (tmp.x > map->two_d_from.x ? 1 : -1)); - ret.to.y = map->two_d_from.y + (map->two_d_from.y == tmp.y ? 0 : (tmp.y > map->two_d_from.y ? 1 : -1)); - } - else - ret.action = TS_ACTION_NONE; - } - if(map->click_enable && (button & BUTTON_REL) && NOT_HANDLED) - { - ret.action = TS_ACTION_CLICK; - ret.from.x = ret.to.x = tmp.x; - ret.from.y = ret.to.y = tmp.y; - } - if(map->move_progress_enable && NOT_HANDLED) - { - ret.action = TS_ACTION_MOVE; - ret.from.x = ret.to.x = tmp.x; - ret.from.y = ret.to.y = tmp.y; - } - - map->_prev_btn_state = button; - return ret; -} - -#endif /* HAVE_TOUCHSCREEN */ |