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

0001 /*
0002  *  SPDX-FileCopyrightText: 2008-2009 Cyrille Berger <cberger@cberger.net>
0003  *  SPDX-FileCopyrightText: 2018 Ivan Santa Maria <ghevan@gmail.com>
0004  *  SPDX-FileCopyrightText: 2022 L. E. Segovia <amy@amyspark.me>
0005  *
0006  *  SPDX-License-Identifier: GPL-2.0-or-later
0007  */
0008 
0009 #ifndef _KIS_RECT_MASK_GENERATOR_H_
0010 #define _KIS_RECT_MASK_GENERATOR_H_
0011 
0012 #include "kritaimage_export.h"
0013 
0014 #include <QScopedPointer>
0015 
0016 #include "kis_base_mask_generator.h"
0017 
0018 template<typename V>
0019 struct FastRowProcessor;
0020 
0021 /**
0022  * Represent, serialize and deserialize a rectangular 8-bit mask.
0023  */
0024 class KRITAIMAGE_EXPORT KisRectangleMaskGenerator : public KisMaskGenerator
0025 {
0026 public:
0027 
0028     KisRectangleMaskGenerator(qreal radius, qreal ratio, qreal fh, qreal fv, int spikes, bool antialiasEdges);
0029     KisRectangleMaskGenerator(const KisRectangleMaskGenerator &rhs);
0030     ~KisRectangleMaskGenerator() override;
0031 
0032     KisMaskGenerator* clone() const override;
0033 
0034     quint8 valueAt(qreal x, qreal y) const override;
0035     void setScale(qreal scaleX, qreal scaleY) override;
0036     void setSoftness(qreal softness) override;
0037 
0038     bool shouldVectorize() const override;
0039     KisBrushMaskApplicatorBase* applicator() override;
0040     void resetMaskApplicator(bool forceScalar);
0041 
0042 private:
0043     struct Private;
0044     const QScopedPointer<Private> d;
0045 
0046     friend struct FastRowProcessor<KisRectangleMaskGenerator>;
0047 };
0048 
0049 #endif