diff options
Diffstat (limited to 'src/ui/color.c')
-rw-r--r-- | src/ui/color.c | 53 |
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 | |||
3 | Redistribution and use in source and binary forms, with or without | ||
4 | modification, are permitted provided that the following conditions are met: | ||
5 | |||
6 | 1. Redistributions of source code must retain the above copyright notice, this | ||
7 | list of conditions and the following disclaimer. | ||
8 | 2. 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 | |||
12 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||
13 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
14 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
15 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR | ||
16 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
17 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
18 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON | ||
19 | ANY 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 | ||
21 | SOFTWARE, 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 | ||
222 | iColor get_Color(int color) { | 254 | iColor get_Color(int color) { |
@@ -233,6 +265,14 @@ void set_Color(int color, iColor rgba) { | |||
233 | } | 265 | } |
234 | } | 266 | } |
235 | 267 | ||
268 | iColor 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 | |||
236 | iLocalDef iBool equal_Color_(const iColor *x, const iColor *y) { | 276 | iLocalDef 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 | ||
367 | iHSLColor setSat_HSLColor(iHSLColor d, float sat) { | 408 | iHSLColor setSat_HSLColor(iHSLColor d, float sat) { |