Krita Source Code Documentation
Loading...
Searching...
No Matches
KisColorfulBrush Class Reference

#include <KisColorfulBrush.h>

+ Inheritance diagram for KisColorfulBrush:

Public Member Functions

qreal adjustedMidPoint () const
 
quint8 adjustmentMidPoint () const
 
bool autoAdjustMidPoint () const
 
qreal brightnessAdjustment () const
 
QImage brushTipImage () const override
 brushImage the image the brush tip can paint with. Not all brush types have a single image.
 
qreal contrastAdjustment () const
 
qreal estimatedSourceMidPoint () const
 
bool hasColorAndTransparency () const
 
virtual bool isImageType () const
 
 KisColorfulBrush ()=default
 
 KisColorfulBrush (const KisColorfulBrush &rhs)=default
 
 KisColorfulBrush (const QString &filename)
 
virtual void setAdjustmentMidPoint (quint8 value)
 
virtual void setAutoAdjustMidPoint (bool autoAdjustMidPoint)
 
virtual void setBrightnessAdjustment (qreal value)
 
virtual void setContrastAdjustment (qreal value)
 
void setHasColorAndTransparency (bool value)
 
void toXML (QDomDocument &d, QDomElement &e) const override
 
- Public Member Functions inherited from KisScalingSizeBrush
 KisScalingSizeBrush ()
 
 KisScalingSizeBrush (const KisScalingSizeBrush &rhs)
 
 KisScalingSizeBrush (const QString &filename)
 
void setUserEffectiveSize (qreal value) override
 
qreal userEffectiveSize () const override
 
- Public Member Functions inherited from KisBrush
qreal angle () const
 
virtual bool applyingGradient () const
 
bool autoSpacingActive () const
 
qreal autoSpacingCoeff () const
 
virtual enumBrushApplication brushApplication () const
 
virtual quint32 brushIndex () const
 
virtual enumBrushType brushType () const
 
virtual bool canPaintFor (const KisPaintInformation &)
 
virtual QSizeF characteristicSize (KisDabShape const &) const
 
void clearBrushPyramid ()
 
virtual void coldInitBrush ()
 
virtual void generateMaskAndApplyMaskOrCreateDab (KisFixedPaintDeviceSP dst, ColoringInformation *coloringInfo, KisDabShape const &, const KisPaintInformation &info, double subPixelX, double subPixelY, qreal softnessFactor, qreal lightnessStrength) const
 
void generateMaskAndApplyMaskOrCreateDab (KisFixedPaintDeviceSP dst, ColoringInformation *coloringInfo, KisDabShape const &, const KisPaintInformation &info, double subPixelX=0, double subPixelY=0, qreal softnessFactor=DEFAULT_SOFTNESS_FACTOR) const
 
qint32 height () const
 
QPointF hotSpot (KisDabShape const &, const KisPaintInformation &info) const
 
virtual bool isPiercedApprox () const
 
 KisBrush ()
 
 KisBrush (const KisBrush &rhs)
 
 KisBrush (const QString &filename)
 
virtual void lodLimitations (KisPaintopLodLimitations *l) const
 
void mask (KisFixedPaintDeviceSP dst, const KisPaintDeviceSP src, KisDabShape const &shape, const KisPaintInformation &info, double subPixelX=0, double subPixelY=0, qreal softnessFactor=DEFAULT_SOFTNESS_FACTOR, qreal lightnessStrength=DEFAULT_LIGHTNESS_STRENGTH) const
 
void mask (KisFixedPaintDeviceSP dst, const KoColor &color, KisDabShape const &shape, const KisPaintInformation &info, double subPixelX=0, double subPixelY=0, qreal softnessFactor=DEFAULT_SOFTNESS_FACTOR, qreal lightnessStrength=DEFAULT_LIGHTNESS_STRENGTH) const
 
double maskAngle (double angle=0) const
 
virtual qint32 maskHeight (KisDabShape const &, qreal subPixelX, qreal subPixelY, const KisPaintInformation &info) const
 
virtual qint32 maskWidth (KisDabShape const &, qreal subPixelX, qreal subPixelY, const KisPaintInformation &info) const
 
