annotate third_party/raylib/custom.c @ 173:827c6ac504cd hg-web

Merged in default here.
author MrJuneJune <me@mrjunejune.com>
date Mon, 19 Jan 2026 18:59:10 -0800
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 }