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

#include <kis_text_brush.h>

+ Inheritance diagram for KisTextBrush:

Public Member Functions

quint32 brushIndex () const override
 
KoResourceSP clone () const override
 
QFont font ()
 
void generateMaskAndApplyMaskOrCreateDab (KisFixedPaintDeviceSP dst, KisBrush::ColoringInformation *coloringInformation, KisDabShape const &, const KisPaintInformation &info, double subPixelX=0, double subPixelY=0, qreal softnessFactor=DEFAULT_SOFTNESS_FACTOR, qreal lightnessStrength=1.0) const override
 
bool isEphemeral () const override
 
 KisTextBrush ()
 
 KisTextBrush (const KisTextBrush &rhs)
 
bool loadFromDevice (QIODevice *dev, KisResourcesInterfaceSP resourcesInterface) override
 
qint32 maskHeight (KisDabShape const &, double subPixelX, double subPixelY, const KisPaintInformation &info) const override
 
qint32 maskWidth (KisDabShape const &, double subPixelX, double subPixelY, const KisPaintInformation &info) const override
 
void notifyStrokeStarted () override
 
KisTextBrushoperator= (const KisTextBrush &rhs)=delete
 
KisFixedPaintDeviceSP paintDevice (const KoColorSpace *colorSpace, KisDabShape const &, const KisPaintInformation &info, double subPixelX, double subPixelY) const override
 
bool pipeMode () const
 
void prepareForSeqNo (const KisPaintInformation &info, int seqNo) override
 
bool saveToDevice (QIODevice *dev) const override
 
void setAngle (qreal _angle) override
 
void setFont (const QFont &font)
 
void setPipeMode (bool pipe)
 
void setScale (qreal _scale) override
 
void setSpacing (double _spacing) override
 
void setText (const QString &txt)
 
QString text (void) const
 
void toXML (QDomDocument &, QDomElement &) const override
 
void updateBrush ()
 
 ~KisTextBrush () 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 QImage brushTipImage () const
 brushImage the image the brush tip can paint with. Not all brush types have a single image.
 
virtual enumBrushType brushType () const
 
virtual bool canPaintFor (const KisPaintInformation &)
 
virtual QSizeF characteristicSize (KisDabShape const &) const
 
void clearBrushPyramid ()
 
virtual void coldInitBrush ()
 
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 ()
 
KisBrushoperator= (const KisBrush &rhs)=delete
 
virtual KisOptimizedBrushOutline outline (bool forcePreciseOutline=false) const
 
virtual KisFixedPaintDeviceSP outlineSourceImage () const
 
virtual bool preserveLightness () const
 
QPair< QString, QString > resourceType () const override
 
qreal scale () const
 
void setAutoSpacing (bool active, qreal coeff)
 
virtual void setBrushApplication (enumBrushApplication brushApplication)
 
virtual void setBrushTipImage (const QImage &image)
 
virtual void setGradient (KoAbstractGradientSP gradient)
 
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 QString defaultFileExtension () const
 
virtual QList< KoResourceLoadResultembeddedResources (KisResourcesInterfaceSP globalResourcesInterface) const
 
QString filename () const
 
QImage image () const
 
bool isDirty () const
 
virtual bool isSerializable () const
 
 KoResource ()
 
 KoResource (const KoResource &rhs)
 
 KoResource (const QString &filename)
 
virtual QList< KoResourceLoadResultlinkedResources (KisResourcesInterfaceSP globalResourcesInterface) const
 
bool load (KisResourcesInterfaceSP resourcesInterface)
 
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 ()
 
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

KisTextBrushesPipem_brushesPipe
 
QFont m_font
 
QString m_text
 

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 19 of file kis_text_brush.h.

Constructor & Destructor Documentation

◆ KisTextBrush() [1/2]

KisTextBrush::KisTextBrush ( )

Definition at line 170 of file kis_text_brush.cpp.

172{
173 setPipeMode(false);
174}
void setPipeMode(bool pipe)
KisTextBrushesPipe * m_brushesPipe

References setPipeMode().

◆ KisTextBrush() [2/2]

KisTextBrush::KisTextBrush ( const KisTextBrush & rhs)

Definition at line 176 of file kis_text_brush.cpp.

◆ ~KisTextBrush()

KisTextBrush::~KisTextBrush ( )
override

Definition at line 184 of file kis_text_brush.cpp.

185{
186 delete m_brushesPipe;
187}

References m_brushesPipe.

Member Function Documentation

◆ brushIndex()

quint32 KisTextBrush::brushIndex ( ) const
overridevirtual
Returns
the currently selected index of the brush if the brush consists of multiple images
See also
prepareForSeqNo()

Reimplemented from KisBrush.

Definition at line 312 of file kis_text_brush.cpp.

