Repository navigation
Expand file tree
/
Copy pathuno.h
More file actions
95 lines (72 loc) · 2.65 KB
/
Copy pathuno.h
File metadata and controls
95 lines (72 loc) · 2.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#pragma once
#include "types.h"
#include "doc.h"
#include "files/buffer.h"
#include "data/struct/bt_tree.h"
document_node* uno_begin_vertical(node_info info);
void uno_end_vertical();
document_node* uno_begin_horizontal(node_info info);
void uno_end_horizontal();
document_node* uno_begin_depth(node_info info);
void uno_end_depth();
void uno_attach(document_node *parent, document_node *child);
document_node* uno_create_empty_view(node_info info);
document_node* uno_create_view(node_info info, string_slice content);
typedef struct {
u32 start;
u32 end;
} select_range;
typedef struct {
int buffer_index;
range_t range;
} uno_text_piece;
typedef struct {
union {
struct {
buffer *content;
buffer *gap;
};
buffer *children[2];
};
bt_tree *piece_tree;
string_slice placeholder;
bool multiline;
color cursor_color;
gpu_point *offset;
select_range selection;
size_t total_size;
size_t cursor_count;
size_t cursor_limit;
uptr *cursors;
} text_field_info;
bt_tree uno_text_make_piece_tree();
void uno_text_piece_identity(text_field_info *info);
void uno_text_add_piece(text_field_info *info, uno_text_piece piece, i64 position);
document_node* uno_text_field(int tag, node_info info, text_field_info *text_info);
void uno_text_field_scroll(int tag, i32 x_shift, i32 y_shift);
void uno_text_field_shift_cursor(int tag, i32 x_shift, i32 y_shift);
bool uno_text_field_mouse(document_node *node, mouse_data data, u8 modifier);
bool uno_text_field_input(document_node *node, kbd_event event, u8 modifier);
typedef struct {
void (*press)(int buttonIndex, gpu_point location);
void (*hover)(int buttonIndex, gpu_point location);
} button_info;
void uno_button(int tag, node_info info, button_info *b_info, string_slice label);
void uno_label(node_info info, doc_text_size size, string_slice content);
document_data uno_set_document_view(void (*view_builder)(), gpu_rect canvas);
document_data get_current_document_view();
void uno_scroll_to(int tag);
void uno_refresh();
void uno_refresh_layout();
bool uno_draw(draw_ctx *ctx);
void uno_clear_color(color col);
void uno_focus(int tag);
bool uno_dispatch_kbd(kbd_event ev, u8 modifier);
bool uno_dispatch_mouse(mouse_data mouse, u8 modifier);
void uno_copy(void*);
void uno_paste(void*);
void uno_redraw_always();
#define VERTICAL(info, children) uno_begin_vertical((info)); children; uno_end_vertical();
#define HORIZONTAL(info, children) uno_begin_horizontal((info)); children; uno_end_horizontal();
#define DEPTH(info, children) uno_begin_depth((info)); children; uno_end_depth();
extern document_data default_doc_data;