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 /** Canvas Management (Canvas) */ 18 /** */ 19 /**************************************************************************/ 20 /**************************************************************************/ 21 22 23 /**************************************************************************/ 24 /* */ 25 /* COMPONENT DEFINITION RELEASE */ 26 /* */ 27 /* gx_canvas.h PORTABLE C */ 28 /* 6.1.11 */ 29 /* AUTHOR */ 30 /* */ 31 /* Kenneth Maxwell, Microsoft Corporation */ 32 /* */ 33 /* DESCRIPTION */ 34 /* */ 35 /* This file defines the GUIX canvas component, including all data */ 36 /* types and external references. It is assumed that gx_api.h and */ 37 /* 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 /* resulting in version 6.1 */ 46 /* 04-25-2022 Ting Zhu Modified comment(s), */ 47 /* added new declarations, */ 48 /* resulting in version 6.1.11 */ 49 /* */ 50 /**************************************************************************/ 51 52 #ifndef GX_CANVAS_H 53 #define GX_CANVAS_H 54 55 56 /* Define canvas management constants. */ 57 58 #define GX_CANVAS_ID ((ULONG)0x43414E56) 59 60 61 /* Define canvas management function prototypes. */ 62 UINT _gx_canvas_alpha_set(GX_CANVAS *canvas, GX_UBYTE alpha); 63 UINT _gx_canvas_arc_draw(INT xcenter, INT ycenter, UINT r, INT start_angle, INT end_angle); 64 VOID _gx_canvas_anti_alias_line_draw(GX_DRAW_CONTEXT *context, INT xs, INT ys, INT xe, INT ye, INT flag); 65 UINT _gx_canvas_block_move(GX_RECTANGLE *block, GX_VALUE x_shift, GX_VALUE y_shift, GX_RECTANGLE *dirty); 66 67 UINT _gx_canvas_circle_draw(INT xcenter, INT ycenter, UINT r); 68 GX_BOOL _gx_canvas_composite_create(GX_CANVAS **return_composite); 69 UINT _gx_canvas_create(GX_CANVAS *canvas, GX_CONST GX_CHAR *name, GX_DISPLAY *dispaly, 70 UINT type, UINT width, UINT height, GX_COLOR *memory_area, ULONG memory_size); 71 UINT _gx_canvas_delete(GX_CANVAS *canvas); 72 73 VOID _gx_canvas_dirty_mark(GX_CANVAS *canvas, GX_RECTANGLE *area); 74 75 UINT _gx_canvas_drawing_complete(GX_CANVAS *canvas, GX_BOOL Flush); 76 UINT _gx_canvas_drawing_initiate(GX_CANVAS *canvas, GX_WIDGET *who, GX_RECTANGLE *clip_area); 77 78 UINT _gx_canvas_ellipse_draw(INT xcenter, INT ycenter, INT a, INT b); 79 VOID _gx_canvas_glyphs_draw(GX_DRAW_CONTEXT *context, GX_POINT *draw_position, GX_CONST GX_STRING *string, 80 GX_RECTANGLE *view, 81 VOID (*draw_glyph)(GX_DRAW_CONTEXT *, GX_RECTANGLE *, GX_POINT *, GX_CONST GX_GLYPH *)); 82 83 UINT _gx_canvas_hardware_layer_bind(GX_CANVAS *canvas, INT layer); 84 UINT _gx_canvas_hide(GX_CANVAS *canvas); 85 86 UINT _gx_canvas_line_draw(GX_VALUE x_start, GX_VALUE y_start, GX_VALUE x_end, GX_VALUE y_end); 87 UINT _gx_canvas_memory_define(GX_CANVAS *canvas, GX_COLOR *memory, ULONG memsize); 88 89 #if defined(GX_MOUSE_SUPPORT) 90 UINT _gx_canvas_mouse_define(GX_CANVAS *canvas, GX_MOUSE_CURSOR_INFO *info); 91 UINT _gx_canvas_mouse_show(GX_CANVAS *canvas); 92 UINT _gx_canvas_mouse_hide(GX_CANVAS *canvas); 93 #endif 94 UINT _gx_canvas_offset_set(GX_CANVAS *canvas, GX_VALUE x, GX_VALUE y); 95 UINT _gx_canvas_pixel_draw(GX_POINT position); 96 UINT _gx_canvas_pixelmap_blend(GX_VALUE x_position, GX_VALUE y_position, GX_PIXELMAP *pixelmap, GX_UBYTE alpha); 97 UINT _gx_canvas_pixelmap_draw(GX_VALUE x_position, GX_VALUE y_position, GX_PIXELMAP *pixelmap); 98 UINT _gx_canvas_pixelmap_get(GX_PIXELMAP *pixelmap); 99 UINT _gx_canvas_pixelmap_tile(GX_RECTANGLE *fill, GX_PIXELMAP *pixelmap); 100 UINT _gx_canvas_pixelmap_rotate(GX_VALUE x_position, GX_VALUE y_position, GX_PIXELMAP *pixelmap, 101 INT angle, INT rot_cx, INT rot_cy); 102 UINT _gx_canvas_polygon_draw(GX_POINT *point_array, INT number_of_points); 103 UINT _gx_canvas_pie_draw(INT xcenter, INT ycenter, UINT r, INT start_angle, INT end_angle); 104 UINT _gx_canvas_rectangle_draw(GX_RECTANGLE *rectangle); 105 #if defined(GX_ENABLE_DEPRECATED_STRING_API) 106 UINT _gx_canvas_rotated_text_draw(GX_CONST GX_CHAR *text, GX_VALUE xcenter, GX_VALUE ycenter, INT angle); 107 #endif 108 UINT _gx_canvas_rotated_text_draw_ext(GX_CONST GX_STRING *text, GX_VALUE xcenter, GX_VALUE ycenter, INT angle); 109 UINT _gx_canvas_shift(GX_CANVAS *canvas, GX_VALUE x, GX_VALUE y); 110 UINT _gx_canvas_show(GX_CANVAS *canvas); 111 112 UINT _gx_canvas_aligned_text_draw(GX_CONST GX_STRING *string, GX_RECTANGLE *rectangle, ULONG alignment); 113 #if defined(GX_ENABLE_DEPRECATED_STRING_API) 114 UINT _gx_canvas_text_draw(GX_VALUE x_start, GX_VALUE y_start, GX_CONST GX_CHAR *string, INT length); 115 #endif 116 UINT _gx_canvas_text_draw_ext(GX_VALUE x_start, GX_VALUE y_start, GX_CONST GX_STRING *string); 117 118 /* Define error checking shells for API services. These are only referenced by the 119 application. */ 120 121 UINT _gxe_canvas_alpha_set(GX_CANVAS *canvas, GX_UBYTE alpha); 122 UINT _gxe_canvas_arc_draw(INT xcenter, INT ycenter, UINT r, INT start_angle, INT end_angle); 123 UINT _gxe_canvas_block_move(GX_RECTANGLE *block, GX_VALUE x_shift, GX_VALUE y_shift, GX_RECTANGLE *dirty); 124 UINT _gxe_canvas_circle_draw(INT xcenter, INT ycenter, UINT r); 125 UINT _gxe_canvas_create(GX_CANVAS *canvas, GX_CONST GX_CHAR *name, GX_DISPLAY *display, UINT type, UINT width, 126 UINT height, GX_COLOR *memory_area, ULONG memory_size, 127 UINT canvas_control_block_size); 128 UINT _gxe_canvas_delete(GX_CANVAS *canvas); 129 UINT _gxe_canvas_drawing_complete(GX_CANVAS *canvas, GX_BOOL Flush); 130 UINT _gxe_canvas_drawing_initiate(GX_CANVAS *canvas, GX_WIDGET *who, GX_RECTANGLE *dirty_area); 131 UINT _gxe_canvas_ellipse_draw(INT xcenter, INT ycenter, INT a, INT b); 132 133 UINT _gxe_canvas_hardware_layer_bind(GX_CANVAS *canvas, INT layer); 134 UINT _gxe_canvas_hide(GX_CANVAS *canvas); 135 UINT _gxe_canvas_line_draw(GX_VALUE x_start, GX_VALUE y_start, GX_VALUE x_end, GX_VALUE y_end); 136 UINT _gxe_canvas_memory_define(GX_CANVAS *canvas, GX_COLOR *memory, ULONG memsize); 137 138 #if defined(GX_MOUSE_SUPPORT) 139 UINT _gxe_canvas_mouse_define(GX_CANVAS *canvas, GX_MOUSE_CURSOR_INFO *info); 140 UINT _gxe_canvas_mouse_show(GX_CANVAS *canvas); 141 UINT _gxe_canvas_mouse_hide(GX_CANVAS *canvas); 142 #endif 143 UINT _gxe_canvas_offset_set(GX_CANVAS *canvas, GX_VALUE x, GX_VALUE y); 144 UINT _gxe_canvas_pie_draw(INT xcenter, INT ycenter, UINT r, INT start_angle, INT end_angle); 145 UINT _gxe_canvas_pixel_draw(GX_POINT position); 146 UINT _gxe_canvas_pixelmap_blend(GX_VALUE x_position, GX_VALUE y_position, GX_PIXELMAP *pixelmap, GX_UBYTE alpha); 147 UINT _gxe_canvas_pixelmap_draw(GX_VALUE x_position, GX_VALUE y_position, GX_PIXELMAP *pixelmap); 148 UINT _gxe_canvas_pixelmap_get(GX_PIXELMAP *pixelmap); 149 UINT _gxe_canvas_pixelmap_tile(GX_RECTANGLE *fill, GX_PIXELMAP *pixelmap); 150 UINT _gxe_canvas_pixelmap_rotate(GX_VALUE x_position, GX_VALUE y_position, GX_PIXELMAP *pixelmap, INT angle, INT rot_cx, INT rot_cy); 151 UINT _gxe_canvas_polygon_draw(GX_POINT *point_array, INT number_of_points); 152 UINT _gxe_canvas_rectangle_draw(GX_RECTANGLE *rectangle); 153 #if defined(GX_ENABLE_DEPRECATED_STRING_API) 154 UINT _gxe_canvas_rotated_text_draw(GX_CONST GX_CHAR *text, GX_VALUE xcenter, GX_VALUE ycenter, INT angle); 155 #endif 156 UINT _gxe_canvas_rotated_text_draw_ext(GX_CONST GX_STRING *text, GX_VALUE xcenter, GX_VALUE ycenter, INT angle); 157 UINT _gxe_canvas_shift(GX_CANVAS *canvas, GX_VALUE x, GX_VALUE y); 158 UINT _gxe_canvas_show(GX_CANVAS *canvas); 159 UINT _gxe_canvas_aligned_text_draw(GX_CONST GX_STRING *string, GX_RECTANGLE *rectangle, ULONG alignment); 160 #if defined(GX_ENABLE_DEPRECATED_STRING_API) 161 UINT _gxe_canvas_text_draw(GX_VALUE x_start, GX_VALUE y_start, GX_CONST GX_CHAR *string, INT length); 162 #endif 163 UINT _gxe_canvas_text_draw_ext(GX_VALUE x_start, GX_VALUE y_start, GX_CONST GX_STRING *string); 164 165 #ifdef GX_TARGET_WIN32 166 VOID _win32_compatible_canvas_memory_allocate(GX_CANVAS *canvas); 167 #endif 168 169 #endif 170 171