File indexing completed on 2024-05-12 15:58:38
0001 /* 0002 * SPDX-FileCopyrightText: 2014 Boudewijn Rempt <boud@valdyas.org> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 #ifndef KIS_PSD_LAYER_STYLE_H 0007 #define KIS_PSD_LAYER_STYLE_H 0008 0009 class QIODevice; 0010 class QUuid; 0011 0012 #include <QVector> 0013 0014 #include <psd.h> 0015 0016 #include "kis_types.h" 0017 #include "kritaimage_export.h" 0018 0019 class KisPSDLayerStyle; 0020 typedef QSharedPointer<KisPSDLayerStyle> KisPSDLayerStyleSP; 0021 0022 0023 /** 0024 * @brief The KisPSDLayerStyle class implements loading, saving and applying 0025 * the PSD layer effects. 0026 * 0027 * See https://www.tonton-pixel.com/Photoshop%20Additional%20File%20Formats/styles-file-format.html 0028 * 0029 */ 0030 class KRITAIMAGE_EXPORT KisPSDLayerStyle : public KoResource 0031 { 0032 0033 public: 0034 KisPSDLayerStyle(const QString &filename = "", KisResourcesInterfaceSP resourcesInterface = KisResourcesInterfaceSP()); 0035 virtual ~KisPSDLayerStyle(); 0036 KisPSDLayerStyle(const KisPSDLayerStyle& rhs); 0037 KisPSDLayerStyle operator=(const KisPSDLayerStyle& rhs) = delete; 0038 0039 KoResourceSP clone() const override; 0040 0041 bool isSerializable() const override; 0042 bool loadFromDevice(QIODevice *dev, KisResourcesInterfaceSP resourcesInterface) override; 0043 bool saveToDevice(QIODevice *dev) const override; 0044 0045 void clear(); 0046 0047 QString name() const override; 0048 void setName(const QString &value); 0049 0050 QUuid uuid() const; 0051 void setUuid(const QUuid &value); 0052 0053 QString psdUuid() const; 0054 void setPsdUuid(const QString &value); 0055 0056 QPair<QString, QString> resourceType() const override 0057 { 0058 return QPair<QString, QString>(ResourceType::LayerStyles, ""); 0059 } 0060 0061 /** 0062 * \return true if all the styles are disabled 0063 */ 0064 bool isEmpty() const; 0065 0066 bool isEnabled() const; 0067 void setEnabled(bool value); 0068 0069 const psd_layer_effects_context* context() const; 0070 const psd_layer_effects_drop_shadow* dropShadow() const; 0071 const psd_layer_effects_inner_shadow* innerShadow() const; 0072 const psd_layer_effects_outer_glow* outerGlow() const; 0073 const psd_layer_effects_inner_glow* innerGlow() const; 0074 const psd_layer_effects_satin* satin() const; 0075 const psd_layer_effects_color_overlay* colorOverlay() const; 0076 const psd_layer_effects_gradient_overlay* gradientOverlay() const; 0077 const psd_layer_effects_pattern_overlay* patternOverlay() const; 0078 const psd_layer_effects_stroke* stroke() const; 0079 const psd_layer_effects_bevel_emboss* bevelAndEmboss() const; 0080 0081 psd_layer_effects_context* context(); 0082 psd_layer_effects_drop_shadow* dropShadow(); 0083 psd_layer_effects_inner_shadow* innerShadow(); 0084 psd_layer_effects_outer_glow* outerGlow(); 0085 psd_layer_effects_inner_glow* innerGlow(); 0086 psd_layer_effects_satin* satin(); 0087 psd_layer_effects_color_overlay* colorOverlay(); 0088 psd_layer_effects_gradient_overlay* gradientOverlay(); 0089 psd_layer_effects_pattern_overlay* patternOverlay(); 0090 psd_layer_effects_stroke* stroke(); 0091 psd_layer_effects_bevel_emboss* bevelAndEmboss(); 0092 0093 0094 /** 0095 * @return resource interface that is used by KisPSDLayerStyle object for 0096 * loading linked resources 0097 */ 0098 KisResourcesInterfaceSP resourcesInterface() const; 0099 0100 /** 0101 * Set resource interface that will be used by KisPSDLayerStyle object for 0102 * loading linked resources 0103 */ 0104 void setResourcesInterface(KisResourcesInterfaceSP resourcesInterface); 0105 0106 /** 0107 * \see KisRequiredResourcesOperators::hasLocalResourcesSnapshot 0108 */ 0109 bool hasLocalResourcesSnapshot() const; 0110 0111 /** 0112 * \see KisRequiredResourcesOperators::cloneWithResourcesSnapshot 0113 */ 0114 KisPSDLayerStyleSP cloneWithResourcesSnapshot(KisResourcesInterfaceSP globalResourcesInterface, KoCanvasResourcesInterfaceSP canvasResourcesInterface) const; 0115 0116 QList<KoResourceLoadResult> embeddedResources(KisResourcesInterfaceSP globalResourcesInterface) const override; 0117 0118 QList<int> requiredCanvasResources() const override; 0119 0120 private: 0121 struct Private; 0122 Private * const d; 0123 }; 0124 0125 #endif // KIS_PSD_LAYER_STYLE_H