313{
314 return brushType() == MASK ? 0 : 1 + m_brushesPipe->currentBrushIndex();
315}
virtual enumBrushType brushType() const
int currentBrushIndex() override
@ MASK
Definition kis_brush.h:32

References KisBrush::brushType(), KisTextBrushesPipe::currentBrushIndex(), m_brushesPipe, and MASK.

◆ clone()

KoResourceSP KisTextBrush::clone ( ) const
overridevirtual

Implements KoResource.

Definition at line 189 of file kis_text_brush.cpp.

190{
191 return KisBrushSP(new KisTextBrush(*this));
192}
QSharedPointer< KisBrush > KisBrushSP
Definition kis_brush.h:49

References KisTextBrush().

◆ font()

QFont KisTextBrush::font ( )

Definition at line 237 of file kis_text_brush.cpp.

238{
239 return m_font;
240}

References m_font.

◆ generateMaskAndApplyMaskOrCreateDab()

void KisTextBrush::generateMaskAndApplyMaskOrCreateDab ( KisFixedPaintDeviceSP dst,
KisBrush::ColoringInformation * coloringInfo,
KisDabShape const & shape,
const KisPaintInformation & info,
double subPixelX = 0,
double subPixelY = 0,
qreal softnessFactor = DEFAULT_SOFTNESS_FACTOR,
qreal lightnessStrength = 1.0 ) const
overridevirtual

Create a mask and either mask dst (that is, change all alpha values of the existing pixels to those of the mask) or, if coloringInfo is present, clear dst and fill dst with pixels according to coloringInfo, masked according to the generated mask.

Parameters
dstthe destination that will be draw on the image, and this function will edit its alpha channel
coloringInfocoloring information that will be copied on the dab, it can be null
shapea shape applied on the alpha mask
infothe painting information (this is only and should only be used by KisImagePipeBrush and only to be backward compatible with the Gimp, KisImagePipeBrush is ignoring scale and angle information)
subPixelXsub position of the brush (contained between 0.0 and 1.0)
subPixelYsub position of the brush (contained between 0.0 and 1.0)
softnessFactorsoftness factor of the brush
Returns
a mask computed from the grey-level values of the pixels in the brush.

Reimplemented from KisBrush.

Definition at line 252 of file kis_text_brush.cpp.

255{
256 if (brushType() == MASK) {
257 KisBrush::generateMaskAndApplyMaskOrCreateDab(dst, coloringInformation, shape, info, subPixelX, subPixelY, softnessFactor, lightnessStrength);
258 }
259 else { /* if (brushType() == PIPE_MASK)*/
260 m_brushesPipe->generateMaskAndApplyMaskOrCreateDab(dst, coloringInformation, shape, info, subPixelX, subPixelY, softnessFactor, lightnessStrength);
261 }
262}
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, KisBrush::ColoringInformation *coloringInformation, KisDabShape const &shape, const KisPaintInformation &info, double subPixelX, double subPixelY, qreal softnessFactor, qreal lightnessStrength=DEFAULT_LIGHTNESS_STRENGTH)

References KisBrush::brushType(), KisBrush::generateMaskAndApplyMaskOrCreateDab(), KisBrushesPipe< BrushType >::generateMaskAndApplyMaskOrCreateDab(), m_brushesPipe, and MASK.

◆ isEphemeral()

bool KisTextBrush::isEphemeral ( ) const
overridevirtual

Ephemeral resource is a type of resource that has no physical representation on disk. Therefore, its load()/save() calls do nothing. Such resources will always have empty md5Sum() and, therefore, will never be stored in the resources database.

This type of resources is created directly by the corresponding factory or other object (e.g. KisAutoBrushFactory).

Ephemeral resource cannot be serializable.

Reimplemented from KoResource.

Definition at line 194 of file kis_text_brush.cpp.

195{
196 return true;
197}

◆ loadFromDevice()

bool KisTextBrush::loadFromDevice ( QIODevice * dev,
KisResourcesInterfaceSP resourcesInterface )
overridevirtual

Implements KoResource.

Definition at line 199 of file kis_text_brush.cpp.

200{
201 Q_UNUSED(dev);
202 Q_UNUSED(resourcesInterface);
203 return false;
204}

◆ maskHeight()

qint32 KisTextBrush::maskHeight ( KisDabShape const & shape,
double subPixelX,
double subPixelY,
const KisPaintInformation & info ) const
override

Definition at line 324 of file kis_text_brush.cpp.

325{
326 return brushType() == MASK ?
327 KisBrush::maskHeight(shape, subPixelX, subPixelY, info) :
328 m_brushesPipe->maskHeight(shape, subPixelX, subPixelY, info);
329}
virtual qint32 maskHeight(KisDabShape const &, qreal subPixelX, qreal subPixelY, const KisPaintInformation &info) const
qint32 maskHeight(KisDabShape const &, double subPixelX, double subPixelY, const KisPaintInformation &info) const override

