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_MASK_GENERATOR_H_ 0010 #define _KIS_GAUSS_MASK_GENERATOR_H_ 0011 0012 #include "kritaimage_export.h" 0013 0014 #include "kis_base_mask_generator.h" 0015 #include <QScopedPointer> 0016 0017 template<typename V> 0018 struct FastRowProcessor; 0019 0020 /** 0021 * This mask generator uses a Gaussian-blurred circle 0022 */ 0023 class KRITAIMAGE_EXPORT KisGaussCircleMaskGenerator : public KisMaskGenerator 0024 { 0025 public: 0026 KisGaussCircleMaskGenerator(qreal diameter, qreal ratio, qreal fh, qreal fv, int spikes, bool antialiasEdges); 0027 KisGaussCircleMaskGenerator(const KisGaussCircleMaskGenerator &rhs); 0028 ~KisGaussCircleMaskGenerator() override; 0029 KisMaskGenerator* clone() const override; 0030 0031 quint8 valueAt(qreal x, qreal y) const override; 0032 0033 void setScale(qreal scaleX, qreal scaleY) override; 0034 0035 bool shouldVectorize() const override; 0036 KisBrushMaskApplicatorBase* applicator() override; 0037 0038 void resetMaskApplicator(bool forceScalar); 0039 0040 private: 0041 0042 qreal norme(qreal a, qreal b) const { 0043 return a*a + b*b; 0044 } 0045 0046 private: 0047 struct Private; 0048 const QScopedPointer<Private> d; 0049 0050 friend struct FastRowProcessor<KisGaussCircleMaskGenerator>; 0051 }; 0052 0053 #endif