File indexing completed on 2024-05-12 15:56:12

0001 /*
0002  *  SPDX-FileCopyrightText: 2004 Cyrille Berger <cberger@cberger.net>
0003  *  SPDX-FileCopyrightText: 2011 Lukáš Tvrdý <lukast.dev@gmail.com>
0004  *
0005  *  SPDX-License-Identifier: GPL-2.0-or-later
0006  */
0007 
0008 #ifndef _KIS_TEXT_BRUSH_H_
0009 #define _KIS_TEXT_BRUSH_H_
0010 
0011 #include <QFont>
0012 
0013 #include "kis_scaling_size_brush.h"
0014 #include "kritabrush_export.h"
0015 
0016 class KisTextBrushesPipe;
0017 
0018 
0019 class BRUSH_EXPORT KisTextBrush : public KisScalingSizeBrush
0020 {
0021 
0022 public:
0023     KisTextBrush();
0024     KisTextBrush(const KisTextBrush &rhs);
0025     ~KisTextBrush() override;
0026 
0027     KisTextBrush &operator=(const KisTextBrush &rhs) = delete;
0028 
0029     KoResourceSP clone() const override;
0030 
0031     bool isEphemeral() const override;
0032     bool loadFromDevice(QIODevice *dev, KisResourcesInterfaceSP resourcesInterface) override;
0033     bool saveToDevice(QIODevice *dev) const override;
0034 
0035     void notifyStrokeStarted() override;
0036     void prepareForSeqNo(const KisPaintInformation& info, int seqNo) override;
0037 
0038     void generateMaskAndApplyMaskOrCreateDab(KisFixedPaintDeviceSP dst, KisBrush::ColoringInformation* coloringInformation,
0039             KisDabShape const&,
0040             const KisPaintInformation& info,
0041             double subPixelX = 0, double subPixelY = 0, qreal softnessFactor = DEFAULT_SOFTNESS_FACTOR, qreal lightnessStrength = 1.0) const override;
0042 
0043     KisFixedPaintDeviceSP paintDevice(const KoColorSpace * colorSpace,
0044         KisDabShape const&, const KisPaintInformation& info, double subPixelX, double subPixelY) const override;
0045 
0046     void setText(const QString& txt);
0047     QString text(void) const;
0048 
0049     QFont font();
0050     void setFont(const QFont& font);
0051 
0052     void setPipeMode(bool pipe);
0053     bool pipeMode() const;
0054 
0055     void updateBrush();
0056     void toXML(QDomDocument& , QDomElement&) const override;
0057 
0058     quint32 brushIndex() const override;
0059     qint32 maskWidth(KisDabShape const&, double subPixelX, double subPixelY, const KisPaintInformation& info) const override;
0060     qint32 maskHeight(KisDabShape const&, double subPixelX, double subPixelY, const KisPaintInformation& info) const override;
0061     void setAngle(qreal _angle) override;
0062     void setScale(qreal _scale) override;
0063     void setSpacing(double _spacing) override;
0064 
0065 private:
0066     QFont m_font;
0067     QString m_text;
0068 
0069 private:
0070     KisTextBrushesPipe *m_brushesPipe;
0071 };
0072 
0073 typedef QSharedPointer<KisTextBrush> KisTextBrushSP;
0074 
0075 #endif