SMTK
@SMTK_VERSION@
Simulation Modeling Tool Kit
|
An abstract base class for SMTK resources that provide geometry for themselves and/or their components. More...
#include <Resource.h>
Public Member Functions | |
smtkTypeMacro (smtk::geometry::Resource) | |
smtkSharedFromThisMacro (smtk::resource::PersistentObject) | |
std::unique_ptr< Geometry > & | geometry (const Backend &backend) |
Given a backend, return a provider of geometry for that backend. More... | |
std::unique_ptr< Geometry > & | geometry () |
Return the first geometry provider (for any backend). More... | |
void | visitGeometry (std::function< void(std::unique_ptr< Geometry > &)> visitor) |
Visit all existing geometry providers for this resource. More... | |
void | visitGeometry (std::function< void(const std::unique_ptr< Geometry > &)> visitor) const |
Resource (Resource &&)=default | |
void | copyGeometry (const std::shared_ptr< const Resource > &source, smtk::resource::CopyOptions &options) |
Copy renderable geometry from source into this resource. More... | |
Public Member Functions inherited from smtk::resource::DerivedFrom< Resource, smtk::resource::Resource > | |
bool | isOfType (const Resource::Index &index) const override |
given a resource index, return whether or not this resource is or is derived from the resource described by the index. | |
bool | isOfType (const std::string &typeName) const override |
given a resource's unique name, return whether or not this resource is or is derived from the resource described by the name. | |
int | numberOfGenerationsFromBase (const std::string &typeName) const override |
DerivedFrom (const DerivedFrom &)=delete | |
Public Member Functions inherited from smtk::resource::Resource | |
smtkTypeMacro (smtk::resource::Resource) | |
smtkSuperclassMacro (smtk::resource::PersistentObject) | |
smtkSharedFromThisMacro (smtk::resource::PersistentObject) | |
Resource (Resource &&) noexcept | |
virtual Index | index () const |
Index is a compile-time intrinsic of the derived resource's type; as such, it cannot be set. | |
template<class ResourceType > | |
bool | isOfType () const |
Given a resource type, return whether or not this resource is or is derived from the resource described by the index. | |
const smtk::common::UUID & | id () const override |
Set/get the UUID of a resource. More... | |
bool | setId (const smtk::common::UUID &myID) override |
Set/get the UUID of a resource. More... | |
const std::string & | location () const |
Set/get the location (a URL) where the resource is stored persistently. More... | |
virtual bool | setLocation (const std::string &location) |
Set/get the location (a URL) where the resource is stored persistently. More... | |
std::string | name () const override |
Set/get the user-assigned name of the resource. More... | |
virtual bool | setName (const std::string &name) |
Set/get the user-assigned name of the resource. More... | |
bool | isNameSet () const |
Set/get the user-assigned name of the resource. More... | |
virtual bool | clean () const |
Resources that have a non-empty location and are identical to the data stored at location are clean. More... | |
void | setClean (bool state=true) |
Resources that have a non-empty location and are identical to the data stored at location are clean. More... | |
void | setMarkedForRemoval (bool val) |
Mark the resource to indicate it is about to removed (meaning it is being removed from memory not necessarily for deletion) | |
virtual bool | isMarkedForRemoval () const |
Return whether the object is marked for removal. | |
ManagerPtr | manager () const |
Resources that are managed have a non-null pointer to their manager. | |
virtual ComponentPtr | find (const smtk::common::UUID &compId) const =0 |
Given a resource component's UUID, return the resource component. | |
virtual Component * | component (const smtk::common::UUID &compId) const |
Given a component's UUID, return a raw pointer to the component. | |
template<typename ComponentType > | |
ComponentType * | componentAs (const smtk::common::UUID &uuid) const |
A templated version of component() that casts its result to a type. More... | |
virtual std::function< bool(const Component &)> | queryOperation (const std::string &) const |
given a std::string describing a query, return a functor for performing the query (accepts component as input, returns true if the component satisfies the query parameters). | |
virtual void | visit (std::function< void(const ComponentPtr &)> &v) const =0 |
visit all components in a resource. | |
ComponentSet | filter (const std::string &queryString) const |
Given a resource component's UUID, return the resource component. | |
template<typename Collection > | |
Collection | filterAs (const std::string &queryString) const |
given a a std::string describing a query and a type of container, return a set of components that satisfy both. More... | |
Links & | links () override |
Fetch the links stored for this resource and its components. | |
const Links & | links () const override |
Fetch the links stored for this resource and its components. | |
Properties & | properties () override |
const Properties & | properties () const override |
const Queries & | queries () const |
Queries & | queries () |
Lock & | lock (Key()) const |
Classes that are granted permission to the key may retrieve the resource's lock. More... | |
LockType | locked () const |
Anyone can query whether or not the resource is locked. | |
virtual bool | setUnitsSystem (const shared_ptr< units::System > &unitsSystem) |
Sets the system of units used by this resource. | |
const shared_ptr< units::System > & | unitsSystem () const |
Gets the system of units used by this resource. | |
virtual bool | setTemplateType (const smtk::string::Token &templateType) |
Set/get the "type" of a resource's template. More... | |
virtual smtk::string::Token | templateType () const |
Set/get the "type" of a resource's template. More... | |
virtual bool | setTemplateVersion (std::size_t templateVersion) |
Set/get the version number of the template this instance of the resource is based upon. More... | |
virtual std::size_t | templateVersion () const |
Set/get the "type" of a resource's template. More... | |
virtual std::shared_ptr< Resource > | clone (CopyOptions &options) const |
Create an empty, un-managed clone of this resource instance. More... | |
virtual bool | copyInitialize (const std::shared_ptr< const Resource > &source, CopyOptions &options) |
Copy initial data from a source resource into this resource. More... | |
virtual bool | copyFinalize (const std::shared_ptr< const Resource > &source, CopyOptions &options) |
Finalize copying of a resource by resolving internal and external references among components copied from any of the source resources mapped in options. More... | |
void | copyUnitSystem (const std::shared_ptr< const Resource > &rsrc, const CopyOptions &options) |
Copy the units system from rsrc into this resource as specified by options. More... | |
void | copyProperties (const std::shared_ptr< const Resource > &rsrc, CopyOptions &options) |
Copy all property data from rsrc, mapping them along the way via options. More... | |
Public Member Functions inherited from smtk::resource::PersistentObject | |
smtkTypeMacroBase (smtk::resource::PersistentObject) | |
template<typename T > | |
T::Ptr | as () |
Attempt to cast this object to a subclass. | |
template<typename T > | |
T::ConstPtr | as () const |
Attempt to cast this object to a subclass. | |
Protected Member Functions | |
Resource (const smtk::common::UUID &myID, smtk::resource::ManagerPtr manager) | |
Resource (const smtk::common::UUID &myID) | |
Resource (smtk::resource::ManagerPtr manager=nullptr) | |
Protected Member Functions inherited from smtk::resource::DerivedFrom< Resource, smtk::resource::Resource > | |
DerivedFrom (T &&... all) | |
Forward all constructor arguments to the parent class. | |
DerivedFrom (DerivedFrom &&rhs) noexcept=default | |
Protected Member Functions inherited from smtk::resource::Resource | |
Resource (const smtk::common::UUID &, ManagerPtr manager=nullptr) | |
Resource (ManagerPtr manager=nullptr) | |
bool | copyPropertiesForId (const std::shared_ptr< Resource > &rsrc, const smtk::common::UUID &sourceId, const smtk::common::UUID &targetId, const CopyOptions &options) |
Copy all property data for sourceId from rsrc into targetId of this resource. More... | |
void | copyLinks (const std::shared_ptr< const Resource > &rsrc, const CopyOptions &options) |
Copy links from rsrc (except those excluded by options), mapping them along the way. More... | |
Additional Inherited Members | |
Public Types inherited from smtk::resource::DerivedFrom< Resource, smtk::resource::Resource > | |
using | ParentResource = smtk::resource::Resource |
using | Superclass = smtk::resource::Resource |
using | DirectSuperclass = DerivedFrom< Resource, smtk::resource::Resource > |
Public Types inherited from smtk::resource::Resource | |
typedef std::size_t | Index |
typedef smtk::resource::Metadata | Metadata |
typedef detail::ResourceLinks | Links |
typedef detail::ResourceProperties | Properties |
typedef query::Queries | Queries |
Static Public Attributes inherited from smtk::resource::DerivedFrom< Resource, smtk::resource::Resource > | |
static const Resource::Index | type_index |
A static index for this resource type. More... | |
Static Public Attributes inherited from smtk::resource::Resource | |
static const Resource::Index | type_index = std::type_index(typeid(Resource)).hash_code() |
static constexpr smtk::resource::Links::RoleType | VisuallyLinkedRole = -4 |
A role for components that implies their visibility in renderings should be linked to another object. More... | |
Protected Attributes inherited from smtk::resource::Resource | |
WeakManagerPtr | m_manager |
std::shared_ptr< units::System > | m_unitsSystem |
An abstract base class for SMTK resources that provide geometry for themselves and/or their components.
void smtk::geometry::Resource::copyGeometry | ( | const std::shared_ptr< const Resource > & | source, |
smtk::resource::CopyOptions & | options | ||
) |
Copy renderable geometry from source into this resource.
This method is intended to be called by subclasses that choose to override smtk::resource::Resource::copyInitialize(). This method does nothing if options.copyGeometry() is false, so it is safe to call it without checking options yourself.
std::unique_ptr< Geometry > & smtk::geometry::Resource::geometry | ( | ) |
Return the first geometry provider (for any backend).
This may return null if (a) neither the resource nor anything it contains is capable of providing geometry or (b) the application is not linked to a library that can provide data in a format acceptable to the backend.
Use this method when querying for the existence of geometry or for object bounds, since it terminates earlier than visitGeometry(). Note, however, that:
Given a backend, return a provider of geometry for that backend.
This may return null if (a) neither the resource nor anything it contains is capable of providing geometry or (b) the application is not linked to a library that can provide data in a format acceptable to the backend.
void smtk::geometry::Resource::visitGeometry | ( | std::function< void(std::unique_ptr< Geometry > &)> | visitor | ) |
Visit all existing geometry providers for this resource.
This will invoke the given visitor function on each provider. Typically, this is used to inform all providers when a given object's geometry has been modified, like so:
(Note: the pattern above is used by smtk::operation::MarkGeometry; you should use that class rather than directly copy the code above to mark geometry as modified.)