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

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_scrollbars.c
  40.  *
  41.  * Project:
  42.  * --------
  43.  *   MAUI
  44.  *
  45.  * Description:
  46.  * ------------
  47.  *   Scrollbar - UI component
  48.  *
  49.  * Author:
  50.  * -------
  51.  * -------
  52.  * -------
  53.  * -------
  54.  *
  55.  *==============================================================================
  56.  *             HISTORY
  57.  * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
  58.  *------------------------------------------------------------------------------
  59.  * removed!
  60.  *
  61.  *------------------------------------------------------------------------------
  62.  * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
  63.  *==============================================================================
  64.  *******************************************************************************/
  65. /**
  66.  * Copyright Notice
  67.  * ?2002 - 2003, Pixtel Communications, Inc., 1489 43rd Ave. W.,
  68.  * Vancouver, B.C. V6M 4K8 Canada. All Rights Reserved.
  69.  *  (It is illegal to remove this copyright notice from this software or any
  70.  *  portion of it)
  71.  */
  72. /**********************************************************************************
  73.    Filename:      gui_scrollbars.h
  74.    Author:        manju
  75.    Date Created:  August-13-2002
  76.    Contains:      PixTel UI routines header for scrollbars, progress indicators,
  77.                Slide controls --etc.
  78. **********************************************************************************/
  79. #ifndef __GUI_SCROLLBARS_H__
  80. #define __GUI_SCROLLBARS_H__
  81. #include "gui.h"
  82. #include "gui_buttons.h"
  83. /* MTK Leo add,20040318, for new simulator */
  84. #include "gui_theme_struct.h"
  85. /* MTK Leo end */
  86. #ifdef __cplusplus
  87. extern "C"
  88. {
  89. #endif /* __cplusplus */ 
  90. #ifdef __MMI_TOUCH_SCREEN__
  91.     /* In the current UI design,  we do not apply Up/Down button in scrollbar */
  92. #include "kal_non_specific_general_types.h"
  93. #include "TouchScreenGprot.h"
  94.     /* the range that user can drag the scroll button */
  95. #define GUI_SCROLLBAR_VALID_RANGE   (50)
  96.     typedef enum
  97.     {
  98.         GUI_SCROLLBAR_PEN_NONE,     /* No event is generated. (but the low-level pen events might be still accepted) */
  99.         GUI_SCROLLBAR_PEN_JUMP_TO_I /* Jump to certain item */
  100.     } gui_scrollbar_pen_enum;
  101.     typedef enum
  102.     {
  103.         GUI_SCROLLBAR_PEN_STATE_INVALID,
  104.         GUI_SCROLLBAR_PEN_STATE_AREA1,
  105.         GUI_SCROLLBAR_PEN_STATE_AREA1_OUTSIDE,      /* Outside bar */
  106.         GUI_SCROLLBAR_PEN_STATE_AREA2,
  107.         GUI_SCROLLBAR_PEN_STATE_AREA2_OUTSIDE,      /* Outside bar */
  108.         GUI_SCROLLBAR_PEN_STATE_SBUTTON,
  109.         GUI_SCROLLBAR_PEN_STATE_SBUTTON_OUTSIDE,    /* Outside bar for GUI_SCROLLBAR_VALID_RANGE */
  110.         GUI_SCROLLBAR_PEN_STATE_BUTTON1,
  111.         GUI_SCROLLBAR_PEN_STATE_BUTTON1_OUTSIDE,
  112.         GUI_SCROLLBAR_PEN_STATE_BUTTON2,
  113.         GUI_SCROLLBAR_PEN_STATE_BUTTON2_OUTSIDE
  114.     } gui_scrollbar_pen_state_enum;
  115.     typedef struct
  116.     {
  117.         gui_scrollbar_pen_state_enum state;
  118.         /* Space excluding up/down/scroll button area */
  119.         S16 remain_space;
  120.         /* The relative position where user press on  scroll button */
  121.         S16 initial_pen_down_pos;
  122.         S16 initial_sbutton_pos;
  123.         /* Original scrollbar value */
  124.         U32 original_value;
  125.         /* Previous value in gui_vertical(horizontal)_scrollbar_translate_pen_event */
  126.         U32 previous_value;
  127.     } gui_scrollbar_pen_state_struct;
  128. #endif /* __MMI_TOUCH_SCREEN__ */ 
  129.     /* UI vertical_scrollbar structure              */
  130. #define UI_VERTICAL_SCROLLBAR_STATE_NORMAL         0x00000000
  131. #define UI_VERTICAL_SCROLLBAR_STATE_FOCUSSED    0x00000001
  132. #define UI_VERTICAL_SCROLLBAR_STATE_DISABLED    0x00000002
  133. #define UI_VERTICAL_SCROLLBAR_BUTTON_SHIFT1        0x00000010
  134. #define UI_VERTICAL_SCROLLBAR_BUTTON_SHIFT2        0x00000020
  135. #define UI_VERTICAL_SCROLLBAR_TYPE_BUTTONLESS      0x00000040
  136.     extern UI_vertical_scrollbar_theme *current_vertical_scrollbar_theme;
  137.     typedef struct _vertical_scrollbar
  138.     {
  139.         S32 x, y;
  140.         S32 width, height;
  141.         U32 range;
  142.         U32 value;
  143.         U32 scale;
  144.         U32 flags;
  145.         UI_filled_area *focussed_bar_filler;
  146.         UI_filled_area *normal_bar_filler;
  147.         UI_filled_area *disabled_bar_filler;
  148.         icon_button up_button;
  149.         icon_button down_button;
  150.         icon_button scroll_button;
  151.     #ifdef __MMI_TOUCH_SCREEN__
  152.         S16 min_pen_offset;
  153.         S16 pen_self_scroll;
  154.         gui_scrollbar_pen_state_struct pen_state;
  155.     #endif /* __MMI_TOUCH_SCREEN__ */ 
  156.     } vertical_scrollbar;
  157.     extern void gui_set_vertical_scrollbar_current_theme(vertical_scrollbar *v);
  158.     extern void gui_set_vertical_scrollbar_theme(vertical_scrollbar *v, UI_vertical_scrollbar_theme *t);
  159.     extern void gui_create_vertical_scrollbar(vertical_scrollbar *v, S32 x, S32 y, S32 width, S32 height);
  160.     extern void gui_set_vertical_scrollbar_range(vertical_scrollbar *v, S32 range);
  161.     extern void gui_set_vertical_scrollbar_value(vertical_scrollbar *v, S32 value);
  162.     extern void gui_set_vertical_scrollbar_scale(vertical_scrollbar *v, S32 scale);
  163.     extern void gui_move_vertical_scrollbar(vertical_scrollbar *v, S32 x, S32 y);
  164.     extern void gui_resize_vertical_scrollbar(vertical_scrollbar *v, S32 width, S32 height);
  165.     extern void gui_show_vertical_scrollbar(vertical_scrollbar *v);
  166. #ifdef __MMI_TOUCH_SCREEN__
  167.     extern void gui_vertical_scrollbar_set_minimum_pen_offset(vertical_scrollbar *v, S32 min_offset);
  168.     extern void gui_vertical_scrollbar_set_pen_self_scroll(vertical_scrollbar *v, BOOL enable);
  169.     extern void gui_vertical_scrollbar_reconfigure_pen_value(vertical_scrollbar *v, S16 x, S16 y);
  170.     extern BOOL gui_vertical_scrollbar_translate_pen_event(
  171.                     vertical_scrollbar *v,
  172.                     mmi_pen_event_type_enum pen_event,
  173.                     S16 x,
  174.                     S16 y,
  175.                     gui_scrollbar_pen_enum *scrollbar_event,
  176.                     gui_pen_event_param_struct *scrollbar_param);
  177. #endif /* __MMI_TOUCH_SCREEN__ */ 
  178.     /* UI horizontal_scrollbar structure               */
  179. #define UI_HORIZONTAL_SCROLLBAR_STATE_NORMAL    0x00000000
  180. #define UI_HORIZONTAL_SCROLLBAR_STATE_FOCUSSED     0x00000001
  181. #define UI_HORIZONTAL_SCROLLBAR_STATE_DISABLED     0x00000002
  182. #define UI_HORIZONTAL_SCROLLBAR_BUTTON_SHIFT1      0x00000010
  183. #define UI_HORIZONTAL_SCROLLBAR_BUTTON_SHIFT2      0x00000020
  184. #define UI_HORIZONTAL_SCROLLBAR_TYPE_BUTTONLESS    0x00000040
  185.     extern UI_horizontal_scrollbar_theme *current_horizontal_scrollbar_theme;
  186.     typedef struct _horizontal_scrollbar
  187.     {
  188.         S32 x, y;
  189.         S32 width, height;
  190.         U32 range;
  191.         U32 value;
  192.         U32 scale;
  193.         U32 flags;
  194.         UI_filled_area *focussed_bar_filler;
  195.         UI_filled_area *normal_bar_filler;
  196.         UI_filled_area *disabled_bar_filler;
  197.         icon_button left_button;
  198.         icon_button right_button;
  199.         icon_button scroll_button;
  200.     #ifdef __MMI_TOUCH_SCREEN__
  201.         S16 min_pen_offset;
  202.         S16 pen_self_scroll;
  203.         gui_scrollbar_pen_state_struct pen_state;
  204.     #endif /* __MMI_TOUCH_SCREEN__ */ 
  205.     } horizontal_scrollbar;
  206.     extern void gui_set_horizontal_scrollbar_current_theme(horizontal_scrollbar *v);
  207.     extern void gui_set_horizontal_scrollbar_theme(horizontal_scrollbar *v, UI_horizontal_scrollbar_theme *t);
  208.     extern void gui_create_horizontal_scrollbar(horizontal_scrollbar *v, S32 x, S32 y, S32 width, S32 height);
  209.     extern void gui_set_horizontal_scrollbar_range(horizontal_scrollbar *v, S32 range);
  210.     extern void gui_set_horizontal_scrollbar_value(horizontal_scrollbar *v, S32 value);
  211.     extern void gui_set_horizontal_scrollbar_scale(horizontal_scrollbar *v, S32 scale);
  212.     extern void gui_move_horizontal_scrollbar(horizontal_scrollbar *v, S32 x, S32 y);
  213.     extern void gui_resize_horizontal_scrollbar(horizontal_scrollbar *v, S32 width, S32 height);
  214.     extern void gui_show_horizontal_scrollbar(horizontal_scrollbar *v);
  215. #ifdef __MMI_TOUCH_SCREEN__
  216.     extern void gui_horizontal_scrollbar_set_minimum_pen_offset(horizontal_scrollbar *h, S32 min_offset);
  217.     extern void gui_horizontal_scrollbar_set_pen_self_scroll(horizontal_scrollbar *h, BOOL enable);
  218.     extern void gui_horizontal_scrollbar_reconfigure_pen_value(horizontal_scrollbar *h, S16 x, S16 y);
  219.     extern BOOL gui_horizontal_scrollbar_translate_pen_event(
  220.                     horizontal_scrollbar *h,
  221.                     mmi_pen_event_type_enum pen_event,
  222.                     S16 x,
  223.                     S16 y,
  224.                     gui_scrollbar_pen_enum *scrollbar_event,
  225.                     gui_pen_event_param_struct *scrollbar_param);
  226. #endif /* __MMI_TOUCH_SCREEN__ */ 
  227.     /* UI Horizontal Progress Indicator structure               */
  228. #define  UI_HORIZONTAL_PROGRESS_INDICATOR_TYPE_STEP            0x00000001
  229. #define UI_HORIZONTAL_PROGRESS_INDICATOR_TYPE_MULTICOLOR    0x00000002
  230. #define UI_HORIZONTAL_PROGRESS_INDICATOR_TYPE_REVERSE       0x00000004
  231.     extern UI_horizontal_progress_indicator_theme *current_horizontal_progress_indicator_theme;
  232.     typedef struct _horizontal_progress_indicator
  233.     {
  234.         S32 x, y;
  235.         S32 width, height;
  236.         U32 range;
  237.         U32 value;
  238.         U32 flags;
  239.         UI_filled_area *background_filler;
  240.         UI_filled_area *foreground_filler;
  241.         S32 n_fillers;
  242.         U8 *percentages;
  243.         S32 block_width;
  244.         S32 block_gap;
  245.         S32 border_gap;
  246.     } horizontal_progress_indicator;
  247.     extern void gui_set_horizontal_progress_indicator_theme(horizontal_progress_indicator *pi);
  248.     extern void gui_create_horizontal_progress_indicator(
  249.                     horizontal_progress_indicator *pi,
  250.                     S32 x,
  251.                     S32 y,
  252.                     S32 width,
  253.                     S32 height);
  254.     extern void gui_set_horizontal_progress_indicator_range(horizontal_progress_indicator *pi, S32 range);
  255.     extern void gui_set_horizontal_progress_indicator_value(horizontal_progress_indicator *pi, S32 value);
  256.     extern void gui_show_horizontal_progress_indicator(horizontal_progress_indicator *pi);
  257.     /* UI vertical Progress Indicator structure              */
  258. #define  UI_VERTICAL_PROGRESS_INDICATOR_TYPE_STEP           0x00000001
  259. #define UI_VERTICAL_PROGRESS_INDICATOR_TYPE_MULTICOLOR         0x00000002
  260. #define UI_VERTICAL_PROGRESS_INDICATOR_TYPE_REVERSE            0x00000004
  261.     extern UI_vertical_progress_indicator_theme *current_vertical_progress_indicator_theme;
  262.     typedef struct _vertical_progress_indicator
  263.     {
  264.         S32 x, y;
  265.         S32 width, height;
  266.         U32 range;
  267.         U32 value;
  268.         U32 flags;
  269.         UI_filled_area *background_filler;
  270.         UI_filled_area *foreground_filler;
  271.         S32 n_fillers;
  272.         U8 *percentages;
  273.         S32 block_height;
  274.         S32 block_gap;
  275.         S32 border_gap;
  276.     } vertical_progress_indicator;
  277.     extern void gui_set_vertical_progress_indicator_theme(vertical_progress_indicator *pi);
  278.     extern void gui_create_vertical_progress_indicator(
  279.                     vertical_progress_indicator *pi,
  280.                     S32 x,
  281.                     S32 y,
  282.                     S32 width,
  283.                     S32 height);
  284.     extern void gui_set_vertical_progress_indicator_range(vertical_progress_indicator *pi, S32 range);
  285.     extern void gui_set_vertical_progress_indicator_value(vertical_progress_indicator *pi, S32 value);
  286.     extern void gui_show_vertical_progress_indicator(vertical_progress_indicator *pi);
  287.     /* UI vertical_slide structure               */
  288. #define UI_VERTICAL_SLIDE_STATE_NORMAL       0x00000000
  289. #define UI_VERTICAL_SLIDE_STATE_FOCUSSED     0x00000001
  290. #define UI_VERTICAL_SLIDE_STATE_DISABLED     0x00000002
  291. #define UI_VERTICAL_SLIDE_TYPE_REVERSE       0x00000004
  292.     extern UI_vertical_slide_theme *current_vertical_slide_theme;
  293.     typedef struct _vertical_slide
  294.     {
  295.         S32 x, y;
  296.         S32 width, height;
  297.         U32 range;
  298.         U32 value;
  299.         U32 scale;
  300.         U32 flags;
  301.         UI_filled_area *focussed_bar_filler;
  302.         UI_filled_area *normal_bar_filler;
  303.         UI_filled_area *disabled_bar_filler;
  304.         icon_button scroll_button;
  305.     } vertical_slide;
  306.     extern void gui_set_vertical_slide_current_theme(vertical_slide *v);
  307.     extern void gui_set_vertical_slide_theme(vertical_slide *v, UI_vertical_slide_theme *t);
  308.     extern void gui_create_vertical_slide(vertical_slide *v, S32 x, S32 y, S32 width, S32 height);
  309.     extern void gui_set_vertical_slide_range(vertical_slide *v, S32 range);
  310.     extern void gui_set_vertical_slide_value(vertical_slide *v, S32 value);
  311.     extern void gui_set_vertical_slide_scale(vertical_slide *v, S32 scale);
  312.     extern void gui_move_vertical_slide(vertical_slide *v, S32 x, S32 y);
  313.     extern void gui_resize_vertical_slide(vertical_slide *v, S32 width, S32 height);
  314.     extern void gui_show_vertical_slide(vertical_slide *v);
  315.     /* UI horizontal_slide structure             */
  316. #define UI_HORIZONTAL_SLIDE_STATE_NORMAL     0x00000000
  317. #define UI_HORIZONTAL_SLIDE_STATE_FOCUSSED      0x00000001
  318. #define UI_HORIZONTAL_SLIDE_STATE_DISABLED      0x00000002
  319. #define UI_HORIZONTAL_SLIDE_TYPE_REVERSE     0x00000004
  320.     extern UI_horizontal_slide_theme *current_horizontal_slide_theme;
  321.     typedef struct _horizontal_slide
  322.     {
  323.         S32 x, y;
  324.         S32 width, height;
  325.         U32 range;
  326.         U32 value;
  327.         U32 scale;
  328.         U32 flags;
  329.         UI_filled_area *focussed_bar_filler;
  330.         UI_filled_area *normal_bar_filler;
  331.         UI_filled_area *disabled_bar_filler;
  332.         icon_button scroll_button;
  333.     } horizontal_slide;
  334.     extern void gui_set_horizontal_slide_current_theme(horizontal_slide *v);
  335.     extern void gui_set_horizontal_slide_theme(horizontal_slide *v, UI_horizontal_slide_theme *t);
  336.     extern void gui_create_horizontal_slide(horizontal_slide *v, S32 x, S32 y, S32 width, S32 height);
  337.     extern void gui_set_horizontal_slide_range(horizontal_slide *v, S32 range);
  338.     extern void gui_set_horizontal_slide_value(horizontal_slide *v, S32 value);
  339.     extern void gui_set_horizontal_slide_scale(horizontal_slide *v, S32 scale);
  340.     extern void gui_move_horizontal_slide(horizontal_slide *v, S32 x, S32 y);
  341.     extern void gui_resize_horizontal_slide(horizontal_slide *v, S32 width, S32 height);
  342.     extern void gui_show_horizontal_slide(horizontal_slide *v);
  343. #ifdef __cplusplus
  344. }
  345. #endif 
  346. #endif /* __GUI_SCROLLBARS_H__ */