TouchScreenGprot.h
上传用户:lqx1163
上传日期:2014-08-13
资源大小:9183k
文件大小:11k
源码类别:

MTK

开发平台:

C/C++

  1. /*****************************************************************************
  2. *  Copyright Statement:
  3. *  --------------------
  4. *  This software is protected by Copyright and the information contained
  5. *  herein is confidential. The software may not be copied and the information
  6. *  contained herein may not be used or disclosed except with the written
  7. *  permission of MediaTek Inc. (C) 2005
  8. *
  9. *  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
  10. *  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
  11. *  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
  12. *  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
  13. *  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
  14. *  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
  15. *  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
  16. *  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
  17. *  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
  18. *  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
  19. *  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
  20. *  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
  21. *
  22. *  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
  23. *  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
  24. *  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
  25. *  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
  26. *  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. 
  27. *
  28. *  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
  29. *  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
  30. *  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
  31. *  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
  32. *  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
  33. *
  34. *****************************************************************************/
  35. /*******************************************************************************
  36.  * Filename:
  37.  * ---------
  38.  *   TouchScreenGprot.h
  39.  *
  40.  * Project:
  41.  * --------
  42.  *   MAUI
  43.  *
  44.  * Description:
  45.  * ------------
  46.  *   Low-level Touch Screen API
  47.  *
  48.  * Author:
  49.  * -------
  50.  * -------
  51.  *
  52.  *==============================================================================
  53.  *             HISTORY
  54.  * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
  55.  *------------------------------------------------------------------------------
  56.  * removed!
  57.  *
  58.  * removed!
  59.  * removed!
  60.  * removed!
  61.  *
  62.  * removed!
  63.  * removed!
  64.  * removed!
  65.  *
  66.  * removed!
  67.  * removed!
  68.  * removed!
  69.  *
  70.  * removed!
  71.  * removed!
  72.  * removed!
  73.  *
  74.  * removed!
  75.  * removed!
  76.  * removed!
  77.  *
  78.  * removed!
  79.  * removed!
  80.  * removed!
  81.  *
  82.  * removed!
  83.  * removed!
  84.  * removed!
  85.  *
  86.  * removed!
  87.  * removed!
  88.  * removed!
  89.  *
  90.  * removed!
  91.  * removed!
  92.  * removed!
  93.  *
  94.  * removed!
  95.  * removed!
  96.  * removed!
  97.  *
  98.  *------------------------------------------------------------------------------
  99.  * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
  100.  *==============================================================================
  101.  *******************************************************************************/
  102. #ifndef _TOUCH_SCREEN_GPROT_H
  103. #define _TOUCH_SCREEN_GPROT_H
  104. #ifndef _KAL_NON_SPECIFIC_GENERAL_TYPES_H
  105. #error "kal_non_specific_general_types.h should be included "
  106. #endif 
  107. #ifndef _PIXCOM_DATA_TYPES_H
  108. #include "PixtelDataTypes.h"
  109. #endif 
  110. /***************************************************************************** 
  111. * Define
  112. *****************************************************************************/
  113. /*
  114.  * Whether to support Stroke LongTap Event. 
  115.  * We can use Stroke LongTap event in handwriting to control the editor
  116.  */
  117. #undef MMI_PEN_SUPPORT_STROKE_LONGTAP
  118. /* Number of doubles in one set of  calibation data */
  119. #define PEN_CALIBRATION_DATA_SIZE   4
  120. /* Utility macro functions */
  121. #define PEN_CHECK_BOUND(x, y, x1, y1, width, height) ((x) >= (x1) && (y) >= (y1) && (x) < ((x1) + (width)) && (y) < ((y1) + (height)))
  122. #define PEN_ABS(a, b) (((a) > (b)) ? (a-b) : (b-a))
  123. #define PEN_MIN(a, b) (((a) > (b)) ? (b) : (a))
  124. #define PEN_MAX(a, b) (((a) > (b)) ? (a) : (b))
  125. /* Delay time for Pen LongTap */
  126. #define MMI_PEN_LONGTAP_TIME           (60)     /* multiple of 10ms */
  127. /* Delay time for Pen Repeat */
  128. #define MMI_PEN_REPEAT_TIME            (30)     /* multiple of 10ms */
  129. /* Delay time for Stroke LongTap (MMI_PEN_SUPPORT_STROKE_LONGTAP) */
  130. #define MMI_PEN_STROKE_LONGTAP_TIME    (80)     /* multiple of 10ms */
  131. /* Sampling period of Event-Based pen events (~ 12 samples/sec) */
  132. #define MMI_PEN_SAMPLING_PERIOD_1      (8)      /* multiple of 10ms */
  133. /* Sampling period of Stroke-Based pen events (50 samples/sec) */
  134. #define MMI_PEN_SAMPLING_PERIOD_2      (2)      /* multiple of 10ms */
  135. /* If pen does not move over this distance, donot generate Pen Move event at all. */
  136. #define MMI_PEN_SKIP_MOVE_OFFSET                5
  137. /* If pen does not move over this distance, donot generate Stroke Move event at all. */
  138. #define MMI_PEN_SKIP_STROKE_MOVE_OFFSET         1
  139. /* Maximum move offset for generating LongTap event */
  140. #define MMI_PEN_SKIP_LONGTAP_OFFSET             10
  141. /* Maximum move offset for generating Stroke-LongTap event (MMI_PEN_SUPPORT_STROKE_LONGTAP) */
  142. #define MMI_PEN_SKIP_STROKE_LONGTAP_OFFSET      14
  143. /* Minimum offset to Pen Down position in order to switch from event-based mode to stroke-based mode */
  144. #if defined(MMI_PEN_SUPPORT_STROKE_LONGTAP) || defined(__MMI_HANDWRITING_PAD__)
  145. #define MMI_PEN_STROKE_MIN_OFFSET               0
  146. #else 
  147. #define MMI_PEN_STROKE_MIN_OFFSET               9
  148. #endif 
  149. #ifdef __MMI_HANDWRITING_PAD__
  150. #define IS_ENABLE_FLAG(data, f)        ( (data & (f)) == (f) )
  151. /* Touch Pad flag */
  152. #define TP_MAPPING_KEY_MASK   (0x000000FF)
  153. #define TP_MAPPING_KEY        (0x00000100)
  154. #define TP_CUSTOM_HANDLE      (0x00000200)
  155. #define TP_CONTROL_AREA       (0x80000000)
  156. #define TP_HANDWRITING_AREA   (0x40000000)
  157. #define TP_HANDWRITING_SUPPORTS_FULL_AREA   (0x20000000)
  158. #endif /* __MMI_HANDWRITING_PAD__ */ 
  159. /***************************************************************************** 
  160. * Typedef 
  161. *****************************************************************************/
  162. typedef enum
  163. {
  164.     MMI_PEN_EVENT_DOWN,
  165.     MMI_PEN_EVENT_UP,
  166.     MMI_PEN_EVENT_LONG_TAP,
  167.     MMI_PEN_EVENT_REPEAT,
  168.     MMI_PEN_EVENT_MOVE,
  169.     MMI_PEN_EVENT_ABORT,
  170.     MMI_PEN_EVENT_TYPE_MAX
  171. } mmi_pen_event_type_enum;
  172. typedef enum
  173. {
  174.     MMI_PEN_STROKE_DOWN,
  175.     MMI_PEN_STROKE_UP,
  176.     MMI_PEN_STROKE_MOVE,
  177.     MMI_PEN_STROKE_LONGTAP,
  178.     MMI_PEN_STROKE_TYPE_MAX
  179. } mmi_pen_stroke_type_enum;
  180. typedef struct
  181. {
  182.     S16 x;
  183.     S16 y;
  184. } mmi_pen_point_struct;
  185. typedef struct
  186. {
  187.     S16 x1, y1, x2, y2;
  188. } mmi_pen_handwriting_area_struct;
  189. typedef struct
  190. {
  191.     mmi_pen_point_struct *points;
  192.     S16 num;
  193. } mmi_pen_polygon_area_struct;
  194. typedef struct
  195. {
  196.     double data[PEN_CALIBRATION_DATA_SIZE];
  197. } mmi_pen_calibration_struct;
  198. typedef void (*mmi_pen_hdlr) (mmi_pen_point_struct pos);
  199. #ifdef __MMI_HANDWRITING_PAD__
  200. typedef struct tp_area_struct_tag
  201. {
  202.     kal_uint32 id;
  203.     kal_uint32 flag;
  204.     const mmi_pen_point_struct *pos;
  205.     mmi_pen_hdlr *hdlr_table;
  206. } tp_area_struct;
  207. /* for handwriting pad (end) */
  208. #endif /* __MMI_HANDWRITING_PAD__ */ 
  209. /***************************************************************************** 
  210. * Extern Global Variable
  211. *****************************************************************************/
  212. #ifdef __MMI_HANDWRITING_PAD__
  213. extern const mmi_pen_point_struct tp_calibration_point[];
  214. extern const tp_area_struct tp_area_table[];
  215. #endif /* __MMI_HANDWRITING_PAD__ */ 
  216. /***************************************************************************** 
  217. * Extern Global Function
  218. *****************************************************************************/
  219. extern void mmi_pen_dummy_hdlr(mmi_pen_point_struct);
  220. extern void mmi_pen_config_sampling_period(kal_uint32 low, kal_uint32 high);
  221. extern void mmi_pen_config_timeout_period(kal_uint32 longtap, kal_uint32 repeat, kal_uint32 stroke_longtap);
  222. extern void mmi_pen_config_move_offset(
  223.                 kal_uint32 event_based,
  224.                 kal_uint32 stroke_based,
  225.                 kal_uint32 long_tap,
  226.                 kal_uint32 stroke_long_tap);
  227. extern void mmi_pen_init(void);
  228. extern void mmi_pen_block(void);
  229. //KP Jerry add on 2007-4-11 start
  230. #ifdef __MMI_PEN_BLOCK_WHEN_KAYPAD_LOCKED__
  231. extern void mmi_pen_forced_block(void);
  232. #endif/*__MMI_PEN_BLOCK_WHEN_KAYPAD_LOCKED__*/
  233. //KP Jerry add on 2007-4-11 end
  234. extern void mmi_pen_unblock(void);
  235. extern void mmi_pen_enable(void);
  236. extern void mmi_pen_disable(void);
  237. //KP Jerry add on 2007-4-11 start
  238. #ifdef __MMI_PEN_BLOCK_WHEN_KAYPAD_LOCKED__
  239. extern void mmi_pen_forced_disable(void);
  240. #endif/*__MMI_PEN_BLOCK_WHEN_KAYPAD_LOCKED__*/
  241. //KP Jerry add on 2007-4-11 end
  242. extern void mmi_pen_reset(void);
  243. extern void mmi_pen_get_state(kal_bool *is_enabled, kal_bool *is_pen_down);
  244. /* Calibration */
  245. extern void mmi_pen_start_calibration(kal_uint16 num, const mmi_pen_point_struct *points);
  246. extern void mmi_pen_set_calibration_data(const mmi_pen_calibration_struct *data);
  247. extern void mmi_pen_read_calibration_data(mmi_pen_calibration_struct *data);
  248. /* Event-based API */
  249. extern void mmi_pen_register_down_handler(mmi_pen_hdlr pen_fp);
  250. extern void mmi_pen_register_long_tap_handler(mmi_pen_hdlr pen_fp);
  251. extern void mmi_pen_register_repeat_handler(mmi_pen_hdlr pen_fp);
  252. extern void mmi_pen_register_move_handler(mmi_pen_hdlr pen_fp);
  253. extern void mmi_pen_register_up_handler(mmi_pen_hdlr pen_fp);
  254. extern void mmi_pen_register_abort_handler(mmi_pen_hdlr pen_fp);
  255. /* Stroke-based API */
  256. extern void mmi_pen_start_capture_strokes(
  257.                 kal_uint32 max_points,
  258.                 mmi_pen_point_struct *point_array,
  259.                 kal_uint32 num_regions,
  260.                 const mmi_pen_handwriting_area_struct *region_array,
  261.                 const mmi_pen_handwriting_area_struct *ext_region);
  262. extern void mmi_pen_stop_capture_strokes(void);
  263. extern void mmi_pen_change_handwriting_area(
  264.                 kal_uint32 num_regions,
  265.                 const mmi_pen_handwriting_area_struct *region_array,
  266.                 const mmi_pen_handwriting_area_struct *ext_region);
  267. extern void mmi_pen_begin_strokes_of_character(void);
  268. extern void mmi_pen_end_strokes_of_character(void);
  269. extern void mmi_pen_register_stroke_down_handler(mmi_pen_hdlr pen_fp);
  270. extern void mmi_pen_register_stroke_move_handler(void (*begin_fp) (void), void (*end_fp) (void), mmi_pen_hdlr pen_fp);
  271. extern void mmi_pen_register_stroke_up_handler(mmi_pen_hdlr pen_fp);
  272. extern void mmi_pen_register_stroke_longtap_handler(mmi_pen_hdlr pen_fp);
  273. extern void mmi_pen_peek_stroke_state(BOOL *has_unfinished_stroke);
  274. /* Handwriting Pad */
  275. #ifdef __MMI_HANDWRITING_PAD__
  276. extern void mmi_frm_setup_default_pen_handler(void);
  277. extern S32 mmi_pen_check_inside_control_area();
  278. #endif /* __MMI_HANDWRITING_PAD__ */ 
  279. /* Utility API */
  280. extern BOOL mmi_pen_check_inside_polygon(mmi_pen_polygon_area_struct *polygon, mmi_pen_point_struct pos);
  281. #endif /* _TOUCH_SCREEN_GPROT_H */