HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
apiSchemaAdapter.h
Go to the documentation of this file.
1 //
2 // Copyright 2022 Pixar
3 //
4 // Licensed under the terms set forth in the LICENSE.txt file available at
5 // https://openusd.org/license.
6 //
7 #ifndef PXR_USD_IMAGING_USD_IMAGING_API_SCHEMA_ADAPTER_H
8 #define PXR_USD_IMAGING_USD_IMAGING_API_SCHEMA_ADAPTER_H
9 
10 /// \file usdImaging/apiSchemaAdapter.h
11 
12 #include "pxr/pxr.h"
16 
17 #include "pxr/usd/usd/prim.h"
18 
20 
21 #include "pxr/base/tf/type.h"
22 
23 #include <memory>
24 
25 
27 
29 
31  std::shared_ptr<class UsdImagingAPISchemaAdapter>;
32 
33 /// \class UsdImagingAPISchemaAdapter
34 ///
35 /// Base class for all API schema adapters.
36 ///
37 /// These map behavior of applied API schemas to contributions the hydra prims
38 /// and data sources generated for a given USD prim.
40  : public std::enable_shared_from_this<UsdImagingAPISchemaAdapter>
41 {
42 public:
43 
46 
47  /// Called to determine whether an API schema defines additional child
48  /// hydra prims beyond the primary hydra prim representing the USD prim
49  /// on which the API schema is applied. The token values returned are
50  /// appended (as property names) to the SdfPath which serves as the hydra
51  /// id of the primary prim.
52  /// \p appliedInstanceName will be non-empty for multiple-apply schema
53  /// instance names.
56  UsdPrim const& prim,
57  TfToken const& appliedInstanceName);
58 
59  /// Called to determine whether an API schema specifies the hydra type of
60  /// a given prim previously defined by a call to GetImagingSubprims.
61  /// \p subprim corresponds to an element in the result of a previous call
62  /// to GetImagingSubprims.
63  /// \p appliedInstanceName will be non-empty for multiple-apply schema
64  /// instance names.
67  UsdPrim const& prim,
68  TfToken const& subprim,
69  TfToken const& appliedInstanceName);
70 
71  /// Returns an HdContainerDataSourceHandle representing the API schema's
72  /// contributions to the primary prim (empty \p subprim value) or a specific
73  /// subprim. The non-null results of the prim adapter and each applied API
74  /// schema adapter are overlaid (in application order).
75  ///
76  /// Ideally, data sources within this container are lazily evaluated to
77  /// avoid doing work until some consumes the data.
79  virtual HdContainerDataSourceHandle GetImagingSubprimData(
80  UsdPrim const& prim,
81  TfToken const& subprim,
82  TfToken const& appliedInstanceName,
83  const UsdImagingDataSourceStageGlobals &stageGlobals);
84 
85  /// Given the names of USD properties which have changed, an adapter may
86  /// provide a HdDataSourceLocatorSet describing which data sources should
87  /// be flagged as dirty.
90  UsdPrim const& prim,
91  TfToken const& subprim,
92  TfToken const& appliedInstanceName,
93  TfTokenVector const& properties,
94  UsdImagingPropertyInvalidationType invalidationType);
95 };
96 
97 
99 {
100 public:
101  virtual UsdImagingAPISchemaAdapterSharedPtr New() const = 0;
102 };
103 
104 template <class T>
107 {
108 public:
110  {
111  return std::make_shared<T>();
112  }
113 };
114 
116 
117 #endif
virtual USDIMAGING_API TfTokenVector GetImagingSubprims(UsdPrim const &prim, TfToken const &appliedInstanceName)
virtual USDIMAGING_API ~UsdImagingAPISchemaAdapter()
#define USDIMAGING_API
Definition: api.h:23
Base class of all factory types.
Definition: type.h:56
std::shared_ptr< UsdImagingAPISchemaAdapter > UsdImagingAPISchemaAdapterSharedPtr
Definition: token.h:70
virtual UsdImagingAPISchemaAdapterSharedPtr New() const
Definition: prim.h:116
virtual UsdImagingAPISchemaAdapterSharedPtr New() const =0
std::vector< TfToken > TfTokenVector
Convenience types.
Definition: token.h:440
virtual USDIMAGING_API HdContainerDataSourceHandle GetImagingSubprimData(UsdPrim const &prim, TfToken const &subprim, TfToken const &appliedInstanceName, const UsdImagingDataSourceStageGlobals &stageGlobals)
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
Definition: path.h:1425
#define PXR_NAMESPACE_CLOSE_SCOPE
Definition: pxr.h:74
virtual USDIMAGING_API TfToken GetImagingSubprimType(UsdPrim const &prim, TfToken const &subprim, TfToken const &appliedInstanceName)
UsdImagingPropertyInvalidationType
Definition: types.h:17
virtual USDIMAGING_API HdDataSourceLocatorSet InvalidateImagingSubprim(UsdPrim const &prim, TfToken const &subprim, TfToken const &appliedInstanceName, TfTokenVector const &properties, UsdImagingPropertyInvalidationType invalidationType)