annotate third_party/raylib/custom.c @ 279:b3b547563ec7

Add Google connector service and agent wiki Implement the C/Seobeo Google Drive and Gmail connector with encrypted OAuth storage, Zenbu authentication, browser testing, AI tool discovery, chunked HTTP decoding, and Bazel coverage. Consolidate repository guidance into progressive wiki documentation and enforce arena-first allocation for new first-party C code. Co-authored-by: Copilot <[email protected]> Copilot-Session: 84c338fd-0939-4bb3-b7f3-1062eb213e5d
author MrJuneJune <me@mrjunejune.com>
date Mon, 17 Aug 2026 22:22:36 -0700
parents 058de208e640
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
116
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
1 #include "third_party/raylib/include/raylib.h"
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
2 #define RAYGUI_IMPLEMENTATION
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
3 #include "third_party/raylib/include/raygui.h"
161
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
4 #include "third_party/raylib/custom.h"
163
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
5 #include <string.h>
116
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
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 IMPLEMENTATION
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 // Global color scheme instance
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
12 ColorScheme g_colors = {0};
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
13
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
14 ColorScheme PostDog_DefaultColorScheme(void)
116
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
15 {
163
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
16 return (ColorScheme){
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
17 .primary = (Color){255, 140, 0, 255}, // Orange
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
18 .secondary = (Color){255, 248, 231, 255}, // Beige/Egg white
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
19 .background = (Color){255, 255, 255, 255}, // White
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
20 .text = (Color){30, 30, 30, 255}, // Near black
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
21 .text_light = (Color){255, 255, 255, 255}, // White
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
22 .border = (Color){200, 200, 200, 255}, // Light gray
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
23 .highlight = (Color){255, 180, 100, 255}, // Light orange
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
24 .success = (Color){76, 175, 80, 255}, // Green
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
25 .error = (Color){244, 67, 54, 255}, // Red
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
26 .muted = (Color){158, 158, 158, 255}, // Gray
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
27 };
116
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
28 }
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
29
163
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
30 ColorScheme PostDog_DarkColorScheme(void)
116
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
31 {
163
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
32 return (ColorScheme){
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
33 .primary = (Color){255, 140, 0, 255}, // Orange
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
34 .secondary = (Color){45, 45, 48, 255}, // Dark gray
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
35 .background = (Color){30, 30, 30, 255}, // Near black
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
36 .text = (Color){240, 240, 240, 255}, // Near white
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
37 .text_light = (Color){255, 255, 255, 255}, // White
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
38 .border = (Color){70, 70, 70, 255}, // Dark gray
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
39 .highlight = (Color){255, 180, 100, 255}, // Light orange
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
40 .success = (Color){76, 175, 80, 255}, // Green
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
41 .error = (Color){244, 67, 54, 255}, // Red
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
42 .muted = (Color){100, 100, 100, 255}, // Gray
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
43 };
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
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
46 void PostDog_InitColorScheme(void)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
47 {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
48 g_colors = PostDog_DefaultColorScheme();
116
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
49 }
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
50
163
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
51 void PostDog_SetColorScheme(ColorScheme scheme)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
52 {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
53 g_colors = scheme;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
54 }
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
55
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
56 // ============================================================================
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
57 // FUNCTIONALITY HELPERS
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
58 // ============================================================================
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 void DefaultBehaviours(void)
116
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
61 {
163
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
62 IncreaseFontSize();
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
63 DecreaseFontSize();
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
64 }
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 void IncreaseFontSize(void)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
67 {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
68 if ((IsKeyDown(KEY_LEFT_SUPER) || IsKeyDown(KEY_LEFT_CONTROL)) && IsKeyDown(KEY_EQUAL))
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
69 GuiSetStyle(DEFAULT, TEXT_SIZE, GuiGetStyle(DEFAULT, TEXT_SIZE) + 1);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
70 }
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
71
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
72 void DecreaseFontSize(void)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
73 {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
74 if ((IsKeyDown(KEY_LEFT_SUPER) || IsKeyDown(KEY_LEFT_CONTROL)) && IsKeyDown(KEY_MINUS))
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
75 GuiSetStyle(DEFAULT, TEXT_SIZE, GuiGetStyle(DEFAULT, TEXT_SIZE) - 1);
116
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
76 }
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
77
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
78 // --- Layout helper --- //
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
79 Rectangle RightOf(Rectangle ref, float padding)
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
80 {
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
81 return (Rectangle){
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
82 .x = ref.x + ref.width + padding,
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
83 .y = ref.y,
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
84 .width = 0,
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
85 .height = ref.height
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
86 };
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
87 }
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
88
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
89 Rectangle Below(Rectangle ref, float padding)
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
90 {
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
91 return (Rectangle){
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
92 .x = ref.x,
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
93 .y = ref.y + ref.height + padding,
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
94 .width = ref.width,
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
95 .height = 0
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
96 };
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
97 }
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
98
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
99 Rectangle LeftColumn(Rectangle container, float ratio, float padding)
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
100 {
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
101 return (Rectangle){
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
102 .x = container.x + padding,
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
103 .y = container.y + padding,
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
104 .width = (container.width * ratio) - padding,
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
105 .height = container.height - (2 * padding)
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
106 };
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
107 }
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
108
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
109 Rectangle RightColumn(Rectangle container, Rectangle leftCol, float padding)
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
110 {
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
111 return (Rectangle){
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
112 .x = leftCol.x + leftCol.width + padding,
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
113 .y = container.y + padding,
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
114 .width = container.width - leftCol.width - (3 * padding),
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
115 .height = container.height - (2 * padding)
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
116 };
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
117 }
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
118
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
119 Rectangle HorizontalSplit(Rectangle container, float ratio)
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
120 {
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
121 return (Rectangle){
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
122 .x = container.x,
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
123 .y = container.y,
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
124 .width = container.width * ratio,
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
125 .height = container.height
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
126 };
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
127 }
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
128
163
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
129
161
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
130 void DrawRectangleSelectiveRounded(Rectangle rec, float radius, int segments, Color color,
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
131 boolean roundTL, boolean roundTR, boolean roundBR, boolean roundBL) {
163
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
132 // Clamp radius to valid range
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
133 float maxR = fminf(rec.width, rec.height) * 0.5f;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
134 radius = fminf(fmaxf(radius, 0.0f), maxR);
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 // Fill center
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
137 DrawRectangleRec((Rectangle){
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
138 rec.x + radius, rec.y + radius,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
139 rec.width - 2.0f * radius, rec.height - 2.0f * radius
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
140 }, color);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
141
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
142 //
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
143 // |--------|
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
144 // | |
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
145 // | |
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
146 // |--------|
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
147
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
148 // Top edge
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
149 float topStart = rec.x + (roundTL ? radius : 0.0f);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
150 float topWidth = rec.width - (roundTL ? radius : 0.0f) - (roundTR ? radius : 0.0f);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
151 if (topWidth > 0.0f)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
152 DrawRectangleRec((Rectangle){ topStart, rec.y, topWidth, radius }, color);
116
7bd795bac997 [Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
153
163
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
154 // Bottom edge
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
155 float botStart = rec.x + (roundBL ? radius : 0.0f);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
156 float botWidth = rec.width - (roundBL ? radius : 0.0f) - (roundBR ? radius : 0.0f);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
157 if (botWidth > 0.0f)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
158 DrawRectangleRec((Rectangle){ botStart, rec.y + rec.height - radius, botWidth, radius }, color);
161
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
159
163
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
160 // Left edge
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
161 float leftStart = rec.y + (roundTL ? radius : 0.0f);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
162 float leftHeight = rec.height - (roundTL ? radius : 0.0f) - (roundBL ? radius : 0.0f);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
163 if (leftHeight > 0.0f)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
164 DrawRectangleRec((Rectangle){ rec.x, leftStart, radius, leftHeight - radius}, color);
161
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
165
163
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
166 // Right edge
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
167 float rightStart = rec.y + (roundTR ? radius : 0.0f);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
168 float rightHeight = rec.height - (roundTR ? radius : 0.0f) - (roundBR ? radius : 0.0f);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
169 if (rightHeight > 0.0f)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
170 DrawRectangleRec((Rectangle){ rec.x + rec.width - radius, rightStart, radius, rightHeight - radius }, color);
161
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
171
163
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
172 // Corners (arcs)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
173 if (roundTL) {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
174 DrawCircleSector((Vector2){ rec.x + radius, rec.y + radius }, radius, 180.0f, 270.0f, segments, color);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
175 }
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
176 if (roundTR) {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
177 DrawCircleSector((Vector2){ rec.x + rec.width - radius, rec.y + radius }, radius, 270.0f, 360.0f, segments, color);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
178 }
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
179 if (roundBR) {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
180 DrawCircleSector((Vector2){ rec.x + rec.width - radius, rec.y + rec.height - radius }, radius, 0.0f, 90.0f, segments, color);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
181 }
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
182 if (roundBL) {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
183 DrawCircleSector((Vector2){ rec.x + radius, rec.y + rec.height - radius }, radius, 90.0f, 180.0f, segments, color);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
184 }
161
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
185 }
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
186
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
187 Rectangle AddPadding(Rectangle rect, float padding)
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
188 {
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
189 return (Rectangle){
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
190 rect.x + padding,
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
191 rect.y + padding,
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
192 rect.width - (2 * padding),
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
193 rect.height - (2 * padding)
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
194 };
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
195 }
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
196
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
197 Rectangle AddPaddingAll(Rectangle rect, float top, float right,float down, float left)
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
198 {
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
199 return (Rectangle){
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
200 rect.x + left,
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
201 rect.y + top,
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
202 rect.width - (right + left),
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
203 rect.height - (top + down),
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
204 };
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
205 }
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
206
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
207
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
208
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
209 Rectangle AddPaddingHorizontal(Rectangle rect, float padding)
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
210 {
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
211 return (Rectangle){
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
212 rect.x + padding,
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
213 rect.y,
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
214 rect.width - (2 * padding),
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
215 rect.height
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
216 };
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
217 }
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
218
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
219 Rectangle AddPaddingVertical(Rectangle rect, float padding)
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
220 {
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
221 return (Rectangle){
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
222 rect.x,
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
223 rect.y + padding,
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
224 rect.width,
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
225 rect.height - (2 * padding)
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
226 };
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
227 }
87d8d3eb3491 [PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents: 116
diff changeset
228
163
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
229 Rectangle VerticalSplit(Rectangle container, float ratio)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
230 {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
231 return (Rectangle){
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
232 .x = container.x,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
233 .y = container.y,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
234 .width = container.width,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
235 .height = container.height * ratio
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
236 };
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
237 }
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
238
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
239 // ============================================================================
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
240 // DRAWING HELPERS - Additional
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
241 // ============================================================================
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
242
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
243 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
244 boolean roundTL, boolean roundTR, boolean roundBR, boolean roundBL)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
245 {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
246 // Top edge
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
247 DrawLine(rec.x + (roundTL ? radius : 0), rec.y,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
248 rec.x + rec.width - (roundTR ? radius : 0), rec.y, color);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
249 // Bottom edge
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
250 DrawLine(rec.x + (roundBL ? radius : 0), rec.y + rec.height,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
251 rec.x + rec.width - (roundBR ? radius : 0), rec.y + rec.height, color);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
252 // Left edge
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
253 DrawLine(rec.x, rec.y + (roundTL ? radius : 0),
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
254 rec.x, rec.y + rec.height - (roundBL ? radius : 0), color);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
255 // Right edge
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
256 DrawLine(rec.x + rec.width, rec.y + (roundTR ? radius : 0),
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
257 rec.x + rec.width, rec.y + rec.height - (roundBR ? radius : 0), color);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
258
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
259 // Corner arcs
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
260 if (roundTL)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
261 DrawCircleSectorLines((Vector2){rec.x + radius, rec.y + radius}, radius, 180, 270, segments, color);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
262 if (roundTR)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
263 DrawCircleSectorLines((Vector2){rec.x + rec.width - radius, rec.y + radius}, radius, 270, 360, segments, color);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
264 if (roundBR)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
265 DrawCircleSectorLines((Vector2){rec.x + rec.width - radius, rec.y + rec.height - radius}, radius, 0, 90, segments, color);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
266 if (roundBL)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
267 DrawCircleSectorLines((Vector2){rec.x + radius, rec.y + rec.height - radius}, radius, 90, 180, segments, color);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
268 }
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
269
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
270 // ============================================================================
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
271 // CUSTOM TAB COMPONENT IMPLEMENTATION
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
272 // ============================================================================
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
273
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
274 boolean PostDog_TabBar(Rectangle bounds, TabConfig config)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
275 {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
276 if (config.count <= 0 || config.labels == NULL || config.active_tab == NULL)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
277 return FALSE;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
278
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
279 boolean changed = FALSE;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
280 float tab_width = (bounds.width - config.padding * (config.count - 1)) / config.count;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
281 Vector2 mouse = GetMousePosition();
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
282
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
283 for (int i = 0; i < config.count; i++)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
284 {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
285 Rectangle tab_rect = {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
286 .x = bounds.x + i * (tab_width + config.padding),
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
287 .y = bounds.y,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
288 .width = tab_width,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
289 .height = bounds.height
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
290 };
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
291
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
292 boolean is_active = (i == *config.active_tab);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
293 boolean is_hovered = CheckCollisionPointRec(mouse, tab_rect);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
294 Color bg_color = is_active ? config.active_color : config.inactive_color;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
295 Color txt_color = is_active ? config.active_text_color : config.text_color;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
296
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
297 // Hover effect
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
298 if (is_hovered && !is_active)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
299 bg_color = Fade(config.active_color, 0.5f);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
300
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
301 // Draw tab background with rounded top corners
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
302 DrawRectangleSelectiveRounded(tab_rect, config.corner_radius, 8, bg_color,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
303 TRUE, TRUE, FALSE, FALSE);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
304
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
305 // Draw tab label
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
306 int text_width = MeasureText(config.labels[i], GuiGetStyle(DEFAULT, TEXT_SIZE));
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
307 Vector2 text_pos = {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
308 tab_rect.x + (tab_rect.width - text_width) / 2,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
309 tab_rect.y + (tab_rect.height - GuiGetStyle(DEFAULT, TEXT_SIZE)) / 2
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
310 };
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
311 DrawText(config.labels[i], text_pos.x, text_pos.y, GuiGetStyle(DEFAULT, TEXT_SIZE), txt_color);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
312
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
313 // Handle click
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
314 if (is_hovered && IsMouseButtonPressed(MOUSE_BUTTON_LEFT) && !is_active)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
315 {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
316 *config.active_tab = i;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
317 changed = TRUE;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
318 }
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
319 }
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
320
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
321 return changed;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
322 }
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
323
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
324 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
325 {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
326 TabConfig config = {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
327 .labels = labels,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
328 .count = count,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
329 .active_tab = active_tab,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
330 .padding = 2,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
331 .corner_radius = 8,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
332 .active_color = g_colors.primary,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
333 .inactive_color = g_colors.secondary,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
334 .text_color = g_colors.text,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
335 .active_text_color = g_colors.text_light,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
336 };
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
337 return PostDog_TabBar(bounds, config);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
338 }
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
339
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
340 // ============================================================================
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
341 // SPLIT PANEL IMPLEMENTATION
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
342 // ============================================================================
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
343
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
344 void PostDog_SplitPanel(Rectangle bounds, SplitPanelConfig config,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
345 Rectangle *out_left, Rectangle *out_right)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
346 {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
347 float left_width = bounds.width * config.split_ratio - config.gap / 2;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
348 float right_width = bounds.width * (1.0f - config.split_ratio) - config.gap / 2;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
349
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
350 if (out_left)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
351 {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
352 *out_left = (Rectangle){
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
353 .x = bounds.x,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
354 .y = bounds.y,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
355 .width = left_width,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
356 .height = bounds.height
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
357 };
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
358 }
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
359
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
360 if (out_right)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
361 {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
362 *out_right = (Rectangle){
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
363 .x = bounds.x + left_width + config.gap,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
364 .y = bounds.y,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
365 .width = right_width,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
366 .height = bounds.height
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
367 };
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
368 }
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
369 }
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
370
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
371 void PostDog_SplitPanelDraw(Rectangle bounds, SplitPanelConfig config)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
372 {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
373 Rectangle left_rect, right_rect;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
374 PostDog_SplitPanel(bounds, config, &left_rect, &right_rect);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
375
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
376 // Draw left panel with rounded left corners
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
377 DrawRectangleSelectiveRounded(left_rect, config.corner_radius, 8, config.left_color,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
378 TRUE, FALSE, FALSE, TRUE);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
379
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
380 // Draw right panel with rounded right corners
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
381 DrawRectangleSelectiveRounded(right_rect, config.corner_radius, 8, config.right_color,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
382 FALSE, TRUE, TRUE, FALSE);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
383 }
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
384
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
385 // ============================================================================
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
386 // COMBINED INPUT COMPONENTS IMPLEMENTATION
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
387 // ============================================================================
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
388
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
389 // Helper: Parse semicolon-separated items and return item at index
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
390 static const char* GetDropdownItem(const char *items, int index, char *buffer, int buffer_size)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
391 {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
392 int current_index = 0;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
393 int start = 0;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
394 int len = strlen(items);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
395
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
396 for (int i = 0; i <= len; i++)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
397 {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
398 if (items[i] == ';' || items[i] == '\0')
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
399 {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
400 if (current_index == index)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
401 {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
402 int item_len = i - start;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
403 if (item_len >= buffer_size) item_len = buffer_size - 1;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
404 strncpy(buffer, items + start, item_len);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
405 buffer[item_len] = '\0';
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
406 return buffer;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
407 }
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
408 current_index++;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
409 start = i + 1;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
410 }
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
411 }
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
412 buffer[0] = '\0';
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
413 return buffer;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
414 }
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
415
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
416 // Helper: Count items in semicolon-separated string
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
417 static int CountDropdownItems(const char *items)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
418 {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
419 if (!items || items[0] == '\0') return 0;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
420 int count = 1;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
421 for (int i = 0; items[i]; i++)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
422 if (items[i] == ';') count++;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
423 return count;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
424 }
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
425
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
426 boolean PostDog_DropdownTextBox(Rectangle bounds, DropdownTextBoxConfig config)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
427 {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
428 boolean result = FALSE;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
429
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
430 // Calculate dropdown width
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
431 float dropdown_w = config.dropdown_width;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
432 if (dropdown_w <= 1.0f)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
433 dropdown_w = bounds.width * dropdown_w;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
434
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
435 // Calculate rectangles
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
436 Rectangle dropdown_rect = {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
437 .x = bounds.x,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
438 .y = bounds.y,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
439 .width = dropdown_w,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
440 .height = bounds.height
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
441 };
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
442
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
443 Rectangle textbox_rect = {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
444 .x = bounds.x + dropdown_w,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
445 .y = bounds.y,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
446 .width = bounds.width - dropdown_w,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
447 .height = bounds.height
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
448 };
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
449
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
450 // Draw combined background
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
451 DrawRectangleSelectiveRounded(dropdown_rect, config.corner_radius, 8, config.background_color,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
452 TRUE, FALSE, FALSE, TRUE);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
453 DrawRectangleSelectiveRounded(textbox_rect, config.corner_radius, 8, config.background_color,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
454 FALSE, TRUE, TRUE, FALSE);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
455
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
456 // Draw separator line
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
457 DrawLine(dropdown_rect.x + dropdown_rect.width, dropdown_rect.y + 4,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
458 dropdown_rect.x + dropdown_rect.width, dropdown_rect.y + dropdown_rect.height - 4,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
459 config.border_color);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
460
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
461 // Draw border
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
462 DrawRectangleSelectiveRoundedLines(bounds, config.corner_radius, 8, config.border_color,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
463 TRUE, TRUE, TRUE, TRUE);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
464
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
465 // Custom dropdown with per-item colors
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
466 Vector2 mouse_pos = GetMousePosition();
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
467 int item_count = config.item_count > 0 ? config.item_count : CountDropdownItems(config.dropdown_items);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
468 int font_size = GuiGetStyle(DEFAULT, TEXT_SIZE);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
469 char item_buffer[64];
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
470
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
471 // Get current selected item
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
472 GetDropdownItem(config.dropdown_items, *config.dropdown_active, item_buffer, sizeof(item_buffer));
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
473 Color current_color = (config.item_colors && *config.dropdown_active < item_count)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
474 ? config.item_colors[*config.dropdown_active]
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
475 : config.text_color;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
476
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
477 // Draw selected item in dropdown area
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
478 Rectangle dropdown_inner = AddPadding(dropdown_rect, 6);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
479 boolean dropdown_hovered = CheckCollisionPointRec(mouse_pos, dropdown_rect);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
480
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
481 // Highlight on hover
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
482 if (dropdown_hovered && !(*config.dropdown_edit_mode))
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
483 {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
484 DrawRectangleSelectiveRounded(dropdown_rect, config.corner_radius, 8,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
485 Fade(current_color, 0.5f), TRUE, FALSE, FALSE, TRUE);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
486 }
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
487
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
488 // Draw selected text with color
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
489 int text_width = MeasureText(item_buffer, font_size);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
490 DrawText(item_buffer,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
491 dropdown_inner.x + (dropdown_inner.width - text_width) / 2,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
492 dropdown_inner.y + (dropdown_inner.height - font_size) / 2,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
493 font_size, current_color);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
494 DrawRectangleSelectiveRounded(dropdown_rect, config.corner_radius, 8,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
495 Fade(current_color, 0.3f), TRUE, FALSE, FALSE, TRUE);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
496
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
497 // Draw dropdown arrow
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
498 float arrow_size = 6;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
499 float arrow_x = dropdown_rect.x + dropdown_rect.width - 14;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
500 float arrow_y = dropdown_rect.y + dropdown_rect.height / 2;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
501 DrawTriangle(
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
502 (Vector2){arrow_x, arrow_y - arrow_size/2},
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
503 (Vector2){arrow_x + arrow_size, arrow_y - arrow_size/2},
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
504 (Vector2){arrow_x + arrow_size/2, arrow_y + arrow_size/2},
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
505 config.text_color);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
506
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
507 // Handle dropdown click
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
508 if (dropdown_hovered && IsMouseButtonPressed(MOUSE_BUTTON_LEFT))
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
509 {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
510 *config.dropdown_edit_mode = !(*config.dropdown_edit_mode);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
511 }
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
512
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
513 // Draw dropdown list when open
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
514 if (*config.dropdown_edit_mode)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
515 {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
516 float item_height = bounds.height;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
517 Rectangle list_rect = {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
518 .x = dropdown_rect.x,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
519 .y = dropdown_rect.y + dropdown_rect.height + 2,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
520 .width = dropdown_rect.width,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
521 .height = item_height * item_count
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
522 };
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
523
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
524 // Background
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
525 DrawRectangleRounded(list_rect, 0.1f, 8, config.background_color);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
526 DrawRectangleRoundedLines(list_rect, 0.1f, 8, config.border_color);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
527
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
528 // Draw each item
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
529 for (int i = 0; i < item_count; i++)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
530 {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
531 Rectangle item_rect = {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
532 .x = list_rect.x,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
533 .y = list_rect.y + i * item_height,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
534 .width = list_rect.width,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
535 .height = item_height
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
536 };
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
537
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
538 GetDropdownItem(config.dropdown_items, i, item_buffer, sizeof(item_buffer));
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
539 Color item_color = (config.item_colors && i < item_count)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
540 ? config.item_colors[i]
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
541 : config.text_color;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
542
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
543 boolean item_hovered = CheckCollisionPointRec(mouse_pos, item_rect);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
544
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
545 // Highlight hovered item
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
546 if (item_hovered)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
547 DrawRectangleRec(item_rect, Fade(item_color, 0.15f));
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
548
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
549 // Highlight selected item
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
550 DrawRectangleRec(item_rect, Fade(item_color, 0.2f));
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
551
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
552 // Draw item text
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
553 text_width = MeasureText(item_buffer, font_size);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
554 DrawText(item_buffer,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
555 item_rect.x + (item_rect.width - text_width) / 2,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
556 item_rect.y + (item_rect.height - font_size) / 2,
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
557 font_size, item_color);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
558
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
559 // Handle item click
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
560 if (item_hovered && IsMouseButtonPressed(MOUSE_BUTTON_LEFT))
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
561 {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
562 *config.dropdown_active = i;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
563 *config.dropdown_edit_mode = FALSE;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
564 }
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
565 }
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
566
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
567 // Close dropdown if clicked outside
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
568 if (!CheckCollisionPointRec(mouse_pos, list_rect) &&
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
569 !CheckCollisionPointRec(mouse_pos, dropdown_rect) &&
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
570 IsMouseButtonPressed(MOUSE_BUTTON_LEFT))
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
571 {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
572 *config.dropdown_edit_mode = FALSE;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
573 }
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
574 }
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
575
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
576 // Draw text box (using raygui)
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
577 Rectangle textbox_inner = AddPadding(textbox_rect, 4);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
578 boolean ctrl_pressed = IsKeyDown(KEY_LEFT_CONTROL) || IsKeyDown(KEY_RIGHT_CONTROL) || IsKeyDown(KEY_LEFT_SUPER) || IsKeyDown(KEY_RIGHT_SUPER);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
579 if (*config.text_edit_mode && ctrl_pressed && IsKeyPressed(KEY_V))
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
580 {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
581 const char *clipboard = GetClipboardText();
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
582 snprintf(config.text_buffer, config.text_buffer_size, "%s", clipboard);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
583 }
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
584 if (GuiTextBox(textbox_inner, config.text_buffer, config.text_buffer_size, *config.text_edit_mode))
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
585 {
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
586 *config.text_edit_mode = !(*config.text_edit_mode);
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
587 result = TRUE;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
588 }
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
589
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
590 return result;
058de208e640 [Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents: 161
diff changeset
591 }