27#include <QSignalBlocker>
32const int SAMPLE_MERGED = 0;
40 setObjectName(
"tool_colorsampler");
85 if (
m_config->addColorToCurrentPalette) {
94 KisSwatchGroup::SwatchInfo info =
95 palette->getClosestSwatchInfo(color);
97 if (info.swatch.color() != color) {
109 KisConfig(
true).colorSamplerPreviewStyle());
205 QRectF colorPreviewDocUpdateRect;
210 qreal xoffset = 2.0/zoomX;
211 qreal yoffset = 2.0/zoomY;
217 if (!colorPreviewDocUpdateRect.isEmpty()) {
218 colorPreviewDocUpdateRect = colorPreviewDocUpdateRect.adjusted(-xoffset,-yoffset,xoffset,yoffset);
225 if (!colorPreviewDocUpdateRect.isEmpty()){
246 for (
int i = 0; i < channels.count(); ++i) {
250 for (
int i = 0; i < channels.count(); ++i) {
253 pc.
name = channels[i]->name();
261 sampledChannels[channels[i]->displayPosition()] = pc;
266 QTreeWidgetItem *item =
new QTreeWidgetItem(
m_optionsWidget->listViewChannels);
267 item->setText(0, pc.
name);
272 if (qEnvironmentVariableIsSet(
"KRITA_DEBUG_DISPLAY_COLOR")) {
281 for (
int i = 0; i < values.size(); i++) {
282 QTreeWidgetItem *item =
new QTreeWidgetItem(
m_optionsWidget->listViewChannels);
283 item->setText(0, QString(
"DisplayCh%1").arg(i));
284 item->setText(1, QString::number(values[i]));
298 specialSpacer->setObjectName(
"SpecialSpacer");
299 specialSpacer->setFixedSize(0, 0);
308 QOverload<int>::of(&QComboBox::activated),
315 i18nc(
"{n} is the number value, % is the percent sign",
"{n}%"));
336 KConfigGroup config = KSharedConfig::openConfig()->group(
toolId());
337 QString paletteName = config.readEntry(
"ColorSamplerPalette",
"");
338 if (!paletteName.isEmpty()) {
342 if (name == paletteName) {
381 m_config->addColorToCurrentPalette = state;
402 KConfigGroup config = KSharedConfig::openConfig()->group(
toolId());
403 config.writeEntry(
"ColorSamplerPalette", paletteName);
float value(const T *src, size_t ch)
const KoID Float32BitsColorDepthID("F32", ki18n("32-bit float/channel"))
const KoID RGBAColorModelID("RGBA", ki18n("RGB/Alpha"))
static KisConfig::ColorSamplerPreviewStyle getColorSamplerPreviewStyleValue(const QComboBox *cmb)
static void setColorSamplerPreviewStyleItems(QComboBox *cmb)
static void setColorSamplerPreviewStyleIndexByValue(QComboBox *cmb, KisConfig::ColorSamplerPreviewStyle style)
void activate(bool sampleCurrentLayer, bool pickFgColor)
void setUpdateGlobalColor(bool value)
void paint(QPainter &gc, const KoViewConverter &converter)
void updateCursor(bool sampleCurrentLayer, bool pickFgColor)
void continueAction(const QPointF &docPoint)
void startAction(const QPointF &docPoint, int radius, int blend)
QRectF colorPreviewDocRect(const QPointF &docPoint)
KisDisplayColorConverter displayColorConverter
void updateCanvas(const QRectF &rc) override
const KoViewConverter * viewConverter() const override
static KisConfigNotifier * instance()
void sigColorSamplerPreviewStyleChanged()
void setColorSamplerPreviewStyle(ColorSamplerPreviewStyle style)
KoColor applyDisplayFiltering(const KoColor &srcColor, const KoID &bitDepthId) const
void setColor(const KoColor &color)
The KisTagFilterResourceProxyModel class filters the resources by tag or resource name.
KoResourceSP resourceForIndex(QModelIndex index=QModelIndex()) const override
resourceForIndex returns a properly versioned and id'ed resource object
QPointer< KoCanvasResourceProvider > resourceManager
virtual QString channelValueText(const quint8 *pixel, quint32 channelIndex) const =0
QList< KoChannelInfo * > channels
virtual KoID colorModelId() const =0
virtual void normalisedChannelsValue(const quint8 *pixel, QVector< float > &channels) const =0
virtual QString normalisedChannelValueText(const quint8 *pixel, quint32 channelIndex) const =0
const KoColorSpace * colorSpace() const
return the current colorSpace
QPointF point
The point in document coordinates.
virtual void zoom(qreal *zoomX, qreal *zoomY) const
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
void setText(QSpinBox *spinBox, const QStringView textTemplate)
rgba palette[MAX_PALETTE]