Warning, file /graphics/krita/plugins/paintops/libpaintop/KisTextureOptionData.h was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /*
0002  *  SPDX-FileCopyrightText: 2022 Dmitry Kazakov <dimula73@gmail.com>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 #ifndef KISTEXTUREOPTIONDATA_H
0007 #define KISTEXTUREOPTIONDATA_H
0008 
0009 #include <boost/operators.hpp>
0010 #include <kritapaintop_export.h>
0011 
0012 #include "KisEmbeddedTextureData.h"
0013 
0014 class KisPaintopLodLimitations;
0015 
0016 enum KisBrushTextureFlag
0017 {
0018     None = 0x0,
0019     SupportsLightnessMode = 0x1,
0020     SupportsGradientMode = 0x2,
0021 };
0022 Q_DECLARE_FLAGS(KisBrushTextureFlags, KisBrushTextureFlag)
0023 Q_DECLARE_OPERATORS_FOR_FLAGS(KisBrushTextureFlags)
0024 
0025 
0026 
0027 struct  PAINTOP_EXPORT KisTextureOptionData : boost::equality_comparable<KisTextureOptionData>
0028 {
0029     enum TexturingMode {
0030         MULTIPLY,
0031         SUBTRACT,
0032         LIGHTNESS,
0033         GRADIENT,
0034         DARKEN,
0035         OVERLAY,
0036         COLOR_DODGE,
0037         COLOR_BURN,
0038         LINEAR_DODGE,
0039         LINEAR_BURN,
0040         HARD_MIX_PHOTOSHOP,
0041         HARD_MIX_SOFTER_PHOTOSHOP,
0042         HEIGHT,
0043         LINEAR_HEIGHT,
0044         HEIGHT_PHOTOSHOP,
0045         LINEAR_HEIGHT_PHOTOSHOP
0046     };
0047 
0048     inline friend bool operator==(const KisTextureOptionData &lhs, const KisTextureOptionData &rhs) {
0049         return lhs.isEnabled == rhs.isEnabled &&
0050                 lhs.textureData == rhs.textureData &&
0051                 qFuzzyCompare(lhs.scale, rhs.scale) &&
0052                 qFuzzyCompare(lhs.brightness, rhs.brightness) &&
0053                 qFuzzyCompare(lhs.contrast, rhs.contrast) &&
0054                 qFuzzyCompare(lhs.neutralPoint, rhs.neutralPoint) &&
0055                 lhs.offsetX == rhs.offsetX &&
0056                 lhs.offsetY == rhs.offsetY &&
0057                 lhs.maximumOffsetX == rhs.maximumOffsetX &&
0058                 lhs.maximumOffsetY == rhs.maximumOffsetY &&
0059                 lhs.isRandomOffsetX == rhs.isRandomOffsetX &&
0060                 lhs.isRandomOffsetY == rhs.isRandomOffsetY &&
0061                 lhs.texturingMode == rhs.texturingMode &&
0062                 lhs.cutOffPolicy == rhs.cutOffPolicy &&
0063                 lhs.cutOffLeft == rhs.cutOffLeft &&
0064                 lhs.cutOffRight == rhs.cutOffRight &&
0065                 lhs.invert == rhs.invert;
0066     }
0067 
0068     KisEmbeddedTextureData textureData;
0069 
0070     bool isEnabled {false};
0071     qreal scale {1.0};
0072     qreal brightness {0.0};
0073     qreal contrast {1.0};
0074     qreal neutralPoint {0.5};
0075     int offsetX {0};
0076     int offsetY {0};
0077     int maximumOffsetX {0};
0078     int maximumOffsetY {0};
0079     bool isRandomOffsetX {false};
0080     bool isRandomOffsetY {false};
0081     TexturingMode texturingMode {MULTIPLY};
0082     int cutOffPolicy {0};
0083     int cutOffLeft {0};
0084     int cutOffRight {255};
0085     bool invert {false};
0086 
0087     bool read(const KisPropertiesConfiguration *setting);
0088     void write(KisPropertiesConfiguration *setting) const;
0089 
0090     KisPaintopLodLimitations lodLimitations() const;
0091 };
0092 
0093 
0094 #endif // KISTEXTUREOPTIONDATA_H