File indexing completed on 2024-06-09 04:28:10
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 #include "kis_precision_option.h" 0009 0010 #include "kis_properties_configuration.h" 0011 0012 KisPrecisionOption::KisPrecisionOption(const KisPropertiesConfiguration *setting) 0013 : m_precisionData(KisBrushModel::PrecisionData::read(setting)) 0014 { 0015 } 0016 0017 int KisPrecisionOption::effectivePrecisionLevel(qreal effectiveDabSize) const 0018 { 0019 if (!m_precisionData.useAutoPrecision) { 0020 return m_precisionData.precisionLevel; 0021 } else { 0022 return effectiveDabSize < 30.0 || !m_hasImprecisePositionOptions ? 5 : 3; 0023 } 0024 } 0025 0026 void KisPrecisionOption::setHasImprecisePositionOptions(bool value) 0027 { 0028 m_hasImprecisePositionOptions = value; 0029 } 0030 0031 bool KisPrecisionOption::hasImprecisePositionOptions() const 0032 { 0033 return m_hasImprecisePositionOptions; 0034 } 0035 0036 int KisPrecisionOption::precisionLevel() const 0037 { 0038 return m_precisionData.precisionLevel; 0039 } 0040 0041 void KisPrecisionOption::setPrecisionLevel(int precisionLevel) 0042 { 0043 m_precisionData.precisionLevel = precisionLevel; 0044 } 0045 0046 void KisPrecisionOption::setAutoPrecisionEnabled(int value) 0047 { 0048 m_precisionData.useAutoPrecision = value; 0049 } 0050 0051 bool KisPrecisionOption::autoPrecisionEnabled() 0052 { 0053 return m_precisionData.useAutoPrecision; 0054 } 0055 0056 namespace KisBrushModel { 0057 bool operator==(const PrecisionData &lhs, const PrecisionData &rhs) 0058 { 0059 return lhs.precisionLevel == rhs.precisionLevel && 0060 lhs.useAutoPrecision == rhs.useAutoPrecision; 0061 } 0062 0063 PrecisionData KisBrushModel::PrecisionData::read(const KisPropertiesConfiguration *config) 0064 { 0065 0066 PrecisionData data; 0067 data.precisionLevel = config->getInt(PRECISION_LEVEL, 5); 0068 data.useAutoPrecision = config->getBool(AUTO_PRECISION_ENABLED,false); 0069 return data; 0070 } 0071 0072 void PrecisionData::write(KisPropertiesConfiguration *config) const 0073 { 0074 config->setProperty(PRECISION_LEVEL, precisionLevel); 0075 config->setProperty(AUTO_PRECISION_ENABLED, useAutoPrecision); 0076 } 0077 }