From kde-commits Sun Jun 30 21:07:55 2013 From: Sahil Nagpal Date: Sun, 30 Jun 2013 21:07:55 +0000 To: kde-commits Subject: [calligra/krita-gsoc-filters-sahil] krita/plugins/colorspaces/extensions: Renaming Files Message-Id: X-MARC-Message: https://marc.info/?l=kde-commits&m=137262648531504 Git commit ad6c5c9722464a80b9d83f19ae28f2b8c5c361b4 by Sahil Nagpal. Committed on 30/06/2013 at 20:22. Pushed by sahilnagpal into branch 'krita-gsoc-filters-sahil'. Renaming Files M +6 -6 krita/plugins/colorspaces/extensions/CMakeLists.txt C +29 -30 krita/plugins/colorspaces/extensions/kis_burnhighlights_adju= stment.cpp [from: krita/plugins/colorspaces/extensions/kis_dodgehighlights_= adjustment.cpp - 061% similarity] M +2 -2 krita/plugins/colorspaces/extensions/kis_burnhighlights_adju= stment.h C +27 -28 krita/plugins/colorspaces/extensions/kis_burnmidtones_adjust= ment.cpp [from: krita/plugins/colorspaces/extensions/kis_dodgehighlights_ad= justment.cpp - 065% similarity] M +2 -2 krita/plugins/colorspaces/extensions/kis_burnmidtones_adjust= ment.h C +38 -31 krita/plugins/colorspaces/extensions/kis_burnshadows_adjustm= ent.cpp [from: krita/plugins/colorspaces/extensions/kis_dodgehighlights_adj= ustment.cpp - 056% similarity] M +2 -2 krita/plugins/colorspaces/extensions/kis_burnshadows_adjustm= ent.h M +13 -13 krita/plugins/colorspaces/extensions/kis_dodgehighlights_adj= ustment.cpp M +2 -2 krita/plugins/colorspaces/extensions/kis_dodgehighlights_adj= ustment.h C +47 -46 krita/plugins/colorspaces/extensions/kis_dodgemidtones_adjus= tment.cpp [from: krita/plugins/colorspaces/extensions/kis_dodgehighlights_a= djustment.cpp - 051% similarity] M +2 -2 krita/plugins/colorspaces/extensions/kis_dodgemidtones_adjus= tment.h C +31 -27 krita/plugins/colorspaces/extensions/kis_dodgeshadows_adjust= ment.cpp [from: krita/plugins/colorspaces/extensions/kis_dodgehighlights_ad= justment.cpp - 060% similarity] M +2 -2 krita/plugins/colorspaces/extensions/kis_dodgeshadows_adjust= ment.h A +271 -0 krita/plugins/colorspaces/extensions/kis_hsv_adjustment.cpp = [License: LGPL (v2)] http://commits.kde.org/calligra/ad6c5c9722464a80b9d83f19ae28f2b8c5c361b4 diff --git a/krita/plugins/colorspaces/extensions/CMakeLists.txt b/krita/pl= ugins/colorspaces/extensions/CMakeLists.txt index cd9d6ce..3c197c4 100644 --- a/krita/plugins/colorspaces/extensions/CMakeLists.txt +++ b/krita/plugins/colorspaces/extensions/CMakeLists.txt @@ -1,12 +1,12 @@ set( extensions_plugin_PART_SRCS = extensions_plugin.cc = -kis_hsv_adjustment.cc +kis_hsv_adjustment.cpp kis_dodgehighlights_adjustment.cpp -kis_dodgemidtones_adjustment.cc -kis_dodgeshadows_adjustment.cc -kis_burnhighlights_adjustment.cc -kis_burnmidtones_adjustment.cc -kis_burnshadows_adjustment.cc +kis_dodgemidtones_adjustment.cpp +kis_dodgeshadows_adjustment.cpp +kis_burnhighlights_adjustment.cpp +kis_burnmidtones_adjustment.cpp +kis_burnshadows_adjustment.cpp ) = kde4_add_plugin( krita_colorspaces_extensions ${extensions_plugin_PART_SRC= S} ) diff --git a/krita/plugins/colorspaces/extensions/kis_dodgehighlights_adjus= tment.cpp b/krita/plugins/colorspaces/extensions/kis_burnhighlights_adjustm= ent.cpp similarity index 61% copy from krita/plugins/colorspaces/extensions/kis_dodgehighlights_adjustme= nt.cpp copy to krita/plugins/colorspaces/extensions/kis_burnhighlights_adjustment.= cpp index df0d1d9..83e625c 100644 --- a/krita/plugins/colorspaces/extensions/kis_dodgehighlights_adjustment.c= pp +++ b/krita/plugins/colorspaces/extensions/kis_burnhighlights_adjustment.cpp @@ -4,7 +4,7 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; version 2 - * of the License. + * of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -17,7 +17,7 @@ * Boston, MA 02110-1301, USA. */ = -#include "kis_dodgehighlights_adjustment.h" +#include "kis_burnhighlights_adjustment.h" #include = #include @@ -31,42 +31,41 @@ #include = template -class KisDodgeHighlightsAdjustment : public KoColorTransformation +class KisBurnHighlightsAdjustment : public KoColorTransformation { typedef KoBgrTraits<_channel_type_> RGBTrait; typedef typename RGBTrait::Pixel RGBPixel; = public: - KisDodgeHighlightsAdjustment(){}; + KisBurnHighlightsAdjustment(){}; = void transform(const quint8 *srcU8, quint8 *dstU8, qint32 nPixels) const { - const RGBPixel* src =3D reinterpret_cast(srcU8); + const RGBPixel* src =3D reinterpret_cast(srcU8); RGBPixel* dst =3D reinterpret_cast(dstU8); - float r, g, b; - while(nPixels > 0) - { = - r =3D exposure * KoColorSpaceMaths<_channel_type_, float>::sca= leToA(src->red); - g =3D exposure * KoColorSpaceMaths<_channel_type_, float>::sca= leToA(src->green); - b =3D exposure * KoColorSpaceMaths<_channel_type_, float>::sca= leToA(src->blue); + float value_red, value_green, value_blue; + while(nPixels > 0) { + + value_red =3D (1.0 - exposure * (0.33333)) * KoColorSpaceMaths= <_channel_type_, float>::scaleToA(src->red); + value_green =3D (1.0 - exposure * (0.33333)) * KoColorSpaceMat= hs<_channel_type_, float>::scaleToA(src->green); + value_blue =3D (1.0 - exposure * (0.33333)) * KoColorSpaceMath= s<_channel_type_, float>::scaleToA(src->blue); = - dst->red =3D KoColorSpaceMaths< float, _channel_type_>::scaleT= oA(r); - dst->green =3D KoColorSpaceMaths< float, _channel_type_ >::sca= leToA(g); - dst->blue =3D KoColorSpaceMaths< float, _channel_type_>::scale= ToA(b); + dst->red =3D KoColorSpaceMaths< float, _channel_type_>::scaleT= oA(value_red); + dst->green =3D KoColorSpaceMaths< float, _channel_type_ >::sca= leToA(value_green); + dst->blue =3D KoColorSpaceMaths< float, _channel_type_>::scale= ToA(value_blue); dst->alpha =3D src->alpha; = --nPixels; ++src; - ++dst; + ++dst; = } - } = virtual QList parameters() const { - QList list; - list << "exposure"; - return list; + QList list; + list << "exposure"; + return list; } = virtual int parameterId(const QString& name) const @@ -92,12 +91,12 @@ private: float exposure; }; = - KisDodgeHighlightsAdjustmentFactory::KisDodgeHighlightsAdjustmentFactory() - : KoColorTransformationFactory("DodgeHighlights", i18n("DODGE Adjustme= nt")) + KisBurnHighlightsAdjustmentFactory::KisBurnHighlightsAdjustmentFactory() + : KoColorTransformationFactory("BurnHighlights", i18n("BurnHighlights = Adjustment")) { } = -QList< QPair< KoID, KoID > > KisDodgeHighlightsAdjustmentFactory::supporte= dModels() const +QList< QPair< KoID, KoID > > KisBurnHighlightsAdjustmentFactory::supported= Models() const { QList< QPair< KoID, KoID > > l; l.append(QPair< KoID, KoID >(RGBAColorModelID , Integer8BitsColorDepth= ID)); @@ -106,21 +105,21 @@ QList< QPair< KoID, KoID > > KisDodgeHighlightsAdjust= mentFactory::supportedModel return l; } = -KoColorTransformation* KisDodgeHighlightsAdjustmentFactory::createTransfor= mation(const KoColorSpace* colorSpace, QHash parameters)= const +KoColorTransformation* KisBurnHighlightsAdjustmentFactory::createTransform= ation(const KoColorSpace* colorSpace, QHash parameters) = const { KoColorTransformation * adj; if (colorSpace->colorModelId() !=3D RGBAColorModelID) { - kError() << "Unsupported color space " << colorSpace->id() << " in= KisDodgeHighlightsAdjustment::createTransformation"; + kError() << "Unsupported color space " << colorSpace->id() << " in= KisBurnHighlightsAdjustment::createTransformation"; return 0; } - if (colorSpace->colorDepthId() =3D=3D Float32BitsColorDepthID) { - adj =3D new KisDodgeHighlightsAdjustment< float >(); + if (colorSpace->colorDepthId() =3D=3D Integer8BitsColorDepthID) { + adj =3D new KisBurnHighlightsAdjustment< quint8 >(); } else if (colorSpace->colorDepthId() =3D=3D Integer16BitsColorDepthID= ) { - adj =3D new KisDodgeHighlightsAdjustment< quint16 >(); - } else if (colorSpace->colorDepthId() =3D=3D Integer8BitsColorDepthID)= { - adj =3D new KisDodgeHighlightsAdjustment< quint8 >(); + adj =3D new KisBurnHighlightsAdjustment< quint16 >(); + } else if (colorSpace->colorDepthId() =3D=3D Float32BitsColorDepthID) { + adj =3D new KisBurnHighlightsAdjustment< float >(); } else { - kError() << "Unsupported color space " << colorSpace->id() << " in= KisDodgeHighlightsAdjustment::createTransformation"; + kError() << "Unsupported color space " << colorSpace->id() << " in= KisBurnHighlightsAdjustment::createTransformation"; return 0; } adj->setParameters(parameters); diff --git a/krita/plugins/colorspaces/extensions/kis_burnhighlights_adjust= ment.h b/krita/plugins/colorspaces/extensions/kis_burnhighlights_adjustment= .h index 9648231..9d8c768 100644 --- a/krita/plugins/colorspaces/extensions/kis_burnhighlights_adjustment.h +++ b/krita/plugins/colorspaces/extensions/kis_burnhighlights_adjustment.h @@ -4,7 +4,7 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; version 2 - * of the License. + * of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -34,4 +34,4 @@ = }; = - #endif \ No newline at end of file + #endif diff --git a/krita/plugins/colorspaces/extensions/kis_dodgehighlights_adjus= tment.cpp b/krita/plugins/colorspaces/extensions/kis_burnmidtones_adjustmen= t.cpp similarity index 65% copy from krita/plugins/colorspaces/extensions/kis_dodgehighlights_adjustme= nt.cpp copy to krita/plugins/colorspaces/extensions/kis_burnmidtones_adjustment.cpp index df0d1d9..c23ec45 100644 --- a/krita/plugins/colorspaces/extensions/kis_dodgehighlights_adjustment.c= pp +++ b/krita/plugins/colorspaces/extensions/kis_burnmidtones_adjustment.cpp @@ -4,7 +4,7 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; version 2 - * of the License. + * of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -17,7 +17,7 @@ * Boston, MA 02110-1301, USA. */ = -#include "kis_dodgehighlights_adjustment.h" +#include "kis_burnmidtones_adjustment.h" #include = #include @@ -31,50 +31,49 @@ #include = template -class KisDodgeHighlightsAdjustment : public KoColorTransformation +class KisBurnMidtonesAdjustment : public KoColorTransformation { typedef KoBgrTraits<_channel_type_> RGBTrait; typedef typename RGBTrait::Pixel RGBPixel; = public: - KisDodgeHighlightsAdjustment(){}; + KisBurnMidtonesAdjustment(){}; = void transform(const quint8 *srcU8, quint8 *dstU8, qint32 nPixels) const { const RGBPixel* src =3D reinterpret_cast(srcU8); RGBPixel* dst =3D reinterpret_cast(dstU8); - float r, g, b; - while(nPixels > 0) - { = - r =3D exposure * KoColorSpaceMaths<_channel_type_, float>::sca= leToA(src->red); - g =3D exposure * KoColorSpaceMaths<_channel_type_, float>::sca= leToA(src->green); - b =3D exposure * KoColorSpaceMaths<_channel_type_, float>::sca= leToA(src->blue); + float value_red, value_green, value_blue; + while(nPixels > 0) { + + value_red =3D pow(KoColorSpaceMaths<_channel_type_, float>::sc= aleToA(src->red), (1.0 + exposure * (0.333333))); + value_green =3D pow(KoColorSpaceMaths<_channel_type_, float>::= scaleToA(src->green), (1.0 + exposure * (0.333333))); + value_blue =3D pow(KoColorSpaceMaths<_channel_type_, float>::s= caleToA(src->blue), (1.0 + exposure * (0.333333))); = - dst->red =3D KoColorSpaceMaths< float, _channel_type_>::scaleT= oA(r); - dst->green =3D KoColorSpaceMaths< float, _channel_type_ >::sca= leToA(g); - dst->blue =3D KoColorSpaceMaths< float, _channel_type_>::scale= ToA(b); + dst->red =3D KoColorSpaceMaths< float, _channel_type_ >::scale= ToA(value_red); + dst->green =3D KoColorSpaceMaths< float, _channel_type_ >::sca= leToA(value_green); + dst->blue =3D KoColorSpaceMaths< float, _channel_type_ >::scal= eToA(value_blue); dst->alpha =3D src->alpha; = --nPixels; ++src; ++dst; } - } = virtual QList parameters() const { - QList list; - list << "exposure"; - return list; + QList list; + list << "exposure"; + return list; } = virtual int parameterId(const QString& name) const - { + { if (name =3D=3D "exposure") return 0; return -1; - } + } = virtual void setParameter(int id, const QVariant& parameter) { @@ -92,12 +91,12 @@ private: float exposure; }; = - KisDodgeHighlightsAdjustmentFactory::KisDodgeHighlightsAdjustmentFactory() - : KoColorTransformationFactory("DodgeHighlights", i18n("DODGE Adjustme= nt")) + KisBurnMidtonesAdjustmentFactory::KisBurnMidtonesAdjustmentFactory() + : KoColorTransformationFactory("BurnMidtones", i18n("BurnMidtones Adju= stment")) { } = -QList< QPair< KoID, KoID > > KisDodgeHighlightsAdjustmentFactory::supporte= dModels() const +QList< QPair< KoID, KoID > > KisBurnMidtonesAdjustmentFactory::supportedMo= dels() const { QList< QPair< KoID, KoID > > l; l.append(QPair< KoID, KoID >(RGBAColorModelID , Integer8BitsColorDepth= ID)); @@ -106,21 +105,21 @@ QList< QPair< KoID, KoID > > KisDodgeHighlightsAdjust= mentFactory::supportedModel return l; } = -KoColorTransformation* KisDodgeHighlightsAdjustmentFactory::createTransfor= mation(const KoColorSpace* colorSpace, QHash parameters)= const +KoColorTransformation* KisBurnMidtonesAdjustmentFactory::createTransformat= ion(const KoColorSpace* colorSpace, QHash parameters) co= nst { KoColorTransformation * adj; if (colorSpace->colorModelId() !=3D RGBAColorModelID) { - kError() << "Unsupported color space " << colorSpace->id() << " in= KisDodgeHighlightsAdjustment::createTransformation"; + kError() << "Unsupported color space " << colorSpace->id() << " in= KisBurnMidtonesAdjustment::createTransformation"; return 0; } if (colorSpace->colorDepthId() =3D=3D Float32BitsColorDepthID) { - adj =3D new KisDodgeHighlightsAdjustment< float >(); + adj =3D new KisBurnMidtonesAdjustment< float >(); } else if (colorSpace->colorDepthId() =3D=3D Integer16BitsColorDepthID= ) { - adj =3D new KisDodgeHighlightsAdjustment< quint16 >(); + adj =3D new KisBurnMidtonesAdjustment< quint16 >(); } else if (colorSpace->colorDepthId() =3D=3D Integer8BitsColorDepthID)= { - adj =3D new KisDodgeHighlightsAdjustment< quint8 >(); + adj =3D new KisBurnMidtonesAdjustment< quint8 >(); } else { - kError() << "Unsupported color space " << colorSpace->id() << " in= KisDodgeHighlightsAdjustment::createTransformation"; + kError() << "Unsupported color space " << colorSpace->id() << " in= KisBurnMidtonesAdjustment::createTransformation"; return 0; } adj->setParameters(parameters); diff --git a/krita/plugins/colorspaces/extensions/kis_burnmidtones_adjustme= nt.h b/krita/plugins/colorspaces/extensions/kis_burnmidtones_adjustment.h index 4b9597b..22cc230 100644 --- a/krita/plugins/colorspaces/extensions/kis_burnmidtones_adjustment.h +++ b/krita/plugins/colorspaces/extensions/kis_burnmidtones_adjustment.h @@ -4,7 +4,7 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; version 2 - * of the License. + * of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -34,4 +34,4 @@ = }; = - #endif \ No newline at end of file + #endif diff --git a/krita/plugins/colorspaces/extensions/kis_dodgehighlights_adjus= tment.cpp b/krita/plugins/colorspaces/extensions/kis_burnshadows_adjustment= .cpp similarity index 56% copy from krita/plugins/colorspaces/extensions/kis_dodgehighlights_adjustme= nt.cpp copy to krita/plugins/colorspaces/extensions/kis_burnshadows_adjustment.cpp index df0d1d9..492a833 100644 --- a/krita/plugins/colorspaces/extensions/kis_dodgehighlights_adjustment.c= pp +++ b/krita/plugins/colorspaces/extensions/kis_burnshadows_adjustment.cpp @@ -4,7 +4,7 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; version 2 - * of the License. + * of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -17,7 +17,7 @@ * Boston, MA 02110-1301, USA. */ = -#include "kis_dodgehighlights_adjustment.h" +#include "kis_burnshadows_adjustment.h" #include = #include @@ -31,42 +31,49 @@ #include = template -class KisDodgeHighlightsAdjustment : public KoColorTransformation -{ +class KisBurnShadowsAdjustment : public KoColorTransformation + { typedef KoBgrTraits<_channel_type_> RGBTrait; typedef typename RGBTrait::Pixel RGBPixel; = public: - KisDodgeHighlightsAdjustment(){}; + KisBurnShadowsAdjustment(){}; = void transform(const quint8 *srcU8, quint8 *dstU8, qint32 nPixels) const { - const RGBPixel* src =3D reinterpret_cast(srcU8); + const RGBPixel* src =3D reinterpret_cast(srcU8); RGBPixel* dst =3D reinterpret_cast(dstU8); - float r, g, b; - while(nPixels > 0) - { = - r =3D exposure * KoColorSpaceMaths<_channel_type_, float>::sca= leToA(src->red); - g =3D exposure * KoColorSpaceMaths<_channel_type_, float>::sca= leToA(src->green); - b =3D exposure * KoColorSpaceMaths<_channel_type_, float>::sca= leToA(src->blue); + float factor, value_red, value_green, value_blue, new_value_red, n= ew_value_green, new_value_blue; + while (nPixels > 0) { + + factor =3D exposure * 0.333333; + value_red =3D KoColorSpaceMaths<_channel_type_, float>::scale= ToA(src->red); + value_green =3D KoColorSpaceMaths<_channel_type_, float>::sca= leToA(src->green); + value_blue =3D KoColorSpaceMaths<_channel_type_, float>::scal= eToA(src->blue); + + if( value_red < factor ) new_value_red =3D 0; + else new_value_red =3D (value_red - factor)/(1 - factor); + if( value_green < factor ) new_value_green =3D 0; + else new_value_green =3D (value_green - factor)/(1 - factor); + if( value_blue < factor ) new_value_blue =3D 0; + else new_value_blue =3D (value_blue - factor)/(1 - factor); = - dst->red =3D KoColorSpaceMaths< float, _channel_type_>::scaleT= oA(r); - dst->green =3D KoColorSpaceMaths< float, _channel_type_ >::sca= leToA(g); - dst->blue =3D KoColorSpaceMaths< float, _channel_type_>::scale= ToA(b); + dst->red =3D KoColorSpaceMaths< float, _channel_type_ >::scale= ToA(new_value_red); + dst->green =3D KoColorSpaceMaths< float, _channel_type_ >::sca= leToA(new_value_green); + dst->blue =3D KoColorSpaceMaths< float, _channel_type_ >::scal= eToA(new_value_blue); dst->alpha =3D src->alpha; = --nPixels; ++src; ++dst; } - - } + } = virtual QList parameters() const { - QList list; - list << "exposure"; - return list; + QList list; + list << "exposure"; + return list; } = virtual int parameterId(const QString& name) const @@ -92,12 +99,12 @@ private: float exposure; }; = - KisDodgeHighlightsAdjustmentFactory::KisDodgeHighlightsAdjustmentFactory() - : KoColorTransformationFactory("DodgeHighlights", i18n("DODGE Adjustme= nt")) + KisBurnShadowsAdjustmentFactory::KisBurnShadowsAdjustmentFactory() + : KoColorTransformationFactory("BurnShadows", i18n("BurnShadows Adjust= ment")) { } = -QList< QPair< KoID, KoID > > KisDodgeHighlightsAdjustmentFactory::supporte= dModels() const +QList< QPair< KoID, KoID > > KisBurnShadowsAdjustmentFactory::supportedMod= els() const { QList< QPair< KoID, KoID > > l; l.append(QPair< KoID, KoID >(RGBAColorModelID , Integer8BitsColorDepth= ID)); @@ -106,21 +113,21 @@ QList< QPair< KoID, KoID > > KisDodgeHighlightsAdjust= mentFactory::supportedModel return l; } = -KoColorTransformation* KisDodgeHighlightsAdjustmentFactory::createTransfor= mation(const KoColorSpace* colorSpace, QHash parameters)= const +KoColorTransformation* KisBurnShadowsAdjustmentFactory::createTransformati= on(const KoColorSpace* colorSpace, QHash parameters) con= st { KoColorTransformation * adj; if (colorSpace->colorModelId() !=3D RGBAColorModelID) { - kError() << "Unsupported color space " << colorSpace->id() << " in= KisDodgeHighlightsAdjustment::createTransformation"; + kError() << "Unsupported color space " << colorSpace->id() << " in= KisBurnShadowsAdjustment::createTransformation"; return 0; } - if (colorSpace->colorDepthId() =3D=3D Float32BitsColorDepthID) { - adj =3D new KisDodgeHighlightsAdjustment< float >(); + if (colorSpace->colorDepthId() =3D=3D Integer8BitsColorDepthID) { + adj =3D new KisBurnShadowsAdjustment< quint8 >(); } else if (colorSpace->colorDepthId() =3D=3D Integer16BitsColorDepthID= ) { - adj =3D new KisDodgeHighlightsAdjustment< quint16 >(); - } else if (colorSpace->colorDepthId() =3D=3D Integer8BitsColorDepthID)= { - adj =3D new KisDodgeHighlightsAdjustment< quint8 >(); + adj =3D new KisBurnShadowsAdjustment< quint16 >(); + } else if (colorSpace->colorDepthId() =3D=3D Float32BitsColorDepthID) { + adj =3D new KisBurnShadowsAdjustment< float >(); } else { - kError() << "Unsupported color space " << colorSpace->id() << " in= KisDodgeHighlightsAdjustment::createTransformation"; + kError() << "Unsupported color space " << colorSpace->id() << " in= KisBurnShadowsAdjustment::createTransformation"; return 0; } adj->setParameters(parameters); diff --git a/krita/plugins/colorspaces/extensions/kis_burnshadows_adjustmen= t.h b/krita/plugins/colorspaces/extensions/kis_burnshadows_adjustment.h index 61ec996..ccf5870 100644 --- a/krita/plugins/colorspaces/extensions/kis_burnshadows_adjustment.h +++ b/krita/plugins/colorspaces/extensions/kis_burnshadows_adjustment.h @@ -4,7 +4,7 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; version 2 - * of the License. + * of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -34,4 +34,4 @@ = }; = - #endif \ No newline at end of file + #endif diff --git a/krita/plugins/colorspaces/extensions/kis_dodgehighlights_adjus= tment.cpp b/krita/plugins/colorspaces/extensions/kis_dodgehighlights_adjust= ment.cpp index df0d1d9..4858ac9 100644 --- a/krita/plugins/colorspaces/extensions/kis_dodgehighlights_adjustment.c= pp +++ b/krita/plugins/colorspaces/extensions/kis_dodgehighlights_adjustment.c= pp @@ -4,7 +4,7 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; version 2 - * of the License. + * of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -43,16 +43,16 @@ public: { const RGBPixel* src =3D reinterpret_cast(srcU8); RGBPixel* dst =3D reinterpret_cast(dstU8); - float r, g, b; - while(nPixels > 0) - { = - r =3D exposure * KoColorSpaceMaths<_channel_type_, float>::sca= leToA(src->red); - g =3D exposure * KoColorSpaceMaths<_channel_type_, float>::sca= leToA(src->green); - b =3D exposure * KoColorSpaceMaths<_channel_type_, float>::sca= leToA(src->blue); + float value_red, value_green, value_blue; + while(nPixels > 0) { + + value_red =3D (1.0 + exposure * (0.33333)) * KoColorSpaceMaths= <_channel_type_, float>::scaleToA(src->red); + value_green =3D (1.0 + exposure * (0.33333)) * KoColorSpaceMat= hs<_channel_type_, float>::scaleToA(src->green); + value_blue =3D (1.0 + exposure * (0.33333)) * KoColorSpaceMath= s<_channel_type_, float>::scaleToA(src->blue); = - dst->red =3D KoColorSpaceMaths< float, _channel_type_>::scaleT= oA(r); - dst->green =3D KoColorSpaceMaths< float, _channel_type_ >::sca= leToA(g); - dst->blue =3D KoColorSpaceMaths< float, _channel_type_>::scale= ToA(b); + dst->red =3D KoColorSpaceMaths< float, _channel_type_>::scaleT= oA(value_red); + dst->green =3D KoColorSpaceMaths< float, _channel_type_ >::sca= leToA(value_green); + dst->blue =3D KoColorSpaceMaths< float, _channel_type_>::scale= ToA(value_blue); dst->alpha =3D src->alpha; = --nPixels; @@ -64,9 +64,9 @@ public: = virtual QList parameters() const { - QList list; - list << "exposure"; - return list; + QList list; + list << "exposure"; + return list; } = virtual int parameterId(const QString& name) const diff --git a/krita/plugins/colorspaces/extensions/kis_dodgehighlights_adjus= tment.h b/krita/plugins/colorspaces/extensions/kis_dodgehighlights_adjustme= nt.h index c0f7a09..8cb5568 100644 --- a/krita/plugins/colorspaces/extensions/kis_dodgehighlights_adjustment.h +++ b/krita/plugins/colorspaces/extensions/kis_dodgehighlights_adjustment.h @@ -4,7 +4,7 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; version 2 - * of the License. + * of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -34,4 +34,4 @@ = }; = - #endif \ No newline at end of file + #endif diff --git a/krita/plugins/colorspaces/extensions/kis_dodgehighlights_adjus= tment.cpp b/krita/plugins/colorspaces/extensions/kis_dodgemidtones_adjustme= nt.cpp similarity index 51% copy from krita/plugins/colorspaces/extensions/kis_dodgehighlights_adjustme= nt.cpp copy to krita/plugins/colorspaces/extensions/kis_dodgemidtones_adjustment.c= pp index df0d1d9..beec029 100644 --- a/krita/plugins/colorspaces/extensions/kis_dodgehighlights_adjustment.c= pp +++ b/krita/plugins/colorspaces/extensions/kis_dodgemidtones_adjustment.cpp @@ -4,7 +4,7 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; version 2 - * of the License. + * of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -17,59 +17,61 @@ * Boston, MA 02110-1301, USA. */ = -#include "kis_dodgehighlights_adjustment.h" +#include "kis_dodgemidtones_adjustment.h" #include = #include #include = -#include -#include -#include -#include -#include -#include - + #include + #include + #include + #include + #include + #include + = template -class KisDodgeHighlightsAdjustment : public KoColorTransformation -{ +class KisDodgeMidtonesAdjustment : public KoColorTransformation + { typedef KoBgrTraits<_channel_type_> RGBTrait; typedef typename RGBTrait::Pixel RGBPixel; = public: - KisDodgeHighlightsAdjustment(){}; + KisDodgeMidtonesAdjustment(){}; = - void transform(const quint8 *srcU8, quint8 *dstU8, qint32 nPixels) const - { - const RGBPixel* src =3D reinterpret_cast(srcU8); +public: + = + void transform(const quint8 *srcU8, quint8 *dstU8, qint32 nPixels) con= st + { + const RGBPixel* src =3D reinterpret_cast(srcU8); RGBPixel* dst =3D reinterpret_cast(dstU8); - float r, g, b; - while(nPixels > 0) - { = - r =3D exposure * KoColorSpaceMaths<_channel_type_, float>::sca= leToA(src->red); - g =3D exposure * KoColorSpaceMaths<_channel_type_, float>::sca= leToA(src->green); - b =3D exposure * KoColorSpaceMaths<_channel_type_, float>::sca= leToA(src->blue); + float factor, value_red, value_green, value_blue; + while(nPixels > 0) { + + factor =3D 1.0/(1.0 + exposure); + value_red =3D pow(KoColorSpaceMaths<_channel_type_, float>::sc= aleToA(src->red), factor); + value_green =3D pow(KoColorSpaceMaths<_channel_type_, float>::= scaleToA(src->green), factor); + value_blue =3D pow(KoColorSpaceMaths<_channel_type_, float>::s= caleToA(src->blue), factor); = - dst->red =3D KoColorSpaceMaths< float, _channel_type_>::scaleT= oA(r); - dst->green =3D KoColorSpaceMaths< float, _channel_type_ >::sca= leToA(g); - dst->blue =3D KoColorSpaceMaths< float, _channel_type_>::scale= ToA(b); + dst->red =3D KoColorSpaceMaths< float, _channel_type_ >::scale= ToA(value_red); + dst->green =3D KoColorSpaceMaths< float, _channel_type_ >::sca= leToA(value_green); + dst->blue =3D KoColorSpaceMaths< float, _channel_type_ >::scal= eToA(value_blue); dst->alpha =3D src->alpha; = --nPixels; ++src; ++dst; } - } = - virtual QList parameters() const - { - QList list; - list << "exposure"; - return list; - } + virtual QList parameters() const + { + QList list; + list << "exposure"; + return list; + } = - virtual int parameterId(const QString& name) const + virtual int parameterId(const QString& name) const { if (name =3D=3D "exposure") return 0; @@ -90,40 +92,39 @@ public: private: = float exposure; - }; +}; = - KisDodgeHighlightsAdjustmentFactory::KisDodgeHighlightsAdjustmentFactory() - : KoColorTransformationFactory("DodgeHighlights", i18n("DODGE Adjustme= nt")) + KisDodgeMidtonesAdjustmentFactory::KisDodgeMidtonesAdjustmentFactory() + : KoColorTransformationFactory("DodgeMidtones", i18n("DodgeMidtones Ad= justment")) { } = -QList< QPair< KoID, KoID > > KisDodgeHighlightsAdjustmentFactory::supporte= dModels() const +QList< QPair< KoID, KoID > > KisDodgeMidtonesAdjustmentFactory::supportedM= odels() const { QList< QPair< KoID, KoID > > l; l.append(QPair< KoID, KoID >(RGBAColorModelID , Integer8BitsColorDepth= ID)); l.append(QPair< KoID, KoID >(RGBAColorModelID , Integer16BitsColorDept= hID)); - l.append(QPair< KoID, KoID >(RGBAColorModelID , Float32BitsColorDepthI= D)); + l.append(QPair< KoID, KoID >(RGBAColorModelID , Float32BitsColorDepthI= D)); = return l; } = -KoColorTransformation* KisDodgeHighlightsAdjustmentFactory::createTransfor= mation(const KoColorSpace* colorSpace, QHash parameters)= const +KoColorTransformation* KisDodgeMidtonesAdjustmentFactory::createTransforma= tion(const KoColorSpace* colorSpace, QHash parameters) c= onst { KoColorTransformation * adj; if (colorSpace->colorModelId() !=3D RGBAColorModelID) { - kError() << "Unsupported color space " << colorSpace->id() << " in= KisDodgeHighlightsAdjustment::createTransformation"; + kError() << "Unsupported color space " << colorSpace->id() << " in= KisDodgeMidtonesAdjustmentFactory::createTransformation"; return 0; } if (colorSpace->colorDepthId() =3D=3D Float32BitsColorDepthID) { - adj =3D new KisDodgeHighlightsAdjustment< float >(); - } else if (colorSpace->colorDepthId() =3D=3D Integer16BitsColorDepthID= ) { - adj =3D new KisDodgeHighlightsAdjustment< quint16 >(); - } else if (colorSpace->colorDepthId() =3D=3D Integer8BitsColorDepthID)= { - adj =3D new KisDodgeHighlightsAdjustment< quint8 >(); + adj =3D new KisDodgeMidtonesAdjustment< float >(); + } else if(colorSpace->colorDepthId() =3D=3D Integer16BitsColorDepthID)= { + adj =3D new KisDodgeMidtonesAdjustment< quint16 >(); + } else if(colorSpace->colorDepthId() =3D=3D Integer8BitsColorDepthID) { + adj =3D new KisDodgeMidtonesAdjustment< quint8 >(); } else { - kError() << "Unsupported color space " << colorSpace->id() << " in= KisDodgeHighlightsAdjustment::createTransformation"; + kError() << "Unsupported color space " << colorSpace->id() << " in= KisDodgeMidtonesAdjustmentFactory::createTransformation"; return 0; } adj->setParameters(parameters); return adj; - } diff --git a/krita/plugins/colorspaces/extensions/kis_dodgemidtones_adjustm= ent.h b/krita/plugins/colorspaces/extensions/kis_dodgemidtones_adjustment.h index 1bf31ef..20509a9 100644 --- a/krita/plugins/colorspaces/extensions/kis_dodgemidtones_adjustment.h +++ b/krita/plugins/colorspaces/extensions/kis_dodgemidtones_adjustment.h @@ -4,7 +4,7 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; version 2 - * of the License. + * of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -34,4 +34,4 @@ = }; = - #endif \ No newline at end of file + #endif diff --git a/krita/plugins/colorspaces/extensions/kis_dodgehighlights_adjus= tment.cpp b/krita/plugins/colorspaces/extensions/kis_dodgeshadows_adjustmen= t.cpp similarity index 60% copy from krita/plugins/colorspaces/extensions/kis_dodgehighlights_adjustme= nt.cpp copy to krita/plugins/colorspaces/extensions/kis_dodgeshadows_adjustment.cpp index df0d1d9..3e4fd2e 100644 --- a/krita/plugins/colorspaces/extensions/kis_dodgehighlights_adjustment.c= pp +++ b/krita/plugins/colorspaces/extensions/kis_dodgeshadows_adjustment.cpp @@ -4,7 +4,7 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; version 2 - * of the License. + * of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -17,7 +17,7 @@ * Boston, MA 02110-1301, USA. */ = -#include "kis_dodgehighlights_adjustment.h" +#include "kis_dodgeshadows_adjustment.h" #include = #include @@ -31,42 +31,46 @@ #include = template -class KisDodgeHighlightsAdjustment : public KoColorTransformation +class KisDodgeShadowsAdjustment : public KoColorTransformation { typedef KoBgrTraits<_channel_type_> RGBTrait; typedef typename RGBTrait::Pixel RGBPixel; = public: - KisDodgeHighlightsAdjustment(){}; + KisDodgeShadowsAdjustment(){}; = void transform(const quint8 *srcU8, quint8 *dstU8, qint32 nPixels) const { - const RGBPixel* src =3D reinterpret_cast(srcU8); + const RGBPixel* src =3D reinterpret_cast(srcU8); RGBPixel* dst =3D reinterpret_cast(dstU8); - float r, g, b; - while(nPixels > 0) - { = - r =3D exposure * KoColorSpaceMaths<_channel_type_, float>::sca= leToA(src->red); - g =3D exposure * KoColorSpaceMaths<_channel_type_, float>::sca= leToA(src->green); - b =3D exposure * KoColorSpaceMaths<_channel_type_, float>::sca= leToA(src->blue); + float factor, value_red, value_green, value_blue, new_value_red, n= ew_value_green, new_value_blue; + while (nPixels > 0) { + + value_red =3D KoColorSpaceMaths<_channel_type_, float>::scaleT= oA(src->red); + value_green =3D KoColorSpaceMaths<_channel_type_, float>::scal= eToA(src->green); + value_blue =3D KoColorSpaceMaths<_channel_type_, float>::scale= ToA(src->blue); + + factor =3D exposure * 0.333333; + new_value_red =3D factor + value_red - factor * value_red; + new_value_green =3D factor + value_green - factor * value_gre= en; + new_value_blue =3D factor + value_blue - factor * value_blue; = - dst->red =3D KoColorSpaceMaths< float, _channel_type_>::scaleT= oA(r); - dst->green =3D KoColorSpaceMaths< float, _channel_type_ >::sca= leToA(g); - dst->blue =3D KoColorSpaceMaths< float, _channel_type_>::scale= ToA(b); + dst->red =3D KoColorSpaceMaths< float, _channel_type_ >::scale= ToA(new_value_red); + dst->green =3D KoColorSpaceMaths< float, _channel_type_ >::sca= leToA(new_value_green); + dst->blue =3D KoColorSpaceMaths< float, _channel_type_ >::scal= eToA(new_value_blue); dst->alpha =3D src->alpha; = --nPixels; ++src; ++dst; } - } = virtual QList parameters() const { - QList list; - list << "exposure"; - return list; + QList list; + list << "exposure"; + return list; } = virtual int parameterId(const QString& name) const @@ -92,12 +96,12 @@ private: float exposure; }; = - KisDodgeHighlightsAdjustmentFactory::KisDodgeHighlightsAdjustmentFactory() - : KoColorTransformationFactory("DodgeHighlights", i18n("DODGE Adjustme= nt")) + KisDodgeShadowsAdjustmentFactory::KisDodgeShadowsAdjustmentFactory() + : KoColorTransformationFactory("DodgeShadows", i18n("DodgeShadows Adju= stment")) { } = -QList< QPair< KoID, KoID > > KisDodgeHighlightsAdjustmentFactory::supporte= dModels() const +QList< QPair< KoID, KoID > > KisDodgeShadowsAdjustmentFactory::supportedMo= dels() const { QList< QPair< KoID, KoID > > l; l.append(QPair< KoID, KoID >(RGBAColorModelID , Integer8BitsColorDepth= ID)); @@ -106,21 +110,21 @@ QList< QPair< KoID, KoID > > KisDodgeHighlightsAdjust= mentFactory::supportedModel return l; } = -KoColorTransformation* KisDodgeHighlightsAdjustmentFactory::createTransfor= mation(const KoColorSpace* colorSpace, QHash parameters)= const +KoColorTransformation* KisDodgeShadowsAdjustmentFactory::createTransformat= ion(const KoColorSpace* colorSpace, QHash parameters) co= nst { KoColorTransformation * adj; if (colorSpace->colorModelId() !=3D RGBAColorModelID) { - kError() << "Unsupported color space " << colorSpace->id() << " in= KisDodgeHighlightsAdjustment::createTransformation"; + kError() << "Unsupported color space " << colorSpace->id() << " in= KisDodgeShadowsAdjustmentFactory::createTransformation"; return 0; } if (colorSpace->colorDepthId() =3D=3D Float32BitsColorDepthID) { - adj =3D new KisDodgeHighlightsAdjustment< float >(); + adj =3D new KisDodgeShadowsAdjustment < float >(); } else if (colorSpace->colorDepthId() =3D=3D Integer16BitsColorDepthID= ) { - adj =3D new KisDodgeHighlightsAdjustment< quint16 >(); + adj =3D new KisDodgeShadowsAdjustment< quint16 >(); } else if (colorSpace->colorDepthId() =3D=3D Integer8BitsColorDepthID)= { - adj =3D new KisDodgeHighlightsAdjustment< quint8 >(); + adj =3D new KisDodgeShadowsAdjustment< quint8 >(); } else { - kError() << "Unsupported color space " << colorSpace->id() << " in= KisDodgeHighlightsAdjustment::createTransformation"; + kError() << "Unsupported color space " << colorSpace->id() << " in= KisDodgeShadowsAdjustmentFactory::createTransformation"; return 0; } adj->setParameters(parameters); diff --git a/krita/plugins/colorspaces/extensions/kis_dodgeshadows_adjustme= nt.h b/krita/plugins/colorspaces/extensions/kis_dodgeshadows_adjustment.h index 4e14f1b..d2f19b3 100644 --- a/krita/plugins/colorspaces/extensions/kis_dodgeshadows_adjustment.h +++ b/krita/plugins/colorspaces/extensions/kis_dodgeshadows_adjustment.h @@ -4,7 +4,7 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; version 2 - * of the License. + * of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -34,4 +34,4 @@ = }; = - #endif \ No newline at end of file + #endif diff --git a/krita/plugins/colorspaces/extensions/kis_hsv_adjustment.cpp b/= krita/plugins/colorspaces/extensions/kis_hsv_adjustment.cpp new file mode 100644 index 0000000..d79de72 --- /dev/null +++ b/krita/plugins/colorspaces/extensions/kis_hsv_adjustment.cpp @@ -0,0 +1,271 @@ +/* + * Copyright (c) 2007 Cyrille Berger + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; version 2 + * of the License. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. +*/ + +#include "kis_hsv_adjustment.h" +#include +#ifdef HAVE_OPENEXR +#include +#endif + +#include +#include + +#include +#include +#include +#include +#include +#include + +#define SCALE_TO_FLOAT( v ) KoColorSpaceMaths< _channel_type_, float>::sca= leToA( v ) +#define SCALE_FROM_FLOAT( v ) KoColorSpaceMaths< float, _channel_type_>::= scaleToA( v ) + +template +void clamp(float* r, float* g, float* b); + +#define FLOAT_CLAMP( v ) * v =3D (*v < 0.0) ? 0.0 : ( (*v>1.0) ? 1.0 : *v ) + +template<> +void clamp(float* r, float* g, float* b) +{ + FLOAT_CLAMP(r); + FLOAT_CLAMP(g); + FLOAT_CLAMP(b); +} + +template<> +void clamp(float* r, float* g, float* b) +{ + FLOAT_CLAMP(r); + FLOAT_CLAMP(g); + FLOAT_CLAMP(b); +} + +#ifdef HAVE_OPENEXR +template<> +void clamp(float* r, float* g, float* b) +{ + Q_UNUSED(r); + Q_UNUSED(g); + Q_UNUSED(b); +} +#endif + +template<> +void clamp(float* r, float* g, float* b) +{ + Q_UNUSED(r); + Q_UNUSED(g); + Q_UNUSED(b); +} + + +template +class KisHSVAdjustment : public KoColorTransformation +{ + typedef KoBgrTraits<_channel_type_> RGBTrait; + typedef typename RGBTrait::Pixel RGBPixel; + +public: + KisHSVAdjustment() + { + } + +public: + + void transform(const quint8 *srcU8, quint8 *dstU8, qint32 nPixels) con= st + { + + const RGBPixel* src =3D reinterpret_cast(srcU8); + RGBPixel* dst =3D reinterpret_cast(dstU8); + float h, s, v, r, g, b; + while (nPixels > 0) { + + if (m_colorize) { + h =3D m_adj_h * 360; + if (h >=3D 360.0) h =3D 0; + + s =3D m_adj_s; + + r =3D SCALE_TO_FLOAT(src->red); + g =3D SCALE_TO_FLOAT(src->green); + b =3D SCALE_TO_FLOAT(src->blue); + + float luminance =3D r * 0.2126 + g * 0.7152 + b * 0.0722; + + if (m_adj_v > 0) { + luminance *=3D (1.0 - m_adj_v); + luminance +=3D 1.0 - (1.0 - m_adj_v); + } + else if (m_adj_v < 0 ){ + luminance *=3D (m_adj_v + 1.0); + } + v =3D luminance; + HSLToRGB(h, s, v, &r, &g, &b); + + } + else { + + if (m_type =3D=3D 0) { + RGBToHSV(SCALE_TO_FLOAT(src->red), SCALE_TO_FLOAT(src-= >green), SCALE_TO_FLOAT(src->blue), &h, &s, &v); + h +=3D m_adj_h * 180; + if (h > 360) h -=3D 360; + if (h < 0) h +=3D 360; + s +=3D m_adj_s; + v +=3D m_adj_v; + HSVToRGB(h, s, v, &r, &g, &b); + } + else { + + RGBToHSL(SCALE_TO_FLOAT(src->red), SCALE_TO_FLOAT(src-= >green), SCALE_TO_FLOAT(src->blue), &h, &s, &v); + + h +=3D m_adj_h * 180; + if (h > 360) h -=3D 360; + if (h < 0) h +=3D 360; + + s *=3D (m_adj_s + 1.0); + if (s < 0.0) s =3D 0.0; + if (s > 1.0) s =3D 1.0; + + if (m_adj_v < 0) + v *=3D (m_adj_v + 1.0); + else + v +=3D (m_adj_v * (1.0 - v)); + + + HSLToRGB(h, s, v, &r, &g, &b); + } + + } + + clamp< _channel_type_ >(&r, &g, &b); + dst->red =3D SCALE_FROM_FLOAT(r); + dst->green =3D SCALE_FROM_FLOAT(g); + dst->blue =3D SCALE_FROM_FLOAT(b); + dst->alpha =3D src->alpha; + + --nPixels; + ++src; + ++dst; + } + } + + virtual QList parameters() const + { + QList list; + list << "h" << "s" << "v" << "type" << "colorize"; + return list; + } + + virtual int parameterId(const QString& name) const + { + if (name =3D=3D "h") { + return 0; + } else if (name =3D=3D "s") { + return 1; + } else if (name =3D=3D "v") { + return 2; + } else if (name =3D=3D "type") { + return 3; + } else if (name =3D=3D "colorize") { + return 4; + } + return -1; + } + = + /** + * name - "h", "s" or "v" + * (h)ue in range <-1.0, 1.0> ( for user, show as -180, 180 or 0, 360 f= or colorize) + * (s)aturation in range <-1.0, 1.0> ( for user, show -100, 100, or 0, = 100 for colorize) + * (v)alue in range <-1.0, 1.0> (for user, show -100, 100) + */ + virtual void setParameter(int id, const QVariant& parameter) + { + switch(id) + { + case 0: + m_adj_h =3D parameter.toDouble(); + break; + case 1: + m_adj_s =3D parameter.toDouble(); + break; + case 2: + m_adj_v =3D parameter.toDouble(); + break; + case 3: + m_type =3D parameter.toDouble(); + break; + case 4: + m_colorize =3D parameter.toBool(); + break; + default: + ; + } + } + +private: + + double m_adj_h, m_adj_s, m_adj_v; + int m_type; + bool m_colorize; +}; + + +KisHSVAdjustmentFactory::KisHSVAdjustmentFactory() + : KoColorTransformationFactory("hsv_adjustment", i18n("HSV/HSL Adjustm= ent")) +{ +} + +QList< QPair< KoID, KoID > > KisHSVAdjustmentFactory::supportedModels() co= nst +{ + QList< QPair< KoID, KoID > > l; + l.append(QPair< KoID, KoID >(RGBAColorModelID , Integer8BitsColorDepth= ID)); + l.append(QPair< KoID, KoID >(RGBAColorModelID , Integer16BitsColorDept= hID)); + l.append(QPair< KoID, KoID >(RGBAColorModelID , Float16BitsColorDepthI= D)); + l.append(QPair< KoID, KoID >(RGBAColorModelID , Float32BitsColorDepthI= D)); + return l; +} + +KoColorTransformation* KisHSVAdjustmentFactory::createTransformation(const= KoColorSpace* colorSpace, QHash parameters) const +{ + KoColorTransformation * adj; + if (colorSpace->colorModelId() !=3D RGBAColorModelID) { + kError() << "Unsupported color space " << colorSpace->id() << " in= KisHSVAdjustmentFactory::createTransformation"; + return 0; + } + if (colorSpace->colorDepthId() =3D=3D Integer8BitsColorDepthID) { + adj =3D new KisHSVAdjustment< quint8 >(); + } else if (colorSpace->colorDepthId() =3D=3D Integer16BitsColorDepthID= ) { + adj =3D new KisHSVAdjustment< quint16 >(); + } +#ifdef HAVE_OPENEXR + else if (colorSpace->colorDepthId() =3D=3D Float16BitsColorDepthID) { + adj =3D new KisHSVAdjustment< half >(); + } +#endif + else if (colorSpace->colorDepthId() =3D=3D Float32BitsColorDepthID) { + adj =3D new KisHSVAdjustment< float >(); + } else { + kError() << "Unsupported color space " << colorSpace->id() << " in= KisHSVAdjustmentFactory::createTransformation"; + return 0; + } + adj->setParameters(parameters); + return adj; + +}