Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_base_mask_generator.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2008-2009 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
8#ifndef _KIS_MASK_GENERATOR_H_
9#define _KIS_MASK_GENERATOR_H_
10
11#include <QScopedPointer>
12
13#include <KoID.h>
14#include <klocalizedstring.h>
15
16#include "kritaimage_export.h"
17
18class QDomElement;
19class QDomDocument;
21
22const KoID DefaultId("default", ki18n("Default"));
23const KoID SoftId("soft", ki18n("Soft"));
24const KoID GaussId("gauss", ki18n("Gaussian"));
25
26static const int OVERSAMPLING = 4;
27
33class KRITAIMAGE_EXPORT KisMaskGenerator
34{
35public:
36 enum Type {
37 CIRCLE, RECTANGLE
38 };
39public:
40
52 KisMaskGenerator(qreal radius, qreal ratio, qreal fh, qreal fv, int spikes, bool antialiasEdges, Type type, const KoID& id = DefaultId);
54
55 virtual ~KisMaskGenerator();
56
57 virtual KisMaskGenerator* clone() const = 0;
58
59private:
60
61 void init();
62
63public:
67 virtual quint8 valueAt(qreal x, qreal y) const = 0;
68
69 virtual bool shouldSupersample() const;
70
71 virtual bool shouldSupersample6x6() const;
72
73 virtual bool shouldVectorize() const;
74
76
77 virtual void toXML(QDomDocument& , QDomElement&) const;
78
82 static KisMaskGenerator* fromXML(const QDomElement&);
83
84 qreal width() const;
85
86 qreal height() const;
87
88 qreal diameter() const;
89 void setDiameter(qreal value);
90
91 qreal ratio() const;
92 qreal horizontalFade() const;
93 qreal verticalFade() const;
94 int spikes() const;
95 Type type() const;
96 bool isEmpty() const;
97 void fixRotation(qreal &xr, qreal &yr) const;
98
99 inline QString id() const { return m_id.id(); }
100 inline QString name() const { return m_id.name(); }
101
102 static QList<KoID> maskGeneratorIds();
103
104 qreal softness() const;
105 virtual void setSoftness(qreal softness);
106
107 QString curveString() const;
108 void setCurveString(const QString& curveString);
109
110 bool antialiasEdges() const;
111 virtual void setScale(qreal scaleX, qreal scaleY);
112
113protected:
114 qreal effectiveSrcWidth() const;
115 qreal effectiveSrcHeight() const;
116
117private:
118 struct Private;
119 const QScopedPointer<Private> d;
120 const KoID& m_id;
121};
122
123#endif
float value(const T *src, size_t ch)
virtual KisMaskGenerator * clone() const =0
const QScopedPointer< Private > d
virtual KisBrushMaskApplicatorBase * applicator() const =0
virtual quint8 valueAt(qreal x, qreal y) const =0
Definition KoID.h:30
const KoID SoftId("soft", ki18n("Soft"))
generate brush mask from former softbrush paintop, where softness is based on curve
static const int OVERSAMPLING
const KoID DefaultId("default", ki18n("Default"))
generate Krita default mask generator
const KoID GaussId("gauss", ki18n("Gaussian"))
generate brush mask with a Gaussian-blurred edge