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

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) 2002
  8. *
  9. *****************************************************************************/
  10. /*****************************************************************************
  11.  *
  12.  * Filename:
  13.  * ---------
  14.  *   gui.h
  15.  *
  16.  * Project:
  17.  * --------
  18.  *   MAUI
  19.  *
  20.  * Description:
  21.  * ------------
  22.  *   Primitive UI variables & wrappers
  23.  *
  24.  * Author:
  25.  * -------
  26.  *   JL Lee (mtk00463)
  27.  *   Leo Hu (mtk00563)
  28.  *   Justin Chuang (mtk00658)
  29.  *
  30.  *==============================================================================
  31.  *  HISTORY
  32.  * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
  33.  *------------------------------------------------------------------------------
  34.  * $Revision:   1.45  $ 
  35.  * $Modtime:   Feb 25 2005 23:08:16  $
  36.  * $Log:   //mtkvs01/vmdata/Maui_sw/archives/mcu/plutommi/MMI/GUI/GUI_INC/gui.h-arc  $
  37.  * 
  38.  *    Rev 1.45   Feb 25 2005 23:09:12   mtk00658
  39.  * Add file header
  40.  * Resolution for 8475: [GUI][Revise] Revise code of basic UI components
  41.  *
  42.  *------------------------------------------------------------------------------
  43.  * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
  44.  *==============================================================================
  45.  *******************************************************************************/
  46. /**
  47.  * Copyright Notice
  48.  * ?2002 - 2003, Pixtel Communications, Inc., 1489 43rd Ave. W.,
  49.  * Vancouver, B.C. V6M 4K8 Canada. All Rights Reserved.
  50.  *  (It is illegal to remove this copyright notice from this software or any
  51.  *  portion of it)
  52.  */
  53. /**********************************************************************************
  54. Filename: gui.h
  55. Author: manju
  56. Date Created: August-13-2002
  57. Contains: PixTel UI routines header
  58. Contains several parts and has been split to multiple
  59. code files. See other files named gui_*.c and gui_*.h
  60. This file contains common functions and data (prototypes only).
  61. **********************************************************************************/
  62. #ifndef __GUI_H__
  63. #define __GUI_H__
  64. #include "stdC.h"
  65. #include "CustDataRes.h"
  66. #include "gui_config.h"
  67. #include "CustThemesRes.h"
  68. #ifdef __cplusplus
  69. extern "C"
  70. {
  71. #endif
  72. /* global device screen size */
  73. extern s32 UI_device_width;
  74. extern s32 UI_device_height;
  75. /* UI globals */
  76. extern s32 UI_clip_x1;
  77. extern s32 UI_clip_y1;
  78. extern s32 UI_clip_x2;
  79. extern s32 UI_clip_y2;
  80. extern s32 UI_old_clip_x1;
  81. extern s32 UI_old_clip_y1;
  82. extern s32 UI_old_clip_x2;
  83. extern s32 UI_old_clip_y2;
  84. extern s32 UI_text_x;
  85. extern s32 UI_text_y;
  86. extern s32 UI_text_height;
  87. extern s32 UI_pointer_x;
  88. extern s32 UI_pointer_y;
  89. extern color UI_text_color;
  90. extern color UI_text_border_color;
  91. extern byte UI_printf_buffer[];
  92. /* MACRO: calculates the percentage */
  93. #define pixtel_percent(x,p) ((x)*(p)/(100))
  94. /* MACRO: toggles a value */
  95. #define pixtel_toggle(x) x=(byte)((x)?0:1)
  96. /* MACRO: divides, adds 1 if there is a remainder */
  97. #define pixtel_highdivide(x,y) ((((x)%(y))>0)?(((x)/(y))+1):((x)/(y)))
  98. /* Base functions required by the UI system: */
  99. /* All UI components will use these functions */
  100. /* And will not directly use any other OS/system */
  101. /* related functions. */
  102. extern void (*pixtel_UI_putpixel)(s32 x,s32 y,color c);
  103. extern void (*pixtel_UI_draw_vertical_line)(s32 y1,s32 y2,s32 x,color c);
  104. //MTK ISSUE 30
  105. extern void (*pixtel_UI_draw_vert_line_type)(s32 y1,s32 y2,s32 x,color c,S32 type_line);
  106. extern void (*pixtel_UI_draw_hori_line_type)(s32 x1,s32 x2,s32 y,color c,S32 type_line);
  107. extern void (*pixtel_UI_draw_rectangle_type)(s32 x1,s32 y1,s32 x2,s32 y2,color c,S32 type_line);
  108. //MTK ISSUE 30 END
  109. extern void (*pixtel_UI_draw_horizontal_line)(s32 x1,s32 x2,s32 y,color c);
  110. extern void (*pixtel_UI_line)(s32 x1,s32 y1,s32 x2,s32 y2,color c);
  111. extern void (*pixtel_UI_wline)(s32 x1,s32 y1,s32 x2,s32 y2,color c,s32 w);
  112. extern void (*pixtel_UI_draw_rectangle)(s32 x1,s32 y1,s32 x2,s32 y2,color c);
  113. extern void (*pixtel_UI_fill_rectangle)(s32 x1,s32 y1,s32 x2,s32 y2,color c);
  114. extern void (*pixtel_UI_cross_hatch_fill_rectangle)(s32 x1,s32 y1,s32 x2,s32 y2,color c);
  115. extern void (*pixtel_UI_hatch_fill_rectangle)(s32 x1,s32 y1,s32 x2,s32 y2,color c);
  116. extern void (*pixtel_UI_alternate_cross_hatch_fill_rectangle)(s32 x1,s32 y1,s32 x2,s32 y2,color c1,color c2);
  117. extern void (*pixtel_UI_alternate_hatch_fill_rectangle)(s32 x1,s32 y1,s32 x2,s32 y2,color c1,color c2);
  118. extern void (*pixtel_UI_set_text_clip)(s32 x1,s32 y1,s32 x2,s32 y2);
  119. extern void (*pixtel_UI_get_text_clip)(s32 *x1,s32 *y1,s32 *x2,s32 *y2);
  120. extern void (*pixtel_UI_set_text_clip_preset)(s32 x1,s32 y1,s32 x2,s32 y2);
  121. extern void (*pixtel_UI_set_clip)(s32 x1,s32 y1,s32 x2,s32 y2);
  122. extern void (*pixtel_UI_get_clip)(s32 *x1,s32 *y1,s32 *x2,s32 *y2);
  123. extern void (*pixtel_UI_set_clip_preset)(s32 x1,s32 y1,s32 x2,s32 y2);
  124. extern void (*pixtel_UI_reset_clip)(void);
  125. extern void (*pixtel_UI_push_text_clip)(void);
  126. extern void (*pixtel_UI_pop_text_clip)(void);
  127. extern void (*pixtel_UI_push_clip)(void);
  128. extern void (*pixtel_UI_pop_clip)(void);
  129. extern void (*pixtel_UI_reset_text_clip)(void);
  130. extern void (*pixtel_UI_set_line_height)(s32 height);
  131. extern void (*pixtel_UI_move_text_cursor)(s32 x,s32 y);
  132. extern void (*pixtel_UI_set_text_color)(color c);
  133. extern void (*pixtel_UI_set_text_border_color)(color c);
  134. extern s32 (*pixtel_UI_printf)(const s8* format,...);
  135. extern s32 (*pixtel_UI_sprintf)(UI_string_type _text,const s8* format,...);
  136. extern void (*pixtel_UI_print_text)(UI_string_type _text);
  137. /*MTK add to support print n characters*/
  138. extern void (*pixtel_UI_print_text_n)(UI_string_type _text,int _n);
  139. extern void (*pixtel_UI_print_bordered_text_n)(UI_string_type _text,int _n);
  140. /*MTK end*/
  141. extern void (*pixtel_UI_print_bordered_text)(UI_string_type _text);
  142. extern void (*pixtel_UI_print_character)(UI_character_type _c);
  143. //MTK Elvis for Thai
  144. //MTK Elvis for stacked character
  145. extern void (*pixtel_UI_print_stacked_character)(UI_character_type _curCh, UI_character_type _pre2Ch, UI_character_type _preCh);
  146. extern void (*pixtel_UI_print_bordered_stacked_character)(UI_character_type _curCh, UI_character_type _pre2Ch, UI_character_type _preCh);
  147. //MTK end
  148. //MTK Leo add
  149. extern void (*pixtel_UI_print_bordered_character)(UI_character_type _c);
  150. //MTK Leo end
  151. extern byte pixtel_UI_print_truncated_text2(s32 x,s32 y,s32 xwidth,UI_string_type *s);
  152. extern byte pixtel_UI_print_truncated_bordered_text2(s32 x,s32 y,s32 xwidth,UI_string_type *s);
  153. extern void* (*pixtel_UI_malloc)(size_t size);
  154. extern void (*pixtel_UI_free)(void *ptr);
  155. extern s32 (*pixtel_UI_get_character_width)(UI_character_type c);
  156. extern void (*pixtel_UI_measure_character)(UI_character_type c,s32 *width,s32 *height);
  157. extern s32 (*pixtel_UI_get_character_height)(void);
  158. extern s32 (*pixtel_UI_get_string_width)(UI_string_type text);
  159. extern s32 (*pixtel_UI_get_string_width_n)(UI_string_type text,s32 n);
  160. extern s32 (*pixtel_UI_get_string_width_w)(UI_string_type text,s32 w);
  161. extern s32 (*pixtel_UI_get_string_width_wn)(UI_string_type text,s32 w,s32 n);
  162. extern s32 (*pixtel_UI_get_string_height)(UI_string_type text);
  163. extern void (*pixtel_UI_measure_string)(UI_string_type text,s32 *width,s32 *height);
  164. extern void (*pixtel_UI_measure_string_n)(UI_string_type text,s32 n,s32 *width,s32 *height);
  165. extern void (*pixtel_UI_measure_string_w)(UI_string_type text,s32 w,s32 *width,s32 *height);
  166. extern void (*pixtel_UI_measure_string_wn)(UI_string_type text,s32 w,s32 n,s32 *width,s32 *height);
  167. extern void (*pixtel_UI_set_font)(UI_font_type f);
  168. extern void (*pixtel_UI_show_image)(s32 x,s32 y,UI_image_type i);
  169. extern void (*pixtel_UI_show_transparent_image)(s32 x,s32 y,UI_image_type i,UI_transparent_color_type t);
  170. extern void (*pixtel_UI_measure_image)(UI_image_type i,s32 *width,s32 *height);
  171. extern s32 (*pixtel_UI_image_n_frames)(UI_image_type i);
  172. extern void (*pixtel_UI_start_timer)(s32 count,void (*callback)(void));
  173. extern void (*pixtel_UI_cancel_timer)(void (*callback)(void));
  174. extern void (*pixtel_UI_hide_animated_image)(s32 x,s32 y,UI_animated_image_handle i);
  175. extern void (*pixtel_UI_register_hide_animation_frame)(UI_animated_image_handle i,void (*f)(s32 x1,s32 y1,s32 x2,s32 y2));
  176. extern byte (*pixtel_UI_show_transparent_animated_image_frame)(s32 x,s32 y,UI_image_type i,UI_transparent_color_type t,s16 frame_number);
  177. extern byte (*pixtel_UI_show_animated_image_frame)(s32 x,s32 y,UI_image_type i,s16 frame_number);
  178. extern void (*pixtel_UI_hide_animations)(void);
  179. //extern UI_animated_image_handle (*pixtel_UI_show_transparent_animated_image)(s32 x,s32 y,UI_image_type i,UI_transparent_color_type t);
  180. extern UI_animated_image_handle (*pixtel_UI_show_transparent_animated_image_frames)(s32 x,s32 y,UI_image_type i,UI_transparent_color_type t,s16 start_frame,s16 end_frame);
  181. //extern UI_animated_image_handle (*pixtel_UI_show_animated_image)(s32 x,s32 y,UI_image_type i);
  182. extern UI_transparent_color_type (*pixtel_UI_transparent_color)(byte r,byte g,byte b);
  183. extern color (*pixtel_UI_color)(byte r,byte g,byte b);
  184. extern color (*pixtel_UI_color32)(byte r,byte g,byte b,byte alpha);
  185. extern void (*pixtel_UI_color_RGB)(color c,byte *r,byte *g,byte *b);
  186. extern UI_string_type (*pixtel_UI_strcpy)(UI_string_type text1,UI_string_type text2);
  187. extern UI_string_type (*pixtel_UI_strncpy)(UI_string_type text1,UI_string_type text2,s32 n);
  188. extern s32 (*pixtel_UI_strcmp)(UI_string_type text1,UI_string_type text2);
  189. extern s32 (*pixtel_UI_strlen)(UI_string_type text);
  190. extern s32 (*pixtel_UI_strncmp)(UI_string_type text1,UI_string_type text2,s32 n);
  191. extern UI_string_type (*pixtel_UI_strcat)(UI_string_type text1,UI_string_type text2);
  192. extern UI_string_type (*pixtel_UI_itoa)(s32 value, UI_string_type s, s32 radix );
  193. extern s32 (*pixtel_UI_atoi)(UI_string_type s);
  194. extern void* (*pixtel_UI_memcpy)(void *d,const void *s,s32 n);
  195. extern UI_character_type (*pixtel_UI_get_next_character)(UI_string_type *s);
  196. extern UI_character_type (*pixtel_UI_get_previous_character)(UI_string_type *s);
  197. /* MTK00612 Bear */
  198. #ifdef MMI_ON_HARDWARE_P
  199. extern void mtk_animation_cyclic(void);
  200. extern void mtk_show_animation(s32 x,s32 y,byte *image);
  201. extern void mtk_show_animation_frames(s32 x,s32 y,byte *image,s32 start_frame);
  202. #endif
  203. /* MTK00612 Bear End */
  204. #if(UI_DOUBLE_BUFFER_SUPPORT)
  205. extern void (*pixtel_UI_BLT_double_buffer)(s32 x1,s32 y1,s32 x2,s32 y2);
  206. extern void (*pixtel_UI_lock_double_buffer)(void);
  207. extern void (*pixtel_UI_unlock_double_buffer)(void);
  208. #endif
  209. /* Supported image type */
  210. #define IMAGE_TYPE_INVALID 0
  211. #define IMAGE_TYPE_BMP 1
  212. #define IMAGE_TYPE_BMP_SEQUENCE 2
  213. #define IMAGE_TYPE_GIF 3
  214. #define IMAGE_TYPE_DEVICE_BITMAP 4
  215. #define IMAGE_TYPE_DEVICE_BITMAP_SEQUENCE 5
  216. #define IMAGE_TYPE_BMP_FILE 6
  217. #define IMAGE_TYPE_GIF_FILE 7
  218. #define IMAGE_TYPE_WBMP_FILE 8
  219. #define IMAGE_TYPE_JPG 9
  220. #define IMAGE_TYPE_JPG_FILE 10
  221. #define IMAGE_TYPE_WBMP 11
  222. /* 120304 Calvin added */
  223. #define IMAGE_TYPE_AVI 12
  224. #define IMAGE_TYPE_AVI_FILE 13
  225. #define IMAGE_TYPE_3GP 14
  226. #define IMAGE_TYPE_3GP_FILE 15
  227. #define IMAGE_TYPE_MP4 16
  228. #define IMAGE_TYPE_MP4_FILE 17
  229. /* Calvin end */
  230. #define IMAGE_TYPE_JPG_SEQUENCE 18//021705 Calvin added
  231. /* Some standard functions: Need to be implemented through wrappers. */
  232. /* See the character set support functions, pixtel_UI_get_next_character */
  233. /* and pixtel_UI_get_previous_character */
  234. byte pixtel_UI_linebreak_character(UI_character_type c);
  235. byte pixtel_UI_endofstring_character(UI_character_type c);
  236. #define UI_GRADIENT_COLOR_VERTICAL 0x00000100
  237. #define UI_GRADIENT_COLOR_HORIZONTAL 0x00000000
  238. #define UI_GRADIENT_COLOR_FLIP 0x00000200
  239. void pixtel_UI_initialize_gradient_color(gradient_color *gc,color *c,byte *p,byte n);
  240. void pixtel_UI_gradient_fill_rectangle(s32 x1,s32 y1,s32 x2,s32 y2,gradient_color *gc,dword flags);
  241. /* Filled Area border theme */
  242. typedef struct _UI_filled_area_border_theme
  243. { color filled_area_outer_light_border;
  244. color filled_area_inner_light_border;
  245. color filled_area_outer_dark_border;
  246. color filled_area_inner_dark_border;
  247. } UI_filled_area_border_theme;
  248. extern UI_filled_area_border_theme *current_filled_area_border_theme;
  249. /* UI filled area structure
  250. -------------------
  251. bits 0-7: filler type
  252. bit  8: 1=vertical filler, 0=horizontal filler (used for gradients and textures)
  253. bit  9: flip filler
  254. bit  10:
  255. bit  11:
  256. bit  12: border yes/no
  257. bit  13: border size 0=single line, 1=double line
  258. bit  14: 3D border
  259. bit  15: rounded border
  260. bit  16: 1=elevated border, 0=depressed border
  261. bit  17: 1=filled area with shadow
  262. bit  18:            1=filled area with double line shadow, 0=single line shadow
  263. */
  264. #define UI_FILLED_AREA_TYPE_COLOR 0x00000000
  265. #define UI_FILLED_AREA_TYPE_GRADIENT_COLOR 0x00000001
  266. #define UI_FILLED_AREA_TYPE_TEXTURE 0x00000002
  267. #define UI_FILLED_AREA_TYPE_BITMAP 0x00000003
  268. #define UI_FILLED_AREA_TYPE_HATCH_COLOR 0x00000004
  269. #define UI_FILLED_AREA_TYPE_ALTERNATE_HATCH_COLOR 0x00000005
  270. #define UI_FILLED_AREA_TYPE_CROSS_HATCH_COLOR 0x00000006
  271. #define UI_FILLED_AREA_TYPE_ALTERNATE_CROSS_HATCH_COLOR 0x00000007
  272. #define UI_FILLED_AREA_TYPE_NO_BACKGROUND 0x00000008
  273. #define UI_FILLED_AREA_TYPE_CUSTOM_FILL_TYPE1 0x00000009
  274. #define UI_FILLED_AREA_HORIZONTAL_FILL 0x00000000
  275. #define UI_FILLED_AREA_VERTICAL_FILL 0x00000100
  276. #define UI_FILLED_AREA_FLIP_FILL 0x00000200
  277. #define UI_FILLED_AREA_TYPE_NO_BORDER 0x00000000
  278. #define UI_FILLED_AREA_BORDER 0x00001000
  279. #define UI_FILLED_AREA_SINGLE_BORDER 0x00001000
  280. #define UI_FILLED_AREA_DOUBLE_BORDER 0x00003000
  281. #define UI_FILLED_AREA_3D_BORDER 0x00004000
  282. #define UI_FILLED_AREA_ROUNDED_BORDER 0x00008000
  283. #define UI_FILLED_AREA_ELEVATED_BORDER 0x00010000
  284. #define UI_FILLED_AREA_DEPRESSED_BORDER 0x00000000
  285. #define UI_FILLED_AREA_3D_ELEVATED_BORDER 0x00014000
  286. #define UI_FILLED_AREA_3D_DEPRESSED_BORDER 0x00004000
  287. #define UI_FILLED_AREA_SHADOW 0x00020000
  288. #define UI_FILLED_AREA_SHADOW_DOUBLE_LINE 0x00040000
  289. extern UI_filled_area *current_UI_filler;
  290. void pixtel_UI_shadow_filled_area(s32 x1,s32 y1,s32 x2,s32 y2,UI_filled_area *f);
  291. void pixtel_UI_draw_filled_area(s32 x1,s32 y1,s32 x2,s32 y2,UI_filled_area *f);
  292. void pixtel_UI_greyscale_rectangle(s32 x1,s32 y1,s32 x2,s32 y2, s32 white_value);
  293. typedef struct _UI_HLS_color
  294. /* Hue */
  295. U16 h; /* 0-360 */
  296. /* Lightness */
  297. U8 l;  /* 0-255 */
  298. /* Saturation */
  299. U8 s; /* 0-255 */
  300. } UI_HLS_color;
  301. void pixtel_UI_RGB_to_HLS(color rgb, UI_HLS_color *hls);
  302. void pixtel_UI_HLS_to_RGB(UI_HLS_color hls, color *rgb);
  303. /* UI object co-ordinates structure */
  304. typedef struct _UI_object_coordinates
  305. { s32 x;
  306. s32 y;
  307. s32 width;
  308. s32 height;
  309. } UI_object_coordinates;
  310. /* Dummy functions called by UI elements by default, during events
  311. Do not remove any of these functions. */
  312. void UI_dummy_function(void);
  313. void UI_dummy_function_byte(byte a);
  314. void UI_dummy_function_s32(s32 a);
  315. void UI_dummy_function_character(UI_character_type c);
  316. /* Functions for switching graphics context */
  317. void UI_set_main_LCD_graphics_context(void);
  318. void UI_set_sub_LCD_graphics_context(void);
  319. byte UI_test_sub_LCD_graphics_context(void);
  320. /* Function to print truncated text */
  321. void pixtel_UI_print_truncated_text(s32 x,s32 y,s32 xwidth,UI_string_type s);
  322. //MTK Leo add
  323. void pixtel_UI_print_truncated_borderd_text(s32 x,s32 y,s32 xwidth,UI_string_type s);
  324. //MTK Leo end
  325. /* Common string macros */
  326. #ifdef __ASCII
  327. #define UI_STRING_GET_NEXT_CHARACTER(p,c)
  328. {
  329. (c)=*((byte*)(p))++;
  330. }
  331. #define UI_STRING_GET_PREVIOUS_CHARACTER(p,c)
  332. {
  333. (c)=*(--((byte*)(p)));
  334. }
  335. #define UI_STRING_INSERT_CHARACTER(p,c)
  336. {
  337. *((byte*)(p))++=(c);
  338. }
  339. #endif
  340. #ifdef __UCS2_ENCODING
  341. /* Warning: Currently, these macros assume Little endian format only */
  342. #define UI_STRING_GET_NEXT_CHARACTER(p,c)
  343. {
  344. c=(UI_character_type)((*((p)+0))|((*((p)+1))<<8));
  345. (p)+=2;
  346. }
  347. #define UI_STRING_GET_PREVIOUS_CHARACTER(p,c)
  348. {
  349. p-=2;
  350. c=(UI_character_type)((*((p)+0))|((*((p)+1))<<8));
  351. }
  352. #define UI_STRING_INSERT_CHARACTER(p,c)
  353. {
  354. (*((p))++)=(byte)(((c)&0xff));
  355. (*((p))++)=(byte)(((c)>>8));
  356. }
  357. //Pixtel - 2/6/04 - Gurinder - General purpose macro funtion added to delete last character from the string.
  358. #if defined(__MMI_PLUTO_GPRS__)
  359. #define UI_STRING_DELETE_LAST_CHARACTER(p,l) { p=p+l-4; (*((p))++)=(*(p+2)); (*((p))++)=(*(p+2)); l=l-2; }
  360. #endif
  361. //Pixtel End
  362. #endif
  363. #define UI_TEST_CR_CHARACTER(c) (((UI_character_type)(c)==(UI_character_type)0x0D)?(1):(0))
  364. #define UI_TEST_LF_CHARACTER(c) (((UI_character_type)(c)==(UI_character_type)0x0A)?(1):(0))
  365. #define UI_TEST_ESC_CHARACTER(c) (((UI_character_type)(c)==(UI_character_type)0x1B)?(1):(0))
  366. #define UI_STRING_LINE_BREAK_CHARACTER(c) (((UI_character_type)(c)==(UI_character_type)'n')?(1):(0))
  367. #define UI_STRING_END_OF_STRING_CHARACTER(c) (((UI_character_type)(c)==(UI_character_type)'')?(1):(0))
  368. #define UI_STRING_SPACE_CHARACTER(c) (((UI_character_type)(c)==(UI_character_type)' ')?(1):(0))
  369. #define UI_TEST_8895_1_CHAR_IN_GSM_DEF_CHAR(c) (((c)==163 ||(c)==165 || (c)==232 ||(c)==233 ||(c)==249 ||(c)==236 ||(c)==242 ||(c)==199 ||(c)==216 ||(c)==248 ||(c)==197 ||(c)==229 ||(c)==198 ||(c)==230 ||(c)==223 ||(c)==200 ||(c)==164 ||(c)==161 ||(c)==196 ||(c)==214 ||(c)==209 ||(c)==220 ||(c)==167 ||(c)==191 ||(c)==228 ||(c)==246 ||(c)==241 ||(c)==252 ||(c)==224)?(1):(0))
  370.    
  371. #define UI_TEST_UCS2_CHARACTER(c) (((c)&0xff80) && ( !UI_TEST_8895_1_CHAR_IN_GSM_DEF_CHAR(c)))?(1):(0)
  372. #define UI_TEST_UCS2_INCREMENT_COUNT(c,count) if(UI_TEST_UCS2_CHARACTER(c)) ((count)++)
  373. #define UI_TEST_UCS2_DECREMENT_COUNT(c,count) if(UI_TEST_UCS2_CHARACTER(c) && ((count)>0)) ((count)--)
  374. #define UI_UCS2_STRING_HALF_LENGTH(x) (((x)&3)?(((x)>>1)+1):((x)>>1))
  375. #define UI_UCS2_STRING_HALF_LENGTH_MINUS_ONE(x) (((x)&3)?(((x)>>1)-1):(((x)>>1)-2))
  376. #define UI_UCS2_STRING_HALF_LENGTH_MINUS_FORTYFOUR(x) (((x)&3)?(((x)>>1)-87):(((x)>>1)-88))
  377. #define UI_HINDI_CHARACTER_UCS2_RANGE(x) ( (((U16)(x) > 0x900)&&((U16)(x) < 0x971) || ((U16)(x)>59647 && (U16)(x)<59828))?(1) : (0) )
  378. #define UI_TEST_UCS2_INCREMENT_COUNT_SET_LENGTH(c,count,allocated_length,length)
  379. { if(UI_TEST_UCS2_CHARACTER(c))
  380. { if((count)==0) (length)=UI_UCS2_STRING_HALF_LENGTH(allocated_length);
  381. (count)++;
  382. }
  383. }
  384. /* Added for n/2-1 Chinese characters input mode */
  385. #define UI_TEST_UCS2_INCREMENT_COUNT_SET_LENGTH_TYPE2(c,count,allocated_length,length)
  386. { if(UI_TEST_UCS2_CHARACTER(c))
  387. { if((count)==0) (length)=UI_UCS2_STRING_HALF_LENGTH_MINUS_ONE(allocated_length);
  388. (count)++;
  389. }
  390. }
  391. /* Added for n/2-44 Chinese characters input mode */
  392. #define UI_TEST_UCS2_INCREMENT_COUNT_SET_LENGTH_TYPE3(c,count,allocated_length,length)
  393. { if(UI_TEST_UCS2_CHARACTER(c))
  394. { if((count)==0) (length)=UI_UCS2_STRING_HALF_LENGTH_MINUS_FORTYFOUR(allocated_length);
  395. (count)++;
  396. }
  397. }
  398. #define UI_TEST_UCS2_DECREMENT_COUNT_SET_LENGTH(c,count,allocated_length,length)
  399. { if(UI_TEST_UCS2_CHARACTER(c) && ((count)>0))
  400. { ((count)--);
  401. if((count)==0) (length)=(allocated_length);
  402. }
  403. }
  404. #define UI_TEST_UCS2_CHANGE_COUNT_SET_LENGTH(old_c,c,count,allocated_length,length)
  405. { UI_TEST_UCS2_DECREMENT_COUNT_SET_LENGTH(old_c,count,allocated_length,length);
  406. UI_TEST_UCS2_INCREMENT_COUNT_SET_LENGTH(c,count,allocated_length,length);
  407. }
  408. /* Added for n/2-1 Chinese characters input mode */
  409. #define UI_TEST_UCS2_CHANGE_COUNT_SET_LENGTH_TYPE2(old_c,c,count,allocated_length,length)
  410. { UI_TEST_UCS2_DECREMENT_COUNT_SET_LENGTH(old_c,count,allocated_length,length);
  411. UI_TEST_UCS2_INCREMENT_COUNT_SET_LENGTH_TYPE2(c,count,allocated_length,length);
  412. }
  413. /* Added for n/2-44 Chinese characters input mode */
  414. #define UI_TEST_UCS2_CHANGE_COUNT_SET_LENGTH_TYPE3(old_c,c,count,allocated_length,length)
  415. { UI_TEST_UCS2_DECREMENT_COUNT_SET_LENGTH(old_c,count,allocated_length,length);
  416. UI_TEST_UCS2_INCREMENT_COUNT_SET_LENGTH_TYPE3(c,count,allocated_length,length);
  417. }
  418. #define UI_TEST_UCS2_COUNT_SET_LENGTH(count,allocated_length,length)
  419. { if((count)>0) (length)=UI_UCS2_STRING_HALF_LENGTH(allocated_length);
  420. }
  421. /* Added for n/2-1 Chinese characters input mode */
  422. #define UI_TEST_UCS2_COUNT_SET_LENGTH_TYPE2(count,allocated_length,length)
  423. { if((count)>0) (length)=UI_UCS2_STRING_HALF_LENGTH_MINUS_ONE(allocated_length);
  424. }
  425. /* Added for n/2-44 Chinese characters input mode */
  426. #define UI_TEST_UCS2_COUNT_SET_LENGTH_TYPE3(count,allocated_length,length)
  427. { if((count)>0) (length)=UI_UCS2_STRING_HALF_LENGTH_MINUS_FORTYFOUR(allocated_length);
  428. }
  429. void UI_disable_alignment_timers(void);
  430. void UI_enable_alignment_timers(void);
  431. /* Page break character equivalent needs to be added */
  432. /* Euro character equivalent = 0xA2 */
  433. #define UI_TEST_GSM_EXTENDED(c)
  434. ( (c==0xA2)
  435. || (c=='^')
  436. || (c=='{')
  437. || (c=='}')
  438. || (c=='\')
  439. || (c=='[')
  440. || (c=='~')
  441. || (c==']')
  442. || (c=='|')
  443. )
  444. typedef enum 
  445. {
  446. GUI_PEN_EVENT_PARAM_VOID,
  447. GUI_PEN_EVENT_PARAM_INTEGER,
  448. GUI_PEN_EVENT_PARAM_INTEGER2,
  449. GUI_PEN_EVENT_PARAM_INTEGER3,
  450. GUI_PEN_EVENT_PARAM_POINTER,
  451. GUI_PEN_EVENT_PARAM_POINTER_INTEGER,
  452. GUI_PEN_EVENT_PARAM_POINTER_INTEGER2
  453. } mmi_gui_pen_event_param_enum;
  454. typedef struct _mmi_gui_pen_event_param_struct
  455. {
  456. mmi_gui_pen_event_param_enum type;
  457. union {
  458. int i;
  459. void *p;
  460. } _u;
  461. int i2;
  462. int i3;
  463. } mmi_gui_pen_event_param_struct;
  464. #define GUI_PEN_EVENT_PARAM_SET_VOID(_s) do {_s->type = GUI_PEN_EVENT_PARAM_VOID;} while (0)
  465. #define GUI_PEN_EVENT_PARAM_SET_INTEGER(_s, _i) do {_s->type = GUI_PEN_EVENT_PARAM_INTEGER;
  466. _s->_u.i = _i; 
  467. } while (0)
  468. #define GUI_PEN_EVENT_PARAM_SET_INTEGER2(_s, _i, _i2) do {_s->type = GUI_PEN_EVENT_PARAM_INTEGER2;
  469. _s->_u.i = _i; 
  470. _s->i2 = _i2; 
  471. } while (0)
  472. #define GUI_PEN_EVENT_PARAM_SET_INTEGER3(_s, _i, _i2, _i3) do {_s->type = GUI_PEN_EVENT_PARAM_INTEGER3;
  473. _s->_u.i = _i; 
  474. _s->i2 = _i2; 
  475. _s->i3 = _i3; 
  476. } while (0)
  477. #define GUI_PEN_EVENT_PARAM_SET_POINTER(_s, _p) do {_s->type = GUI_PEN_EVENT_PARAM_POINTER;
  478. _s->_u.p = _p; 
  479. } while (0)
  480. #define GUI_PEN_EVENT_PARAM_SET_POINTER_INTEGER(_s, _p, _i2) do {_s->type = GUI_PEN_EVENT_PARAM_POINTER_INTEGER;
  481. _s->_u.p = _p; 
  482. _s->i2 = _i2; 
  483. } while (0)
  484. #define GUI_PEN_EVENT_PARAM_SET_POINTER_INTEGER2(_s, _p, _i2, _i3) do {_s->type = GUI_PEN_EVENT_PARAM_POINTER_INTEGER2;
  485. _s->_u.p = _p; 
  486. _s->i2 = _i2; 
  487. _s->i3 = _i3; 
  488. } while (0)
  489. #ifdef __cplusplus
  490. }
  491. #endif
  492. #endif