gx_widget.h 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. /**************************************************************************/
  2. /* */
  3. /* Copyright (c) Microsoft Corporation. All rights reserved. */
  4. /* */
  5. /* This software is licensed under the Microsoft Software License */
  6. /* Terms for Microsoft Azure RTOS. Full text of the license can be */
  7. /* found in the LICENSE file at https://aka.ms/AzureRTOS_EULA */
  8. /* and in the root directory of this software. */
  9. /* */
  10. /**************************************************************************/
  11. /**************************************************************************/
  12. /**************************************************************************/
  13. /** */
  14. /** GUIX Component */
  15. /** */
  16. /** Widget Management (Widget) */
  17. /** */
  18. /**************************************************************************/
  19. /**************************************************************************/
  20. /**************************************************************************/
  21. /* */
  22. /* COMPONENT DEFINITION RELEASE */
  23. /* */
  24. /* gx_widget.h PORTABLE C */
  25. /* 6.0 */
  26. /* AUTHOR */
  27. /* */
  28. /* Kenneth Maxwell, Microsoft Corporation */
  29. /* */
  30. /* DESCRIPTION */
  31. /* */
  32. /* This file defines the GUIX widget management component, */
  33. /* including all data types and external references. It is assumed */
  34. /* that gx_api.h and gx_port.h have already been included. */
  35. /* */
  36. /* RELEASE HISTORY */
  37. /* */
  38. /* DATE NAME DESCRIPTION */
  39. /* */
  40. /* 05-19-2020 Kenneth Maxwell Initial Version 6.0 */
  41. /* */
  42. /**************************************************************************/
  43. #ifndef GX_WIDGET_H
  44. #define GX_WIDGET_H
  45. /* Define widget management function prototypes. */
  46. UINT _gx_widget_allocate(GX_WIDGET **widget, ULONG memsize);
  47. UINT _gx_widget_attach(GX_WIDGET *parent, GX_WIDGET *child);
  48. UINT _gx_widget_back_attach(GX_WIDGET *parent, GX_WIDGET *child);
  49. VOID _gx_widget_background_draw(GX_WIDGET *widget);
  50. UINT _gx_widget_back_move(GX_WIDGET *widget, GX_BOOL *widget_moved);
  51. UINT _gx_widget_block_move(GX_WIDGET *widget, GX_RECTANGLE *block, INT x_shift, INT y_shift);
  52. VOID _gx_widget_border_draw(GX_WIDGET *widget, GX_RESOURCE_ID border_color, GX_RESOURCE_ID upper_color, GX_RESOURCE_ID lower_color, GX_BOOL fill);
  53. UINT _gx_widget_border_style_set(GX_WIDGET *widget, ULONG Style);
  54. UINT _gx_widget_border_width_get(GX_WIDGET *widget, GX_VALUE *return_width);
  55. UINT _gx_widget_canvas_get(GX_WIDGET *widget, GX_CANVAS **return_canvas);
  56. UINT _gx_widget_child_detect(GX_WIDGET *parent, GX_WIDGET *child, GX_BOOL *return_detect);
  57. VOID _gx_widget_children_draw(GX_WIDGET *widget);
  58. VOID _gx_widget_children_event_process(GX_WIDGET *widget, GX_EVENT *event_ptr);
  59. UINT _gx_widget_client_get(GX_WIDGET *widget, GX_VALUE border_width, GX_RECTANGLE *return_size);
  60. VOID _gx_widget_clipping_update(GX_WIDGET *widget);
  61. UINT _gx_widget_color_get(GX_WIDGET *widget, GX_RESOURCE_ID color_id, GX_COLOR *color);
  62. VOID _gx_widget_child_clipping_update(GX_WIDGET *parent);
  63. VOID _gx_widget_child_focus_assign(GX_WIDGET *parent);
  64. VOID _gx_widget_context_fill_set(GX_WIDGET *widget);
  65. UINT _gx_widget_create(GX_WIDGET *widget, GX_CONST GX_CHAR *name, GX_WIDGET *parent,
  66. ULONG style, USHORT Id, GX_CONST GX_RECTANGLE *size);
  67. UINT _gx_widget_created_test(GX_WIDGET *widget, GX_BOOL *return_test);
  68. UINT _gx_widget_detach(GX_WIDGET *child);
  69. UINT _gx_widget_delete(GX_WIDGET *widget);
  70. VOID _gx_widget_draw(GX_WIDGET *widget);
  71. UINT _gx_widget_draw_set(GX_WIDGET *widget, VOID (*draw_func)(GX_WIDGET *));
  72. UINT _gx_widget_event_generate(GX_WIDGET *widget, USHORT event_type, LONG value);
  73. UINT _gx_widget_event_process(GX_WIDGET *widget, GX_EVENT *event_ptr);
  74. UINT _gx_widget_event_process_set(GX_WIDGET *widget, UINT (*event_processing_function)(GX_WIDGET *, GX_EVENT *));
  75. UINT _gx_widget_event_to_parent(GX_WIDGET *widget, GX_EVENT *event_ptr);
  76. UINT _gx_widget_fill_color_set(GX_WIDGET *widget, GX_RESOURCE_ID normal_color, GX_RESOURCE_ID selected_color, GX_RESOURCE_ID disabled_color);
  77. UINT _gx_widget_find(GX_WIDGET *parent, USHORT widget_id, INT search_depth, GX_WIDGET **return_widget);
  78. UINT _gx_widget_first_child_get(GX_WIDGET *parent, GX_WIDGET **child_return);
  79. UINT _gx_widget_font_get(GX_WIDGET *widget, GX_RESOURCE_ID font_id, GX_FONT **return_font);
  80. UINT _gx_widget_free(GX_WIDGET *widget);
  81. UINT _gx_widget_front_move(GX_WIDGET *widget, GX_BOOL *return_moved);
  82. UINT _gx_widget_focus_next(GX_WIDGET *widget);
  83. UINT _gx_widget_focus_previous(GX_WIDGET *widget);
  84. UINT _gx_widget_height_get(GX_WIDGET *widget, GX_VALUE *return_height);
  85. UINT _gx_widget_hide(GX_WIDGET *widget);
  86. UINT _gx_widget_last_child_get(GX_WIDGET *parent, GX_WIDGET **child_return);
  87. VOID _gx_widget_link(GX_WIDGET *parent, GX_WIDGET *child);
  88. VOID _gx_widget_nav_order_initialize(GX_WIDGET *widget);
  89. UINT _gx_widget_next_sibling_get(GX_WIDGET *current, GX_WIDGET **sibling_return);
  90. UINT _gx_widget_parent_get(GX_WIDGET *current, GX_WIDGET **parent_return);
  91. UINT _gx_widget_previous_sibling_get(GX_WIDGET *current, GX_WIDGET **sibling_return);
  92. UINT _gx_widget_pixelmap_get(GX_WIDGET *widget, GX_RESOURCE_ID pixelmap_id, GX_PIXELMAP **return_map);
  93. VOID _gx_widget_back_link(GX_WIDGET *parent, GX_WIDGET *child);
  94. UINT _gx_widget_resize(GX_WIDGET *widget, GX_RECTANGLE *new_size);
  95. UINT _gx_widget_scroll_shift(GX_WIDGET *widget, INT xShift, INT yShift, GX_BOOL clip);
  96. UINT _gx_widget_shift(GX_WIDGET *widget, GX_VALUE x_shift, GX_VALUE y_shift, GX_BOOL mark_dirty);
  97. UINT _gx_widget_show(GX_WIDGET *widget);
  98. UINT _gx_widget_status_add(GX_WIDGET *widget, ULONG status);
  99. UINT _gx_widget_status_get(GX_WIDGET *widget, ULONG *return_status);
  100. UINT _gx_widget_status_remove(GX_WIDGET *widget, ULONG status);
  101. UINT _gx_widget_status_test(GX_WIDGET *widget, ULONG status, GX_BOOL *return_test);
  102. #if defined(GX_ENABLE_DEPRECATED_STRING_API)
  103. UINT _gx_widget_string_get(GX_WIDGET *widget, GX_RESOURCE_ID string_id, GX_CONST GX_CHAR **return_string);
  104. #endif
  105. UINT _gx_widget_string_get_ext(GX_WIDGET *widget, GX_RESOURCE_ID string_id, GX_STRING *return_string);
  106. UINT _gx_widget_style_add(GX_WIDGET *widget, ULONG style);
  107. UINT _gx_widget_style_get(GX_WIDGET *widget, ULONG *return_style);
  108. UINT _gx_widget_style_remove(GX_WIDGET *widget, ULONG style);
  109. UINT _gx_widget_style_set(GX_WIDGET *widget, ULONG style);
  110. #if defined(GX_ENABLE_DEPRECATED_STRING_API)
  111. UINT _gx_widget_text_blend(GX_WIDGET *widget, UINT tColor, UINT font_id, GX_CONST GX_CHAR *string,
  112. INT x_offset, INT y_offset, UCHAR alpha);
  113. VOID _gx_widget_text_draw(GX_WIDGET *widget, UINT tColor, UINT font_id, GX_CONST GX_CHAR *string,
  114. INT x_offset, INT y_offset);
  115. #endif
  116. UINT _gx_widget_text_blend_ext(GX_WIDGET *widget, UINT tColor, UINT font_id, GX_CONST GX_STRING *string,
  117. INT x_offset, INT y_offset, UCHAR alpha);
  118. VOID _gx_widget_text_draw_ext(GX_WIDGET *widget, UINT tColor, UINT font_id, GX_CONST GX_STRING *string,
  119. INT x_offset, INT y_offset);
  120. VOID _gx_widget_text_id_draw(GX_WIDGET *widget, UINT tColor, UINT font_id, UINT text_id,
  121. INT x_offset, INT y_offset);
  122. UINT _gx_widget_top_visible_child_find(GX_WIDGET *parent, GX_WIDGET **child_return);
  123. GX_BOOL _gx_widget_transparent_pixelmap_detect(GX_WIDGET *widget, GX_RESOURCE_ID pixelmap_id);
  124. UINT _gx_widget_type_find(GX_WIDGET *parent, USHORT widget_id, GX_WIDGET **return_widget);
  125. GX_WIDGET *_gx_widget_unlink(GX_WIDGET *widget);
  126. GX_WIDGET *_gx_widget_first_client_child_get(GX_WIDGET *parent);
  127. GX_WIDGET *_gx_widget_last_client_child_get(GX_WIDGET *parent);
  128. GX_WIDGET *_gx_widget_next_client_child_get(GX_WIDGET *current);
  129. INT _gx_widget_client_index_get(GX_WIDGET *parent, GX_WIDGET *child);
  130. UINT _gx_widget_width_get(GX_WIDGET *widget, GX_VALUE *return_width);
  131. /* Define error checking shells for API services. These are only referenced by the
  132. application. */
  133. UINT _gxe_widget_allocate(GX_WIDGET **widget, ULONG memsize);
  134. UINT _gxe_widget_attach(GX_WIDGET *parent, GX_WIDGET *child);
  135. UINT _gxe_widget_back_attach(GX_WIDGET *parent, GX_WIDGET *child);
  136. UINT _gxe_widget_back_move(GX_WIDGET *widget, GX_BOOL *widget_moved);
  137. UINT _gxe_widget_block_move(GX_WIDGET *widget, GX_RECTANGLE *block, INT x_shift, INT y_shift);
  138. UINT _gxe_widget_border_style_set(GX_WIDGET *widget, ULONG Style);
  139. UINT _gxe_widget_border_width_get(GX_WIDGET *widget, GX_VALUE *return_width);
  140. UINT _gxe_widget_canvas_get(GX_WIDGET *widget, GX_CANVAS **return_canvas);
  141. UINT _gxe_widget_child_detect(GX_WIDGET *parent, GX_WIDGET *child, GX_BOOL *return_detect);
  142. UINT _gxe_widget_client_get(GX_WIDGET *widget, GX_VALUE border_width, GX_RECTANGLE *return_size);
  143. UINT _gxe_widget_color_get(GX_WIDGET *widget, GX_RESOURCE_ID color_id, GX_COLOR *return_color);
  144. UINT _gxe_widget_create(GX_WIDGET *widget, GX_CONST GX_CHAR *name, GX_WIDGET *parent,
  145. ULONG style, USHORT Id, GX_CONST GX_RECTANGLE *size, UINT widget_block_size);
  146. UINT _gxe_widget_created_test(GX_WIDGET *widget, GX_BOOL *return_test);
  147. UINT _gxe_widget_delete(GX_WIDGET *widget);
  148. UINT _gxe_widget_detach(GX_WIDGET *widget);
  149. UINT _gxe_widget_draw_set(GX_WIDGET *widget, VOID (*draw_func)(GX_WIDGET *));
  150. UINT _gxe_widget_event_generate(GX_WIDGET *widget, USHORT event_type, LONG value);
  151. UINT _gxe_widget_event_process(GX_WIDGET *widget, GX_EVENT *event_ptr);
  152. UINT _gxe_widget_event_process_set(GX_WIDGET *widget, UINT (*event_processing_function)(GX_WIDGET *, GX_EVENT *));
  153. UINT _gxe_widget_fill_color_set(GX_WIDGET *widget, GX_RESOURCE_ID normal_color, GX_RESOURCE_ID selected_color, GX_RESOURCE_ID disabled_color);
  154. UINT _gxe_widget_find(GX_WIDGET *parent, USHORT widget_id, INT search_depth, GX_WIDGET **return_widget);
  155. UINT _gxe_widget_first_child_get(GX_WIDGET *parent, GX_WIDGET **child_return);
  156. UINT _gxe_widget_focus_next(GX_WIDGET *widget);
  157. UINT _gxe_widget_focus_previous(GX_WIDGET *widget);
  158. UINT _gxe_widget_font_get(GX_WIDGET *widget, GX_RESOURCE_ID resource_id, GX_FONT **return_font);
  159. UINT _gxe_widget_free(GX_WIDGET *widget);
  160. UINT _gxe_widget_front_move(GX_WIDGET *widget, GX_BOOL *return_moved);
  161. UINT _gxe_widget_height_get(GX_WIDGET *widget, GX_VALUE *return_height);
  162. UINT _gxe_widget_hide(GX_WIDGET *widget);
  163. UINT _gxe_widget_last_child_get(GX_WIDGET *parent, GX_WIDGET ** child_return);
  164. UINT _gxe_widget_next_sibling_get(GX_WIDGET *current, GX_WIDGET **sibling_return);
  165. UINT _gxe_widget_parent_get(GX_WIDGET *current, GX_WIDGET **parent_return);
  166. UINT _gxe_widget_previous_sibling_get(GX_WIDGET* current, GX_WIDGET** sibling_return);
  167. UINT _gxe_widget_pixelmap_get(GX_WIDGET *widget, GX_RESOURCE_ID resource_id, GX_PIXELMAP **return_pixelmap);
  168. UINT _gxe_widget_resize(GX_WIDGET *widget, GX_RECTANGLE *new_size);
  169. UINT _gxe_widget_shift(GX_WIDGET *widget, GX_VALUE x_shift, GX_VALUE y_shift, GX_BOOL mark_dirty);
  170. UINT _gxe_widget_show(GX_WIDGET *widget);
  171. UINT _gxe_widget_status_add(GX_WIDGET *widget, ULONG status);
  172. UINT _gxe_widget_status_get(GX_WIDGET *widget, ULONG *return_status);
  173. UINT _gxe_widget_status_remove(GX_WIDGET *widget, ULONG status);
  174. UINT _gxe_widget_status_test(GX_WIDGET *widget, ULONG status, GX_BOOL *return_test);
  175. #if defined(GX_ENABLE_DEPRECATED_STRING_API)
  176. UINT _gxe_widget_string_get(GX_WIDGET *widget, GX_RESOURCE_ID string_id, GX_CONST GX_CHAR **return_string);
  177. #endif
  178. UINT _gxe_widget_string_get_ext(GX_WIDGET *widget, GX_RESOURCE_ID string_id, GX_STRING *return_string);
  179. UINT _gxe_widget_style_add(GX_WIDGET *widget, ULONG style);
  180. UINT _gxe_widget_style_get(GX_WIDGET *widget, ULONG *return_style);
  181. UINT _gxe_widget_style_set(GX_WIDGET *widget, ULONG style);
  182. UINT _gxe_widget_style_remove(GX_WIDGET *widget, ULONG style);
  183. #if defined(GX_ENABLE_DEPRECATED_STRING_API)
  184. UINT _gxe_widget_text_blend(GX_WIDGET *widget,
  185. UINT tColor, UINT font_id,
  186. GX_CONST GX_CHAR *string, INT x_offset, INT y_offset, UCHAR alpha);
  187. #endif
  188. UINT _gxe_widget_text_blend_ext(GX_WIDGET *widget,
  189. UINT tColor, UINT font_id,
  190. GX_CONST GX_STRING *string, INT x_offset, INT y_offset, UCHAR alpha);
  191. UINT _gxe_widget_top_visible_child_find(GX_WIDGET *parent, GX_WIDGET **child_return);
  192. UINT _gxe_widget_type_find(GX_WIDGET *parent, USHORT widget_id, GX_WIDGET **return_widget);
  193. UINT _gxe_widget_width_get(GX_WIDGET *widget, GX_VALUE *return_width);
  194. UINT _gxe_widget_event_to_parent(GX_WIDGET *widget, GX_EVENT *event_ptr);
  195. #endif