File indexing completed on 2024-05-12 15:58:14

0001 /*
0002  *  SPDX-FileCopyrightText: 2010 Lukáš Tvrdý <lukast.dev@gmail.com>
0003  *  SPDX-FileCopyrightText: 2022 L. E. Segovia <amy@amyspark.me>
0004  *
0005  *  SPDX-License-Identifier: GPL-2.0-or-later
0006  */
0007 
0008 #ifndef _KIS_CURVE_RECT_MASK_GENERATOR_H_
0009 #define _KIS_CURVE_RECT_MASK_GENERATOR_H_
0010 
0011 #include "kritaimage_export.h"
0012 
0013 class KisCubicCurve;
0014 class QDomElement;
0015 class QDomDocument;
0016 
0017 #include "kis_base_mask_generator.h"
0018 
0019 template<typename V>
0020 struct FastRowProcessor;
0021 
0022 /**
0023  * Curve based softness for this rectangular mask generator
0024  */
0025 class KRITAIMAGE_EXPORT KisCurveRectangleMaskGenerator : public KisMaskGenerator
0026 {
0027 public:
0028 
0029     KisCurveRectangleMaskGenerator(qreal radius, qreal ratio, qreal fh, qreal fv, int spikes, const KisCubicCurve& curve, bool antialiasEdges);
0030     KisCurveRectangleMaskGenerator(const KisCurveRectangleMaskGenerator &rhs);
0031     ~KisCurveRectangleMaskGenerator() override;
0032     KisMaskGenerator* clone() const override;
0033 
0034     quint8 valueAt(qreal x, qreal y) const override;
0035 
0036     void setScale(qreal scaleX, qreal scaleY) override;
0037 
0038     void toXML(QDomDocument& , QDomElement&) const override;
0039     
0040     void setSoftness(qreal softness) override;
0041 
0042     bool shouldVectorize() const override;
0043     KisBrushMaskApplicatorBase* applicator() override;
0044     void resetMaskApplicator(bool forceScalar);
0045 
0046 private:
0047     struct Private;
0048     const QScopedPointer<Private> d;
0049 
0050     friend struct FastRowProcessor<KisCurveRectangleMaskGenerator>;
0051 };
0052 
0053 #endif