annotate third_party/raylib/custom.h @ 180:3a4ebe4552bf

Remove playground file as it is not needed to be tracked.
author June Park <parkjune1995@gmail.com>
date Mon, 19 Jan 2026 08:05:02 -0800
parents 058de208e640
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
161
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
diff changeset
1 #ifndef CUSTOM_UI
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
diff changeset
2 #define CUSTOM_UI
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
diff changeset
3
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
diff changeset
4 #include "dowa/dowa.h"
163
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
5 #include "third_party/raylib/include/raylib.h"
161
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
diff changeset
6
163
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
7 // ============================================================================
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
8 // COLOR SCHEME - Easily modifiable color palette
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
9 // ============================================================================
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
10
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
11 typedef struct {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
12 Color primary; // Main accent color (Orange)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
13 Color secondary; // Secondary background (Beige/Egg white)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
14 Color background; // Main background (White)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
15 Color text; // Text color (Black)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
16 Color text_light; // Light text (White - for dark backgrounds)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
17 Color border; // Border color
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
18 Color highlight; // Highlight/hover color
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
19 Color success; // Success indicator
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
20 Color error; // Error indicator
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
21 Color muted; // Muted/disabled elements
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
22 } ColorScheme;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
23
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
24 // Global color scheme - initialize with PostDog_InitColorScheme()
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
25 extern ColorScheme g_colors;
161
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
diff changeset
26
163
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
27 void PostDog_InitColorScheme(void);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
28 void PostDog_SetColorScheme(ColorScheme scheme);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
29
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
30 // Predefined color schemes
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
31 ColorScheme PostDog_DefaultColorScheme(void);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
32 ColorScheme PostDog_DarkColorScheme(void);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
33
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
34 // ============================================================================
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
35 // FUNCTIONALITY HELPERS
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
36 // ============================================================================
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
37
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
38 void DefaultBehaviours(void);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
39 void IncreaseFontSize(void);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
40 void DecreaseFontSize(void);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
41
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
42 // ============================================================================
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
43 // LAYOUT HELPERS
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
44 // ============================================================================
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
45
161
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
diff changeset
46 Rectangle RightOf(Rectangle ref, float padding);
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
diff changeset
47 Rectangle Below(Rectangle ref, float padding);
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
diff changeset
48 Rectangle LeftColumn(Rectangle container, float ratio, float padding);
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
diff changeset
49 Rectangle RightColumn(Rectangle container, Rectangle leftCol, float padding);
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
diff changeset
50 Rectangle HorizontalSplit(Rectangle container, float ratio);
163
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
51 Rectangle VerticalSplit(Rectangle container, float ratio);
161
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
diff changeset
52 Rectangle AddPadding(Rectangle rect, float padding);
163
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
53 Rectangle AddPaddingAll(Rectangle rect, float top, float right, float down, float left);
161
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
diff changeset
54 Rectangle AddPaddingHorizontal(Rectangle rect, float padding);
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
diff changeset
55 Rectangle AddPaddingVertical(Rectangle rect, float padding);
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
diff changeset
56
163
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
57 // ============================================================================
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
58 // DRAWING HELPERS
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
59 // ============================================================================
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
60
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
61 void DrawRectangleSelectiveRounded(Rectangle rec, float radius, int segments, Color color,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
62 boolean roundTL, boolean roundTR, boolean roundBR, boolean roundBL);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
63 void DrawRectangleSelectiveRoundedLines(Rectangle rec, float radius, int segments, Color color,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
64 boolean roundTL, boolean roundTR, boolean roundBR, boolean roundBL);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
65
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
66 // ============================================================================
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
67 // CUSTOM TAB COMPONENT
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
68 // ============================================================================
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
69
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
70 // Tab configuration
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
71 typedef struct {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
72 const char **labels; // Array of tab labels
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
73 int count; // Number of tabs
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
74 int *active_tab; // Pointer to active tab index
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
75 float padding; // Padding between tabs
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
76 float corner_radius; // Corner radius for rounded tabs
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
77 Color active_color; // Color for active tab
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
78 Color inactive_color; // Color for inactive tab
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
79 Color text_color; // Text color
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
80 Color active_text_color; // Text color for active tab
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
81 } TabConfig;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
82
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
83 // Draw tabs and return true if active tab changed
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
84 // Usage: PostDog_TabBar(bounds, config) where config contains all tab settings
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
85 boolean PostDog_TabBar(Rectangle bounds, TabConfig config);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
86
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
87 // Simplified tab bar - uses default styling from color scheme
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
88 // Returns true if tab changed
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
89 boolean PostDog_TabBarSimple(Rectangle bounds, const char **labels, int count, int *active_tab);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
90
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
91 // ============================================================================
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
92 // COMBINED INPUT COMPONENTS
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
93 // ============================================================================
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
94
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
95 // Dropdown + TextBox combined component
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
96 // Draws a dropdown on the left, text input on the right, with shared rounded border
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
97 typedef struct {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
98 // Dropdown settings
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
99 const char *dropdown_items; // Semicolon-separated items: "GET;POST;PUT;DELETE"
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
100 int *dropdown_active; // Pointer to active dropdown index
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
101 boolean *dropdown_edit_mode; // Pointer to dropdown edit mode state
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
102 float dropdown_width; // Width of dropdown (ratio 0.0-1.0 or absolute if > 1.0)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
103
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
104 // TextBox settings
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
105 char *text_buffer; // Text buffer for input
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
106 int text_buffer_size; // Size of text buffer
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
107 boolean *text_edit_mode; // Pointer to text edit mode state
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
108
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
109 // Styling
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
110 float corner_radius;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
111 Color background_color;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
112 Color border_color;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
113 Color text_color;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
114
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
115 // Optional: per-item colors for dropdown (NULL to use default text_color)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
116 Color *item_colors; // Array of colors matching dropdown items count
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
117 int item_count; // Number of items (required if item_colors is set)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
118 } DropdownTextBoxConfig;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
119
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
120 boolean PostDog_DropdownTextBox(Rectangle bounds, DropdownTextBoxConfig config);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
121
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
122 // ============================================================================
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
123 // PANEL COMPONENTS
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
124 // ============================================================================
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
125
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
126 // Split panel - two panels side by side with shared rounded border
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
127 typedef struct {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
128 float split_ratio; // 0.0-1.0, ratio of left panel
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
129 float corner_radius;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
130 Color left_color;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
131 Color right_color;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
132 Color border_color;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
133 float gap; // Gap between panels (0 for seamless)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
134 } SplitPanelConfig;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
135
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
136 // Returns rectangles for left and right content areas
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
137 void PostDog_SplitPanel(Rectangle bounds, SplitPanelConfig config,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
138 Rectangle *out_left, Rectangle *out_right);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
139
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
140 // Draw split panel background only (for custom content)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
141 void PostDog_SplitPanelDraw(Rectangle bounds, SplitPanelConfig config);
161
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
diff changeset
142
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
diff changeset
143 #endif // CUSTOM_UI