virtual void notifyBrushIsGoingToBeClonedForStroke ()
 
virtual void notifyStrokeStarted ()
 
KisBrushoperator= (const KisBrush &rhs)=delete
 
virtual KisOptimizedBrushOutline outline (bool forcePreciseOutline=false) const
 
virtual KisFixedPaintDeviceSP outlineSourceImage () const
 
virtual KisFixedPaintDeviceSP paintDevice (const KoColorSpace *colorSpace, KisDabShape const &, const KisPaintInformation &info, double subPixelX=0, double subPixelY=0) const
 
virtual void prepareForSeqNo (const KisPaintInformation &info, int seqNo)
 
virtual bool preserveLightness () const
 
QPair< QString, QString > resourceType () const override
 
qreal scale () const
 
virtual void setAngle (qreal _angle)
 
void setAutoSpacing (bool active, qreal coeff)
 
virtual void setBrushApplication (enumBrushApplication brushApplication)
 
virtual void setBrushTipImage (const QImage &image)
 
virtual void setGradient (KoAbstractGradientSP gradient)
 
virtual void setScale (qreal _scale)
 
virtual void setSpacing (double spacing)
 
double spacing () const
 
virtual bool supportsCaching () const
 
qint32 width () const
 
 ~KisBrush () override
 
- Public Member Functions inherited from KoResource
bool active () const
 
void addMetaData (QString key, QVariant value)
 store the given key, value pair in the resource
 
virtual void clearSideLoadedResources ()
 
virtual KoResourceSP clone () const =0
 
virtual QString defaultFileExtension () const
 
virtual QList< KoResourceLoadResultembeddedResources (KisResourcesInterfaceSP globalResourcesInterface) const
 
QString filename () const
 
QImage image () const
 
bool isDirty () const
 
virtual bool isEphemeral () const
 
virtual bool isSerializable () const
 
 KoResource ()
 
 KoResource (const KoResource &rhs)
 
 KoResource (const QString &filename)
 
virtual QList< KoResourceLoadResultlinkedResources (KisResourcesInterfaceSP globalResourcesInterface) const
 
bool load (KisResourcesInterfaceSP resourcesInterface)
 
virtual bool loadFromDevice (QIODevice *dev, KisResourcesInterfaceSP resourcesInterface)=0
 
QString md5Sum (bool generateIfEmpty=true) const
 
QMap< QString, QVariant > metadata () const
 get a map with all the metadata
 
virtual QString name () const
 
KoResourceoperator= (const KoResource &rhs)=delete
 
bool permanent () const
 
virtual QList< int > requiredCanvasResources () const
 
QList< KoResourceLoadResultrequiredResources (KisResourcesInterfaceSP globalResourcesInterface) const
 
int resourceId () const
 
bool save ()
 
virtual bool saveToDevice (QIODevice *dev) const
 
void setActive (bool active)
 
void setDirty (bool value)
 Mark the preset as modified but not saved.
 
void setFilename (const QString &filename)
 
void setImage (const QImage &image)
 
void setMD5Sum (const QString &md5sum)
 Set the md5sum of this resource. It must be in hex-encoded string format.
 
void setName (const QString &name)
 
void setPermanent (bool permanent)
 
void setResourceId (int id)
 
void setStorageLocation (const QString &location)
 
void setValid (bool valid)
 
void setVersion (int version)
 
virtual QList< KoResourceLoadResultsideLoadedResources (KisResourcesInterfaceSP globalResourcesInterface) const
 
KoResourceSignature signature () const
 
QString storageLocation () const
 
QList< KoResourceLoadResulttakeSideLoadedResources (KisResourcesInterfaceSP globalResourcesInterface)
 
virtual QImage thumbnail () const
 thumbnail the thumbnail image to use in resource selectors
 
virtual QString thumbnailPath () const
 thumbnailPath returns the path to a separate thumbnail image, outside the actual resource file itself. If the path is relative, it is supposed start in the same location as the resource itself. If it's absolute, that is, it starts with "/", it is from the root of the storage.
 
