1 /*************************************************************************** 2 * Copyright (c) 2024 Microsoft Corporation 3 * 4 * This program and the accompanying materials are made available under the 5 * terms of the MIT License which is available at 6 * https://opensource.org/licenses/MIT. 7 * 8 * SPDX-License-Identifier: MIT 9 **************************************************************************/ 10 11 12 /**************************************************************************/ 13 /**************************************************************************/ 14 /** */ 15 /** GUIX Component */ 16 /** */ 17 /** Scroll Wheel Management (Scroll Wheel) */ 18 /** */ 19 /**************************************************************************/ 20 /**************************************************************************/ 21 22 23 /**************************************************************************/ 24 /* */ 25 /* COMPONENT DEFINITION RELEASE */ 26 /* */ 27 /* gx_scroll_wheel.h PORTABLE C */ 28 /* 6.2.1 */ 29 /* AUTHOR */ 30 /* */ 31 /* Kenneth Maxwell, Microsoft Corporation */ 32 /* */ 33 /* DESCRIPTION */ 34 /* */ 35 /* This file defines the GUIX scroll wheel management component, */ 36 /* including all data types and external references. It is assumed */ 37 /* that gx_api.h and gx_port.h have already been included. */ 38 /* */ 39 /* RELEASE HISTORY */ 40 /* */ 41 /* DATE NAME DESCRIPTION */ 42 /* */ 43 /* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */ 44 /* 09-30-2020 Kenneth Maxwell Modified comment(s), */ 45 /* added new prototypes, */ 46 /* resulting in version 6.1 */ 47 /* 06-02-2021 Ting Zhu Modified comment(s), */ 48 /* added prototypes for */ 49 /* generic scroll wheel, */ 50 /* resulting in version 6.1.7 */ 51 /* */ 52 /* 10-31-2022 Kenneth Maxwell Modified comment(s), */ 53 /* changed prototype for */ 54 /* generic_scroll_wheel_scroll,*/ 55 /* resulting in version 6.2.0 */ 56 /* 03-08-2023 Ting Zhu Modified comment(s), */ 57 /* changed return type, */ 58 /* resulting in version 6.2.1 */ 59 /* */ 60 /**************************************************************************/ 61 62 #ifndef GX_SCROLL_WHEEL_H 63 #define GX_SCROLL_WHEEL_H 64 65 66 #define GX_ANIMATION_TIMER 0x1100 67 68 /* Define scroll wheel management function prototypes. */ 69 70 UINT _gx_numeric_scroll_wheel_create(GX_NUMERIC_SCROLL_WHEEL *wheel, GX_CONST GX_CHAR *name, GX_WIDGET *parent, 71 INT start_val, INT end_val, 72 ULONG style, USHORT Id, GX_CONST GX_RECTANGLE *size); 73 UINT _gx_numeric_scroll_wheel_range_set(GX_NUMERIC_SCROLL_WHEEL *wheel, INT start_val, INT end_val); 74 UINT _gx_numeric_scroll_wheel_text_get(GX_NUMERIC_SCROLL_WHEEL *wheel, INT row, GX_STRING *); 75 76 UINT _gx_scroll_wheel_create(GX_SCROLL_WHEEL *wheel, GX_CONST GX_CHAR *name, GX_WIDGET *parent, INT total_rows, 77 ULONG style, USHORT Id, GX_CONST GX_RECTANGLE *size); 78 UINT _gx_scroll_wheel_event_process(GX_SCROLL_WHEEL *wheel, GX_EVENT *event_ptr); 79 VOID _gx_scroll_wheel_gradient_create(GX_SCROLL_WHEEL *wheel); 80 UINT _gx_scroll_wheel_gradient_alpha_set(GX_SCROLL_WHEEL *wheel, GX_UBYTE start_alpha, GX_UBYTE end_alpha); 81 UINT _gx_scroll_wheel_row_height_set(GX_SCROLL_WHEEL *wheel, GX_VALUE row_height); 82 UINT _gx_scroll_wheel_selected_row_calculate(GX_SCROLL_WHEEL *wheel); 83 UINT _gx_scroll_wheel_scroll(GX_SCROLL_WHEEL *wheel, GX_VALUE shift); 84 UINT _gx_scroll_wheel_selected_background_set(GX_SCROLL_WHEEL *wheel, GX_RESOURCE_ID selected_bg); 85 UINT _gx_scroll_wheel_selected_get(GX_SCROLL_WHEEL *wheel, INT *row); 86 UINT _gx_scroll_wheel_selected_set(GX_SCROLL_WHEEL *wheel, INT row); 87 UINT _gx_scroll_wheel_speed_set(GX_SCROLL_WHEEL *wheel, GX_FIXED_VAL start_speed_rate, GX_FIXED_VAL end_speed_rate, 88 GX_VALUE max_steps, GX_VALUE delay); 89 UINT _gx_scroll_wheel_total_rows_set(GX_SCROLL_WHEEL *wheel, INT total_rows); 90 GX_BOOL _gx_scroll_wheel_wrap_style_check(GX_SCROLL_WHEEL *wheel); 91 92 #if defined(GX_ENABLE_DEPRECATED_STRING_API) 93 UINT _gx_string_scroll_wheel_create(GX_STRING_SCROLL_WHEEL *wheel, GX_CONST GX_CHAR *name, GX_WIDGET *parent, INT total_rows, 94 GX_CONST GX_CHAR **string_list, 95 ULONG style, USHORT Id, GX_CONST GX_RECTANGLE *size); 96 #endif 97 UINT _gx_string_scroll_wheel_create_ext(GX_STRING_SCROLL_WHEEL *wheel, GX_CONST GX_CHAR *name, GX_WIDGET *parent, INT total_rows, 98 GX_CONST GX_STRING *string_list, 99 ULONG style, USHORT Id, GX_CONST GX_RECTANGLE *size); 100 UINT _gx_string_scroll_wheel_event_process(GX_STRING_SCROLL_WHEEL *wheel, GX_EVENT *event_ptr); 101 UINT _gx_string_scroll_wheel_string_id_list_set(GX_STRING_SCROLL_WHEEL *wheel, 102 GX_CONST GX_RESOURCE_ID *string_id_list, 103 INT id_count); 104 105 #if defined(GX_ENABLE_DEPRECATED_STRING_API) 106 UINT _gx_string_scroll_wheel_string_list_set(GX_STRING_SCROLL_WHEEL *wheel, 107 GX_CONST GX_CHAR **string_list, 108 INT string_count); 109 110 #endif 111 UINT _gx_string_scroll_wheel_string_list_set_ext(GX_STRING_SCROLL_WHEEL *wheel, 112 GX_CONST GX_STRING *string_list, 113 INT string_count); 114 UINT _gx_string_scroll_wheel_text_get(GX_STRING_SCROLL_WHEEL *wheel, INT row, GX_STRING *string); 115 116 /* Define text scroll wheel management function prototypes. */ 117 #if defined(GX_ENABLE_DEPRECATED_STRING_API) 118 UINT _gx_text_scroll_wheel_callback_set(GX_TEXT_SCROLL_WHEEL * wheel, GX_CONST GX_CHAR * (*callback)(GX_TEXT_SCROLL_WHEEL *, INT)); 119 #endif 120 #if defined(GX_DYNAMIC_BIDI_TEXT_SUPPORT) 121 UINT _gx_text_scroll_wheel_dynamic_bidi_text_delete(GX_TEXT_SCROLL_WHEEL *wheel); 122 #endif 123 UINT _gx_text_scroll_wheel_event_process(GX_TEXT_SCROLL_WHEEL *wheel, GX_EVENT *event_ptr); 124 UINT _gx_text_scroll_wheel_callback_set_ext(GX_TEXT_SCROLL_WHEEL *wheel, UINT (*callback)(GX_TEXT_SCROLL_WHEEL *, INT, GX_STRING *)); 125 UINT _gx_text_scroll_wheel_create(GX_TEXT_SCROLL_WHEEL *wheel, GX_CONST GX_CHAR *name, GX_WIDGET *parent, INT total_rows, 126 ULONG style, USHORT Id, GX_CONST GX_RECTANGLE *size); 127 VOID _gx_text_scroll_wheel_draw(GX_TEXT_SCROLL_WHEEL *wheel); 128 UINT _gx_text_scroll_wheel_font_set(GX_TEXT_SCROLL_WHEEL *wheel, GX_RESOURCE_ID normal_font, GX_RESOURCE_ID selected_font); 129 UINT _gx_text_scroll_wheel_text_color_set(GX_TEXT_SCROLL_WHEEL *wheel, 130 GX_RESOURCE_ID normal_text_color, 131 GX_RESOURCE_ID selected_text_color, 132 GX_RESOURCE_ID disabled_text_color); 133 134 135 /* Define generic scroll wheel management function prototypes. */ 136 UINT _gx_generic_scroll_wheel_create(GX_GENERIC_SCROLL_WHEEL *wheel, 137 GX_CONST GX_CHAR *name, 138 GX_WIDGET *parent, 139 INT total_rows, 140 VOID (*callback)(GX_GENERIC_SCROLL_WHEEL *, GX_WIDGET *, INT), 141 ULONG style, 142 USHORT id, 143 GX_CONST GX_RECTANGLE *size); 144 UINT _gx_generic_scroll_wheel_children_position(GX_GENERIC_SCROLL_WHEEL *wheel); 145 VOID _gx_generic_scroll_wheel_down_wrap(GX_GENERIC_SCROLL_WHEEL *wheel); 146 VOID _gx_generic_scroll_wheel_draw(GX_GENERIC_SCROLL_WHEEL *wheel); 147 UINT _gx_generic_scroll_wheel_event_process(GX_GENERIC_SCROLL_WHEEL *wheel, GX_EVENT *event_ptr); 148 UINT _gx_generic_scroll_wheel_row_height_set(GX_GENERIC_SCROLL_WHEEL *wheel, GX_VALUE row_height); 149 UINT _gx_generic_scroll_wheel_scroll(GX_GENERIC_SCROLL_WHEEL *wheel, GX_VALUE shift); 150 UINT _gx_generic_scroll_wheel_total_rows_set(GX_GENERIC_SCROLL_WHEEL *wheel, INT count); 151 VOID _gx_generic_scroll_wheel_up_wrap(GX_GENERIC_SCROLL_WHEEL *wheel); 152 GX_BOOL _gx_generic_scroll_wheel_wrap_style_check(GX_GENERIC_SCROLL_WHEEL *wheel); 153 154 /* Define error checking shells for API services. These are only referenced by the 155 application. */ 156 157 UINT _gxe_numeric_scroll_wheel_create(GX_NUMERIC_SCROLL_WHEEL *wheel, GX_CONST GX_CHAR *name, GX_WIDGET *parent, 158 INT start_val, INT end_val, 159 ULONG style, USHORT Id, GX_CONST GX_RECTANGLE *size, UINT control_block_size); 160 UINT _gxe_numeric_scroll_wheel_range_set(GX_NUMERIC_SCROLL_WHEEL *wheel, INT start_val, INT end_val); 161 162 UINT _gxe_scroll_wheel_create(GX_SCROLL_WHEEL *wheel, GX_CONST GX_CHAR *name, GX_WIDGET *parent, INT total_rows, 163 ULONG style, USHORT Id, GX_CONST GX_RECTANGLE *size, UINT control_block_size); 164 UINT _gxe_scroll_wheel_event_process(GX_SCROLL_WHEEL *wheel, GX_EVENT *event_ptr); 165 UINT _gxe_scroll_wheel_gradient_alpha_set(GX_SCROLL_WHEEL *wheel, GX_UBYTE start_alpha, GX_UBYTE end_alpha); 166 UINT _gxe_scroll_wheel_row_height_set(GX_SCROLL_WHEEL *wheel, GX_VALUE row_height); 167 UINT _gxe_scroll_wheel_selected_background_set(GX_SCROLL_WHEEL *wheel, GX_RESOURCE_ID selected_bg); 168 UINT _gxe_scroll_wheel_selected_get(GX_SCROLL_WHEEL *wheel, INT *row); 169 UINT _gxe_scroll_wheel_selected_set(GX_SCROLL_WHEEL *wheel, INT row); 170 UINT _gxe_scroll_wheel_speed_set(GX_SCROLL_WHEEL *wheel, GX_FIXED_VAL start_speed_rate, GX_FIXED_VAL end_speed_rate, 171 GX_VALUE max_steps, GX_VALUE delay); 172 UINT _gxe_scroll_wheel_total_rows_set(GX_SCROLL_WHEEL *wheel, INT total_rows); 173 174 175 #if defined(GX_ENABLE_DEPRECATED_STRING_API) 176 UINT _gxe_string_scroll_wheel_create(GX_STRING_SCROLL_WHEEL *wheel, GX_CONST GX_CHAR *name, GX_WIDGET *parent, INT total_rows, 177 GX_CONST GX_CHAR **string_list, 178 ULONG style, USHORT Id, GX_CONST GX_RECTANGLE *size, UINT control_block_size); 179 #endif 180 UINT _gxe_string_scroll_wheel_create_ext(GX_STRING_SCROLL_WHEEL *wheel, GX_CONST GX_CHAR *name, GX_WIDGET *parent, INT total_rows, 181 GX_CONST GX_STRING *string_list, 182 ULONG style, USHORT Id, GX_CONST GX_RECTANGLE *size, UINT control_block_size); 183 UINT _gxe_string_scroll_wheel_event_process(GX_STRING_SCROLL_WHEEL *wheel, GX_EVENT *event_ptr); 184 185 UINT _gxe_string_scroll_wheel_string_id_list_set(GX_STRING_SCROLL_WHEEL *wheel, 186 GX_CONST GX_RESOURCE_ID *string_id_list, 187 INT id_count); 188 #if defined(GX_ENABLE_DEPRECATED_STRING_API) 189 UINT _gxe_string_scroll_wheel_string_list_set(GX_STRING_SCROLL_WHEEL *wheel, 190 GX_CONST GX_CHAR **string_list, 191 INT string_count); 192 #endif 193 UINT _gxe_string_scroll_wheel_string_list_set_ext(GX_STRING_SCROLL_WHEEL *wheel, 194 GX_CONST GX_STRING *string_list, 195 INT string_count); 196 197 #if defined(GX_ENABLE_DEPRECATED_STRING_API) 198 UINT _gxe_text_scroll_wheel_callback_set(GX_TEXT_SCROLL_WHEEL * wheel, GX_CONST GX_CHAR * (*callback)(GX_TEXT_SCROLL_WHEEL *, INT)); 199 #endif 200 UINT _gxe_text_scroll_wheel_callback_set_ext(GX_TEXT_SCROLL_WHEEL *wheel, UINT (*callback)(GX_TEXT_SCROLL_WHEEL *, INT, GX_STRING *)); 201 UINT _gxe_text_scroll_wheel_create(GX_TEXT_SCROLL_WHEEL *wheel, GX_CONST GX_CHAR *name, GX_WIDGET *parent, INT total_rows, 202 ULONG style, USHORT Id, GX_CONST GX_RECTANGLE *size, UINT control_block_size); 203 UINT _gxe_text_scroll_wheel_event_process(GX_TEXT_SCROLL_WHEEL *wheel, GX_EVENT *event_ptr); 204 UINT _gxe_text_scroll_wheel_font_set(GX_TEXT_SCROLL_WHEEL *wheel, GX_RESOURCE_ID normal_font, GX_RESOURCE_ID selected_font); 205 UINT _gxe_text_scroll_wheel_text_color_set(GX_TEXT_SCROLL_WHEEL *wheel, 206 GX_RESOURCE_ID normal_text_color, 207 GX_RESOURCE_ID selected_text_color, 208 GX_RESOURCE_ID disabled_text_color); 209 210 UINT _gxe_generic_scroll_wheel_create(GX_GENERIC_SCROLL_WHEEL *wheel, 211 GX_CONST GX_CHAR *name, 212 GX_WIDGET *parent, 213 INT total_rows, 214 VOID (*callback)(GX_GENERIC_SCROLL_WHEEL *, GX_WIDGET *, INT), 215 ULONG style, 216 USHORT id, 217 GX_CONST GX_RECTANGLE *size, 218 UINT control_block_size); 219 UINT _gxe_generic_scroll_wheel_children_position(GX_GENERIC_SCROLL_WHEEL *wheel); 220 UINT _gxe_generic_scroll_wheel_event_process(GX_GENERIC_SCROLL_WHEEL *wheel, GX_EVENT *event_ptr); 221 UINT _gxe_generic_scroll_wheel_row_height_set(GX_GENERIC_SCROLL_WHEEL *wheel, GX_VALUE row_height); 222 UINT _gxe_generic_scroll_wheel_total_rows_set(GX_GENERIC_SCROLL_WHEEL *wheel, INT count); 223 224 #endif 225 226