File indexing completed on 2024-05-26 04:34:08

0001 /*
0002  *  SPDX-FileCopyrightText: 2022 Dmitry Kazakov <dimula73@gmail.com>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 #include "KisTextureOptionData.h"
0007 
0008 #include <kis_properties_configuration.h>
0009 #include <kis_paintop_lod_limitations.h>
0010 
0011 bool KisTextureOptionData::read(const KisPropertiesConfiguration *setting)
0012 {
0013     textureData.read(setting);
0014 
0015     isEnabled = setting->getBool("Texture/Pattern/Enabled", false);
0016     scale = setting->getDouble("Texture/Pattern/Scale", 1.0);
0017     brightness = setting->getDouble("Texture/Pattern/Brightness");
0018     contrast = setting->getDouble("Texture/Pattern/Contrast", 1.0);
0019     neutralPoint = setting->getDouble("Texture/Pattern/NeutralPoint", 0.5);
0020     offsetX = setting->getInt("Texture/Pattern/OffsetX");
0021     offsetY = setting->getInt("Texture/Pattern/OffsetY");
0022     isRandomOffsetX = setting->getBool("Texture/Pattern/isRandomOffsetX");
0023     isRandomOffsetY = setting->getBool("Texture/Pattern/isRandomOffsetY");
0024     maximumOffsetX = setting->getInt("Texture/Pattern/MaximumOffsetX");
0025     maximumOffsetY = setting->getInt("Texture/Pattern/MaximumOffsetY");
0026     texturingMode = static_cast<TexturingMode>(setting->getInt("Texture/Pattern/TexturingMode", MULTIPLY));
0027     cutOffPolicy = setting->getInt("Texture/Pattern/CutoffPolicy");
0028     cutOffLeft = setting->getInt("Texture/Pattern/CutoffLeft", 0);
0029     cutOffRight = setting->getInt("Texture/Pattern/CutoffRight", 255);
0030     invert = setting->getBool("Texture/Pattern/Invert");
0031 
0032     return true;
0033 }
0034 
0035 void KisTextureOptionData::write(KisPropertiesConfiguration *setting) const
0036 {
0037     if (!isEnabled) return;
0038 
0039     textureData.write(setting);
0040     setting->setProperty("Texture/Pattern/Enabled", isEnabled);
0041     setting->setProperty("Texture/Pattern/Scale", scale);
0042     setting->setProperty("Texture/Pattern/Brightness", brightness);
0043     setting->setProperty("Texture/Pattern/Contrast", contrast);
0044     setting->setProperty("Texture/Pattern/NeutralPoint", neutralPoint);
0045     setting->setProperty("Texture/Pattern/OffsetX", offsetX);
0046     setting->setProperty("Texture/Pattern/OffsetY", offsetY);
0047     setting->setProperty("Texture/Pattern/TexturingMode", texturingMode);
0048     setting->setProperty("Texture/Pattern/CutoffLeft", cutOffLeft);
0049     setting->setProperty("Texture/Pattern/CutoffRight", cutOffRight);
0050     setting->setProperty("Texture/Pattern/CutoffPolicy", cutOffPolicy);
0051     setting->setProperty("Texture/Pattern/Invert", invert);
0052     setting->setProperty("Texture/Pattern/MaximumOffsetX", maximumOffsetX);
0053     setting->setProperty("Texture/Pattern/MaximumOffsetY", maximumOffsetY);
0054     setting->setProperty("Texture/Pattern/isRandomOffsetX", isRandomOffsetX);
0055     setting->setProperty("Texture/Pattern/isRandomOffsetY", isRandomOffsetY);
0056 }
0057 
0058 KisPaintopLodLimitations KisTextureOptionData::lodLimitations() const
0059 {
0060     KisPaintopLodLimitations l;
0061     if (isEnabled) {
0062         l.limitations << KoID("texture-pattern", i18nc("PaintOp instant preview limitation", "Texture->Pattern (low quality preview)"));
0063     }
0064     return l;
0065 }