135 light = p.light().color();
136 midlight = p.midlight().color();
137 dark = p.dark().color();
138 window = p.window().color();
139 text = p.text().color();
140 highlight = p.highlight().color();
141 htext = p.highlightedText().color();
153 auto clampColor = [](
int v)
161 auto lcomb = [clampColor](
const QColor& c1,
const QColor& c2,
float f)
163 const float fi = 1.0f - f;
164 return QColor(clampColor(c1.red() *f + c2.red() *fi),
165 clampColor(c1.green()*f + c2.green()*fi),
166 clampColor(c1.blue() *f + c2.blue() *fi),
167 clampColor(c1.alpha()*f + c2.alpha()*fi));
169 auto dimmed = [lcomb](
const QColor& c,
float factor)
171 return lcomb(c, Qt::black, 1.0f - factor);
173 auto coeff = [clampColor](
const QColor& c,
float cr,
float cg,
float cb)
175 return QColor(clampColor(c.red() * cr), clampColor(c.green() * cg), clampColor(c.blue() * cb));
177 auto add = [clampColor](
const QColor& c1,
const QColor& c2)
179 return QColor(clampColor(c1.red() + c2.red()),
180 clampColor(c1.green() + c2.green()),
181 clampColor(c1.blue() + c2.blue()),
182 clampColor(c1.alpha() + c2.alpha()));
184 auto toBase = [](
const QColor& c)
186 const int minColor = std::min(std::min(c.red(), c.green()), c.blue());
187 return QColor(c.red() - minColor,
188 c.green() - minColor,
189 c.blue() - minColor);
199 params->TabBorderRadius = 0;
200 params->TabFontColor = p.text;
201 params->ToolbarBackgroundColor = p.window;
202 params->BorderColor = dimmed(p.light, 0.25f);
203 params->GroupNameColor = lcomb(p.text, p.midlight, 0.4f);
205 params->TabSpecialColor = { {0.0f, dimmed(p.highlight, 0.2f)},
206 {1.0f, p.highlight} };
208 params->TabSpecialHoverColor = { {0.0f, params->TabSpecialColor[1].value},
209 {1.0f, params->TabSpecialColor[0].value} };
211 params->TabSpecialHoverBorderColor = p.highlight;
212 params->TabSpecialHoverBorderColorSide = params->TabSpecialHoverBorderColor;
213 params->TabSpecialBorderColor = p.highlight;
214 params->TabSpecialBorderColorSide = params->TabSpecialBorderColor;
215 params->TabSpecialFontColor = p.htext;
217 params->TabUnselectedHoverBorderColorTop =
218 params->TabHoverBorderColorTop = p.highlight;
220 params->TabUnselectedHoverBorderColorSide =
221 params->TabHoverBorderColorSide = { {0.0f, params->BorderColor},
222 {0.1f, params->BorderColor},
223 {0.7f, params->TabHoverBorderColorTop},
224 {1.0f, params->TabHoverBorderColorTop} };
226 params->PaneColor = { {0.0f, dimmed(p.light, 0.1f)},
230 params->TabSelectedColor = p.light;
232 params->TabUnselectedColor = lcomb(params->ToolbarBackgroundColor, params->TabSelectedColor[0].value, 0.5f);
234 params->SeparatorColor = { {0.0f, Qt::transparent},
235 {0.05f, Qt::transparent},
236 {0.1f, params->BorderColor},
237 {0.9f, params->BorderColor},
238 {0.95f, Qt::transparent},
239 {1.0f, Qt::transparent} };
241 params->HorizontalFrameBackgroundColor = params->PaneColor;
242 for (
auto& c : params->HorizontalFrameBackgroundColor)
243 c.value.setAlpha(100);
244 params->HorizontalFrameBorderColor = params->BorderColor;
245 params->HorizontalFrameBorderSize = 2;
246 params->TabSpacing = 3;
248 params->HideArrowColor = lcomb(p.text, p.midlight, 0.4f);
255 const QColor vienna = (p.window.lightnessF() > 0.5f ? QColor(51, 153, 255) : QColor(25, 40, 70));
260 params->TabBorderRadius = 2;
261 params->TabFontColor = lcomb(p.text, vienna, 0.588f);
262 params->ToolbarBackgroundColor = add(dimmed(p.window, 0.07f), toBase(dimmed(vienna, 0.892f)));
263 const float dimmCoeff = (p.window.lightnessF() > 0.5f ? 0.225f : 0.5f);
264 params->BorderColor = add(dimmed(p.window, dimmCoeff), toBase(dimmed(vienna, 0.838f)));
265 params->GroupNameColor = lcomb(p.text, params->ToolbarBackgroundColor, 0.484f);
267 params->PaneColor = { {0.0f, params->ToolbarBackgroundColor},
268 {0.5f, params->ToolbarBackgroundColor},
269 {0.75f, lcomb(params->ToolbarBackgroundColor, p.light, 0.5f)},
272 params->TabSpecialColor = { {0.0f, add(dimmed(p.window, 0.7125f), coeff(toBase(dimmed(p.highlight, 0.294f)), 1.0f, 1.29f, 1.0f))},
273 {0.6f, add(dimmed(p.window, 0.891f), coeff(toBase(dimmed(p.highlight, 0.46f)), 1.0f, 0.69f, 1.0f))},
274 {0.6001f, add(dimmed(p.window, 0.825f), coeff(toBase(dimmed(p.highlight, 0.362f)), 1.0f, 0.815f, 1.0f))},
275 {1.0f, add(dimmed(p.window, 0.7125f), coeff(toBase(dimmed(p.highlight, 0.416f)), 1.0f, 0.924f, 1.0f))} };
277 params->TabSpecialHoverColor = { {0.0f, coeff(params->TabSpecialColor[0].value, 2.17f, 1.48f, 1.197f)},
278 {0.6f, coeff(params->TabSpecialColor[1].value, 0.653f, 1.218f, 1.286f)},
279 {0.6001f, coeff(params->TabSpecialColor[2].value, 1.69f, 1.326f, 1.191f)},
280 {1.0f, coeff(params->TabSpecialColor[3].value, 1.768f, 1.44f, 1.255f)} };
282 params->TabSpecialHoverBorderColor =
283 params->TabSpecialBorderColor = add(dimmed(p.window, 0.729f), coeff(toBase(dimmed(p.highlight, 0.392f)), 1.0f, 0.66f, 1.0f));
284 params->TabSpecialHoverBorderColorSide =
285 params->TabSpecialBorderColorSide = params->TabSpecialBorderColor;
286 params->TabSpecialFontColor = p.htext;
288 params->TabUnselectedHoverBorderColorTop =
289 params->TabHoverBorderColorTop = QColor(255, 183, 0);
291 params->TabUnselectedHoverBorderColorSide =
292 params->TabHoverBorderColorSide = { {0.0f, params->BorderColor},
293 {0.3f, QColor(255, 183, 0)},
294 {1.0f, QColor(255, 183, 0)} };
296 params->TabUnselectedColor = add(dimmed(p.window, 0.02f), toBase(dimmed(vienna, 0.9264f)));
298 params->TabSelectedColor = p.light;
300 params->SeparatorColor = { {0.0f, Qt::transparent},
301 {0.075f, Qt::transparent},
302 {0.0751f, add(dimmed(p.window, 0.3125f), toBase(dimmed(vienna, 0.789f)))},
303 {0.925f, add(dimmed(p.window, 0.3125f), toBase(dimmed(vienna, 0.789f)))},
304 {0.9251f, Qt::transparent},
305 {1.0f, Qt::transparent} };
307 params->HorizontalFrameBackgroundColor =
308 { {0.0f, add(dimmed(p.window, 0.033f), coeff(toBase(dimmed(vienna, 0.9362f)), 1.0f, 1.38f, 1.0f))},
309 {0.6f, add(dimmed(p.window, 0.05f), coeff(toBase(dimmed(vienna, 0.8333f)), 1.0f, 0.588f, 1.0f))},
310 {0.6001f, add(p.window, coeff(toBase(dimmed(vienna, 0.9166f)), 1.0f, 0.82f, 1.0f))},
313 params->HorizontalFrameBorderColor = params->BorderColor;
314 params->HorizontalFrameBorderSize = 2;
315 params->TabSpacing = 4;
317 params->HideArrowColor = lcomb(p.text, p.light, 0.62f);
328 params->TabBorderRadius = 0;
329 params->TabFontColor = p.text;
330 params->ToolbarBackgroundColor = p.light;
331 const float paneDimmCoeff = (p.window.lightnessF() > 0.5f ? 0.03529f : 0.1f);
332 params->PaneColor = dimmed(p.light, paneDimmCoeff);
333 const float borderDimmCoeff = (p.window.lightnessF() > 0.5f ? 0.15f : 0.3f);
334 params->BorderColor = dimmed(params->ToolbarBackgroundColor, borderDimmCoeff);
335 params->GroupNameColor = lcomb(p.text, p.light, 0.43f);
337 params->TabSpecialColor = coeff(p.highlight, 0.5f, 0.8f, 0.8f);
338 params->TabSpecialHoverColor = coeff(p.highlight, 0.8f, 0.9f, 0.88f);
339 params->TabSpecialHoverBorderColor =
340 params->TabSpecialBorderColor = params->TabSpecialColor;
341 params->TabSpecialHoverBorderColorSide =
342 params->TabSpecialBorderColorSide = params->TabSpecialColor;
343 params->TabSpecialFontColor = p.htext;
345 params->TabUnselectedHoverBorderColorTop = dimmed(params->PaneColor, 0.04f);
346 params->TabHoverBorderColorTop = params->BorderColor;
347 params->TabUnselectedHoverBorderColorSide = params->TabUnselectedHoverBorderColorTop;
349 params->TabHoverBorderColorSide = params->BorderColor;
351 const float unselectedDimmCoeff = (p.window.lightnessF() > 0.5f ? 0.008f : 0.1f);
352 params->TabUnselectedColor = dimmed(params->ToolbarBackgroundColor, unselectedDimmCoeff);
354 params->TabSelectedColor = params->PaneColor;
356 params->SeparatorColor = { {0.0f, Qt::transparent},
357 {0.05f, Qt::transparent},
358 {0.051f, params->BorderColor},
359 {0.95f, params->BorderColor},
360 {0.951f, Qt::transparent},
361 {1.0f, Qt::transparent} };
363 params->HorizontalFrameBackgroundColor = Qt::transparent;
364 params->HorizontalFrameBorderColor = Qt::transparent;
365 params->HorizontalFrameBorderSize = 0;
366 params->TabSpacing = 2;
368 params->HideArrowColor = lcomb(p.text, p.light, 0.62f);
375 params->TabUnselectedColor = params->PaneColor;
376 params->PaneColor = params->ToolbarBackgroundColor;
377 params->TabSelectedColor = params->PaneColor;
378 params->BorderColor = dimmed(params->BorderColor, 0.1f);
379 params->TabHoverBorderColorTop = params->BorderColor;
380 params->TabHoverBorderColorSide = params->BorderColor;
381 params->SeparatorColor = { {0.0f, Qt::transparent},
382 {0.05f, Qt::transparent},
383 {0.051f, params->BorderColor},
384 {0.95f, params->BorderColor},
385 {0.951f, Qt::transparent},
386 {1.0f, Qt::transparent} };
392 auto creator =
styleMap->find(styleName);
394 throw std::runtime_error(styleName.toStdString() +
" - style is not registered!");
397 style->setObjectName(styleName);
398 return std::unique_ptr<StyleParams>(style);