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 #ifndef GRID_H
29 #define GRID_H
30
31 #include "../ui/win32.h"
32 #include <stdbool.h>
33 #include <cx/array_list.h>
34
35 #include "win32.h"
36
37 #define INSETS_ZERO (GridEdgeInsets){
0}
38 typedef struct GridEdgeInsets {
39 short top;
40 short bottom;
41 short left;
42 short right;
43 } GridEdgeInsets;
44
45 typedef struct GridLayoutInfo {
46 GridEdgeInsets margin;
47 short colspan;
48 short rowspan;
49 int preferred_width;
50 int preferred_height;
51 bool hexpand;
52 bool vexpand;
53 bool hfill;
54 bool vfill;
55 } GridLayoutInfo;
56
57 typedef struct GridElm {
58 W32Widget *widget;
59 short gridx;
60 short gridy;
61 GridLayoutInfo layout;
62 } GridElm;
63
64 typedef struct UiGridLayout {
65 GridEdgeInsets padding;
66 short columnspacing;
67 short rowspacing;
68
69 int preferred_width;
70 int preferred_height;
71
72
73
74
75 CxList *widgets;
76
77 int max_column;
78 int max_row;
79 } UiGridLayout;
80
81 typedef struct GridDef {
82 int size;
83 int pos;
84 int preferred_size;
85 BOOLEAN expand;
86 } GridDef;
87
88 UiGridLayout* ui_grid_layout_create(
const CxAllocator *a,
short columnspacing,
short rowspacing);
89
90 void ui_grid_add_widget(
91 UiGridLayout *grid,
92 short x,
93 short y,
94 W32Widget *widget,
95 GridLayoutInfo *layout);
96
97 void ui_grid_layout(UiGridLayout *grid,
int width,
int height);
98
99 #endif
100