Skip to content
Snippets Groups Projects
colortheme.cpp 1.27 KiB
Newer Older
#include "colortheme.h"

#include <stdexcept>

namespace rendering {

ColorTheme::ColorTheme(qreal hue, IdenticonStyle &style)
{
    if (style.hues().size() > 0) {
        // Multiply with 0.999 to change the range to [0, 1)
        int hueIndex = qFloor(0.999 * hue * style.hues().size());
        hue          = style.hues().at(hueIndex);
    darkGray_ =
      ColorUtils::fromHslCompensated(hue, style.grayscaleSaturation(), style.minGrayLightness());
    midColor_ = ColorUtils::fromHslCompensated(
      hue, style.colorSaturation(), (style.minColorLightness() + style.maxColorLightness()) / 2);
    lightGray_ =
      ColorUtils::fromHslCompensated(hue, style.grayscaleSaturation(), style.maxGrayLightness());
    lightColor_ =
      ColorUtils::fromHslCompensated(hue, style.colorSaturation(), style.maxColorLightness());
    darkColor_ =
      ColorUtils::fromHslCompensated(hue, style.colorSaturation(), style.minColorLightness());
QColor &
ColorTheme::operator[](int index)
    if (index == 0)
        return darkGray_;
    if (index == 1)
        return midColor_;
    if (index == 2)
        return lightGray_;
    if (index == 3)
        return lightColor_;
    if (index == 4)
        return darkColor_;
    throw std::out_of_range("index");
}

} // namespace rendering