ui/win32/grid.h

Mon, 29 Sep 2025 21:14:46 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Mon, 29 Sep 2025 21:14:46 +0200
changeset 779
b84cbe57e0bd
parent 667
35c64574f862
child 813
6d9066951cdb
permissions
-rw-r--r--

change UiCellValue from struct to union and pass it as pointer to the onsave function, for better compatibility with other languages

667
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
1 /*
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
3 *
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
4 * Copyright 2025 Olaf Wintermann. All rights reserved.
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
5 *
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
6 * Redistribution and use in source and binary forms, with or without
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
7 * modification, are permitted provided that the following conditions are met:
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
8 *
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
9 * 1. Redistributions of source code must retain the above copyright
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
10 * notice, this list of conditions and the following disclaimer.
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
11 *
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
12 * 2. Redistributions in binary form must reproduce the above copyright
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
13 * notice, this list of conditions and the following disclaimer in the
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
14 * documentation and/or other materials provided with the distribution.
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
15 *
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
26 * POSSIBILITY OF SUCH DAMAGE.
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
27 */
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
28 #ifndef GRID_H
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
29 #define GRID_H
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
30
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
31 #include "container.h"
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
32 #include <stdbool.h>
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
33 #include <cx/array_list.h>
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
34
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
35 typedef struct GridElm {
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
36 W32Widget *widget;
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
37 short x;
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
38 short y;
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
39 GridLayoutInfo layout;
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
40 } GridElm;
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
41
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
42 typedef struct GridLayoutInfo {
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
43 short margin_left;
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
44 short margin_right;
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
45 short margin_top;
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
46 short margin_bottom;
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
47 short colspan;
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
48 short rowspan;
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
49 short preferred_width;
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
50 short preferred_height;
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
51 bool hexpand;
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
52 bool vexpand;
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
53 bool hfill;
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
54 bool vfill;
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
55 } GridLayoutInfo;
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
56
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
57 typedef struct UiGridLayout {
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
58 HWND hwnd;
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
59
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
60 short padding;
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
61 short columnspacing;
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
62 short rowspacing;
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
63
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
64 /*
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
65 * list element type: GridElm
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
66 */
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
67 CxList *widgets;
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
68
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
69 } UiGridLayout;
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
70
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
71 UiGridLayout* ui_grid_container(UiObject *obj, HWND control, short padding, short columnspacing, short rowspacing);
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
72
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
73 void ui_grid_add_widget(
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
74 UiGridLayout *grid,
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
75 short x,
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
76 short y,
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
77 W32Widget *widget,
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
78 GridLayoutInfo *layout);
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
79
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
80 void ui_grid_layout(UiGridLayout *grid);
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
81
35c64574f862 add basic structure for grid layout (win32)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
82 #endif //GRID_H

mercurial