Krita Source Code Documentation
Loading...
Searching...
No Matches
KisRequiredResourcesOperators Namespace Reference

Namespaces

namespace  detail
 

Functions

template<typename TypeSP , typename T = typename KisSharedPointerTraits<TypeSP>::ValueType>
TypeSP cloneWithResourcesSnapshot (const T *object, KisResourcesInterfaceSP globalResourcesInterface=nullptr)
 creates an exact copy of the object and loads all the linked resources into the local storage.
 
template<typename T >
void createLocalResourcesSnapshot (T *object, KisResourcesInterfaceSP globalResourcesInterface=nullptr)
 
template<typename T >
bool hasLocalResourcesSnapshot (const T *object)
 

Function Documentation

◆ cloneWithResourcesSnapshot()

template<typename TypeSP , typename T = typename KisSharedPointerTraits<TypeSP>::ValueType>
TypeSP KisRequiredResourcesOperators::cloneWithResourcesSnapshot ( const T * object,
KisResourcesInterfaceSP globalResourcesInterface = nullptr )

creates an exact copy of the object and loads all the linked resources into the local storage.

Parameters
globalResourcesInterfaceis an optional override for the resources interface used for fetching linked resources. If globalResourcesInterface is null, then object->resourcesInterface() is used.

If a filter configuration object already has a resources snapshot, then the function just clones the object without reloading anything.

Definition at line 84 of file KisRequiredResourcesOperators.h.

86{
87 auto clonedStorage = object->clone();
88 TypeSP cloned = KisSharedPointerTraits<TypeSP>::template dynamicCastSP<T>(clonedStorage);
89
90 if (!hasLocalResourcesSnapshot(cloned.data())) {
91 createLocalResourcesSnapshot(cloned.data(), globalResourcesInterface);
93 }
94
95 return cloned;
96}
#define KIS_SAFE_ASSERT_RECOVER_NOOP(cond)
Definition kis_assert.h:130
void createLocalResourcesSnapshot(T *object, KisResourcesInterfaceSP globalResourcesInterface=nullptr)

References createLocalResourcesSnapshot(), hasLocalResourcesSnapshot(), and KIS_SAFE_ASSERT_RECOVER_NOOP.

◆ createLocalResourcesSnapshot()

template<typename T >
void KisRequiredResourcesOperators::createLocalResourcesSnapshot ( T * object,
KisResourcesInterfaceSP globalResourcesInterface = nullptr )

Loads all the required resources either from the current resource interface or from the embedded data. The object first tries to fetch the required resource from the current source, and only if it fails, tries to load it from the embedded data.

Parameters
globalResourcesInterfaceif globalResourcesInterface is not null, the resources are fetched from there, not from the internally stored resources interface

Definition at line 51 of file KisRequiredResourcesOperators.h.

52{
53 detail::assertInGuiThread();
54
55 KisResourcesInterfaceSP effectiveResourcesInterface =
56 globalResourcesInterface ?
57 globalResourcesInterface :
58 object->resourcesInterface();
59
60 QList<KoResourceLoadResult> loadedResources =
61 object->requiredResources(effectiveResourcesInterface);
62
63 QList<KoResourceSP> resources;
64
65 Q_FOREACH(const KoResourceLoadResult &loadedResource, loadedResources) {
66 detail::addResourceOrWarnIfNotLoaded(loadedResource, &resources, effectiveResourcesInterface);
67 }
68
69 object->setResourcesInterface(detail::createLocalResourcesStorage(resources));
70}

References KisRequiredResourcesOperators::detail::addResourceOrWarnIfNotLoaded(), KisRequiredResourcesOperators::detail::assertInGuiThread(), and KisRequiredResourcesOperators::detail::createLocalResourcesStorage().

◆ hasLocalResourcesSnapshot()

template<typename T >
bool KisRequiredResourcesOperators::hasLocalResourcesSnapshot ( const T * object)
Returns
true if the configuration has all the necessary resources in local storage. It mean it can be used in a threaded environment.
See also
createLocalResourcesSnapshot()

Definition at line 35 of file KisRequiredResourcesOperators.h.

36{
37 return detail::isLocalResourcesStorage(object->resourcesInterface());
38}

References KisRequiredResourcesOperators::detail::isLocalResourcesStorage().