Commit 8c23368c authored by Boudewijn Rempt's avatar Boudewijn Rempt

Remove KoCompositeOp::userVisible

userVisible was no longer used, so remove from the api. Query: isn't
the category string also obsolete since commit 84e57495069833f647f7a41511d451eafae69737
(Replaced the old composite op ComboBox with a new one.)?
parent 8627a1ea
......@@ -36,7 +36,13 @@
#include <OpenCTL/Program.h>
#include <OpenCTL/Module.h>
KoCTLCompositeOp::KoCTLCompositeOp(OpenCTL::Template* _template, const KoCtlColorSpace * cs, const GTLCore::PixelDescription& _pd) : KoCompositeOp(cs, idForFile(_template->fileName()), descriptionForFile(_template->fileName()), categoryForFile(_template->fileName())), m_withMaskProgram(0), m_withoutMaskProgram(0)
KoCTLCompositeOp::KoCTLCompositeOp(OpenCTL::Template* _template, const KoCtlColorSpace * cs, const GTLCore::PixelDescription& _pd)
: KoCompositeOp(cs,
idForFile(_template->fileName()),
descriptionForFile(_template->fileName()),
categoryForFile(_template->fileName()))
, m_withMaskProgram(0)
, m_withoutMaskProgram(0)
{
QMutexLocker lock(ctlMutex);
OpenCTL::Module* module = _template->generateModule(_pd);
......
......@@ -46,7 +46,6 @@ struct KoCompositeOp::Private {
QString id;
QString description;
QString category;
bool userVisible;
QBitArray defaultChannelFlags;
};
......@@ -60,13 +59,12 @@ KoCompositeOp::~KoCompositeOp()
delete d;
}
KoCompositeOp::KoCompositeOp(const KoColorSpace * cs, const QString& id, const QString& description, const QString & category, const bool userVisible)
KoCompositeOp::KoCompositeOp(const KoColorSpace * cs, const QString& id, const QString& description, const QString & category)
: d(new Private)
{
d->colorSpace = cs;
d->id = id;
d->description = description;
d->userVisible = userVisible;
d->category = category;
if (d->category.isEmpty()) {
d->category = categoryMisc();
......@@ -123,8 +121,3 @@ const KoColorSpace * KoCompositeOp::colorSpace() const
{
return d->colorSpace;
}
bool KoCompositeOp::userVisible() const
{
return d->userVisible;
}
......@@ -79,7 +79,7 @@ public:
* @param userVisible define whether or not that composite op should be visible in an user
* interface
*/
KoCompositeOp(const KoColorSpace * cs, const QString& id, const QString& description, const QString & categoryMisc, const bool userVisible = true);
KoCompositeOp(const KoColorSpace * cs, const QString& id, const QString& description, const QString & categoryMisc = categoryMisc());
virtual ~KoCompositeOp();
/**
......@@ -94,10 +94,6 @@ public:
* @return the color space that can use and own this composite op
*/
const KoColorSpace * colorSpace() const;
/**
* @return whether this composite op should be visible in the user interface
*/
bool userVisible() const;
/**
* @return the category associated with the composite op
*/
......
......@@ -31,16 +31,16 @@ template<class Traits>
class KoCompositeOpAlphaDarken: public KoCompositeOp
{
typedef typename Traits::channels_type channels_type;
static const qint32 channels_nb = Traits::channels_nb;
static const qint32 alpha_pos = Traits::alpha_pos;
public:
KoCompositeOpAlphaDarken(const KoColorSpace* cs):
KoCompositeOp(cs, COMPOSITE_ALPHA_DARKEN, i18n("Alpha darken"), KoCompositeOp::categoryMix(), true) { }
KoCompositeOp(cs, COMPOSITE_ALPHA_DARKEN, i18n("Alpha darken"), KoCompositeOp::categoryMix()) { }
using KoCompositeOp::composite;
virtual void composite(const KoCompositeOp::ParameterInfo& params) const
{
if(params.maskRowStart != 0)
......@@ -48,31 +48,31 @@ public:
else
genericComposite<false>(params);
}
template<bool useMask>
void genericComposite(const KoCompositeOp::ParameterInfo& params) const
{
using namespace Arithmetic;
qint32 srcInc = (params.srcRowStride == 0) ? 0 : channels_nb;
channels_type flow = scale<channels_type>(params.flow);
channels_type opacity = mul(flow, scale<channels_type>(params.opacity));
quint8* dstRowStart = params.dstRowStart;
const quint8* srcRowStart = params.srcRowStart;
const quint8* maskRowStart = params.maskRowStart;
for(quint32 r=params.rows; r>0; --r) {
const channels_type* src = reinterpret_cast<const channels_type*>(srcRowStart);
channels_type* dst = reinterpret_cast<channels_type*>(dstRowStart);
const quint8* mask = maskRowStart;
for(qint32 c=params.cols; c>0; --c) {
channels_type srcAlpha = (alpha_pos == -1) ? unitValue<channels_type>() : src[alpha_pos];
channels_type dstAlpha = (alpha_pos == -1) ? unitValue<channels_type>() : dst[alpha_pos];
channels_type mskAlpha = useMask ? mul(scale<channels_type>(*mask), srcAlpha) : srcAlpha;
srcAlpha = mul(mskAlpha, opacity);
if(dstAlpha != zeroValue<channels_type>()) {
for(qint32 i=0; i <channels_nb; i++) {
if(i != alpha_pos)
......@@ -85,20 +85,20 @@ public:
dst[i] = src[i];
}
}
if(alpha_pos != -1) {
channels_type alpha1 = unionShapeOpacity(srcAlpha, dstAlpha); // alpha with 0% flow
channels_type alpha2 = (opacity > dstAlpha) ? lerp(dstAlpha, opacity, mskAlpha) : dstAlpha; // alpha with 100% flow
dst[alpha_pos] = lerp(alpha1, alpha2, flow);
}
src += srcInc;
dst += channels_nb;
if(useMask)
++mask;
}
srcRowStart += params.srcRowStride;
dstRowStart += params.dstRowStride;
maskRowStart += params.maskRowStride;
......
......@@ -47,20 +47,20 @@ class KoCompositeOpBase : public KoCompositeOp
typedef typename _CSTraits::channels_type channels_type;
static const qint32 channels_nb = _CSTraits::channels_nb;
static const qint32 alpha_pos = _CSTraits::alpha_pos;
public:
KoCompositeOpBase(const KoColorSpace* cs, const QString& id, const QString& description, const QString& category, bool userVisible)
: KoCompositeOp(cs, id, description, category, userVisible) { }
KoCompositeOpBase(const KoColorSpace* cs, const QString& id, const QString& description, const QString& category)
: KoCompositeOp(cs, id, description, category) { }
using KoCompositeOp::composite;
virtual void composite(const KoCompositeOp::ParameterInfo& params) const {
const QBitArray& flags = params.channelFlags.isEmpty() ? QBitArray(channels_nb,true) : params.channelFlags;
bool allChannelFlags = params.channelFlags.isEmpty() || params.channelFlags == QBitArray(channels_nb,true);
bool alphaLocked = (alpha_pos != -1) && !flags.testBit(alpha_pos);
bool useMask = params.maskRowStart != 0;
if(useMask) {
if(alphaLocked) {
if(allChannelFlags) { genericComposite<true,true,true> (params, flags); }
......@@ -86,39 +86,39 @@ public:
private:
template<bool useMask, bool alphaLocked, bool allChannelFlags>
void genericComposite(const KoCompositeOp::ParameterInfo& params, const QBitArray& channelFlags) const {
using namespace Arithmetic;
qint32 srcInc = (params.srcRowStride == 0) ? 0 : channels_nb;
channels_type opacity = scale<channels_type>(params.opacity);
quint8* dstRowStart = params.dstRowStart;
const quint8* srcRowStart = params.srcRowStart;
const quint8* maskRowStart = params.maskRowStart;
for(qint32 r=0; r<params.rows; ++r) {
const channels_type* src = reinterpret_cast<const channels_type*>(srcRowStart);
channels_type* dst = reinterpret_cast<channels_type*>(dstRowStart);
const quint8* mask = maskRowStart;
for(qint32 c=0; c<params.cols; ++c) {
channels_type srcAlpha = (alpha_pos == -1) ? unitValue<channels_type>() : src[alpha_pos];
channels_type dstAlpha = (alpha_pos == -1) ? unitValue<channels_type>() : dst[alpha_pos];
channels_type mskAlpha = useMask ? scale<channels_type>(*mask) : unitValue<channels_type>();
channels_type newDstAlpha = _compositeOp::template composeColorChannels<alphaLocked,allChannelFlags>(
src, srcAlpha, dst, dstAlpha, mskAlpha, opacity, channelFlags
);
if(alpha_pos != -1)
dst[alpha_pos] = alphaLocked ? dstAlpha : newDstAlpha;
src += srcInc;
dst += channels_nb;
if(useMask)
++mask;
}
srcRowStart += params.srcRowStride;
dstRowStart += params.dstRowStride;
maskRowStart += params.maskRowStride;
......
......@@ -39,7 +39,7 @@ class KoCompositeOpCopy2: public KoCompositeOpBase< Traits, KoCompositeOpCopy2<T
public:
KoCompositeOpCopy2(const KoColorSpace* cs)
: base_class(cs, COMPOSITE_COPY, i18n("Copy"), KoCompositeOp::categoryMisc(), true) { }
: base_class(cs, COMPOSITE_COPY, i18n("Copy"), KoCompositeOp::categoryMisc()) { }
public:
template<bool alphaLocked, bool allChannelFlags>
......
......@@ -40,8 +40,8 @@ class KoCompositeOpCopyChannel: public KoCompositeOpBase< Traits, KoCompositeOpC
static const qint32 alpha_pos = Traits::alpha_pos;
public:
KoCompositeOpCopyChannel(const KoColorSpace* cs, const QString& id, const QString& description, const QString& category, bool userVisible=true)
: base_class(cs, id, description, category, userVisible) { }
KoCompositeOpCopyChannel(const KoColorSpace* cs, const QString& id, const QString& description, const QString& category)
: base_class(cs, id, description, category) { }
public:
template<bool alphaLocked, bool allChannelFlags>
......
......@@ -27,10 +27,10 @@ template<class Traits>
class KoCompositeOpDissolve: public KoCompositeOp
{
typedef typename Traits::channels_type channels_type;
static const qint32 channels_nb = Traits::channels_nb;
static const qint32 alpha_pos = Traits::alpha_pos;
inline static quint8 getRandomValue(quint32 i)
{
static const quint8 randomValues[256] =
......@@ -52,59 +52,59 @@ class KoCompositeOpDissolve: public KoCompositeOp
0xA3, 0x73, 0x9C, 0x16, 0xDC, 0x42, 0xEA, 0x74, 0x92, 0xE6, 0xCB, 0x53, 0x08, 0xEE, 0x59, 0x02,
0xF3, 0x29, 0xFE, 0xA4, 0x1B, 0xD6, 0x87, 0xB5, 0xCE, 0x1D, 0x68, 0x88, 0x31, 0x0B, 0x2D, 0xD0
};
return randomValues[i];
}
public:
KoCompositeOpDissolve(const KoColorSpace* cs, const QString& category, bool userVisible=true)
: KoCompositeOp(cs, COMPOSITE_DISSOLVE, i18n("Dissolve"), category, userVisible) { }
KoCompositeOpDissolve(const KoColorSpace* cs, const QString& category)
: KoCompositeOp(cs, COMPOSITE_DISSOLVE, i18n("Dissolve"), category) { }
using KoCompositeOp::composite;
virtual void composite(quint8* dstRowStart , qint32 dstRowStride ,
const quint8* srcRowStart , qint32 srcRowStride ,
const quint8* maskRowStart, qint32 maskRowStride,
qint32 rows, qint32 cols, quint8 U8_opacity, const QBitArray& channelFlags) const {
const QBitArray& flags = channelFlags.isEmpty() ? QBitArray(channels_nb,true) : channelFlags;
bool alphaLocked = (alpha_pos != -1) && !flags.testBit(alpha_pos);
using namespace Arithmetic;
// quint32 ctr = quint32(reinterpret_cast<quint64>(dstRowStart) % 256);
qint32 srcInc = (srcRowStride == 0) ? 0 : channels_nb;
bool useMask = maskRowStart != 0;
channels_type unitValue = KoColorSpaceMathsTraits<channels_type>::unitValue;
channels_type opacity = KoColorSpaceMaths<quint8,channels_type>::scaleToA(U8_opacity);
for(; rows>0; --rows) {
const channels_type* src = reinterpret_cast<const channels_type*>(srcRowStart);
channels_type* dst = reinterpret_cast<channels_type*>(dstRowStart);
const quint8* mask = maskRowStart;
for(qint32 c=cols; c>0; --c) {
channels_type srcAlpha = (alpha_pos == -1) ? unitValue : src[alpha_pos];
channels_type dstAlpha = (alpha_pos == -1) ? unitValue : dst[alpha_pos];
channels_type blend = useMask ? mul(opacity, scale<channels_type>(*mask), srcAlpha) : mul(opacity, srcAlpha);
// if(getRandomValue(ctr) <= scale<quint8>(blend) && blend != KoColorSpaceMathsTraits<channels_type>::zeroValue) {
if((qrand() % 256) <= scale<quint8>(blend) && blend != KoColorSpaceMathsTraits<channels_type>::zeroValue) {
for(qint32 i=0; i <channels_nb; i++) {
if(i != alpha_pos && flags.testBit(i))
dst[i] = src[i];
}
if(alpha_pos != -1)
dst[alpha_pos] = alphaLocked ? dstAlpha : unitValue;
}
src += srcInc;
dst += channels_nb;
// ctr = (ctr + 1) % 256;
++mask;
}
srcRowStart += srcRowStride;
dstRowStart += dstRowStride;
maskRowStart += maskRowStride;
......
......@@ -43,8 +43,8 @@ class KoCompositeOpGenericSC: public KoCompositeOpBase< Traits, KoCompositeOpGen
static const qint32 alpha_pos = Traits::alpha_pos;
public:
KoCompositeOpGenericSC(const KoColorSpace* cs, const QString& id, const QString& description, const QString& category, bool userVisible=true)
: base_class(cs, id, description, category, userVisible) { }
KoCompositeOpGenericSC(const KoColorSpace* cs, const QString& id, const QString& description, const QString& category)
: base_class(cs, id, description, category) { }
public:
template<bool alphaLocked, bool allChannelFlags>
......@@ -101,8 +101,8 @@ class KoCompositeOpGenericHSL: public KoCompositeOpBase< Traits, KoCompositeOpGe
static const qint32 blue_pos = Traits::blue_pos;
public:
KoCompositeOpGenericHSL(const KoColorSpace* cs, const QString& id, const QString& description, const QString& category, bool userVisible=true)
: base_class(cs, id, description, category, userVisible) { }
KoCompositeOpGenericHSL(const KoColorSpace* cs, const QString& id, const QString& description, const QString& category)
: base_class(cs, id, description, category) { }
public:
template<bool alphaLocked, bool allChannelFlags>
......
......@@ -63,8 +63,8 @@ struct AddGeneralOps<Traits, true>
static const qint32 alpha_pos = Traits::alpha_pos;
template<CompositeFunc func>
static void add(KoColorSpace* cs, const QString& id, const QString& description, const QString& category, bool userVisible=true) {
cs->addCompositeOp(new KoCompositeOpGenericSC<Traits, func>(cs, id, description, category, userVisible));
static void add(KoColorSpace* cs, const QString& id, const QString& description, const QString& category) {
cs->addCompositeOp(new KoCompositeOpGenericSC<Traits, func>(cs, id, description, category));
}
static void add(KoColorSpace* cs) {
......@@ -129,8 +129,8 @@ struct AddRGBOps<Traits, true>
static const qint32 blue_pos = Traits::blue_pos;
template<void compositeFunc(Arg, Arg, Arg, Arg&, Arg&, Arg&)>
static void add(KoColorSpace* cs, const QString& id, const QString& description, const QString& category, bool userVisible=true) {
cs->addCompositeOp(new KoCompositeOpGenericHSL<Traits, compositeFunc>(cs, id, description, category, userVisible));
static void add(KoColorSpace* cs, const QString& id, const QString& description, const QString& category) {
cs->addCompositeOp(new KoCompositeOpGenericHSL<Traits, compositeFunc>(cs, id, description, category));
}
static void add(KoColorSpace* cs) {
......
......@@ -30,8 +30,8 @@ class RgbCompositeOpClear : public KoCompositeOp
public:
RgbCompositeOpClear(KoColorSpace * cs, const bool userVisible = true)
: KoCompositeOp(cs, COMPOSITE_CLEAR, i18n("Clear"), "", userVisible) {
RgbCompositeOpClear(KoColorSpace * cs, true)
: KoCompositeOp(cs, COMPOSITE_CLEAR, i18n("Clear"), "") {
}
using KoCompositeOp::composite;
......
......@@ -30,8 +30,8 @@ class RgbCompositeOpDarken : public KoCompositeOp
public:
RgbCompositeOpDarken(KoColorSpace * cs, const bool userVisible = true)
: KoCompositeOp(cs, COMPOSITE_DARKEN, i18n("Darken"), "", userVisible) {
RgbCompositeOpDarken(KoColorSpace * cs)
: KoCompositeOp(cs, COMPOSITE_DARKEN, i18n("Darken"), "") {
}
using KoCompositeOp::composite;
......
......@@ -30,8 +30,8 @@ class RgbCompositeOpDissolve : public KoCompositeOp
public:
RgbCompositeOpDissolve(KoColorSpace * cs, const bool userVisible = true)
: KoCompositeOp(cs, COMPOSITE_DISSOLVE, i18n("Dissolve"), "", userVisible) {
RgbCompositeOpDissolve(KoColorSpace * cs)
: KoCompositeOp(cs, COMPOSITE_DISSOLVE, i18n("Dissolve"), "") {
}
using KoCompositeOp::composite;
......
......@@ -34,8 +34,8 @@ class RgbCompositeOpHue : public KoCompositeOp
public:
RgbCompositeOpHue(KoColorSpace * cs, const bool userVisible = true)
: KoCompositeOp(cs, COMPOSITE_HUE, i18n("Hue"), "", userVisible) {
RgbCompositeOpHue(KoColorSpace * cs)
: KoCompositeOp(cs, COMPOSITE_HUE, i18n("Hue"), "") {
}
using KoCompositeOp::composite;
......
......@@ -33,8 +33,8 @@ class RgbCompositeOpIn : public KoCompositeOp
public:
RgbCompositeOpIn(KoColorSpace * cs, const bool userVisible = false)
: KoCompositeOp(cs, COMPOSITE_IN, i18n("In"), "", userVisible) {
RgbCompositeOpIn(KoColorSpace * cs)
: KoCompositeOp(cs, COMPOSITE_IN, i18n("In"), "") {
}
using KoCompositeOp::composite;
......
......@@ -30,8 +30,8 @@ class RgbCompositeOpLighten : public KoCompositeOp
public:
RgbCompositeOpLighten(KoColorSpace * cs, const bool userVisible = true)
: KoCompositeOp(cs, COMPOSITE_LIGHTEN, i18n("Lighten"), "", userVisible) {
RgbCompositeOpLighten(KoColorSpace * cs)
: KoCompositeOp(cs, COMPOSITE_LIGHTEN, i18n("Lighten"), "") {
}
using KoCompositeOp::composite;
......
......@@ -33,8 +33,8 @@ class RgbCompositeOpOut : public KoCompositeOp
public:
RgbCompositeOpOut(KoColorSpace * cs, const bool userVisible = false)
: KoCompositeOp(cs, COMPOSITE_OUT, i18n("Out"), "", userVisible) {
RgbCompositeOpOut(KoColorSpace * cs)
: KoCompositeOp(cs, COMPOSITE_OUT, i18n("Out"), "") {
}
using KoCompositeOp::composite;
......
......@@ -34,8 +34,8 @@ class RgbCompositeOpSaturation: public KoCompositeOp
public:
RgbCompositeOpSaturation(KoColorSpace * cs, const bool userVisible = true)
: KoCompositeOp(cs, COMPOSITE_SATURATION, i18n("Saturation"), "", userVisible) {
RgbCompositeOpSaturation(KoColorSpace * cs)
: KoCompositeOp(cs, COMPOSITE_SATURATION, i18n("Saturation"), "") {
}
using KoCompositeOp::composite;
......
......@@ -34,8 +34,8 @@ class RgbCompositeOpValue: public KoCompositeOp
public:
RgbCompositeOpValue(KoColorSpace * cs, const bool userVisible = true)
: KoCompositeOp(cs, COMPOSITE_VALUE, i18n("Value"), "", userVisible) {
RgbCompositeOpValue(KoColorSpace * cs)
: KoCompositeOp(cs, COMPOSITE_VALUE, i18n("Value"), "") {
}
using KoCompositeOp::composite;
......
......@@ -30,8 +30,8 @@ class RgbCompositeOpClear : public KoCompositeOp
public:
RgbCompositeOpClear(KoColorSpace * cs, const bool userVisible = true)
: KoCompositeOp(cs, COMPOSITE_CLEAR, i18n("Clear"), "", userVisible) {
RgbCompositeOpClear(KoColorSpace * cs)
: KoCompositeOp(cs, COMPOSITE_CLEAR, i18n("Clear"), "") {
}
using KoCompositeOp::composite;
......
......@@ -30,8 +30,8 @@ class RgbCompositeOpDarken : public KoCompositeOp
public:
RgbCompositeOpDarken(KoColorSpace * cs, const bool userVisible = true)
: KoCompositeOp(cs, COMPOSITE_DARKEN, i18n("Darken"), "", userVisible) {
RgbCompositeOpDarken(KoColorSpace * cs)
: KoCompositeOp(cs, COMPOSITE_DARKEN, i18n("Darken"), "") {
}
using KoCompositeOp::composite;
......
......@@ -30,8 +30,8 @@ class RgbCompositeOpDissolve : public KoCompositeOp
public:
RgbCompositeOpDissolve(KoColorSpace * cs, const bool userVisible = true)
: KoCompositeOp(cs, COMPOSITE_DISSOLVE, i18n("Dissolve"), "", userVisible) {
RgbCompositeOpDissolve(KoColorSpace * cs)
: KoCompositeOp(cs, COMPOSITE_DISSOLVE, i18n("Dissolve"), "") {
}
using KoCompositeOp::composite;
......
......@@ -34,8 +34,8 @@ class RgbCompositeOpHue : public KoCompositeOp
public:
RgbCompositeOpHue(KoColorSpace * cs, const bool userVisible = true)
: KoCompositeOp(cs, COMPOSITE_HUE, i18n("Hue"), "", userVisible) {
RgbCompositeOpHue(KoColorSpace * cs)
: KoCompositeOp(cs, COMPOSITE_HUE, i18n("Hue"), "") {
}
using KoCompositeOp::composite;
......
......@@ -33,8 +33,8 @@ class RgbCompositeOpIn : public KoCompositeOp
public:
RgbCompositeOpIn(KoColorSpace * cs, const bool userVisible = false)
: KoCompositeOp(cs, COMPOSITE_IN, i18n("In"), "", userVisible) {
RgbCompositeOpIn(KoColorSpace * cs)
: KoCompositeOp(cs, COMPOSITE_IN, i18n("In"), "") {
}
using KoCompositeOp::composite;
......
......@@ -30,8 +30,8 @@ class RgbCompositeOpLighten : public KoCompositeOp
public:
RgbCompositeOpLighten(KoColorSpace * cs, const bool userVisible = true)
: KoCompositeOp(cs, COMPOSITE_LIGHTEN, i18n("Lighten"), "", userVisible) {
RgbCompositeOpLighten(KoColorSpace * cs)
: KoCompositeOp(cs, COMPOSITE_LIGHTEN, i18n("Lighten"), "") {
}
using KoCompositeOp::composite;
......
......@@ -33,8 +33,8 @@ class RgbCompositeOpOut : public KoCompositeOp
public:
RgbCompositeOpOut(KoColorSpace * cs, const bool userVisible = false)
: KoCompositeOp(cs, COMPOSITE_OUT, i18n("Out"), "", userVisible) {
RgbCompositeOpOut(KoColorSpace * cs)
: KoCompositeOp(cs, COMPOSITE_OUT, i18n("Out")) {
}
using KoCompositeOp::composite;
......
......@@ -34,8 +34,8 @@ class RgbCompositeOpSaturation: public KoCompositeOp
public:
RgbCompositeOpSaturation(KoColorSpace * cs, const bool userVisible = true)
: KoCompositeOp(cs, COMPOSITE_SATURATION, i18n("Saturation"), "", userVisible) {
RgbCompositeOpSaturation(KoColorSpace * cs)
: KoCompositeOp(cs, COMPOSITE_SATURATION, i18n("Saturation"), "") {
}
using KoCompositeOp::composite;
......
......@@ -34,8 +34,8 @@ class RgbCompositeOpValue: public KoCompositeOp
public:
RgbCompositeOpValue(KoColorSpace * cs, const bool userVisible = true)
: KoCompositeOp(cs, COMPOSITE_VALUE, i18n("Value"), "", userVisible) {
RgbCompositeOpValue(KoColorSpace * cs)
: KoCompositeOp(cs, COMPOSITE_VALUE, i18n("Value"), "") {
}
using KoCompositeOp::composite;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!