File indexing completed on 2024-06-16 04:17:26

0001 /*
0002  *  SPDX-FileCopyrightText: 2012 Dmitry Kazakov <dimula73@gmail.com>
0003  *  SPDX-FileCopyrightText: 2014 Mohit Goyal <mohit.bits2011@gmail.com>
0004  *
0005  *  SPDX-License-Identifier: GPL-2.0-or-later
0006  */
0007 
0008 #ifndef __KIS_PRECISION_OPTION_H
0009 #define __KIS_PRECISION_OPTION_H
0010 
0011 #include <QString>
0012 #include <kritapaintop_export.h>
0013 #include <kis_properties_configuration.h>
0014 
0015 const QString PRECISION_LEVEL = "KisPrecisionOption/precisionLevel";
0016 const QString AUTO_PRECISION_ENABLED = "KisPrecisionOption/AutoPrecisionEnabled";
0017 const QString STARTING_SIZE = "KisPrecisionOption/SizeToStartFrom";
0018 const QString DELTA_VALUE = "KisPrecisionOption/DeltaValue";
0019 
0020 
0021 namespace KisBrushModel {
0022 struct PrecisionData :  public boost::equality_comparable<PrecisionData>
0023 {
0024     int precisionLevel = 5;
0025     bool useAutoPrecision = false;
0026 
0027     friend bool operator==(const PrecisionData &lhs, const PrecisionData &rhs);
0028     static PrecisionData read(const KisPropertiesConfiguration *config);
0029     void write(KisPropertiesConfiguration *config) const;
0030 };
0031 }
0032 
0033 class PAINTOP_EXPORT KisPrecisionOption
0034 {
0035 public:
0036     KisPrecisionOption(const KisPropertiesConfiguration *setting);
0037 
0038     int effectivePrecisionLevel(qreal effectiveDabSize) const;
0039     void setHasImprecisePositionOptions(bool value);
0040     bool hasImprecisePositionOptions() const;
0041 
0042     int precisionLevel() const;
0043     void setPrecisionLevel(int precisionLevel);
0044     void setAutoPrecisionEnabled(int);
0045     bool autoPrecisionEnabled();
0046 
0047 private:
0048     bool m_hasImprecisePositionOptions {false};
0049     KisBrushModel::PrecisionData m_precisionData;
0050 };
0051 
0052 #endif /* __KIS_PRECISION_OPTION_H */