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

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.  *  gui_panel.h
  39.  *
  40.  * Project:
  41.  * --------
  42.  *  MAUI
  43.  *
  44.  * Description:
  45.  * ------------
  46.  *  Panel - UI component
  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.  *------------------------------------------------------------------------------
  63.  * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
  64.  *============================================================================
  65.  ****************************************************************************/
  66. #ifndef __GUI_PANEL_H__
  67. #define __GUI_PANEL_H__
  68. #include "gui.h"
  69. #include "FrameworkStruct.h"
  70. #define GUI_PANEL_MAX_ELEMENT_COUNT     (15)
  71. #define GUI_PANEL_MAX_ANIMATOR_COUNT    (3)
  72. typedef enum 
  73. {
  74.     GUI_PANEL_ANIM_STATE_STOPPED,
  75.     GUI_PANEL_ANIM_STATE_STARTED,
  76.     GUI_PANEL_ANIM_STATE_END_OF_ENUM
  77. } gui_panel_anim_state_enum;
  78. /* State of a panel element */
  79. typedef enum
  80. {
  81.     GUI_PANEL_ELEM_STATE_NORMAL = 0,
  82.     GUI_PANEL_ELEM_STATE_DOWN,
  83.     GUI_PANEL_ELEM_STATE_FOCUSSED,
  84.     GUI_PANEL_ELEM_STATE_TOTAL
  85. } gui_panel_elem_state_enum;
  86. /* UI Component: an element inside a panel */
  87. typedef struct
  88. {
  89.     /* Position */
  90.     S32 x1, y1, x2, y2;
  91.     
  92.     /* Registered key (KEY_INVALID if not registered) */
  93.     U16 keycode;
  94.     /* Callback function on Pen Up or Key Up */
  95.     FuncPtr up_event_callback;
  96.     /* Callback function on Key Repeat or pen long-press (Not Pen Repeat) */
  97.     FuncPtr repeat_event_callback;
  98.     
  99.     /* Painter of normal (up/unfocussed), down, foccussed state  */
  100.     gui_util_painter_struct painters[GUI_PANEL_ELEM_STATE_TOTAL];
  101.     /* 0: up, 1: down */
  102.     U32 down_state : 1;
  103.     
  104.     /* Whether to redraw the panel background after pressed/released/focused/unfocussed.
  105.        This flag depends on the shape of each painter */
  106.     U32 redraw_bg_after_state_changed : 1;
  107. } gui_panel_element_struct;
  108. typedef struct
  109. {
  110.     /* Position */
  111.     S32 x1, y1, x2, y2;
  112.     // TODO: unfinished
  113. } gui_panel_animator_struct;
  114. /* UI Component: a panel */
  115. typedef struct
  116. {
  117.     S32 x, y;
  118.     S32 width, height;
  119.     /* Panel background */
  120.     gui_util_painter_struct background;
  121.     /* Elements */
  122.     gui_panel_element_struct elements[GUI_PANEL_MAX_ELEMENT_COUNT];
  123.     S32 element_count;    
  124.     S32 element_focus_index;
  125.     /* Animators */
  126.     S32 animator_count;
  127.     gui_panel_animator_struct animators[GUI_PANEL_MAX_ANIMATOR_COUNT];
  128.     
  129.     /* Change the display of an element when it's focussed */
  130.     U32 display_focus : 1;
  131. } gui_panel_struct;
  132. extern void gui_panel_create(
  133.                 gui_panel_struct *panel,
  134.                 S32 x, 
  135.                 S32 y, 
  136.                 S32 width, 
  137.                 S32 height, 
  138.                 gui_util_painter_struct background,
  139.                 MMI_BOOL display_focus);
  140. extern void gui_panel_show(gui_panel_struct *panel);
  141. extern void gui_panel_set_element_focus(
  142.                 gui_panel_struct *panel,
  143.                 S32 element_index,
  144.                 MMI_BOOL update_display);
  145. extern S32 gui_panel_add_element(
  146.                 gui_panel_struct *panel,
  147.                 S32 x,
  148.                 S32 y,
  149.                 S32 width,
  150.                 S32 height,
  151.                 U16 keycode,
  152.                 FuncPtr up_event_callback,
  153.                 FuncPtr repeat_event_callback,
  154.                 gui_util_painter_struct normal_painter,
  155.                 gui_util_painter_struct down_painter,
  156.                 gui_util_painter_struct focussed_painter,
  157.                 MMI_BOOL redraw_bg_after_state_changed);
  158. extern void gui_panel_general_key_handler(gui_panel_struct *panel, U16 keycode, U16 keytype);
  159. #endif /* __GUI_PANEL_H__ */