virtual void updateThumbnail ()
 updateThumbnail updates the thumbnail for this resource. Reimplement if your thumbnail is something else than the image set with setImage.
 
bool valid () const
 
int version () const
 Get the version of the resource.
 
virtual ~KoResource ()
 
- Public Member Functions inherited from Private
 Private (KisCanvas2 *c)
 

Private Attributes

quint8 m_adjustmentMidPoint = 127
 
bool m_autoAdjustMidPoint = false
 
qreal m_brightnessAdjustment = 0.0
 
qreal m_contrastAdjustment = 0.0
 
bool m_hasColorAndTransparency = false
 

Additional Inherited Members

- Static Public Member Functions inherited from KisBrush
static KisBrushSP fromXML (const QDomElement &element, KisResourcesInterfaceSP resourcesInterface)
 
static KoResourceLoadResult fromXMLLoadResult (const QDomElement &element, KisResourcesInterfaceSP resourcesInterface)
 
- Public Attributes inherited from KoResource
bool active {true}
 
QString filename
 
QImage image
 
QString md5sum
 
QMap< QString, QVariant > metadata
 
bool modified {false}
 
QString name
 
bool permanent {false}
 
int resourceId {-1}
 
QString storageLocation
 
bool valid {false}
 
int version {-1}
 
- Public Attributes inherited from Private
KisCanvas2canvas
 
int displayedFrame
 
int intendedFrame
 
- Static Public Attributes inherited from KisBrush
static const QString brushTypeMetaDataKey = "image-based-brush"
 
- Protected Member Functions inherited from KisBrush
void generateOutlineCache ()
 
bool outlineCacheIsValid () const
 
void predefinedBrushToXML (const QString &type, QDomElement &e) const
 
void resetOutlineCache ()
 
virtual void setBrushType (enumBrushType type)
 
void setHeight (qint32 height)
 
void setHotSpot (QPointF)
 
void setWidth (qint32 width)
 

Detailed Description

Definition at line 13 of file KisColorfulBrush.h.

Constructor & Destructor Documentation

◆ KisColorfulBrush() [1/3]

KisColorfulBrush::KisColorfulBrush ( )
default

◆ KisColorfulBrush() [2/3]

KisColorfulBrush::KisColorfulBrush ( const QString & filename)

Definition at line 10 of file KisColorfulBrush.cpp.

◆ KisColorfulBrush() [3/3]

KisColorfulBrush::KisColorfulBrush ( const KisColorfulBrush & rhs)
default

Member Function Documentation

◆ adjustedMidPoint()

qreal KisColorfulBrush::adjustedMidPoint ( ) const

Definition at line 49 of file KisColorfulBrush.cpp.

50{
51 return estimateImageAverage(this->brushTipImage());
52}
QImage brushTipImage() const override
brushImage the image the brush tip can paint with. Not all brush types have a single image.

References brushTipImage().

◆ adjustmentMidPoint()

quint8 KisColorfulBrush::adjustmentMidPoint ( ) const

Definition at line 167 of file KisColorfulBrush.cpp.

168{
170}

References m_adjustmentMidPoint.

◆ autoAdjustMidPoint()

bool KisColorfulBrush::autoAdjustMidPoint ( ) const

Definition at line 54 of file KisColorfulBrush.cpp.

55{
57}

References m_autoAdjustMidPoint.

◆ brightnessAdjustment()

qreal KisColorfulBrush::brightnessAdjustment ( ) const

Definition at line 172 of file KisColorfulBrush.cpp.

173{
175}

References m_brightnessAdjustment.

◆ brushTipImage()

QImage KisColorfulBrush::brushTipImage ( ) const
overridevirtual

brushImage the image the brush tip can paint with. Not all brush types have a single image.

Returns
a valid QImage.

Reimplemented from KisBrush.

Definition at line 64 of file KisColorfulBrush.cpp.

