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

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.  *
  37.  * Filename:
  38.  * ---------
  39.  *   gui_ems.c
  40.  *
  41.  * Project:
  42.  * --------
  43.  *   MAUI
  44.  *
  45.  * Description:
  46.  * ------------
  47.  *   EMS editor - UI component
  48.  *
  49.  * Author:
  50.  * -------
  51.  * -------
  52.  * -------
  53.  *
  54.  *==============================================================================
  55.  *             HISTORY
  56.  * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
  57.  *------------------------------------------------------------------------------
  58.  * removed!
  59.  *
  60.  * removed!
  61.  * removed!
  62.  * removed!
  63.  *
  64.  * removed!
  65.  * removed!
  66.  * removed!
  67.  *
  68.  * removed!
  69.  * removed!
  70.  * removed!
  71.  *
  72.  * removed!
  73.  * removed!
  74.  * removed!
  75.  *
  76.  * removed!
  77.  * removed!
  78.  * removed!
  79.  *
  80.  * removed!
  81.  * removed!
  82.  * removed!
  83.  *
  84.  *------------------------------------------------------------------------------
  85.  * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
  86.  *==============================================================================
  87.  *******************************************************************************/
  88. /**********************************************************************************
  89.    Filename:      gui_ems.h
  90.    Author:        manju
  91.    Date Created:  March-25-2003
  92.    Contains:      EMS input box
  93. **********************************************************************************/
  94. #ifndef __GUI_EMS_H__
  95. #define __GUI_EMS_H__
  96. #include "gui.h"
  97. #include "gui_scrollbars.h"
  98. /* MTK Leo add,20040318, for new simulator */
  99. #include "gui_theme_struct.h"
  100. /* MTK Leo end */
  101. #ifdef __cplusplus
  102. extern "C"
  103. {
  104. #endif /* __cplusplus */ 
  105.     /* EMS UI element structures and functions   */
  106. #define UI_EMS_INPUT_BOX_STATE_NORMAL              0x00000000
  107. #define UI_EMS_INPUT_BOX_STATE_DISABLED               0x00000001
  108. #define UI_EMS_INPUT_BOX_STATE_SELECTED               0x00000002
  109. #define UI_EMS_INPUT_BOX_STATE_MULTITAP               0x00000004
  110. #define UI_EMS_INPUT_BOX_DISABLE_BACKGROUND           0x00000008
  111. #define UI_EMS_INPUT_BOX_DISABLE_SCROLLBAR            0x00000010
  112. #define UI_EMS_INPUT_BOX_DISABLE_DRAW              0x00000020
  113. #define UI_EMS_INPUT_BOX_DISABLE_CURSOR_DRAW       0x00000040
  114. #define UI_EMS_INPUT_BOX_OVERWRITE_MODE               0x00000080
  115. #define UI_EMS_INPUT_BOX_CURRENT_ALIGN_LEFT           0x00000100
  116. #define UI_EMS_INPUT_BOX_CURRENT_ALIGN_RIGHT       0x00000200
  117. #define UI_EMS_INPUT_BOX_CURRENT_ALIGN_CENTER         0x00000400
  118. #define UI_EMS_INPUT_BOX_NEWLINE_DRAW              0x00000800
  119. #define UI_EMS_INPUT_BOX_PREVIOUS_LINE             0x00001000
  120. #define UI_EMS_INPUT_BOX_NEXT_LINE                 0x00002000
  121. #define UI_EMS_INPUT_BOX_AUTO_DISABLE_SCROLLBAR       0x00004000
  122. #define UI_EMS_INPUT_BOX_VIEW_MODE                 0x00008000
  123. #define UI_EMS_INPUT_BOX_WORD_HIGHLIGHT               0x00010000
  124. #define UI_EMS_INPUT_BOX_DISPLAY_HEADER               0x00020000
  125. #define UI_EMS_INPUT_BOX_DISABLE_TONE              0x00040000
  126. #define UI_EMS_INPUT_BOX_PREVIOUS_OBJECT           0x00080000
  127. #define UI_EMS_INPUT_BOX_NEXT_OBJECT               0x00100000
  128. #define UI_EMS_INPUT_BOX_CHECK_GSM_EXTENDED           0x00200000
  129. #define  UI_EMS_INPUT_BOX_INCLUDE_INFO_AREA           0x00800000        /* Pixtel - Gurinder - 3/14/2004 - Editor With BG Image */
  130. #define UI_EMS_INPUT_BOX_TRANSPARENT_BACKGROUND    0x01000000   /* 070405 Calvin added */
  131.     /* START PMT NEERAJ 20050916 */
  132. #define UI_EMS_INPUT_BOX_ALL_LINE_DRAW             0x02000000
  133.     /* END PMT NEERAJ 20050916 */
  134.     extern UI_EMS_input_box_theme *current_EMS_input_box_theme;
  135. #if(!UI_DISABLE_EMS_INPUT_BOX)
  136. #define EMS_BYTE_ORDER_BIG_ENDIAN      0
  137. #define EMS_USE_DCS                 1
  138.     /* Include files for Pluto libraries      */
  139.     /* MTK added for compile issue */
  140. #include "l4dr.h"
  141. #include "smsal_l4c_enum.h"
  142.     /* MTK end */
  143. #include "kal_non_specific_general_types.h"
  144. #include "l4c_common_enum.h"
  145. #include "mcd_l4_common.h"
  146. #include "l4c_aux_struct.h"
  147. #include "l4c2smsal_struct.h"
  148. #include "ems.h"
  149. #include "Customer_ps_inc.h"
  150. #if defined(__MMI_TOUCH_SCREEN__) || defined(__MMI_HANDWRITING_PAD__)
  151. #include "kal_non_specific_general_types.h"
  152. #include "TouchScreenGprot.h"
  153.     typedef enum
  154.     {
  155.         GUI_EMS_INPUT_BOX_PEN_NONE,
  156.         GUI_EMS_INPUT_BOX_PEN_TEXT_DOWN,
  157.         GUI_EMS_INPUT_BOX_PEN_TEXT_UP,
  158.         GUI_EMS_INPUT_BOX_PEN_SCROLL_BAR,
  159.         GUI_EMS_INPUT_BOX_PEN_MAX
  160.     } gui_EMS_input_box_pen_enum;
  161.     typedef struct
  162.     {
  163.         U8 pen_inside;
  164.         U8 pen_on_scroll_bar;
  165.     } gui_EMS_input_box_pen_state_struct;
  166. #endif /* defined(__MMI_TOUCH_SCREEN__) || defined(__MMI_HANDWRITING_PAD__) */ 
  167. #define  MAX_EMS_EDITOR_LINES       MMI_SMS_MAX_MSG_SEG * 153 /2
  168.     typedef struct _UI_EMS_input_box
  169.     {
  170.         S32 x, y;
  171.         S32 width, height;
  172.         UI_filled_area *normal_filler;
  173.         UI_filled_area *disabled_filler;
  174.         UI_filled_area *selected_filler;
  175.         color normal_text_color;
  176.         color selected_text_color;
  177.         color selection_color;
  178.         color cursor_color;
  179.         color boundary_color;               /* Pixtel - Gurinder - 3/14/2004 - Editor With BG Image */
  180.         U32 flags;
  181.         vertical_scrollbar vbar;
  182.         EMSData *data;
  183.         EMSTextFormat text_format;          /* For editing */
  184.         EMSPosition start_position;         /* Temporary   */
  185.         EMSPosition end_position;           /* Temporary   */
  186.         EMSPosition previous_line_position; /* Temporary   */
  187.         EMSPosition next_line_position;     /* Temporary   */
  188.         S32 previous_line_object_count;     /* Temporary   */
  189.         S32 next_line_object_count;         /* Temporary   */
  190.         S32 cursor_ax, cursor_ay;
  191.         S32 cursor_line_height;
  192.         S32 display_y;
  193.         S32 display_height;
  194.         S32 cursor_line_position;
  195.         S32 UCS2_count;
  196.         S32 GSM_ext_count;
  197.         S32 object_count;
  198.         S32 available_length;
  199.         void (*overflow_callback) (void);
  200.         void (*change_callback) (void);
  201.         EMSPosition highlight_start_position;
  202.         EMSPosition highlight_end_position;
  203.         void (*display_header) (S32 x1, S32 y1, S32 x2, S32 y2);
  204.           S32(*measure_header) (void);
  205.         S32 header_height;
  206.         EMSPosition line_positions[MAX_EMS_EDITOR_LINES];
  207.         U8 line_object_counts[MAX_EMS_EDITOR_LINES];
  208.         U8 line_x_positions[MAX_EMS_EDITOR_LINES];
  209.         S32 n_lines;
  210.         S32 current_line;
  211.         S32 first_displayed_line;
  212.         S32 last_displayed_line;
  213.         S32 saved_cursor_ax;
  214.         color underline_color;
  215.         color strikethrough_color;
  216.         color paragraph_color;
  217.     #if defined(__MMI_TOUCH_SCREEN__) || defined(__MMI_HANDWRITING_PAD__)
  218.         S16 pen_scroll_delay_time;
  219.         S16 pen_scroll_after_delay;
  220.         gui_EMS_input_box_pen_state_struct pen_state;
  221.     #endif /* defined(__MMI_TOUCH_SCREEN__) || defined(__MMI_HANDWRITING_PAD__) */ 
  222.         
  223.         U32 locate_cursor_flag;
  224.         
  225.     } UI_EMS_input_box;
  226.     /* msz00065_20051010 peng hua add for multitap thai begin */
  227. #ifdef __MMI_MULTITAP_THAI__
  228.     extern U8 gui_EMS_check_input_test_overflow(UI_EMS_input_box *b, UI_character_type c);
  229. #endif 
  230.     /* msz00065_20051010 peng hua add for multitap thai end */
  231.     extern void gui_intialize_EMS(void);
  232.     extern void gui_set_EMS_input_box_theme(UI_EMS_input_box *b, UI_EMS_input_box_theme *t);
  233.     extern void gui_set_EMS_input_box_current_theme(UI_EMS_input_box *b);
  234.     extern void gui_create_EMS_input_box(UI_EMS_input_box *b, S32 x, S32 y, S32 width, S32 height);
  235.     extern void gui_set_EMS_input_box_data(UI_EMS_input_box *b, EMSData *d);
  236.     extern U8 gui_EMS_input_box_forward_cursor(UI_EMS_input_box *b);
  237.     extern void gui_EMS_input_box_locate_cursor(UI_EMS_input_box *b);
  238.     extern EMSTATUS gui_EMS_input_box_add_string(UI_EMS_input_box *b, U8 *s, EMSTextFormat *text_format);
  239.     extern EMSTATUS gui_EMS_inputbox_add_object(
  240.                         UI_EMS_input_box *b,
  241.                         U8 type,
  242.                         EMSObjData *objData,
  243.                         U8 predefined_object_number);
  244.     extern void gui_EMS_input_box_backspace(UI_EMS_input_box *b);
  245.     extern U8 gui_EMS_input_box_insert_character(UI_EMS_input_box *b, UI_character_type c);
  246.     extern void gui_EMS_input_box_insert_multitap_character(UI_EMS_input_box *b, UI_character_type c);
  247.     extern void gui_EMS_input_box_confirm_multitap_character(UI_EMS_input_box *b);
  248.     extern void gui_EMS_input_box_delete(UI_EMS_input_box *b);
  249.     extern void gui_EMS_input_box_delete_all(UI_EMS_input_box *b);
  250.     extern void gui_EMS_input_box_toggle_insert_mode(UI_EMS_input_box *b);
  251.     extern void gui_show_EMS_input_box(UI_EMS_input_box *b);
  252.     extern void gui_move_EMS_input_box(UI_EMS_input_box *b, S32 x, S32 y);
  253.     extern void gui_resize_EMS_input_box(UI_EMS_input_box *b, S32 width, S32 height);
  254.     extern U8 gui_EMS_input_box_insert_new_line(UI_EMS_input_box *b);
  255.     extern void gui_EMS_input_box_previous(UI_EMS_input_box *b);
  256.     extern void gui_EMS_input_box_next(UI_EMS_input_box *b);
  257.     extern void gui_EMS_input_box_previous_line(UI_EMS_input_box *b);
  258.     extern void gui_EMS_input_box_next_line(UI_EMS_input_box *b);
  259.     extern U8 gui_EMS_input_box_get_next_object(
  260.                 EMSData *data,
  261.                 EMSPosition *current_position,
  262.                 UI_character_type *c,
  263.                 EMSObject **o);
  264.     extern U8 gui_EMS_input_box_get_previous_object(
  265.                 EMSData *data,
  266.                 EMSPosition *current_position,
  267.                 UI_character_type *c,
  268.                 EMSObject **o);
  269. #ifdef __MMI_MESSAGES_EMS__
  270.     extern void gui_EMS_input_box_measure_object(EMSObject *o, S32 *width, S32 *height);
  271.     extern void gui_EMS_input_box_reset_cursor_position(UI_EMS_input_box *b);
  272.     extern void gui_EMS_input_box_set_cursor_position(UI_EMS_input_box *b, EMSPosition *p);
  273.     extern void gui_EMS_input_box_set_text_format_object(UI_EMS_input_box *b, EMSTextFormat *f);
  274.     extern U8 gui_EMS_inputbox_empty(UI_EMS_input_box *b);
  275.     extern void gui_EMS_input_box_display_object(S32 x, S32 y, EMSObject *o, U8 display_cursor);
  276.     extern void EMS_cancel_object_focus(void);
  277.     extern void gui_EMS_playback_object(EMSObject *o);
  278.     extern void EMS_cancel_object_focus(void);
  279. #endif /* __MMI_MESSAGES_EMS__ */ 
  280.     extern U8 gui_EMS_inputbox_empty(UI_EMS_input_box *b);
  281.     extern S32 gui_EMS_input_box_highlight_cursor_end(UI_EMS_input_box *b);
  282.     extern S32 gui_EMS_input_box_highlight_cursor_start(UI_EMS_input_box *b);
  283.     extern void EMS_map_position(EMSData *data, EMSPosition *src, EMSPosition *dst);
  284.     extern EMSObject *GetTextFormatObjectAtPosition(EMSData *data, EMSPosition *p);
  285.     /* MTK Joy added for text format insert, 0112 */
  286.     extern EMSTATUS gui_EMS_input_box_insert_text_alignment(UI_EMS_input_box *b, EMSTextFormat *t);
  287.     extern EMSTATUS gui_EMS_input_box_insert_new_paragraph(UI_EMS_input_box *b, EMSTextFormat *t);
  288.     /* MTK end */
  289.     extern U8 gui_EMS_input_box_test_paragraph_start(UI_EMS_input_box *b, EMSPosition *p);
  290.     extern void gui_EMS_input_box_set_paragraph_text_alignment(UI_EMS_input_box *b, EMSPosition *p, U8 alignment);
  291.     extern void gui_EMS_input_box_view_previous_object(UI_EMS_input_box *b);
  292.     extern void gui_EMS_input_box_view_next_object(UI_EMS_input_box *b);
  293.     extern S32 EMS_get_remaining_length(EMSData *data);
  294.     extern void gui_EMS_input_box_set_text_format_cursor_position(UI_EMS_input_box *b);
  295.     extern void EMS_enable_audio_playback(void);
  296.     extern void EMS_disable_audio_playback(void);
  297. #endif /* (!UI_DISABLE_EMS_INPUT_BOX) */ 
  298. #if defined(__MMI_TOUCH_SCREEN__) || defined(__MMI_HANDWRITING_PAD__)
  299.     extern BOOL gui_EMS_input_box_translate_pen_event(
  300.                     UI_EMS_input_box *b,
  301.                     mmi_pen_event_type_enum pen_event,
  302.                     S16 x,
  303.                     S16 y,
  304.                     gui_EMS_input_box_pen_enum *EMS_input_box_event);
  305. #endif /* defined(__MMI_TOUCH_SCREEN__) || defined(__MMI_HANDWRITING_PAD__) */ 
  306.     extern void gui_show_EMS_input_box_ext(UI_EMS_input_box *b, S32 move_to_x, S32 move_to_y);
  307. #ifdef __cplusplus
  308. }
  309. #endif 
  310. #endif /* __GUI_EMS_H__ */