Changeset 7e38970d in mainline for uspace/lib/ui


Ignore:
Timestamp:
2020-12-07T00:08:37Z (5 years ago)
Author:
Jiri Svoboda <jiri@…>
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.
Message:

Merge branch 'jxsvoboda-gfx' into master

Location:
uspace/lib/ui
Files:
46 added
14 moved

Legend:

Unmodified
Added
Removed
  • uspace/lib/ui/include/types/ui/cursor.h

    r7a873f0 r7e38970d  
    11/*
    2  * Copyright (c) 2008 Martin Decky
    3  * Copyright (c) 2012 Petr Koupy
     2 * Copyright (c) 2020 Jiri Svoboda
    43 * All rights reserved.
    54 *
     
    2827 */
    2928
    30 /** @addtogroup draw
     29/** @addtogroup libui
    3130 * @{
    3231 */
     
    3433 */
    3534
    36 #ifndef GFX_H_
    37 #define GFX_H_
     35#ifndef _LIBUI_TYPES_CURSOR_H_
     36#define _LIBUI_TYPES_CURSOR_H_
    3837
    39 #include <stdint.h>
    40 #include <stdbool.h>
    41 #include <stddef.h>
    42 #include <uchar.h>
     38/** Stock cursor types */
     39typedef 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;
    4351
    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];
     52enum {
     53        /** Number of stock cursor types */
     54        ui_curs_limit = ui_curs_size_urdl + 1
     55};
    5756
    5857#endif
  • uspace/lib/ui/include/types/ui/entry.h

    r7a873f0 r7e38970d  
    11/*
    2  * Copyright (c) 2019 Jiri Svoboda
     2 * Copyright (c) 2020 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    2727 */
    2828
    29 /** @addtogroup libguigfx
     29/** @addtogroup libui
    3030 * @{
    3131 */
    3232/**
    33  * @file GFX canvas backend
     33 * @file Text entry
    3434 */
    3535
    36 #ifndef _GUIGFX_TYPES_CANVAS_H
    37 #define _GUIGFX_TYPES_CANVAS_H
     36#ifndef _UI_TYPES_ENTRY_H
     37#define _UI_TYPES_ENTRY_H
    3838
    39 struct canvas_gc;
    40 typedef struct canvas_gc canvas_gc_t;
     39struct ui_entry;
     40typedef struct ui_entry ui_entry_t;
    4141
    4242#endif
  • uspace/lib/ui/include/types/ui/ui.h

    r7a873f0 r7e38970d  
    11/*
    2  * Copyright (c) 2012 Petr Koupy
     2 * Copyright (c) 2020 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    2727 */
    2828
    29 /** @addtogroup softrend
     29/** @addtogroup libui
    3030 * @{
    3131 */
    3232/**
    33  * @file
     33 * @file User interface
    3434 */
    3535
    36 #ifndef SOFTREND_FILTER_H_
    37 #define SOFTREND_FILTER_H_
     36#ifndef _UI_TYPES_UI_H
     37#define _UI_TYPES_UI_H
    3838
    39 #include <io/pixelmap.h>
     39#include <gfx/coord.h>
    4040
    41 typedef pixel_t (*filter_t)(pixelmap_t *, double, double, pixelmap_extend_t);
     41struct ui;
     42typedef struct ui ui_t;
    4243
    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
    4646
    4747#endif
  • uspace/lib/ui/include/types/ui/wdecor.h

    r7a873f0 r7e38970d  
    11/*
    2  * Copyright (c) 2011 Martin Decky
    3  * Copyright (c) 2012 Petr Koupy
     2 * Copyright (c) 2020 Jiri Svoboda
    43 * All rights reserved.
    54 *
     
    2827 */
    2928
    30 /** @addtogroup draw
     29/** @addtogroup libui
    3130 * @{
    3231 */
    3332/**
    34  * @file
     33 * @file Window decoration
    3534 */
    3635
    37 #ifndef DRAW_SURFACE_H_
    38 #define DRAW_SURFACE_H_
     36#ifndef _UI_TYPES_WDECOR_H
     37#define _UI_TYPES_WDECOR_H
    3938
    40 #include <stdbool.h>
    41 #include <io/pixelmap.h>
     39#include <gfx/coord.h>
     40#include <types/ui/cursor.h>
    4241
    43 struct surface;
    44 typedef struct surface surface_t;
     42struct ui_wdecor;
     43typedef struct ui_wdecor ui_wdecor_t;
    4544
    46 typedef sysarg_t surface_coord_t;
     45/** Window decoration style */
     46typedef 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;
    4760
     61/** Window resize type */
    4862typedef enum {
    49         SURFACE_FLAG_NONE = 0,
    50         SURFACE_FLAG_SHARED = 1
    51 } surface_flags_t;
     63        ui_wr_none = 0,
    5264
    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,
    5569
    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;
    6575
    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 */
     77typedef 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;
    6884
    6985#endif
  • uspace/lib/ui/include/ui/entry.h

    r7a873f0 r7e38970d  
    11/*
    2  * Copyright (c) 2013 Martin Decky
     2 * Copyright (c) 2020 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    2727 */
    2828
    29 /** @addtogroup gui
     29/** @addtogroup libui
    3030 * @{
    3131 */
    3232/**
    33  * @file
     33 * @file Text entry
    3434 */
    3535
    36 #ifndef GUI_CANVAS_H_
    37 #define GUI_CANVAS_H_
     36#ifndef _UI_ENTRY_H
     37#define _UI_ENTRY_H
    3838
    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>
    4445
    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 *);
     46extern errno_t ui_entry_create(ui_resource_t *, const char *,
     47    ui_entry_t **);
     48extern void ui_entry_destroy(ui_entry_t *);
     49extern ui_control_t *ui_entry_ctl(ui_entry_t *);
     50extern void ui_entry_set_rect(ui_entry_t *, gfx_rect_t *);
     51extern void ui_entry_set_halign(ui_entry_t *, gfx_halign_t);
     52extern errno_t ui_entry_set_text(ui_entry_t *, const char *);
     53extern errno_t ui_entry_paint(ui_entry_t *);
    6054
    6155#endif
  • uspace/lib/ui/include/ui/label.h

    r7a873f0 r7e38970d  
    11/*
    2  * Copyright (c) 2012 Petr Koupy
     2 * Copyright (c) 2020 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    2727 */
    2828
    29 /** @addtogroup gui
     29/** @addtogroup libui
    3030 * @{
    3131 */
    3232/**
    33  * @file
     33 * @file Label
    3434 */
    3535
    36 #ifndef GUI_LABEL_H_
    37 #define GUI_LABEL_H_
     36#ifndef _UI_LABEL_H
     37#define _UI_LABEL_H
    3838
    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>
    4145
    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 *);
     46extern errno_t ui_label_create(ui_resource_t *, const char *,
     47    ui_label_t **);
     48extern void ui_label_destroy(ui_label_t *);
     49extern ui_control_t *ui_label_ctl(ui_label_t *);
     50extern void ui_label_set_rect(ui_label_t *, gfx_rect_t *);
     51extern void ui_label_set_halign(ui_label_t *, gfx_halign_t);
     52extern errno_t ui_label_set_text(ui_label_t *, const char *);
     53extern errno_t ui_label_paint(ui_label_t *);
    6254
    6355#endif
  • uspace/lib/ui/include/ui/pbutton.h

    r7a873f0 r7e38970d  
    11/*
    2  * Copyright (c) 2012 Petr Koupy
     2 * Copyright (c) 2020 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    2727 */
    2828
    29 /** @addtogroup draw
     29/** @addtogroup libui
    3030 * @{
    3131 */
    3232/**
    33  * @file
     33 * @file Push button
    3434 */
    3535
    36 #ifndef DRAW_SOURCE_H_
    37 #define DRAW_SOURCE_H_
     36#ifndef _UI_PBUTTON_H
     37#define _UI_PBUTTON_H
    3838
     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>
    3946#include <stdbool.h>
    4047
    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);
     48extern errno_t ui_pbutton_create(ui_resource_t *, const char *,
     49    ui_pbutton_t **);
     50extern void ui_pbutton_destroy(ui_pbutton_t *);
     51extern ui_control_t *ui_pbutton_ctl(ui_pbutton_t *);
     52extern void ui_pbutton_set_cb(ui_pbutton_t *, ui_pbutton_cb_t *, void *);
     53extern void ui_pbutton_set_rect(ui_pbutton_t *, gfx_rect_t *);
     54extern void ui_pbutton_set_default(ui_pbutton_t *, bool);
     55extern errno_t ui_pbutton_paint(ui_pbutton_t *);
     56extern void ui_pbutton_press(ui_pbutton_t *);
     57extern void ui_pbutton_release(ui_pbutton_t *);
     58extern void ui_pbutton_enter(ui_pbutton_t *);
     59extern void ui_pbutton_leave(ui_pbutton_t *);
     60extern void ui_pbutton_clicked(ui_pbutton_t *);
     61extern ui_evclaim_t ui_pbutton_pos_event(ui_pbutton_t *, pos_event_t *);
    7662
    7763#endif
  • uspace/lib/ui/meson.build

    r7a873f0 r7e38970d  
    11#
    2 # Copyright (c) 2011 Petr Koupy
     2# Copyright (c) 2020 Jiri Svoboda
    33# All rights reserved.
    44#
     
    2727#
    2828
    29 deps = [ 'softrend' , 'compress' ]
     29deps = [ 'gfx', 'gfxfont', 'memgfx', 'display' ]
    3030src = 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',
    4643)
     44
     45test_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  
    11/*
    2  * Copyright (c) 2012 Petr Koupy
     2 * Copyright (c) 2020 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    2727 */
    2828
    29 /** @addtogroup softrend
     29/** @addtogroup libui
    3030 * @{
    3131 */
    3232/**
    33  * @file
     33 * @file UI control structure
     34 *
    3435 */
    3536
    36 #ifndef SOFTREND_RECTANGLE_H_
    37 #define SOFTREND_RECTANGLE_H_
     37#ifndef _UI_PRIVATE_CONTROL_H
     38#define _UI_PRIVATE_CONTROL_H
    3839
     40#include <gfx/coord.h>
    3941#include <stdbool.h>
    40 #include <types/common.h>
    4142
    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 */
     48struct 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};
    5058
    5159#endif
  • uspace/lib/ui/private/dummygc.h

    r7a873f0 r7e38970d  
    11/*
    2  * Copyright (c) 2011 Petr Koupy
     2 * Copyright (c) 2020 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    2727 */
    2828
    29 /** @addtogroup libc
     29/** @addtogroup libui
    3030 * @{
    3131 */
    3232/**
    33  * @file
     33 * @file Dummy graphic context
     34 *
    3435 */
    3536
    36 #ifndef _LIBC_IO_MODE_H_
    37 #define _LIBC_IO_MODE_H_
     37#ifndef _UI_PRIVATE_DUMMYGC_H
     38#define _UI_PRIVATE_DUMMYGC_H
    3839
    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>
    4341
     42/** Dummy graphic context */
    4443typedef 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;
    4854
    49 typedef union {
    50         visual_t pixel_visual;
    51         char_attr_type_t field_visual;
    52 } cell_visual_t;
     55/** Dummy GC bitmap */
     56typedef struct {
     57        dummy_gc_t *dgc;
     58        gfx_bitmap_alloc_t alloc;
     59        bool myalloc;
     60} dummygc_bitmap_t;
    5361
    54 typedef struct {
    55         sysarg_t index;
    56         sysarg_t version;
     62/** Dummy GC ops */
     63extern gfx_context_ops_t dummygc_ops;
    5764
    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;
     65extern errno_t dummygc_create(dummy_gc_t **);
     66extern void dummygc_destroy(dummy_gc_t *);
     67extern gfx_context_t *dummygc_get_ctx(dummy_gc_t *);
    7168
    7269#endif
  • uspace/lib/ui/private/fixed.h

    r7a873f0 r7e38970d  
    11/*
    2  * Copyright (c) 2012 Petr Koupy
     2 * Copyright (c) 2020 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    2727 */
    2828
    29 /** @addtogroup draw
     29/** @addtogroup libui
    3030 * @{
    3131 */
    3232/**
    33  * @file
     33 * @file Fixed layout structure
     34 *
    3435 */
    3536
    36 #ifndef DRAW_PATH_H_
    37 #define DRAW_PATH_H_
     37#ifndef _UI_PRIVATE_FIXED_H
     38#define _UI_PRIVATE_FIXED_H
    3839
    3940#include <adt/list.h>
     41#include <gfx/coord.h>
     42#include <stdbool.h>
     43#include <types/ui/fixed.h>
    4044
    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 */
     49struct ui_fixed {
     50        /** Base control object */
     51        struct ui_control *control;
     52        /** Layout elements (ui_fixed_elem_t) */
     53        list_t elem;
     54};
    4555
     56/** Fixed layout element. */
    4657typedef 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;
    5265
    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);
     66extern ui_fixed_elem_t *ui_fixed_first(ui_fixed_t *f);
     67extern ui_fixed_elem_t *ui_fixed_next(ui_fixed_elem_t *);
    6568
    6669#endif
  • uspace/lib/ui/private/image.h

    r7a873f0 r7e38970d  
    11/*
    2  * Copyright (c) 2019 Jiri Svoboda
     2 * Copyright (c) 2020 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    2727 */
    2828
    29 /** @addtogroup libguigfx
     29/** @addtogroup libui
    3030 * @{
    3131 */
    3232/**
    33  * @file GFX canvas backend structure
     33 * @file Image structure
    3434 *
    3535 */
    3636
    37 #ifndef _GUIGFX_PRIVATE_CANVAS_H
    38 #define _GUIGFX_PRIVATE_CANVAS_H
     37#ifndef _UI_PRIVATE_IMAGE_H
     38#define _UI_PRIVATE_IMAGE_H
    3939
    40 #include <canvas.h>
    41 #include <draw/surface.h>
    4240#include <gfx/bitmap.h>
    43 #include <gfx/context.h>
    4441#include <gfx/coord.h>
    45 #include <io/pixel.h>
    46 #include <memgfx/memgc.h>
    4742
    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 */
     47struct 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;
    5860};
    5961
  • uspace/lib/ui/private/ui.h

    r7a873f0 r7e38970d  
    11/*
    2  * Copyright (c) 2012 Petr Koupy
     2 * Copyright (c) 2020 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    2727 */
    2828
    29 /** @addtogroup gui
     29/** @addtogroup libui
    3030 * @{
    3131 */
    3232/**
    33  * @file
     33 * @file User interface
     34 *
    3435 */
    3536
    36 #ifndef GUI_MINIMAL_H_
    37 #define GUI_MINIMAL_H_
     37#ifndef _UI_PRIVATE_UI_H
     38#define _UI_PRIVATE_UI_H
    3839
     40#include <display.h>
    3941#include <stdbool.h>
    40 #include <io/pixel.h>
    4142
    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 */
     47struct 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};
    5455
    5556#endif
  • uspace/lib/ui/private/window.h

    r7a873f0 r7e38970d  
    11/*
    2  * Copyright (c) 2012 Petr Koupy
     2 * Copyright (c) 2020 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    2727 */
    2828
    29 /** @addtogroup draw
     29/** @addtogroup libui
    3030 * @{
    3131 */
    3232/**
    33  * @file
     33 * @file Window structure
     34 *
    3435 */
    3536
    36 #ifndef DRAW_DRAWCTX_H_
    37 #define DRAW_DRAWCTX_H_
     37#ifndef _UI_PRIVATE_WINDOW_H
     38#define _UI_PRIVATE_WINDOW_H
    3839
    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>
    4045
    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 */
     50struct 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;
    6375};
    6476
    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);
     77extern void ui_window_send_close(ui_window_t *);
     78extern void ui_window_send_focus(ui_window_t *);
     79extern void ui_window_send_kbd(ui_window_t *, kbd_event_t *);
     80extern errno_t ui_window_send_paint(ui_window_t *);
     81extern void ui_window_send_pos(ui_window_t *, pos_event_t *);
     82extern void ui_window_send_unfocus(ui_window_t *);
    8083
    8184#endif
Note: See TracChangeset for help on using the changeset viewer.