65{
68
69 KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(image.format() == QImage::Format_ARGB32, image);
70
71 const qreal adjustmentMidPoint =
73 estimateImageAverage(image) :
75
76 if (qAbs(adjustmentMidPoint - 127.0) > 0.1 ||
79
82
83 const qreal midX = adjustmentMidPoint;
84 const qreal midY = m_brightnessAdjustment > 0 ?
87
88 qreal loA = 0.0;
89 qreal hiA = 0.0;
90
91 qreal loB = 0.0;
92 qreal hiB = 255.0;
93
95 if (m_contrastAdjustment > 0.0) {
96 loA = midY / (1.0 - m_contrastAdjustment) / midX;
97 hiA = (unit - midY) / (1.0 - m_contrastAdjustment) / (unit - midX);
98 } else {
99 loA = midY * (1.0 + m_contrastAdjustment) / midX;
100 hiA = (unit - midY) * (1.0 + m_contrastAdjustment) / (unit - midX);
101 }
102
103 loB = midY - midX * loA;
104 hiB = midY - midX * hiA;
105 }
106
107 for (int y = 0; y < image.height(); y++) {
108 QRgb *pixel = reinterpret_cast<QRgb *>(image.scanLine(y));
109 for (int x = 0; x < image.width(); x++) {
110 QRgb c = pixel[x];
111
112 int v = qGray(c);
113
114 if (v >= midX) {
115 v = qMin(unit, qRound(hiA * v + hiB));
116 } else {
117 v = qMax(0, qRound(loA * v + loB));
118 }
119
120 pixel[x] = qRgba(v, v, v, qAlpha(c));
121 }
122 }
123 } else {
124 for (int y = 0; y < image.height(); y++) {
125 QRgb *pixel = reinterpret_cast<QRgb *>(image.scanLine(y));
126 for (int x = 0; x < image.width(); x++) {
127 QRgb c = pixel[x];
128
129 int v = qGray(c);
130 pixel[x] = qRgba(v, v, v, qAlpha(c));
131 }
132 }
133 }
134 }
135 return image;
136}
qreal v
virtual enumBrushApplication brushApplication() const
virtual QImage brushTipImage() const
brushImage the image the brush tip can paint with. Not all brush types have a single image.
virtual bool isImageType() const
quint8 adjustmentMidPoint() const
static _T blend(_T a, _T b, _T alpha)
static bool qFuzzyCompare(half p1, half p2)
static bool qFuzzyIsNull(half h)
#define KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(cond, val)
Definition kis_assert.h:129
@ IMAGESTAMP
Definition kis_brush.h:40
unsigned int QRgb
T blend(T src, T srcAlpha, T dst, T dstAlpha, T cfValue)
QImage image

References adjustmentMidPoint(), KoColorSpaceMaths< _T, _Tdst >::blend(), KisBrush::brushApplication(), KisBrush::brushTipImage(), KoResource::image, IMAGESTAMP, isImageType(), KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE, m_adjustmentMidPoint, m_autoAdjustMidPoint, m_brightnessAdjustment, m_contrastAdjustment, qFuzzyCompare(), qFuzzyIsNull(), and v.

◆ contrastAdjustment()

qreal KisColorfulBrush::contrastAdjustment ( ) const

Definition at line 177 of file KisColorfulBrush.cpp.

178{
180}

References m_contrastAdjustment.

◆ estimatedSourceMidPoint()

qreal KisColorfulBrush::estimatedSourceMidPoint ( ) const

Definition at line 44 of file KisColorfulBrush.cpp.

45{
46 return estimateImageAverage(KisBrush::brushTipImage());
47}

References KisBrush::brushTipImage().

◆ hasColorAndTransparency()

bool KisColorfulBrush::hasColorAndTransparency ( ) const

Definition at line 202 of file KisColorfulBrush.cpp.

203{
205}

References m_hasColorAndTransparency.

◆ isImageType()

bool KisColorfulBrush::isImageType ( ) const
virtual

Definition at line 162 of file KisColorfulBrush.cpp.

163{
164 return brushType() == IMAGE || brushType() == PIPE_IMAGE;
165}
virtual enumBrushType brushType() const
@ IMAGE
Definition kis_brush.h:33
@ PIPE_IMAGE
Definition kis_brush.h:35

