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

0001 /*
0002  *  SPDX-FileCopyrightText: 2010 Lukáš Tvrdý <lukast.dev@gmail.com>
0003  *  SPDX-FileCopyrightText: 2011 Geoffry Song <goffrie@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_GAUSS_RECT_MASK_GENERATOR_H_
0010 #define _KIS_GAUSS_RECT_MASK_GENERATOR_H_
0011 
0012 #include "kritaimage_export.h"
0013 
0014 #include "kis_base_mask_generator.h"
0015 
0016 template<typename V>
0017 struct FastRowProcessor;
0018 
0019 /**
0020  * This mask generator uses a Gaussian-blurred rectangle
0021  */
0022 class KRITAIMAGE_EXPORT KisGaussRectangleMaskGenerator : public KisMaskGenerator
0023 {
0024 public:
0025 
0026     KisGaussRectangleMaskGenerator(qreal diameter, qreal ratio, qreal fh, qreal fv, int spikes, bool antialiasEdges);
0027     KisGaussRectangleMaskGenerator(const KisGaussRectangleMaskGenerator &rhs);
0028     ~KisGaussRectangleMaskGenerator() override;
0029     KisMaskGenerator* clone() const override;
0030 
0031     quint8 valueAt(qreal x, qreal y) const override;
0032     void setScale(qreal scaleX, qreal scaleY) override;
0033 
0034     bool shouldVectorize() const override;
0035     KisBrushMaskApplicatorBase* applicator() override;
0036     void resetMaskApplicator(bool forceScalar);
0037 
0038 private:
0039     struct Private;
0040     const QScopedPointer<Private> d;
0041 
0042     friend struct FastRowProcessor<KisGaussRectangleMaskGenerator>;
0043 };
0044 
0045 #endif