References KisBrush::brushType(), m_brushesPipe, MASK, KisBrush::maskHeight(), and KisBrushesPipe< BrushType >::maskHeight().

◆ maskWidth()

qint32 KisTextBrush::maskWidth ( KisDabShape const & shape,
double subPixelX,
double subPixelY,
const KisPaintInformation & info ) const
override

Definition at line 317 of file kis_text_brush.cpp.

318{
319 return brushType() == MASK ?
320 KisBrush::maskWidth(shape, subPixelX, subPixelY, info) :
321 m_brushesPipe->maskWidth(shape, subPixelX, subPixelY, info);
322}
virtual qint32 maskWidth(KisDabShape const &, qreal subPixelX, qreal subPixelY, const KisPaintInformation &info) const
qint32 maskWidth(KisDabShape const &, double subPixelX, double subPixelY, const KisPaintInformation &info) const override

References KisBrush::brushType(), m_brushesPipe, MASK, KisBrush::maskWidth(), and KisBrushesPipe< BrushType >::maskWidth().

◆ notifyStrokeStarted()

void KisTextBrush::notifyStrokeStarted ( )
overridevirtual

Is called by the paint op when a paintop starts a stroke. The point is that we store brushes a server while the paint ops are are recreated all the time. Is means that upon a stroke start the brushes may need to clear its state.

Reimplemented from KisBrush.

Definition at line 242 of file kis_text_brush.cpp.

243{
245}
void notifyStrokeStarted() override

References m_brushesPipe, and KisTextBrushesPipe::notifyStrokeStarted().

◆ operator=()

KisTextBrush & KisTextBrush::operator= ( const KisTextBrush & rhs)
delete

◆ paintDevice()

KisFixedPaintDeviceSP KisTextBrush::paintDevice ( const KoColorSpace * colorSpace,
KisDabShape const & shape,
const KisPaintInformation & info,
double subPixelX,
double subPixelY ) const
overridevirtual

Return a fixed paint device that contains a correctly scaled image dab.

Reimplemented from KisBrush.

Definition at line 264 of file kis_text_brush.cpp.

268{
269 if (brushType() == MASK) {
270 return KisBrush::paintDevice(colorSpace, shape, info, subPixelX, subPixelY);
271 }
272 else { /* if (brushType() == PIPE_MASK)*/
273 return m_brushesPipe->paintDevice(colorSpace, shape, info, subPixelX, subPixelY);
274 }
275}
virtual KisFixedPaintDeviceSP paintDevice(const KoColorSpace *colorSpace, KisDabShape const &, const KisPaintInformation &info, double subPixelX=0, double subPixelY=0) const
KisFixedPaintDeviceSP paintDevice(const KoColorSpace *colorSpace, KisDabShape const &shape, const KisPaintInformation &info, double subPixelX, double subPixelY)

References KisBrush::brushType(), m_brushesPipe, MASK, KisBrush::paintDevice(), and KisBrushesPipe< BrushType >::paintDevice().

◆ pipeMode()

bool KisTextBrush::pipeMode ( ) const

Definition at line 217 of file kis_text_brush.cpp.

218{
219 return brushType() == PIPE_MASK;
220}
@ PIPE_MASK
Definition kis_brush.h:34

References KisBrush::brushType(), and PIPE_MASK.

◆ prepareForSeqNo()

void KisTextBrush::prepareForSeqNo ( const KisPaintInformation & info,
int seqNo )
overridevirtual

Is called by the multithreaded queue to prepare a specific brush tip for the particular seqNo.

NOTE: one should use always call prepareForSeqNo() before using the brush

Currently, this is used by pipe'd brushes to implement incremental and random parasites

Reimplemented from KisBrush.

Definition at line 247 of file kis_text_brush.cpp.

248{
249 m_brushesPipe->prepareForSeqNo(info, seqNo);
250}
void prepareForSeqNo(const KisPaintInformation &info, int seqNo)

References m_brushesPipe, and KisBrushesPipe< BrushType >::prepareForSeqNo().

◆ saveToDevice()

bool KisTextBrush::saveToDevice ( QIODevice * dev) const
overridevirtual

Reimplemented from KoResource.

Definition at line 206 of file kis_text_brush.cpp.

207{
208 Q_UNUSED(dev);
209 return false;
210}

◆ setAngle()

void KisTextBrush::setAngle ( qreal _angle)
overridevirtual

Reimplemented from KisBrush.

Definition at line 331 of file kis_text_brush.cpp.

