Changeset 7e38970d in mainline for uspace/lib/ui
- Timestamp:
- 2020-12-07T00:08:37Z (5 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 25f26600
- Parents:
- 7a873f0 (diff), 8596474 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)links above to see all the changes relative to each parent. - Location:
- uspace/lib/ui
- Files:
-
- 46 added
- 14 moved
-
doc/doxygroups.h (added)
-
include/types/ui/control.h (added)
-
include/types/ui/cursor.h (moved) (moved from uspace/lib/draw/include/draw/gfx.h ) (3 diffs)
-
include/types/ui/entry.h (moved) (moved from uspace/lib/guigfx/include/types/guigfx/canvas.h ) (2 diffs)
-
include/types/ui/event.h (added)
-
include/types/ui/fixed.h (added)
-
include/types/ui/image.h (added)
-
include/types/ui/label.h (added)
-
include/types/ui/pbutton.h (added)
-
include/types/ui/resource.h (added)
-
include/types/ui/ui.h (moved) (moved from uspace/lib/softrend/filter.h ) (2 diffs)
-
include/types/ui/wdecor.h (moved) (moved from uspace/lib/draw/include/draw/surface.h ) (2 diffs)
-
include/types/ui/window.h (added)
-
include/ui/control.h (added)
-
include/ui/entry.h (moved) (moved from uspace/lib/gui/canvas.h ) (2 diffs)
-
include/ui/fixed.h (added)
-
include/ui/image.h (added)
-
include/ui/label.h (moved) (moved from uspace/lib/gui/label.h ) (2 diffs)
-
include/ui/paint.h (added)
-
include/ui/pbutton.h (moved) (moved from uspace/lib/draw/include/draw/source.h ) (2 diffs)
-
include/ui/resource.h (added)
-
include/ui/ui.h (added)
-
include/ui/wdecor.h (added)
-
include/ui/window.h (added)
-
meson.build (moved) (moved from uspace/lib/draw/meson.build ) (2 diffs)
-
private/control.h (moved) (moved from uspace/lib/softrend/rectangle.h ) (2 diffs)
-
private/dummygc.h (moved) (moved from uspace/lib/c/include/io/mode.h ) (2 diffs)
-
private/entry.h (added)
-
private/fixed.h (moved) (moved from uspace/lib/draw/include/draw/path.h ) (2 diffs)
-
private/image.h (moved) (moved from uspace/lib/guigfx/private/canvas.h ) (2 diffs)
-
private/label.h (added)
-
private/pbutton.h (added)
-
private/resource.h (added)
-
private/ui.h (moved) (moved from uspace/lib/gui/minimal.h ) (2 diffs)
-
private/wdecor.h (added)
-
private/window.h (moved) (moved from uspace/lib/draw/include/draw/drawctx.h ) (2 diffs)
-
src/control.c (added)
-
src/dummygc.c (added)
-
src/entry.c (added)
-
src/fixed.c (added)
-
src/image.c (added)
-
src/label.c (added)
-
src/paint.c (added)
-
src/pbutton.c (added)
-
src/resource.c (added)
-
src/ui.c (added)
-
src/wdecor.c (added)
-
src/window.c (added)
-
test/control.c (added)
-
test/entry.c (added)
-
test/fixed.c (added)
-
test/image.c (added)
-
test/label.c (added)
-
test/main.c (added)
-
test/paint.c (added)
-
test/pbutton.c (added)
-
test/resource.c (added)
-
test/ui.c (added)
-
test/wdecor.c (added)
-
test/window.c (added)
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ui/include/types/ui/cursor.h
r7a873f0 r7e38970d 1 1 /* 2 * Copyright (c) 2008 Martin Decky 3 * Copyright (c) 2012 Petr Koupy 2 * Copyright (c) 2020 Jiri Svoboda 4 3 * All rights reserved. 5 4 * … … 28 27 */ 29 28 30 /** @addtogroup draw29 /** @addtogroup libui 31 30 * @{ 32 31 */ … … 34 33 */ 35 34 36 #ifndef GFX_H_37 #define GFX_H_35 #ifndef _LIBUI_TYPES_CURSOR_H_ 36 #define _LIBUI_TYPES_CURSOR_H_ 38 37 39 #include <stdint.h> 40 #include <stdbool.h> 41 #include <stddef.h> 42 #include <uchar.h> 38 /** Stock cursor types */ 39 typedef enum { 40 /** Standard arrow */ 41 ui_curs_arrow, 42 /** Double arrow pointing up and down */ 43 ui_curs_size_ud, 44 /** Double arrow pointing left and right */ 45 ui_curs_size_lr, 46 /** Double arrow pointing up-left and down-right */ 47 ui_curs_size_uldr, 48 /** Double arrow pointing up-right nad down-left */ 49 ui_curs_size_urdl 50 } ui_stock_cursor_t; 43 51 44 #define CURSOR_WIDTH 11 45 #define CURSOR_HEIGHT 18 46 47 #define FONT_GLYPHS 2899 48 #define FONT_WIDTH 8 49 #define FONT_SCANLINES 16 50 #define FONT_ASCENDER 12 51 52 extern uint8_t cursor_texture[]; 53 extern uint8_t cursor_mask[]; 54 55 extern uint16_t fb_font_glyph(const char32_t, bool *); 56 extern uint8_t fb_font[FONT_GLYPHS][FONT_SCANLINES]; 52 enum { 53 /** Number of stock cursor types */ 54 ui_curs_limit = ui_curs_size_urdl + 1 55 }; 57 56 58 57 #endif -
uspace/lib/ui/include/types/ui/entry.h
r7a873f0 r7e38970d 1 1 /* 2 * Copyright (c) 20 19Jiri Svoboda2 * Copyright (c) 2020 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 27 27 */ 28 28 29 /** @addtogroup lib guigfx29 /** @addtogroup libui 30 30 * @{ 31 31 */ 32 32 /** 33 * @file GFX canvas backend33 * @file Text entry 34 34 */ 35 35 36 #ifndef _ GUIGFX_TYPES_CANVAS_H37 #define _ GUIGFX_TYPES_CANVAS_H36 #ifndef _UI_TYPES_ENTRY_H 37 #define _UI_TYPES_ENTRY_H 38 38 39 struct canvas_gc;40 typedef struct canvas_gc canvas_gc_t;39 struct ui_entry; 40 typedef struct ui_entry ui_entry_t; 41 41 42 42 #endif -
uspace/lib/ui/include/types/ui/ui.h
r7a873f0 r7e38970d 1 1 /* 2 * Copyright (c) 20 12 Petr Koupy2 * Copyright (c) 2020 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 27 27 */ 28 28 29 /** @addtogroup softrend29 /** @addtogroup libui 30 30 * @{ 31 31 */ 32 32 /** 33 * @file 33 * @file User interface 34 34 */ 35 35 36 #ifndef SOFTREND_FILTER_H_37 #define SOFTREND_FILTER_H_36 #ifndef _UI_TYPES_UI_H 37 #define _UI_TYPES_UI_H 38 38 39 #include < io/pixelmap.h>39 #include <gfx/coord.h> 40 40 41 typedef pixel_t (*filter_t)(pixelmap_t *, double, double, pixelmap_extend_t); 41 struct ui; 42 typedef struct ui ui_t; 42 43 43 extern pixel_t filter_nearest(pixelmap_t *, double, double, pixelmap_extend_t); 44 extern pixel_t filter_bilinear(pixelmap_t *, double, double, pixelmap_extend_t); 45 extern pixel_t filter_bicubic(pixelmap_t *, double, double, pixelmap_extend_t); 44 /** Use the default display service (argument to ui_create() */ 45 #define UI_DISPLAY_DEFAULT NULL 46 46 47 47 #endif -
uspace/lib/ui/include/types/ui/wdecor.h
r7a873f0 r7e38970d 1 1 /* 2 * Copyright (c) 2011 Martin Decky 3 * Copyright (c) 2012 Petr Koupy 2 * Copyright (c) 2020 Jiri Svoboda 4 3 * All rights reserved. 5 4 * … … 28 27 */ 29 28 30 /** @addtogroup draw29 /** @addtogroup libui 31 30 * @{ 32 31 */ 33 32 /** 34 * @file 33 * @file Window decoration 35 34 */ 36 35 37 #ifndef DRAW_SURFACE_H_38 #define DRAW_SURFACE_H_36 #ifndef _UI_TYPES_WDECOR_H 37 #define _UI_TYPES_WDECOR_H 39 38 40 #include < stdbool.h>41 #include < io/pixelmap.h>39 #include <gfx/coord.h> 40 #include <types/ui/cursor.h> 42 41 43 struct surface;44 typedef struct surface surface_t;42 struct ui_wdecor; 43 typedef struct ui_wdecor ui_wdecor_t; 45 44 46 typedef sysarg_t surface_coord_t; 45 /** Window decoration style */ 46 typedef enum { 47 /** No style bits */ 48 ui_wds_none = 0x0, 49 /** Window has a frame */ 50 ui_wds_frame = 0x1, 51 /** Window has a title bar */ 52 ui_wds_titlebar = 0x2, 53 /** Window has a close button */ 54 ui_wds_close_btn = 0x4, 55 /** Window is resizable */ 56 ui_wds_resizable = 0x8, 57 /** Window is decorated (default decoration) */ 58 ui_wds_decorated = ui_wds_frame | ui_wds_titlebar | ui_wds_close_btn 59 } ui_wdecor_style_t; 47 60 61 /** Window resize type */ 48 62 typedef enum { 49 SURFACE_FLAG_NONE = 0, 50 SURFACE_FLAG_SHARED = 1 51 } surface_flags_t; 63 ui_wr_none = 0, 52 64 53 extern surface_t *surface_create(surface_coord_t, surface_coord_t, pixel_t *, surface_flags_t); 54 extern void surface_destroy(surface_t *); 65 ui_wr_top = 0x1, 66 ui_wr_left = 0x2, 67 ui_wr_bottom = 0x4, 68 ui_wr_right = 0x8, 55 69 56 extern bool surface_is_shared(surface_t *); 57 extern pixel_t *surface_direct_access(surface_t *); 58 extern pixelmap_t *surface_pixmap_access(surface_t *); 59 extern void surface_get_resolution(surface_t *, surface_coord_t *, surface_coord_t *); 60 extern void surface_get_damaged_region(surface_t *, surface_coord_t *, surface_coord_t *, 61 surface_coord_t *, surface_coord_t *); 62 extern void surface_add_damaged_region(surface_t *, surface_coord_t, surface_coord_t, 63 surface_coord_t, surface_coord_t); 64 extern void surface_reset_damaged_region(surface_t *); 70 ui_wr_top_left = ui_wr_top | ui_wr_left, 71 ui_wr_bottom_left = ui_wr_bottom | ui_wr_left, 72 ui_wr_bottom_right = ui_wr_bottom | ui_wr_right, 73 ui_wr_top_right = ui_wr_top | ui_wr_right 74 } ui_wdecor_rsztype_t; 65 75 66 extern void surface_put_pixel(surface_t *, surface_coord_t, surface_coord_t, pixel_t); 67 extern pixel_t surface_get_pixel(surface_t *, surface_coord_t, surface_coord_t); 76 /** Window decoration callbacks */ 77 typedef struct ui_wdecor_cb { 78 void (*close)(ui_wdecor_t *, void *); 79 void (*move)(ui_wdecor_t *, void *, gfx_coord2_t *); 80 void (*resize)(ui_wdecor_t *, void *, ui_wdecor_rsztype_t, 81 gfx_coord2_t *); 82 void (*set_cursor)(ui_wdecor_t *, void *, ui_stock_cursor_t); 83 } ui_wdecor_cb_t; 68 84 69 85 #endif -
uspace/lib/ui/include/ui/entry.h
r7a873f0 r7e38970d 1 1 /* 2 * Copyright (c) 20 13 Martin Decky2 * Copyright (c) 2020 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 27 27 */ 28 28 29 /** @addtogroup gui29 /** @addtogroup libui 30 30 * @{ 31 31 */ 32 32 /** 33 * @file 33 * @file Text entry 34 34 */ 35 35 36 #ifndef GUI_CANVAS_H_37 #define GUI_CANVAS_H_36 #ifndef _UI_ENTRY_H 37 #define _UI_ENTRY_H 38 38 39 #include <stdbool.h> 40 #include <io/pixel.h> 41 #include <draw/surface.h> 42 #include "widget.h" 43 #include "connection.h" 39 #include <errno.h> 40 #include <gfx/coord.h> 41 #include <gfx/text.h> 42 #include <types/ui/control.h> 43 #include <types/ui/entry.h> 44 #include <types/ui/resource.h> 44 45 45 typedef struct { 46 widget_t widget; 47 sysarg_t width; 48 sysarg_t height; 49 surface_t *surface; 50 signal_t keyboard_event; 51 signal_t position_event; 52 } canvas_t; 53 54 extern bool init_canvas(canvas_t *, widget_t *, const void *, sysarg_t, 55 sysarg_t, surface_t *); 56 extern canvas_t *create_canvas(widget_t *, const void *, sysarg_t, sysarg_t, 57 surface_t *); 58 extern bool update_canvas(canvas_t *, surface_t *); 59 extern void deinit_canvas(canvas_t *); 46 extern errno_t ui_entry_create(ui_resource_t *, const char *, 47 ui_entry_t **); 48 extern void ui_entry_destroy(ui_entry_t *); 49 extern ui_control_t *ui_entry_ctl(ui_entry_t *); 50 extern void ui_entry_set_rect(ui_entry_t *, gfx_rect_t *); 51 extern void ui_entry_set_halign(ui_entry_t *, gfx_halign_t); 52 extern errno_t ui_entry_set_text(ui_entry_t *, const char *); 53 extern errno_t ui_entry_paint(ui_entry_t *); 60 54 61 55 #endif -
uspace/lib/ui/include/ui/label.h
r7a873f0 r7e38970d 1 1 /* 2 * Copyright (c) 20 12 Petr Koupy2 * Copyright (c) 2020 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 27 27 */ 28 28 29 /** @addtogroup gui29 /** @addtogroup libui 30 30 * @{ 31 31 */ 32 32 /** 33 * @file 33 * @file Label 34 34 */ 35 35 36 #ifndef GUI_LABEL_H_37 #define GUI_LABEL_H_36 #ifndef _UI_LABEL_H 37 #define _UI_LABEL_H 38 38 39 #include <stdint.h> 40 #include <io/pixel.h> 39 #include <errno.h> 40 #include <gfx/coord.h> 41 #include <gfx/text.h> 42 #include <types/ui/control.h> 43 #include <types/ui/label.h> 44 #include <types/ui/resource.h> 41 45 42 #include <draw/source.h> 43 #include <draw/font.h> 44 45 #include "connection.h" 46 #include "widget.h" 47 48 typedef struct label { 49 widget_t widget; 50 source_t background; 51 source_t text; 52 char *caption; 53 font_t *font; 54 slot_t rewrite; 55 } label_t; 56 57 extern bool init_label(label_t *, widget_t *, const void *, const char *, 58 uint16_t, pixel_t, pixel_t); 59 extern label_t *create_label(widget_t *, const void *, const char *, uint16_t, 60 pixel_t, pixel_t); 61 extern void deinit_label(label_t *); 46 extern errno_t ui_label_create(ui_resource_t *, const char *, 47 ui_label_t **); 48 extern void ui_label_destroy(ui_label_t *); 49 extern ui_control_t *ui_label_ctl(ui_label_t *); 50 extern void ui_label_set_rect(ui_label_t *, gfx_rect_t *); 51 extern void ui_label_set_halign(ui_label_t *, gfx_halign_t); 52 extern errno_t ui_label_set_text(ui_label_t *, const char *); 53 extern errno_t ui_label_paint(ui_label_t *); 62 54 63 55 #endif -
uspace/lib/ui/include/ui/pbutton.h
r7a873f0 r7e38970d 1 1 /* 2 * Copyright (c) 20 12 Petr Koupy2 * Copyright (c) 2020 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 27 27 */ 28 28 29 /** @addtogroup draw29 /** @addtogroup libui 30 30 * @{ 31 31 */ 32 32 /** 33 * @file 33 * @file Push button 34 34 */ 35 35 36 #ifndef DRAW_SOURCE_H_37 #define DRAW_SOURCE_H_36 #ifndef _UI_PBUTTON_H 37 #define _UI_PBUTTON_H 38 38 39 #include <errno.h> 40 #include <gfx/coord.h> 41 #include <io/pos_event.h> 42 #include <types/ui/control.h> 43 #include <types/ui/event.h> 44 #include <types/ui/pbutton.h> 45 #include <types/ui/resource.h> 39 46 #include <stdbool.h> 40 47 41 #include <transform.h> 42 #include <filter.h> 43 #include <io/pixelmap.h> 44 45 #include "surface.h" 46 47 typedef struct source { 48 transform_t transform; 49 filter_t filter; 50 51 pixel_t color; 52 surface_t *texture; 53 pixelmap_extend_t texture_extend; 54 55 pixel_t alpha; 56 surface_t *mask; 57 pixelmap_extend_t mask_extend; 58 } source_t; 59 60 extern void source_init(source_t *); 61 62 extern void source_set_transform(source_t *, transform_t); 63 extern void source_reset_transform(source_t *); 64 65 extern void source_set_filter(source_t *, filter_t); 66 67 extern void source_set_color(source_t *, pixel_t); 68 extern void source_set_texture(source_t *, surface_t *, pixelmap_extend_t); 69 70 extern void source_set_alpha(source_t *, pixel_t); 71 extern void source_set_mask(source_t *, surface_t *, pixelmap_extend_t); 72 73 extern bool source_is_fast(source_t *); 74 extern pixel_t *source_direct_access(source_t *, double, double); 75 extern pixel_t source_determine_pixel(source_t *, double, double); 48 extern errno_t ui_pbutton_create(ui_resource_t *, const char *, 49 ui_pbutton_t **); 50 extern void ui_pbutton_destroy(ui_pbutton_t *); 51 extern ui_control_t *ui_pbutton_ctl(ui_pbutton_t *); 52 extern void ui_pbutton_set_cb(ui_pbutton_t *, ui_pbutton_cb_t *, void *); 53 extern void ui_pbutton_set_rect(ui_pbutton_t *, gfx_rect_t *); 54 extern void ui_pbutton_set_default(ui_pbutton_t *, bool); 55 extern errno_t ui_pbutton_paint(ui_pbutton_t *); 56 extern void ui_pbutton_press(ui_pbutton_t *); 57 extern void ui_pbutton_release(ui_pbutton_t *); 58 extern void ui_pbutton_enter(ui_pbutton_t *); 59 extern void ui_pbutton_leave(ui_pbutton_t *); 60 extern void ui_pbutton_clicked(ui_pbutton_t *); 61 extern ui_evclaim_t ui_pbutton_pos_event(ui_pbutton_t *, pos_event_t *); 76 62 77 63 #endif -
uspace/lib/ui/meson.build
r7a873f0 r7e38970d 1 1 # 2 # Copyright (c) 20 11 Petr Koupy2 # Copyright (c) 2020 Jiri Svoboda 3 3 # All rights reserved. 4 4 # … … 27 27 # 28 28 29 deps = [ ' softrend' , 'compress' ]29 deps = [ 'gfx', 'gfxfont', 'memgfx', 'display' ] 30 30 src = files( 31 'codec/tga.c', 32 'codec/tga.gz.c', 33 'codec/webp.c', 34 'cursor/embedded.c', 35 'font/embedded.c', 36 'font/bitmap_backend.c', 37 'font/pcf.c', 38 'gfx/font-8x16.c', 39 'gfx/cursor-11x18.c', 40 'drawctx.c', 41 'cursor.c', 42 'font.c', 43 'path.c', 44 'source.c', 45 'surface.c', 31 'src/control.c', 32 'src/dummygc.c', 33 'src/entry.c', 34 'src/fixed.c', 35 'src/image.c', 36 'src/label.c', 37 'src/paint.c', 38 'src/pbutton.c', 39 'src/resource.c', 40 'src/ui.c', 41 'src/wdecor.c', 42 'src/window.c', 46 43 ) 44 45 test_src = files( 46 'test/control.c', 47 'test/entry.c', 48 'test/fixed.c', 49 'test/image.c', 50 'test/label.c', 51 'test/main.c', 52 'test/paint.c', 53 'test/pbutton.c', 54 'test/resource.c', 55 'test/ui.c', 56 'test/wdecor.c', 57 'test/window.c', 58 ) -
uspace/lib/ui/private/control.h
r7a873f0 r7e38970d 1 1 /* 2 * Copyright (c) 20 12 Petr Koupy2 * Copyright (c) 2020 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 27 27 */ 28 28 29 /** @addtogroup softrend29 /** @addtogroup libui 30 30 * @{ 31 31 */ 32 32 /** 33 * @file 33 * @file UI control structure 34 * 34 35 */ 35 36 36 #ifndef SOFTREND_RECTANGLE_H_37 #define SOFTREND_RECTANGLE_H_37 #ifndef _UI_PRIVATE_CONTROL_H 38 #define _UI_PRIVATE_CONTROL_H 38 39 40 #include <gfx/coord.h> 39 41 #include <stdbool.h> 40 #include <types/common.h>41 42 42 extern bool rectangle_intersect( 43 sysarg_t, sysarg_t, sysarg_t, sysarg_t, 44 sysarg_t, sysarg_t, sysarg_t, sysarg_t, 45 sysarg_t *, sysarg_t *, sysarg_t *, sysarg_t *); 46 extern void rectangle_union( 47 sysarg_t, sysarg_t, sysarg_t, sysarg_t, 48 sysarg_t, sysarg_t, sysarg_t, sysarg_t, 49 sysarg_t *, sysarg_t *, sysarg_t *, sysarg_t *); 43 /** Actual structure of UI control. 44 * 45 * UI control is the abstract base class to all UI controls (e.g. push button, 46 * label). This is private to libui. 47 */ 48 struct ui_control { 49 /** Pointer to layout element structure this control is attached to 50 * or @c NULL if the control is not attached to a layout 51 */ 52 void *elemp; 53 /** Ops */ 54 struct ui_control_ops *ops; 55 /** Extended data */ 56 void *ext; 57 }; 50 58 51 59 #endif -
uspace/lib/ui/private/dummygc.h
r7a873f0 r7e38970d 1 1 /* 2 * Copyright (c) 20 11 Petr Koupy2 * Copyright (c) 2020 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 27 27 */ 28 28 29 /** @addtogroup lib c29 /** @addtogroup libui 30 30 * @{ 31 31 */ 32 32 /** 33 * @file 33 * @file Dummy graphic context 34 * 34 35 */ 35 36 36 #ifndef _ LIBC_IO_MODE_H_37 #define _ LIBC_IO_MODE_H_37 #ifndef _UI_PRIVATE_DUMMYGC_H 38 #define _UI_PRIVATE_DUMMYGC_H 38 39 39 #include <abi/fb/visuals.h> 40 #include <adt/list.h> 41 #include <io/pixel.h> 42 #include <io/charfield.h> 40 #include <gfx/context.h> 43 41 42 /** Dummy graphic context */ 44 43 typedef struct { 45 sysarg_t width; 46 sysarg_t height; 47 } aspect_ratio_t; 44 gfx_context_t *gc; 45 bool bm_created; 46 bool bm_destroyed; 47 gfx_bitmap_params_t bm_params; 48 void *bm_pixels; 49 gfx_rect_t bm_srect; 50 gfx_coord2_t bm_offs; 51 bool bm_rendered; 52 bool bm_got_alloc; 53 } dummy_gc_t; 48 54 49 typedef union { 50 visual_t pixel_visual; 51 char_attr_type_t field_visual; 52 } cell_visual_t; 55 /** Dummy GC bitmap */ 56 typedef struct { 57 dummy_gc_t *dgc; 58 gfx_bitmap_alloc_t alloc; 59 bool myalloc; 60 } dummygc_bitmap_t; 53 61 54 typedef struct { 55 sysarg_t index; 56 sysarg_t version; 62 /** Dummy GC ops */ 63 extern gfx_context_ops_t dummygc_ops; 57 64 58 sysarg_t refresh_rate; 59 aspect_ratio_t screen_aspect; 60 sysarg_t screen_width; 61 sysarg_t screen_height; 62 63 aspect_ratio_t cell_aspect; 64 cell_visual_t cell_visual; 65 } vslmode_t; 66 67 typedef struct { 68 link_t link; 69 vslmode_t mode; 70 } vslmode_list_element_t; 65 extern errno_t dummygc_create(dummy_gc_t **); 66 extern void dummygc_destroy(dummy_gc_t *); 67 extern gfx_context_t *dummygc_get_ctx(dummy_gc_t *); 71 68 72 69 #endif -
uspace/lib/ui/private/fixed.h
r7a873f0 r7e38970d 1 1 /* 2 * Copyright (c) 20 12 Petr Koupy2 * Copyright (c) 2020 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 27 27 */ 28 28 29 /** @addtogroup draw29 /** @addtogroup libui 30 30 * @{ 31 31 */ 32 32 /** 33 * @file 33 * @file Fixed layout structure 34 * 34 35 */ 35 36 36 #ifndef DRAW_PATH_H_37 #define DRAW_PATH_H_37 #ifndef _UI_PRIVATE_FIXED_H 38 #define _UI_PRIVATE_FIXED_H 38 39 39 40 #include <adt/list.h> 41 #include <gfx/coord.h> 42 #include <stdbool.h> 43 #include <types/ui/fixed.h> 40 44 41 typedef enum { 42 PATH_STEP_MOVETO, 43 PATH_STEP_LINETO 44 } path_step_type_t; 45 /** Actual structure of fixed layout. 46 * 47 * This is private to libui. 48 */ 49 struct ui_fixed { 50 /** Base control object */ 51 struct ui_control *control; 52 /** Layout elements (ui_fixed_elem_t) */ 53 list_t elem; 54 }; 45 55 56 /** Fixed layout element. */ 46 57 typedef struct { 47 link_t link; 48 path_step_type_t type; 49 double to_x; 50 double to_y; 51 } path_step_t; 58 /** Containing fixed layout */ 59 struct ui_fixed *fixed; 60 /** Link to @c fixed->elem list */ 61 link_t lelems; 62 /** Control */ 63 ui_control_t *control; 64 } ui_fixed_elem_t; 52 65 53 struct path; 54 typedef struct path path_t; 55 56 extern void path_init(path_t *); 57 extern void path_clear(path_t *); 58 59 extern void path_get_cursor(path_t *, double *, double *); 60 61 extern void path_move_to(path_t *, double, double); 62 extern void path_line_to(path_t *, double, double); 63 64 extern void path_rectangle(path_t *, double, double, double, double); 66 extern ui_fixed_elem_t *ui_fixed_first(ui_fixed_t *f); 67 extern ui_fixed_elem_t *ui_fixed_next(ui_fixed_elem_t *); 65 68 66 69 #endif -
uspace/lib/ui/private/image.h
r7a873f0 r7e38970d 1 1 /* 2 * Copyright (c) 20 19Jiri Svoboda2 * Copyright (c) 2020 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 27 27 */ 28 28 29 /** @addtogroup lib guigfx29 /** @addtogroup libui 30 30 * @{ 31 31 */ 32 32 /** 33 * @file GFX canvas backendstructure33 * @file Image structure 34 34 * 35 35 */ 36 36 37 #ifndef _ GUIGFX_PRIVATE_CANVAS_H38 #define _ GUIGFX_PRIVATE_CANVAS_H37 #ifndef _UI_PRIVATE_IMAGE_H 38 #define _UI_PRIVATE_IMAGE_H 39 39 40 #include <canvas.h>41 #include <draw/surface.h>42 40 #include <gfx/bitmap.h> 43 #include <gfx/context.h>44 41 #include <gfx/coord.h> 45 #include <io/pixel.h>46 #include <memgfx/memgc.h>47 42 48 /** Actual structure of canvas GC. */ 49 struct canvas_gc { 50 /** Memory GC */ 51 mem_gc_t *mgc; 52 /** Base graphic context */ 53 gfx_context_t *gc; 54 /** Canvas */ 55 canvas_t *canvas; 56 /** Surface */ 57 surface_t *surface; 43 /** Actual structure of image. 44 * 45 * This is private to libui. 46 */ 47 struct ui_image { 48 /** Base control object */ 49 struct ui_control *control; 50 /** UI resource */ 51 struct ui_resource *res; 52 /** Image rectangle */ 53 gfx_rect_t rect; 54 /** Flags */ 55 ui_image_flags_t flags; 56 /** Bitmap */ 57 gfx_bitmap_t *bitmap; 58 /** Bitmap rectangle */ 59 gfx_rect_t brect; 58 60 }; 59 61 -
uspace/lib/ui/private/ui.h
r7a873f0 r7e38970d 1 1 /* 2 * Copyright (c) 20 12 Petr Koupy2 * Copyright (c) 2020 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 27 27 */ 28 28 29 /** @addtogroup gui29 /** @addtogroup libui 30 30 * @{ 31 31 */ 32 32 /** 33 * @file 33 * @file User interface 34 * 34 35 */ 35 36 36 #ifndef GUI_MINIMAL_H_37 #define GUI_MINIMAL_H_37 #ifndef _UI_PRIVATE_UI_H 38 #define _UI_PRIVATE_UI_H 38 39 40 #include <display.h> 39 41 #include <stdbool.h> 40 #include <io/pixel.h>41 42 42 #include "widget.h" 43 44 typedef struct minimal { 45 widget_t widget; 46 pixel_t pix_a; 47 pixel_t pix_b;48 } minimal_t;49 50 extern bool init_minimal(minimal_t *, widget_t *, const void *, pixel_t, 51 pixel_t); 52 extern minimal_t *create_minimal(widget_t *, const void *, pixel_t, pixel_t);53 extern void deinit_minimal(minimal_t *);43 /** Actual structure of user interface. 44 * 45 * This is private to libui. 46 */ 47 struct ui { 48 /** Display */ 49 display_t *display; 50 /** Output owned by UI, clean up when destroying UI */ 51 bool myoutput; 52 /** @c true if terminating */ 53 bool quit; 54 }; 54 55 55 56 #endif -
uspace/lib/ui/private/window.h
r7a873f0 r7e38970d 1 1 /* 2 * Copyright (c) 20 12 Petr Koupy2 * Copyright (c) 2020 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 27 27 */ 28 28 29 /** @addtogroup draw29 /** @addtogroup libui 30 30 * @{ 31 31 */ 32 32 /** 33 * @file 33 * @file Window structure 34 * 34 35 */ 35 36 36 #ifndef DRAW_DRAWCTX_H_37 #define DRAW_DRAWCTX_H_37 #ifndef _UI_PRIVATE_WINDOW_H 38 #define _UI_PRIVATE_WINDOW_H 38 39 39 #include <stdbool.h> 40 #include <errno.h> 41 #include <display.h> 42 #include <gfx/context.h> 43 #include <io/kbd_event.h> 44 #include <io/pos_event.h> 40 45 41 #include <compose.h> 42 43 #include "surface.h" 44 #include "source.h" 45 #include "path.h" 46 #include "font.h" 47 48 struct drawctx { 49 link_t link; 50 list_t list; 51 52 surface_t *surface; 53 compose_t compose; 54 surface_t *mask; 55 source_t *source; 56 font_t *font; 57 58 bool shall_clip; 59 sysarg_t clip_x; 60 sysarg_t clip_y; 61 sysarg_t clip_width; 62 sysarg_t clip_height; 46 /** Actual structure of window. 47 * 48 * This is private to libui. 49 */ 50 struct ui_window { 51 /** Containing user interface */ 52 struct ui *ui; 53 /** Callbacks */ 54 struct ui_window_cb *cb; 55 /** Callback argument */ 56 void *arg; 57 /** Display window */ 58 display_window_t *dwindow; 59 /** Window GC */ 60 gfx_context_t *gc; 61 /** Window rectangle */ 62 gfx_rect_t rect; 63 /** Application area bitmap */ 64 gfx_bitmap_t *app_bmp; 65 /** Application area GC */ 66 gfx_context_t *app_gc; 67 /** UI resource. Ideally this would be in ui_t. */ 68 struct ui_resource *res; 69 /** Window decoration */ 70 struct ui_wdecor *wdecor; 71 /** Top-level control in the application area */ 72 struct ui_control *control; 73 /** Current cursor */ 74 ui_stock_cursor_t cursor; 63 75 }; 64 76 65 extern void drawctx_init(drawctx_t *, surface_t *); 66 67 extern void drawctx_save(drawctx_t *); 68 extern void drawctx_restore(drawctx_t *); 69 70 extern void drawctx_set_compose(drawctx_t *, compose_t); 71 extern void drawctx_set_clip(drawctx_t *, sysarg_t, sysarg_t, sysarg_t, sysarg_t); 72 extern void drawctx_set_mask(drawctx_t *, surface_t *); 73 extern void drawctx_set_source(drawctx_t *, source_t *); 74 extern void drawctx_set_font(drawctx_t *, font_t *); 75 76 extern void drawctx_transfer(drawctx_t *, sysarg_t, sysarg_t, sysarg_t, sysarg_t); 77 extern void drawctx_stroke(drawctx_t *, path_t *); 78 extern void drawctx_fill(drawctx_t *, path_t *); 79 extern void drawctx_print(drawctx_t *, const char *, sysarg_t, sysarg_t); 77 extern void ui_window_send_close(ui_window_t *); 78 extern void ui_window_send_focus(ui_window_t *); 79 extern void ui_window_send_kbd(ui_window_t *, kbd_event_t *); 80 extern errno_t ui_window_send_paint(ui_window_t *); 81 extern void ui_window_send_pos(ui_window_t *, pos_event_t *); 82 extern void ui_window_send_unfocus(ui_window_t *); 80 83 81 84 #endif
Note:
See TracChangeset
for help on using the changeset viewer.
