Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_auto_brush.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2004 Cyrille Berger <cberger@cberger.net>
3 * SPDX-FileCopyrightText: 2010 Lukáš Tvrdý <lukast.dev@gmail.com>
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 */
7#ifndef _KIS_AUTOBRUSH_RESOURCE_H_
8#define _KIS_AUTOBRUSH_RESOURCE_H_
9
10#include "kritabrush_export.h"
11
12#include <KoResource.h>
13
14#include "kis_brush.h"
15
16#include <QScopedPointer>
17
19
23class BRUSH_EXPORT KisAutoBrush : public KisBrush
24{
25
26public:
27
28 KisAutoBrush(KisMaskGenerator *as, qreal angle, qreal randomness, qreal density = 1.0);
29 KisAutoBrush(const KisAutoBrush &rhs);
30 KisAutoBrush &operator=(const KisAutoBrush &rhs) = delete;
31 KoResourceSP clone() const override;
32
33 ~KisAutoBrush() override;
34
35 bool isEphemeral() const override;
36 bool loadFromDevice(QIODevice *dev, KisResourcesInterfaceSP resourcesInterface) override;
37 bool saveToDevice(QIODevice *dev) const override;
38
39 bool isPiercedApprox() const override;
40
41public:
42
43 qreal userEffectiveSize() const override;
44 void setUserEffectiveSize(qreal value) override;
45
46 qint32 maskWidth(KisDabShape const& shape, qreal subPixelX, qreal subPixelY,
47 const KisPaintInformation& info) const override;
48 qint32 maskHeight(KisDabShape const& shape, qreal subPixelX, qreal subPixelY,
49 const KisPaintInformation& info) const override;
50 QSizeF characteristicSize(KisDabShape const&) const override;
51
53 KisDabShape const&,
55 double = 0, double = 0) const override;
56
59 KisDabShape const&,
60 const KisPaintInformation& info,
61 double subPixelX = 0, double subPixelY = 0,
62 qreal softnessFactor = DEFAULT_SOFTNESS_FACTOR,
63 qreal lightnessStrength = DEFAULT_LIGHTNESS_STRENGTH) const override;
64
65 KisOptimizedBrushOutline outline(bool forcePreciseOutline = false) const override;
66
68
69 void coldInitBrush() override;
71
72public:
73
74 void toXML(QDomDocument& , QDomElement&) const override;
75 const KisMaskGenerator* maskGenerator() const;
76 qreal randomness() const;
77 qreal density() const;
78
79 void lodLimitations(KisPaintopLodLimitations *l) const override;
80
81 bool supportsCaching() const override;
82private:
83
84 QImage createBrushPreview(int maxSize = -1);
85
86private:
87 struct Private;
88 const QScopedPointer<Private> d;
89};
90#endif // _KIS_AUTOBRUSH_RESOURCE_H_
float value(const T *src, size_t ch)
const QScopedPointer< Private > d
KisAutoBrush & operator=(const KisAutoBrush &rhs)=delete
virtual qint32 maskHeight(KisDabShape const &, qreal subPixelX, qreal subPixelY, const KisPaintInformation &info) const
virtual void lodLimitations(KisPaintopLodLimitations *l) const
virtual void coldInitBrush()
virtual KisFixedPaintDeviceSP paintDevice(const KoColorSpace *colorSpace, KisDabShape const &, const KisPaintInformation &info, double subPixelX=0, double subPixelY=0) const
virtual KisFixedPaintDeviceSP outlineSourceImage() const
virtual QSizeF characteristicSize(KisDabShape const &) const
virtual void toXML(QDomDocument &, QDomElement &) const
virtual bool supportsCaching() const
virtual void notifyBrushIsGoingToBeClonedForStroke()
virtual KisOptimizedBrushOutline outline(bool forcePreciseOutline=false) const
virtual qreal userEffectiveSize() const =0
virtual bool isPiercedApprox() const
virtual void generateMaskAndApplyMaskOrCreateDab(KisFixedPaintDeviceSP dst, ColoringInformation *coloringInfo, KisDabShape const &, const KisPaintInformation &info, double subPixelX, double subPixelY, qreal softnessFactor, qreal lightnessStrength) const
virtual qint32 maskWidth(KisDabShape const &, qreal subPixelX, qreal subPixelY, const KisPaintInformation &info) const
virtual void setUserEffectiveSize(qreal value)=0
static const qreal DEFAULT_LIGHTNESS_STRENGTH
Definition kis_brush.h:46
static const qreal DEFAULT_SOFTNESS_FACTOR
Definition kis_brush.h:45
virtual KoResourceSP clone() const =0
virtual bool saveToDevice(QIODevice *dev) const
virtual bool isEphemeral() const
virtual bool loadFromDevice(QIODevice *dev, KisResourcesInterfaceSP resourcesInterface)=0