References KisBrush::brushType(), IMAGE, and PIPE_IMAGE.

◆ setAdjustmentMidPoint()

void KisColorfulBrush::setAdjustmentMidPoint ( quint8 value)
virtual

Reimplemented in KisImagePipeBrush.

Definition at line 138 of file KisColorfulBrush.cpp.

139{
143 }
144}
float value(const T *src, size_t ch)
void clearBrushPyramid()

References KisBrush::clearBrushPyramid(), m_adjustmentMidPoint, and value().

◆ setAutoAdjustMidPoint()

void KisColorfulBrush::setAutoAdjustMidPoint ( bool autoAdjustMidPoint)
virtual

Reimplemented in KisImagePipeBrush.

Definition at line 59 of file KisColorfulBrush.cpp.

References autoAdjustMidPoint(), and m_autoAdjustMidPoint.

◆ setBrightnessAdjustment()

void KisColorfulBrush::setBrightnessAdjustment ( qreal value)
virtual

Reimplemented in KisImagePipeBrush.

Definition at line 146 of file KisColorfulBrush.cpp.

147{
151 }
152}

References KisBrush::clearBrushPyramid(), m_brightnessAdjustment, and value().

◆ setContrastAdjustment()

void KisColorfulBrush::setContrastAdjustment ( qreal value)
virtual

Reimplemented in KisImagePipeBrush.

Definition at line 154 of file KisColorfulBrush.cpp.

155{
159 }
160}

References KisBrush::clearBrushPyramid(), m_contrastAdjustment, and value().

◆ setHasColorAndTransparency()

void KisColorfulBrush::setHasColorAndTransparency ( bool value)

Definition at line 197 of file KisColorfulBrush.cpp.

198{
200}

References m_hasColorAndTransparency, and value().

◆ toXML()

void KisColorfulBrush::toXML ( QDomDocument & ,
QDomElement & element ) const
overridevirtual

Serialize this brush to XML.

Reimplemented from KisBrush.

Reimplemented in KisGbrBrush, and KisPngBrush.

Definition at line 184 of file KisColorfulBrush.cpp.

185{
186 // legacy setting, now 'brushApplication' is used instead
187 e.setAttribute("ColorAsMask", QString::number((int)(brushApplication() != IMAGESTAMP)));
188
189 e.setAttribute("AdjustmentMidPoint", QString::number(m_adjustmentMidPoint));
190 e.setAttribute("BrightnessAdjustment", QString::number(m_brightnessAdjustment));
191 e.setAttribute("ContrastAdjustment", QString::number(m_contrastAdjustment));
192 e.setAttribute("AutoAdjustMidPoint", QString::number(m_autoAdjustMidPoint));
193 e.setAttribute("AdjustmentVersion", QString::number(2));
194 KisBrush::toXML(d, e);
195}
Private *const d
Definition kis_brush.h:387
virtual void toXML(QDomDocument &, QDomElement &) const

References KisBrush::brushApplication(), KisBrush::d, IMAGESTAMP, m_adjustmentMidPoint, m_autoAdjustMidPoint, m_brightnessAdjustment, m_contrastAdjustment, and KisBrush::toXML().

Member Data Documentation

◆ m_adjustmentMidPoint

quint8 KisColorfulBrush::m_adjustmentMidPoint = 127
private

Definition at line 45 of file KisColorfulBrush.h.

◆ m_autoAdjustMidPoint

bool KisColorfulBrush::m_autoAdjustMidPoint = false
private

Definition at line 44 of file KisColorfulBrush.h.

◆ m_brightnessAdjustment

qreal KisColorfulBrush::m_brightnessAdjustment = 0.0
private

Definition at line 46 of file KisColorfulBrush.h.

◆ m_contrastAdjustment

qreal KisColorfulBrush::m_contrastAdjustment = 0.0
private

Definition at line 47 of file KisColorfulBrush.h.

◆ m_hasColorAndTransparency

bool KisColorfulBrush::m_hasColorAndTransparency = false
private

Definition at line 48 of file KisColorfulBrush.h.


The documentation for this class was generated from the following files: