From 0131a3873e0cb05bd357326b441f2cbc1884c657 Mon Sep 17 00:00:00 2001 From: Karl Kurbjun Date: Sun, 2 Aug 2009 07:05:30 +0000 Subject: 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 --- apps/plugins/lib/pluginlib_touchscreen.h | 117 +++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 apps/plugins/lib/pluginlib_touchscreen.h (limited to 'apps/plugins/lib/pluginlib_touchscreen.h') diff --git a/apps/plugins/lib/pluginlib_touchscreen.h b/apps/plugins/lib/pluginlib_touchscreen.h new file mode 100644 index 0000000..f278765 --- /dev/null +++ b/apps/plugins/lib/pluginlib_touchscreen.h @@ -0,0 +1,117 @@ +/*************************************************************************** +* __________ __ ___. +* Open \______ \ ____ ____ | | _\_ |__ _______ ___ +* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / +* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < +* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ +* \/ \/ \/ \/ \/ +* $Id$ +* +* Copyright (C) 2008 by Maurus Cuelenaere +* Copyright (C) 2009 by Karl Kurbjun +* +* 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. +* +****************************************************************************/ + +#ifndef _PLUGIN_LIB_TOUCHSCREEN_H_ +#define _PLUGIN_LIB_TOUCHSCREEN_H_ + +#include "plugin.h" + +#ifdef HAVE_TOUCHSCREEN + +/******************************************************************************* + * Touchbutton + ******************************************************************************/ +struct touchbutton { + /* Each button has it's own viewport to define colors, drawstyle, location*/ + struct viewport vp; + bool repeat; /* requires the area be held for the action */ + int action; /* action this button will return */ + bool invisible; /* Is this an invisible button? */ + char *title; /* Specify a title */ + fb_data *pixmap; /* Currently unused, but will allow for a graphic */ +}; + +/* Get: tests for a button press and returns action. */ +int touchbutton_get(struct touchbutton *data, int button, int num_buttons); +/* Draw: Draws all visible buttons */ +void touchbutton_draw(struct touchbutton *data, int num_buttons); + + +/******************************************************************************* + * Touch mapping + ******************************************************************************/ +struct ts_mapping +{ + int tl_x; /* top left */ + int tl_y; + int width; + int height; +}; + +struct ts_mappings +{ + struct ts_mapping *mappings; + int amount; +}; + +unsigned int touchscreen_map(struct ts_mappings *map, int x, int y); + +struct ts_raster +{ + int tl_x; /* top left */ + int tl_y; + int width; + int height; + int raster_width; + int raster_height; +}; + +struct ts_raster_result +{ + int x; + int y; +}; + +unsigned int touchscreen_map_raster(struct ts_raster *map, int x, int y, struct ts_raster_result *result); + +struct ts_raster_button_mapping +{ + struct ts_raster *raster; + bool drag_drop_enable; /* ... */ + bool double_click_enable; /* ... */ + bool click_enable; /* ... */ + bool move_progress_enable; /* ... */ + bool two_d_movement_enable; /* ... */ + struct ts_raster_result two_d_from; /* ... */ + int _prev_x; /* Internal: DO NOT MODIFY! */ + int _prev_y; /* Internal: DO NOT MODIFY! */ + int _prev_btn_state; /* Internal: DO NOT MODIFY! */ +}; + +struct ts_raster_button_result +{ + enum{ + TS_ACTION_NONE, + TS_ACTION_MOVE, + TS_ACTION_CLICK, + TS_ACTION_DOUBLE_CLICK, + TS_ACTION_DRAG_DROP, + TS_ACTION_TWO_D_MOVEMENT + } action; + struct ts_raster_result from; + struct ts_raster_result to; +}; + +struct ts_raster_button_result touchscreen_raster_map_button(struct ts_raster_button_mapping *map, int x, int y, int button); + +#endif /* HAVE_TOUCHSCREEN */ +#endif /* _PLUGIN_LIB_TOUCHSCREEN_H_ */ -- cgit v1.1