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;
104 , d(new
Private(resourcesInterface))
106 d->name = i18n(
"Unnamed");
124 return d->effectEnabled;
162 return !(
d->drop_shadow.effectEnabled() ||
163 d->inner_shadow.effectEnabled() ||
164 d->outer_glow.effectEnabled() ||
165 d->inner_glow.effectEnabled() ||
166 d->bevel_emboss.effectEnabled() ||
167 d->satin.effectEnabled() ||
168 d->color_overlay.effectEnabled() ||
169 d->gradient_overlay.effectEnabled() ||
170 d->pattern_overlay.effectEnabled() ||
171 d->stroke.effectEnabled());
187 if (
d->uuid.isNull()) {
188 d->uuid = QUuid::createUuid();
202 return uuid().toString().mid(1, 36);
217 return &
d->drop_shadow;
222 return &
d->inner_shadow;
227 return &
d->outer_glow;
232 return &
d->inner_glow;
242 return &
d->color_overlay;
247 return &
d->gradient_overlay;
252 return &
d->pattern_overlay;
262 return &
d->bevel_emboss;
272 return &
d->drop_shadow;
277 return &
d->inner_shadow;
282 return &
d->outer_glow;
287 return &
d->inner_glow;
297 return &
d->color_overlay;
302 return &
d->gradient_overlay;
307 return &
d->pattern_overlay;
317 return &
d->bevel_emboss;
322 return d->resourcesInterface;
337 KisPSDLayerStyleSP style = KisRequiredResourcesOperators::cloneWithResourcesSnapshot<KisPSDLayerStyleSP>(
this, globalResourcesInterface);
346 qWarning() <<
"KisPSDLayerStyle::cloneWithResourcesSnapshot: layer style"
347 <<
name() <<
"is expected to have all the canvas resources"
348 <<
"backed, but still depends on something";
352 if (canvasResourcesInterface) {
358 auto bakeGradient = [canvasResourcesInterface, localResourcesSnapshot] (
KoAbstractGradientSP gradient) {
359 if (gradient && !gradient->requiredCanvasResources().isEmpty()) {
368 gradient->cloneAndBakeVariableColors(canvasResourcesInterface);
370 localResourcesSnapshot->removeResource(gradient);
371 localResourcesSnapshot->addResource(clonedGradient);
375 if (style->gradientOverlay()->effectEnabled()) {
376 bakeGradient(style->gradientOverlay()->gradient(localResourcesSnapshot));
379 if (style->innerGlow()->effectEnabled() && style->innerGlow()->fillType() ==
psd_fill_gradient) {
380 bakeGradient(style->innerGlow()->gradient(localResourcesSnapshot));
383 if (style->outerGlow()->effectEnabled() && style->outerGlow()->fillType() ==
psd_fill_gradient) {
384 bakeGradient(style->outerGlow()->gradient(localResourcesSnapshot));
387 if (style->stroke()->effectEnabled() && style->stroke()->fillType() ==
psd_fill_gradient) {
388 bakeGradient(style->stroke()->gradient(localResourcesSnapshot));
405 if (!globalResourcesInterface->source(sig.
type)
408 resources << resource;
417 d->sideLoadedResources.clear();
422 d->sideLoadedResources =
value;
431 result << globalResourcesInterface->source(sig.
type).bestMatchLoadResult(sig.
md5sum, sig.
filename, sig.
name);
443 result << gradient->requiredCanvasResources();
float value(const T *src, size_t ch)
static QVector< KoResourceSignature > fetchLinkedResourceSignatures(const KisPSDLayerStyle *style)
a KisResourcesInterface-like resources storage for preloaded resources
const KoResourceSignature & signature() const
static QString generateHash(const QString &filename)
generateHash reads the given file and generates a hex-encoded md5sum for the file.
A simple wrapper object for the main information about the resource.
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
QList< KoResourceLoadResult > linkedResources(KisResourcesInterfaceSP globalResourcesInterface) const override
Private(const Private &rhs)
bool hasLocalResourcesSnapshot() const
QList< KoEmbeddedResource > sideLoadedResources
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
void setEnabled(bool value)
bool isSerializable() const override
psd_layer_effects_outer_glow outer_glow
void setSideLoadedResources(const QList< KoEmbeddedResource > &value)
void clearSideLoadedResources() override
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.