void HsvSliders::onSetColor(const app::Color& color) { setAbsSliderValue(0, color.getHue()); setAbsSliderValue(1, color.getSaturation()); setAbsSliderValue(2, color.getValue()); setAbsSliderValue(3, color.getAlpha()); }
void RgbSliders::onSetColor(const app::Color& color) { setAbsSliderValue(0, color.getRed()); setAbsSliderValue(1, color.getGreen()); setAbsSliderValue(2, color.getBlue()); setAbsSliderValue(3, color.getAlpha()); }
void draw_color(ui::Graphics* g, const Rect& rc, const app::Color& color) { if (rc.w < 1 || rc.h < 1) return; app::Color::Type type = color.getType(); int alpha = color.getAlpha(); if (alpha < 255) { if (rc.w == rc.h) rectgrid(g, rc, gfx::Size(rc.w/2, rc.h/2)); else rectgrid(g, rc, gfx::Size(rc.w/4, rc.h/2)); } if (alpha > 0) { if (type == app::Color::IndexType) { int index = color.getIndex(); if (index >= 0 && index < get_current_palette()->size()) { g->fillRect(color_utils::color_for_ui(color), rc); } else { g->fillRect(gfx::rgba(0, 0, 0), rc); g->drawLine(gfx::rgba(255, 255, 255), gfx::Point(rc.x+rc.w-2, rc.y+1), gfx::Point(rc.x+1, rc.y+rc.h-2)); } } else g->fillRect(color_utils::color_for_ui(color), rc); } }
void ColorSliders::onSetColor(const app::Color& color) { setAbsSliderValue(Channel::Red, color.getRed()); setAbsSliderValue(Channel::Green, color.getGreen()); setAbsSliderValue(Channel::Blue, color.getBlue()); setAbsSliderValue(Channel::HsvHue, int(color.getHsvHue())); setAbsSliderValue(Channel::HsvSaturation, int(color.getHsvSaturation() * 100.0)); setAbsSliderValue(Channel::HsvValue, int(color.getHsvValue() * 100.0)); setAbsSliderValue(Channel::HslHue, int(color.getHslHue())); setAbsSliderValue(Channel::HslSaturation, int(color.getHslSaturation() * 100.0)); setAbsSliderValue(Channel::HslLightness, int(color.getHslLightness() * 100.0)); setAbsSliderValue(Channel::Gray, color.getGray()); setAbsSliderValue(Channel::Alpha, color.getAlpha()); }
void ColorPopup::findBestfitIndex(const app::Color& color) { if (!m_colorPalette) return; // Find bestfit palette entry int r = color.getRed(); int g = color.getGreen(); int b = color.getBlue(); int a = color.getAlpha(); // Search for the closest color to the RGB values int i = get_current_palette()->findBestfit(r, g, b, a, 0); if (i >= 0) { m_colorPalette->deselect(); m_colorPalette->selectColor(i); } }
void ColorPopup::setColor(const app::Color& color, const SetColorOptions options) { m_color = color; if (m_simpleColors) { int r = color.getRed(); int g = color.getGreen(); int b = color.getBlue(); int a = color.getAlpha(); int i = g_simplePal->findExactMatch(r, g, b, a, -1); if (i >= 0) m_simpleColors->selectColor(i); else m_simpleColors->deselect(); } if (color.getType() == app::Color::IndexType) { if (m_colorPalette) { m_colorPalette->deselect(); m_colorPalette->selectColor(color.getIndex()); } } m_sliders.setColor(m_color); if (!m_disableHexUpdate) m_hexColorEntry.setColor(m_color); if (options == ChangeType) selectColorType(m_color.getType()); // Set the new color Shade shade = m_oldAndNew.getShade(); shade.resize(2); shade[1] = (color.getType() == app::Color::IndexType ? color.toRgb(): color); if (!m_insideChange) shade[0] = shade[1]; m_oldAndNew.setShade(shade); }
void GraySlider::onSetColor(const app::Color& color) { setAbsSliderValue(0, color.getGray()); setAbsSliderValue(1, color.getAlpha()); }
void EyedropperCommand::pickSample(const doc::Site& site, const gfx::Point& pixelPos, app::Color& color) { // Check if we've to grab alpha channel or the merged color. Preferences& pref = Preferences::instance(); bool allLayers = (pref.eyedropper.sample() == app::gen::EyedropperSample::ALL_LAYERS); ColorPicker picker; picker.pickColor(site, pixelPos, (allLayers ? ColorPicker::FromComposition: ColorPicker::FromActiveLayer)); app::gen::EyedropperChannel channel = pref.eyedropper.channel(); app::Color picked = picker.color(); switch (channel) { case app::gen::EyedropperChannel::COLOR_ALPHA: color = picked; break; case app::gen::EyedropperChannel::COLOR: if (picked.getAlpha() > 0) color = app::Color::fromRgb(picked.getRed(), picked.getGreen(), picked.getBlue(), color.getAlpha()); break; case app::gen::EyedropperChannel::ALPHA: switch (color.getType()) { case app::Color::RgbType: case app::Color::IndexType: color = app::Color::fromRgb(color.getRed(), color.getGreen(), color.getBlue(), picked.getAlpha()); break; case app::Color::HsvType: color = app::Color::fromHsv(color.getHue(), color.getSaturation(), color.getValue(), picked.getAlpha()); break; case app::Color::GrayType: color = app::Color::fromGray(color.getGray(), picked.getAlpha()); break; } break; case app::gen::EyedropperChannel::RGBA: if (picked.getType() == app::Color::RgbType) color = picked; else color = app::Color::fromRgb(picked.getRed(), picked.getGreen(), picked.getBlue(), picked.getAlpha()); break; case app::gen::EyedropperChannel::RGB: if (picked.getAlpha() > 0) color = app::Color::fromRgb(picked.getRed(), picked.getGreen(), picked.getBlue(), color.getAlpha()); break; case app::gen::EyedropperChannel::HSVA: if (picked.getType() == app::Color::HsvType) color = picked; else color = app::Color::fromHsv(picked.getHue(), picked.getSaturation(), picked.getValue(), picked.getAlpha()); break; case app::gen::EyedropperChannel::HSV: if (picked.getAlpha() > 0) color = app::Color::fromHsv(picked.getHue(), picked.getSaturation(), picked.getValue(), color.getAlpha()); break; case app::gen::EyedropperChannel::GRAYA: if (picked.getType() == app::Color::GrayType) color = picked; else color = app::Color::fromGray(picked.getGray(), picked.getAlpha()); break; case app::gen::EyedropperChannel::GRAY: if (picked.getAlpha() > 0) color = app::Color::fromGray(picked.getGray(), color.getAlpha()); break; case app::gen::EyedropperChannel::INDEX: color = app::Color::fromIndex(picked.getIndex()); break; } }