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 Apache License, Version 2.0 (the "Apache License")
5 // with the following modification; you may not use this file except in
6 // compliance with the Apache License and the following modification to it:
7 // Section 6. Trademarks. is deleted and replaced with:
8 //
9 // 6. Trademarks. This License does not grant permission to use the trade
10 // names, trademarks, service marks, or product names of the Licensor
11 // and its affiliates, except as required to comply with Section 4(c) of
12 // the License and to reproduce the content of the NOTICE file.
13 //
14 // You may obtain a copy of the Apache License at
15 //
16 // http://www.apache.org/licenses/LICENSE-2.0
17 //
18 // Unless required by applicable law or agreed to in writing, software
19 // distributed under the Apache License with the above modification is
20 // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
21 // KIND, either express or implied. See the Apache License for the specific
22 // language governing permissions and limitations under the Apache License.
23 //
24 #ifndef PXR_USD_IMAGING_USD_IMAGING_API_SCHEMA_ADAPTER_H
25 #define PXR_USD_IMAGING_USD_IMAGING_API_SCHEMA_ADAPTER_H
26 
27 /// \file usdImaging/apiSchemaAdapter.h
28 
29 #include "pxr/pxr.h"
33 
34 #include "pxr/usd/usd/prim.h"
35 
37 
38 #include "pxr/base/tf/type.h"
39 
40 #include <memory>
41 
42 
44 
46 
48  std::shared_ptr<class UsdImagingAPISchemaAdapter>;
49 
50 /// \class UsdImagingAPISchemaAdapter
51 ///
52 /// Base class for all API schema adapters.
53 ///
54 /// These map behavior of applied API schemas to contributions the hydra prims
55 /// and data sources generated for a given USD prim.
57  : public std::enable_shared_from_this<UsdImagingAPISchemaAdapter>
58 {
59 public:
60 
63 
64  /// Called to determine whether an API schema defines additional child
65  /// hydra prims beyond the primary hydra prim representing the USD prim
66  /// on which the API schema is applied. The token values returned are
67  /// appended (as property names) to the SdfPath which serves as the hydra
68  /// id of the primary prim.
69  /// \p appliedInstanceName will be non-empty for multiple-apply schema
70  /// instance names.
73  UsdPrim const& prim,
74  TfToken const& appliedInstanceName);
75 
76  /// Called to determine whether an API schema specifies the hydra type of
77  /// a given prim previously defined by a call to GetImagingSubprims.
78  /// \p subprim corresponds to an element in the result of a previous call
79  /// to GetImagingSubprims.
80  /// \p appliedInstanceName will be non-empty for multiple-apply schema
81  /// instance names.
84  UsdPrim const& prim,
85  TfToken const& subprim,
86  TfToken const& appliedInstanceName);
87 
88  /// Returns an HdContainerDataSourceHandle representing the API schema's
89  /// contributions to the primary prim (empty \p subprim value) or a specific
90  /// subprim. The non-null results of the prim adapter and each applied API
91  /// schema adapter are overlaid (in application order).
92  ///
93  /// Ideally, data sources within this container are lazily evaluated to
94  /// avoid doing work until some consumes the data.
96  virtual HdContainerDataSourceHandle GetImagingSubprimData(
97  UsdPrim const& prim,
98  TfToken const& subprim,
99  TfToken const& appliedInstanceName,
100  const UsdImagingDataSourceStageGlobals &stageGlobals);
101 
102  /// Given the names of USD properties which have changed, an adapter may
103  /// provide a HdDataSourceLocatorSet describing which data sources should
104  /// be flagged as dirty.
107  UsdPrim const& prim,
108  TfToken const& subprim,
109  TfToken const& appliedInstanceName,
110  TfTokenVector const& properties,
111  UsdImagingPropertyInvalidationType invalidationType);
112 };
113 
114 
116 {
117 public:
118  virtual UsdImagingAPISchemaAdapterSharedPtr New() const = 0;
119 };
120 
121 template <class T>
124 {
125 public:
127  {
128  return std::make_shared<T>();
129  }
130 };
131 
133 
134 #endif
virtual USDIMAGING_API TfTokenVector GetImagingSubprims(UsdPrim const &prim, TfToken const &appliedInstanceName)
virtual USDIMAGING_API ~UsdImagingAPISchemaAdapter()
#define USDIMAGING_API
Definition: api.h:40
Base class of all factory types.
Definition: type.h:73
std::shared_ptr< UsdImagingAPISchemaAdapter > UsdImagingAPISchemaAdapterSharedPtr
Definition: token.h:87
virtual UsdImagingAPISchemaAdapterSharedPtr New() const
Definition: prim.h:135
virtual UsdImagingAPISchemaAdapterSharedPtr New() const =0
std::vector< TfToken > TfTokenVector
Convenience types.
Definition: token.h:442
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:1441
#define PXR_NAMESPACE_CLOSE_SCOPE
Definition: pxr.h:91
virtual USDIMAGING_API TfToken GetImagingSubprimType(UsdPrim const &prim, TfToken const &subprim, TfToken const &appliedInstanceName)
UsdImagingPropertyInvalidationType
Definition: types.h:34
virtual USDIMAGING_API HdDataSourceLocatorSet InvalidateImagingSubprim(UsdPrim const &prim, TfToken const &subprim, TfToken const &appliedInstanceName, TfTokenVector const &properties, UsdImagingPropertyInvalidationType invalidationType)