File indexing completed on 2024-05-12 15:58:12
0001 /* 0002 * SPDX-FileCopyrightText: 2008-2009 Cyrille Berger <cberger@cberger.net> 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_CIRCLE_MASK_GENERATOR_H_ 0009 #define _KIS_CIRCLE_MASK_GENERATOR_H_ 0010 0011 #include "kritaimage_export.h" 0012 0013 #include "kis_base_mask_generator.h" 0014 #include <QScopedPointer> 0015 0016 template <typename V> 0017 struct FastRowProcessor; 0018 0019 /** 0020 * Create, serialize and deserialize an elliptical 8-bit mask. 0021 */ 0022 class KRITAIMAGE_EXPORT KisCircleMaskGenerator : public KisMaskGenerator 0023 { 0024 public: 0025 KisCircleMaskGenerator(qreal radius, qreal ratio, qreal fh, qreal fv, int spikes, bool antialiasEdges); 0026 KisCircleMaskGenerator(const KisCircleMaskGenerator &rhs); 0027 ~KisCircleMaskGenerator() override; 0028 KisMaskGenerator* clone() const override; 0029 0030 quint8 valueAt(qreal x, qreal y) const override; 0031 0032 bool shouldVectorize() const override; 0033 0034 KisBrushMaskApplicatorBase* applicator() override; 0035 0036 void setSoftness(qreal softness) override; 0037 void setScale(qreal scaleX, qreal scaleY) override; 0038 0039 void resetMaskApplicator(bool forceScalar); 0040 0041 private: 0042 0043 qreal norme(qreal a, qreal b) const { 0044 return a*a + b * b; 0045 } 0046 0047 private: 0048 struct Private; 0049 const QScopedPointer<Private> d; 0050 0051 friend struct FastRowProcessor<KisCircleMaskGenerator>; 0052 }; 0053 0054 #endif