From kde-kimageshop Thu Dec 02 17:25:55 2010 From: William Steidtmann Date: Thu, 02 Dec 2010 17:25:55 +0000 To: kde-kimageshop Subject: PerChannel Color filter histogram white spike patch Message-Id: <4CF7D6A3.7020302 () hbci ! com> X-MARC-Message: https://marc.info/?l=kde-kimageshop&m=129131082513092 The patch below fixes the "white spike" problem in the histogram for the PerChannel Color filter. See also Commits 1200357 and 1202552 for comparison. To recreate the (pre-patch) bug: 1) Create a 10x10 image, 8 bit sRGB. 2) Set the color to a dark gray 92,92,92. 3) Use a pixel brush to paint all (most) of the image this dark gray. 4) Use menu Filter->Adjust->Color Adjustment curves... 5) Note that the graph has little or no indication (count) in the second quadrant where this dark gray should be. After the patch, the second quadrant in step 5) will have an appropriate pixel count. Also note: the line "#define bounds(x,a,b) (xb ? b :x))" was removed because of a name conflict with image->bounds(), and because the code was not being used. William Steidtmann -------------------- Index: krita/plugins/filters/colorsfilters/kis_perchannel_filter.h =================================================================== --- krita/plugins/filters/colorsfilters/kis_perchannel_filter.h (revision 1202887) +++ krita/plugins/filters/colorsfilters/kis_perchannel_filter.h (working copy) @@ -92,7 +92,7 @@ Q_OBJECT public: - KisPerChannelConfigWidget(QWidget * parent, KisPaintDeviceSP dev, Qt::WFlags f = 0); + KisPerChannelConfigWidget(QWidget * parent, KisPaintDeviceSP dev, const QRect &bounds, Qt::WFlags f = 0); virtual ~KisPerChannelConfigWidget() {} virtual void setConfiguration(const KisPropertiesConfiguration* config); Index: krita/plugins/filters/colorsfilters/kis_perchannel_filter.cpp =================================================================== --- krita/plugins/filters/colorsfilters/kis_perchannel_filter.cpp (revision 1202887) +++ krita/plugins/filters/colorsfilters/kis_perchannel_filter.cpp (working copy) @@ -50,9 +50,8 @@ #include "widgets/kis_curve_widget.h" -#define bounds(x,a,b) (xb ? b :x)) -KisPerChannelConfigWidget::KisPerChannelConfigWidget(QWidget * parent, KisPaintDeviceSP dev, Qt::WFlags f) +KisPerChannelConfigWidget::KisPerChannelConfigWidget(QWidget * parent, KisPaintDeviceSP dev, const QRect &bounds, Qt::WFlags f) : KisConfigWidget(parent, f), m_histogram(0) { Q_ASSERT(dev); @@ -87,7 +86,7 @@ { KoHistogramProducerFactory *hpf; hpf = KoHistogramProducerFactoryRegistry::instance()->get(keys.at(0)); - m_histogram = new KisHistogram(m_dev, m_dev->exactBounds(), hpf->generate(), LINEAR); + m_histogram = new KisHistogram(m_dev, bounds, hpf->generate(), LINEAR); } connect(m_page->curveWidget, SIGNAL(modified()), this, SIGNAL(sigConfigurationItemChanged())); @@ -387,8 +386,7 @@ KisConfigWidget * KisPerChannelFilter::createConfigurationWidget(QWidget *parent, const KisPaintDeviceSP dev, const KisImageWSP image) const { - Q_UNUSED(image); - return new KisPerChannelConfigWidget(parent, dev); + return new KisPerChannelConfigWidget(parent, dev, image->bounds()); } KisFilterConfiguration * KisPerChannelFilter::factoryConfiguration(const KisPaintDeviceSP) const _______________________________________________ kimageshop mailing list kimageshop@kde.org https://mail.kde.org/mailman/listinfo/kimageshop