332{
333 KisBrush::setAngle(_angle);
334 m_brushesPipe->setAngle(_angle);
335}
virtual void setAngle(qreal _angle)
void setAngle(qreal angle)

References m_brushesPipe, KisBrush::setAngle(), and KisBrushesPipe< BrushType >::setAngle().

◆ setFont()

void KisTextBrush::setFont ( const QFont & font)

Definition at line 232 of file kis_text_brush.cpp.

233{
234 m_font = font;
235}

References font(), and m_font.

◆ setPipeMode()

void KisTextBrush::setPipeMode ( bool pipe)

Definition at line 212 of file kis_text_brush.cpp.

213{
214 setBrushType(pipe ? PIPE_MASK : MASK);
215}
virtual void setBrushType(enumBrushType type)

References MASK, PIPE_MASK, and KisBrush::setBrushType().

◆ setScale()

void KisTextBrush::setScale ( qreal _scale)
overridevirtual

Reimplemented from KisBrush.

Definition at line 337 of file kis_text_brush.cpp.

338{
339 KisBrush::setScale(_scale);
340 m_brushesPipe->setScale(_scale);
341}
virtual void setScale(qreal _scale)
void setScale(qreal scale)

References m_brushesPipe, KisBrush::setScale(), and KisBrushesPipe< BrushType >::setScale().

◆ setSpacing()

void KisTextBrush::setSpacing ( double spacing)
overridevirtual

Change the spacing of the brush.

Parameters
spacinga spacing of 1.0 means that strokes will be separated from one time the size of the brush.

Reimplemented from KisBrush.

Definition at line 343 of file kis_text_brush.cpp.

344{
345 KisBrush::setSpacing(_spacing);
346 m_brushesPipe->setSpacing(_spacing);
347}
virtual void setSpacing(double spacing)
void setSpacing(double spacing)

References m_brushesPipe, KisBrush::setSpacing(), and KisBrushesPipe< BrushType >::setSpacing().

◆ setText()

void KisTextBrush::setText ( const QString & txt)

Definition at line 222 of file kis_text_brush.cpp.

223{
224 m_text = txt;
225}

References m_text.

◆ text()

QString KisTextBrush::text ( void ) const

Definition at line 227 of file kis_text_brush.cpp.

228{
229 return m_text;
230}

References m_text.

◆ toXML()

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

Serialize this brush to XML.

Reimplemented from KisBrush.

Definition at line 277 of file kis_text_brush.cpp.

278{
279 Q_UNUSED(doc);
280
281 e.setAttribute("type", "kis_text_brush");
282 e.setAttribute("spacing", KisDomUtils::toString(spacing()));
283 e.setAttribute("text", m_text);
284 e.setAttribute("font", m_font.toString());
285 e.setAttribute("pipe", (brushType() == PIPE_MASK) ? "true" : "false");
286 KisBrush::toXML(doc, e);
287}
double spacing() const
virtual void toXML(QDomDocument &, QDomElement &) const
QString toString(const QString &value)

References KisBrush::brushType(), m_font, m_text, PIPE_MASK, KisBrush::spacing(), KisDomUtils::toString(), and KisBrush::toXML().

◆ updateBrush()

void KisTextBrush::updateBrush ( )

Definition at line 289 of file kis_text_brush.cpp.

290{
293 }
294
295 if (brushType() == PIPE_MASK) {
297 if (m_text.isEmpty()) {
298 // Dummy brushtip to avoid a crash...
300 return;
301 }
302 setBrushTipImage(m_brushesPipe->firstBrush()->brushTipImage());
303 }
304 else { /* if (brushType() == MASK)*/
306 }
307
309 setValid(true);
310}
void resetOutlineCache()
virtual void setBrushTipImage(const QImage &image)
KisGbrBrushSP firstBrush() const
void setText(const QString &text, const QFont &font)
static QImage renderChar(const QString &text, const QFont &font)
#define KIS_ASSERT_RECOVER(cond)
Definition kis_assert.h:55
void setValid(bool valid)

References KisBrush::brushType(), KisTextBrushesPipe::firstBrush(), KIS_ASSERT_RECOVER, m_brushesPipe, m_font, m_text, MASK, PIPE_MASK, KisTextBrushesPipe::renderChar(), KisBrush::resetOutlineCache(), KisBrush::setBrushTipImage(), KisBrush::setBrushType(), KisTextBrushesPipe::setText(), and KoResource::setValid().

Member Data Documentation

◆ m_brushesPipe

KisTextBrushesPipe* KisTextBrush::m_brushesPipe
private

Definition at line 70 of file kis_text_brush.h.

◆ m_font

QFont KisTextBrush::m_font
private

Definition at line 66 of file kis_text_brush.h.

◆ m_text

QString KisTextBrush::m_text
private

Definition at line 67 of file kis_text_brush.h.


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