summaryrefslogtreecommitdiff
path: root/src/ui/color.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/color.c')
-rw-r--r--src/ui/color.c53
1 files changed, 47 insertions, 6 deletions
diff --git a/src/ui/color.c b/src/ui/color.c
index 7d6ab2c2..723e9805 100644
--- a/src/ui/color.c
+++ b/src/ui/color.c
@@ -1,3 +1,25 @@
1/* Copyright 2020 Jaakko Keränen <jaakko.keranen@iki.fi>
2
3Redistribution and use in source and binary forms, with or without
4modification, are permitted provided that the following conditions are met:
5
61. Redistributions of source code must retain the above copyright notice, this
7 list of conditions and the following disclaimer.
82. Redistributions in binary form must reproduce the above copyright notice,
9 this list of conditions and the following disclaimer in the documentation
10 and/or other materials provided with the distribution.
11
12THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
13ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
14WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
15DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
16ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
17(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
18LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
19ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
20(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
21SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
22
1#include "color.h" 23#include "color.h"
2 24
3#include <the_Foundation/string.h> 25#include <the_Foundation/string.h>
@@ -62,6 +84,7 @@ void setThemePalette_Color(enum iColorTheme theme) {
62 copy_(uiTextStrong_ColorId, white_ColorId); 84 copy_(uiTextStrong_ColorId, white_ColorId);
63 copy_(uiTextSelected_ColorId, white_ColorId); 85 copy_(uiTextSelected_ColorId, white_ColorId);
64 copy_(uiTextFramelessHover_ColorId, white_ColorId); 86 copy_(uiTextFramelessHover_ColorId, white_ColorId);
87 copy_(uiTextDisabled_ColorId, gray25_ColorId);
65 copy_(uiTextShortcut_ColorId, cyan_ColorId); 88 copy_(uiTextShortcut_ColorId, cyan_ColorId);
66 copy_(uiTextAction_ColorId, cyan_ColorId); 89 copy_(uiTextAction_ColorId, cyan_ColorId);
67 copy_(uiTextCaution_ColorId, orange_ColorId); 90 copy_(uiTextCaution_ColorId, orange_ColorId);
@@ -86,7 +109,8 @@ void setThemePalette_Color(enum iColorTheme theme) {
86 copy_(uiInputCursor_ColorId, orange_ColorId); 109 copy_(uiInputCursor_ColorId, orange_ColorId);
87 copy_(uiInputCursorText_ColorId, black_ColorId); 110 copy_(uiInputCursorText_ColorId, black_ColorId);
88 copy_(uiHeading_ColorId, cyan_ColorId); 111 copy_(uiHeading_ColorId, cyan_ColorId);
89 copy_(uiIcon_ColorId, teal_ColorId); 112 copy_(uiAnnotation_ColorId, teal_ColorId);
113 copy_(uiIcon_ColorId, cyan_ColorId);
90 copy_(uiIconHover_ColorId, cyan_ColorId); 114 copy_(uiIconHover_ColorId, cyan_ColorId);
91 copy_(uiSeparator_ColorId, gray25_ColorId); 115 copy_(uiSeparator_ColorId, gray25_ColorId);
92 copy_(uiMarked_ColorId, brown_ColorId); 116 copy_(uiMarked_ColorId, brown_ColorId);
@@ -103,6 +127,7 @@ void setThemePalette_Color(enum iColorTheme theme) {
103 copy_(uiTextPressed_ColorId, black_ColorId); 127 copy_(uiTextPressed_ColorId, black_ColorId);
104 copy_(uiTextStrong_ColorId, white_ColorId); 128 copy_(uiTextStrong_ColorId, white_ColorId);
105 copy_(uiTextSelected_ColorId, white_ColorId); 129 copy_(uiTextSelected_ColorId, white_ColorId);
130 copy_(uiTextDisabled_ColorId, gray50_ColorId);
106 copy_(uiTextFramelessHover_ColorId, white_ColorId); 131 copy_(uiTextFramelessHover_ColorId, white_ColorId);
107 copy_(uiTextShortcut_ColorId, cyan_ColorId); 132 copy_(uiTextShortcut_ColorId, cyan_ColorId);
108 copy_(uiTextAction_ColorId, cyan_ColorId); 133 copy_(uiTextAction_ColorId, cyan_ColorId);
@@ -128,6 +153,7 @@ void setThemePalette_Color(enum iColorTheme theme) {
128 copy_(uiInputCursor_ColorId, orange_ColorId); 153 copy_(uiInputCursor_ColorId, orange_ColorId);
129 copy_(uiInputCursorText_ColorId, black_ColorId); 154 copy_(uiInputCursorText_ColorId, black_ColorId);
130 copy_(uiHeading_ColorId, cyan_ColorId); 155 copy_(uiHeading_ColorId, cyan_ColorId);
156 copy_(uiAnnotation_ColorId, teal_ColorId);
131 copy_(uiIcon_ColorId, cyan_ColorId); 157 copy_(uiIcon_ColorId, cyan_ColorId);
132 copy_(uiIconHover_ColorId, cyan_ColorId); 158 copy_(uiIconHover_ColorId, cyan_ColorId);
133 copy_(uiSeparator_ColorId, black_ColorId); 159 copy_(uiSeparator_ColorId, black_ColorId);
@@ -141,9 +167,10 @@ void setThemePalette_Color(enum iColorTheme theme) {
141 copy_(uiBackgroundPressed_ColorId, cyan_ColorId); 167 copy_(uiBackgroundPressed_ColorId, cyan_ColorId);
142 copy_(uiBackgroundFramelessHover_ColorId, orange_ColorId); 168 copy_(uiBackgroundFramelessHover_ColorId, orange_ColorId);
143 copy_(uiText_ColorId, black_ColorId); 169 copy_(uiText_ColorId, black_ColorId);
144 copy_(uiTextStrong_ColorId, brown_ColorId); 170 copy_(uiTextStrong_ColorId, teal_ColorId);
145 copy_(uiTextPressed_ColorId, black_ColorId); 171 copy_(uiTextPressed_ColorId, black_ColorId);
146 copy_(uiTextSelected_ColorId, black_ColorId); 172 copy_(uiTextSelected_ColorId, black_ColorId);
173 copy_(uiTextDisabled_ColorId, gray50_ColorId);
147 copy_(uiTextFramelessHover_ColorId, black_ColorId); 174 copy_(uiTextFramelessHover_ColorId, black_ColorId);
148 copy_(uiTextShortcut_ColorId, brown_ColorId); 175 copy_(uiTextShortcut_ColorId, brown_ColorId);
149 copy_(uiTextAction_ColorId, brown_ColorId); 176 copy_(uiTextAction_ColorId, brown_ColorId);
@@ -163,15 +190,16 @@ void setThemePalette_Color(enum iColorTheme theme) {
163 copy_(uiInputBackgroundFocused_ColorId, white_ColorId); 190 copy_(uiInputBackgroundFocused_ColorId, white_ColorId);
164 copy_(uiInputText_ColorId, gray25_ColorId); 191 copy_(uiInputText_ColorId, gray25_ColorId);
165 copy_(uiInputTextFocused_ColorId, black_ColorId); 192 copy_(uiInputTextFocused_ColorId, black_ColorId);
166 copy_(uiInputFrame_ColorId, gray25_ColorId); 193 copy_(uiInputFrame_ColorId, gray50_ColorId);
167 copy_(uiInputFrameHover_ColorId, brown_ColorId); 194 copy_(uiInputFrameHover_ColorId, brown_ColorId);
168 copy_(uiInputFrameFocused_ColorId, teal_ColorId); 195 copy_(uiInputFrameFocused_ColorId, teal_ColorId);
169 copy_(uiInputCursor_ColorId, teal_ColorId); 196 copy_(uiInputCursor_ColorId, teal_ColorId);
170 copy_(uiInputCursorText_ColorId, white_ColorId); 197 copy_(uiInputCursorText_ColorId, white_ColorId);
171 copy_(uiHeading_ColorId, brown_ColorId); 198 copy_(uiHeading_ColorId, brown_ColorId);
199 copy_(uiAnnotation_ColorId, gray50_ColorId);
172 copy_(uiIcon_ColorId, brown_ColorId); 200 copy_(uiIcon_ColorId, brown_ColorId);
173 copy_(uiIconHover_ColorId, brown_ColorId); 201 copy_(uiIconHover_ColorId, brown_ColorId);
174 copy_(uiSeparator_ColorId, gray25_ColorId); 202 copy_(uiSeparator_ColorId, gray50_ColorId);
175 copy_(uiMarked_ColorId, cyan_ColorId); 203 copy_(uiMarked_ColorId, cyan_ColorId);
176 copy_(uiMatching_ColorId, orange_ColorId); 204 copy_(uiMatching_ColorId, orange_ColorId);
177 break; 205 break;
@@ -183,6 +211,7 @@ void setThemePalette_Color(enum iColorTheme theme) {
183 copy_(uiBackgroundFramelessHover_ColorId, orange_ColorId); 211 copy_(uiBackgroundFramelessHover_ColorId, orange_ColorId);
184 copy_(uiText_ColorId, gray25_ColorId); 212 copy_(uiText_ColorId, gray25_ColorId);
185 copy_(uiTextPressed_ColorId, black_ColorId); 213 copy_(uiTextPressed_ColorId, black_ColorId);
214 copy_(uiTextDisabled_ColorId, gray75_ColorId);
186 copy_(uiTextStrong_ColorId, black_ColorId); 215 copy_(uiTextStrong_ColorId, black_ColorId);
187 copy_(uiTextSelected_ColorId, black_ColorId); 216 copy_(uiTextSelected_ColorId, black_ColorId);
188 copy_(uiTextFramelessHover_ColorId, black_ColorId); 217 copy_(uiTextFramelessHover_ColorId, black_ColorId);
@@ -210,13 +239,16 @@ void setThemePalette_Color(enum iColorTheme theme) {
210 copy_(uiInputCursor_ColorId, teal_ColorId); 239 copy_(uiInputCursor_ColorId, teal_ColorId);
211 copy_(uiInputCursorText_ColorId, white_ColorId); 240 copy_(uiInputCursorText_ColorId, white_ColorId);
212 copy_(uiHeading_ColorId, brown_ColorId); 241 copy_(uiHeading_ColorId, brown_ColorId);
242 copy_(uiAnnotation_ColorId, gray50_ColorId);
213 copy_(uiIcon_ColorId, brown_ColorId); 243 copy_(uiIcon_ColorId, brown_ColorId);
214 copy_(uiIconHover_ColorId, brown_ColorId); 244 copy_(uiIconHover_ColorId, brown_ColorId);
215 copy_(uiSeparator_ColorId, gray50_ColorId); 245 copy_(uiSeparator_ColorId, gray75_ColorId);
216 copy_(uiMarked_ColorId, cyan_ColorId); 246 copy_(uiMarked_ColorId, cyan_ColorId);
217 copy_(uiMatching_ColorId, orange_ColorId); 247 copy_(uiMatching_ColorId, orange_ColorId);
218 break; 248 break;
219 } 249 }
250 palette_[uiMarked_ColorId].a = 128;
251 palette_[uiMatching_ColorId].a = 128;
220} 252}
221 253
222iColor get_Color(int color) { 254iColor get_Color(int color) {
@@ -233,6 +265,14 @@ void set_Color(int color, iColor rgba) {
233 } 265 }
234} 266}
235 267
268iColor mix_Color(iColor c1, iColor c2, float t) {
269 t = iClamp(t, 0.0f, 1.0f);
270 return (iColor){ c1.r * (1 - t) + c2.r * t,
271 c1.g * (1 - t) + c2.g * t,
272 c1.b * (1 - t) + c2.b * t,
273 c1.a * (1 - t) + c2.a * t };
274}
275
236iLocalDef iBool equal_Color_(const iColor *x, const iColor *y) { 276iLocalDef iBool equal_Color_(const iColor *x, const iColor *y) {
237 return memcmp(x, y, sizeof(iColor)) == 0; 277 return memcmp(x, y, sizeof(iColor)) == 0;
238} 278}
@@ -361,7 +401,8 @@ const char *escape_Color(int color) {
361 if (color >= 0 && color < (int) iElemCount(esc)) { 401 if (color >= 0 && color < (int) iElemCount(esc)) {
362 return esc[color]; 402 return esc[color];
363 } 403 }
364 return format_CStr("\r%c", color + '0'); 404 iAssert(asciiBase_ColorEscape + color <= 127);
405 return format_CStr("\r%c", asciiBase_ColorEscape + color);
365} 406}
366 407
367iHSLColor setSat_HSLColor(iHSLColor d, float sat) { 408iHSLColor setSat_HSLColor(iHSLColor d, float sat) {