File indexing completed on 2025-02-02 04:22:12

0001 /*
0002  *  SPDX-FileCopyrightText: 2022 Dmitry Kazakov <dimula73@gmail.com>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 #include "KisColorSourceOptionData.h"
0007 
0008 #include <klocalizedstring.h>
0009 #include <KoID.h>
0010 #include <kis_properties_configuration.h>
0011 
0012 namespace {
0013 
0014 struct ColorSourceTypeMapper {
0015     ColorSourceTypeMapper() {
0016         addType(KisColorSourceOptionData::PLAIN, KoID("plain", i18n("Plain color")));
0017         addType(KisColorSourceOptionData::GRADIENT, KoID("gradient", i18n("Gradient")));
0018         addType(KisColorSourceOptionData::UNIFORM_RANDOM, KoID("uniform_random", i18n("Uniform random")));
0019         addType(KisColorSourceOptionData::TOTAL_RANDOM, KoID("total_random", i18n("Total random")));
0020         addType(KisColorSourceOptionData::PATTERN, KoID("pattern", i18n("Pattern")));
0021         addType(KisColorSourceOptionData::PATTERN_LOCKED, KoID("lockedpattern", i18n("Locked pattern")));
0022     }
0023     QMap<KisColorSourceOptionData::Type, KoID> type2id;
0024     QMap<QString, KisColorSourceOptionData::Type> id2type;
0025 
0026 private:
0027     void addType(KisColorSourceOptionData::Type _type, KoID _id) {
0028         type2id[_type] = _id;
0029         id2type[_id.id()] = _type;
0030     }
0031 };
0032 
0033 }
0034 
0035 Q_GLOBAL_STATIC(ColorSourceTypeMapper, s_instance)
0036 
0037 bool KisColorSourceOptionData::read(const KisPropertiesConfiguration *setting)
0038 {
0039     const QString colorSourceType = setting->getString("ColorSource/Type", "plain");
0040     type = s_instance->id2type.value(colorSourceType, PLAIN);
0041     return true;
0042 }
0043 
0044 void KisColorSourceOptionData::write(KisPropertiesConfiguration *setting) const
0045 {
0046     setting->setProperty("ColorSource/Type", s_instance->type2id.value(type).id());
0047 }
0048 
0049 QVector<KoID> KisColorSourceOptionData::colorSourceTypeIds()
0050 {
0051     return s_instance->type2id.values().toVector();
0052 }
0053 
0054 KoID KisColorSourceOptionData::type2Id(Type type)
0055 {
0056     return s_instance->type2id[type];
0057 }
0058 
0059 KisColorSourceOptionData::Type KisColorSourceOptionData::id2Type(const KoID &id)
0060 {
0061     return s_instance->id2type[id.id()];
0062 }