11#include <KLocalizedString>
31 , resourcesInterface(_resourcesInterface)
33 if (!resourcesInterface) {
42 effectEnabled(rhs.effectEnabled),
44 drop_shadow(rhs.drop_shadow),
45 inner_shadow(rhs.inner_shadow),
46 outer_glow(rhs.outer_glow),
47 inner_glow(rhs.inner_glow),
48 bevel_emboss(rhs.bevel_emboss),
50 color_overlay(rhs.color_overlay),
51 gradient_overlay(rhs.gradient_overlay),
52 pattern_overlay(rhs.pattern_overlay),
54 resourcesInterface(rhs.resourcesInterface)
62 version = rhs.version;
63 effectEnabled = rhs.effectEnabled;
64 context = rhs.context;
65 drop_shadow = rhs.drop_shadow;
66 inner_shadow = rhs.inner_shadow;
67 outer_glow = rhs.outer_glow;
68 inner_glow = rhs.inner_glow;
69 bevel_emboss = rhs.bevel_emboss;
71 color_overlay = rhs.color_overlay;
72 gradient_overlay = rhs.gradient_overlay;
73 pattern_overlay = rhs.pattern_overlay;
75 resourcesInterface = rhs.resourcesInterface;
102 , d(new
Private(resourcesInterface))
104 d->name = i18n(
"Unnamed");
122 return d->effectEnabled;
160 return !(
d->drop_shadow.effectEnabled() ||
161 d->inner_shadow.effectEnabled() ||
162 d->outer_glow.effectEnabled() ||
163 d->inner_glow.effectEnabled() ||
164 d->bevel_emboss.effectEnabled() ||
165 d->satin.effectEnabled() ||
166 d->color_overlay.effectEnabled() ||
167 d->gradient_overlay.effectEnabled() ||
168 d->pattern_overlay.effectEnabled() ||
169 d->stroke.effectEnabled());
185 if (
d->uuid.isNull()) {
186 d->uuid = QUuid::createUuid();
200 return uuid().toString().mid(1, 36);
215 return &
d->drop_shadow;
220 return &
d->inner_shadow;
225 return &
d->outer_glow;
230 return &
d->inner_glow;
240 return &
d->color_overlay;
245 return &
d->gradient_overlay;
250 return &
d->pattern_overlay;
260 return &
d->bevel_emboss;
270 return &
d->drop_shadow;
275 return &
d->inner_shadow;
280 return &
d->outer_glow;
285 return &
d->inner_glow;
295 return &
d->color_overlay;
300 return &
d->gradient_overlay;
305 return &
d->pattern_overlay;
315 return &
d->bevel_emboss;
320 return d->resourcesInterface;
335 KisPSDLayerStyleSP style = KisRequiredResourcesOperators::cloneWithResourcesSnapshot<KisPSDLayerStyleSP>(
this, globalResourcesInterface);
344 qWarning() <<
"KisPSDLayerStyle::cloneWithResourcesSnapshot: layer style"
345 <<
name() <<
"is expected to have all the canvas resources"
346 <<
"backed, but still depends on something";
350 if (canvasResourcesInterface) {
356 auto bakeGradient = [canvasResourcesInterface, localResourcesSnapshot] (
KoAbstractGradientSP gradient) {
357 if (gradient && !gradient->requiredCanvasResources().isEmpty()) {
366 gradient->cloneAndBakeVariableColors(canvasResourcesInterface);
368 localResourcesSnapshot->removeResource(gradient);
369 localResourcesSnapshot->addResource(clonedGradient);
373 if (style->gradientOverlay()->effectEnabled()) {
374 bakeGradient(style->gradientOverlay()->gradient(style->resourcesInterface()));
377 if (style->innerGlow()->effectEnabled() && style->innerGlow()->fillType() ==
psd_fill_gradient) {
378 bakeGradient(style->innerGlow()->gradient(style->resourcesInterface()));
381 if (style->outerGlow()->effectEnabled() && style->outerGlow()->fillType() ==
psd_fill_gradient) {
382 bakeGradient(style->outerGlow()->gradient(style->resourcesInterface()));
385 if (style->stroke()->effectEnabled() && style->stroke()->fillType() ==
psd_fill_gradient) {
386 bakeGradient(style->stroke()->gradient(style->resourcesInterface()));
395 Q_UNUSED(globalResourcesInterface);
405 result << gradient->requiredCanvasResources();
float value(const T *src, size_t ch)
static QVector< KoResourceSP > fetchEmbeddedResources(const KisPSDLayerStyle *style)
a KisResourcesInterface-like resources storage for preloaded resources
static QString generateHash(const QString &filename)
generateHash reads the given file and generates a hex-encoded md5sum for the file.
bool effectEnabled() const
#define KIS_ASSERT_RECOVER_RETURN_VALUE(cond, val)
#define KIS_SAFE_ASSERT_RECOVER_NOOP(cond)
QSharedPointer< T > toQShared(T *ptr)
bool hasLocalResourcesSnapshot(const T *object)
void makeContainerUnique(C &container)
The KisPSDLayerStyle class implements loading, saving and applying the PSD layer effects.
KisResourcesInterfaceSP resourcesInterface
QList< int > requiredCanvasResources() const override
KisPSDLayerStyleSP cloneWithResourcesSnapshot(KisResourcesInterfaceSP globalResourcesInterface, KoCanvasResourcesInterfaceSP canvasResourcesInterface) const
Private(const Private &rhs)
bool hasLocalResourcesSnapshot() const
bool loadFromDevice(QIODevice *dev, KisResourcesInterfaceSP resourcesInterface) override
psd_layer_effects_inner_glow inner_glow
psd_layer_effects_context context
const psd_layer_effects_bevel_emboss * bevelAndEmboss() const
psd_layer_effects_color_overlay color_overlay
virtual ~KisPSDLayerStyle()
bool saveToDevice(QIODevice *dev) const override
psd_layer_effects_gradient_overlay gradient_overlay
QList< KoResourceLoadResult > embeddedResources(KisResourcesInterfaceSP globalResourcesInterface) const override
void setEnabled(bool value)
bool isSerializable() const override
psd_layer_effects_outer_glow outer_glow
void setResourcesInterface(KisResourcesInterfaceSP resourcesInterface)
const psd_layer_effects_drop_shadow * dropShadow() const
const psd_layer_effects_color_overlay * colorOverlay() const
const psd_layer_effects_gradient_overlay * gradientOverlay() const
void setName(const QString &value)
void setUuid(const QUuid &value)
psd_layer_effects_bevel_emboss bevel_emboss
psd_layer_effects_inner_shadow inner_shadow
void setPsdUuid(const QString &value)
const psd_layer_effects_inner_glow * innerGlow() const
psd_layer_effects_stroke stroke
psd_layer_effects_pattern_overlay pattern_overlay
Private operator=(const Private &rhs)
KoResourceSP clone() const override
KisPSDLayerStyle(const QString &filename="", KisResourcesInterfaceSP resourcesInterface=KisResourcesInterfaceSP())
const psd_layer_effects_pattern_overlay * patternOverlay() const
const psd_layer_effects_inner_shadow * innerShadow() const
psd_layer_effects_drop_shadow drop_shadow
Private(KisResourcesInterfaceSP _resourcesInterface)
const psd_layer_effects_outer_glow * outerGlow() const
psd_layer_effects_satin satin
void setValid(bool valid)
void setMD5Sum(const QString &md5sum)
Set the md5sum of this resource. It must be in hex-encoded string format.