HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
overlayContainerDataSource.h
Go to the documentation of this file.
1 //
2 // Copyright 2021 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_IMAGING_HD_OVERLAY_CONTAINER_DATA_SOURCE_H
8 #define PXR_IMAGING_HD_OVERLAY_CONTAINER_DATA_SOURCE_H
9 
11 
13 
14 /// \class HdOverlayContainerDataSource
15 ///
16 /// Lazily composes two or more container source hierarchies
17 /// Earlier entries on the containers array have stronger opinion strength
18 /// for overlapping child names. Overlapping children which are all containers
19 /// themselves are returned as another instance of this class
21 {
22 public:
24 
27  HdContainerDataSourceHandle);
28 
29  HD_API
31  std::initializer_list<HdContainerDataSourceHandle> sources);
32 
33  HD_API
35  size_t count,
36  HdContainerDataSourceHandle *containers);
37 
38  HD_API
40  const HdContainerDataSourceHandle &src1,
41  const HdContainerDataSourceHandle &src2);
42 
43  HD_API
45  const HdContainerDataSourceHandle &src1,
46  const HdContainerDataSourceHandle &src2,
47  const HdContainerDataSourceHandle &src3);
48 
49  /// Creates HdOverlayContainerDataSource from sources, but only
50  /// if needed. If one of given handles is null, the other handle
51  /// is returned instead.
52  HD_API
53  static
54  HdContainerDataSourceHandle
56  const HdContainerDataSourceHandle &src1,
57  const HdContainerDataSourceHandle &src2);
58 
59  HD_API
60  TfTokenVector GetNames() override;
61  HD_API
62  HdDataSourceBaseHandle Get(const TfToken &name) override;
63 
64 private:
66  _ContainerVector _containers;
67 };
68 
70 
72 
73 #endif
HD_API HdOverlayContainerDataSource(std::initializer_list< HdContainerDataSourceHandle > sources)
HD_DECLARE_DATASOURCE(HdOverlayContainerDataSource)
#define HD_API
Definition: api.h:23
static HD_API HdContainerDataSourceHandle OverlayedContainerDataSources(const HdContainerDataSourceHandle &src1, const HdContainerDataSourceHandle &src2)
GLsizei GLenum * sources
Definition: glcorearb.h:2542
Definition: token.h:70
HD_DECLARE_DATASOURCE_HANDLES(HdOverlayContainerDataSource)
HD_API TfTokenVector GetNames() override
std::vector< TfToken > TfTokenVector
Convenience types.
Definition: token.h:440
GLuint const GLchar * name
Definition: glcorearb.h:786
HD_API HdDataSourceBaseHandle Get(const TfToken &name) override
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
Definition: path.h:1425
#define PXR_NAMESPACE_CLOSE_SCOPE
Definition: pxr.h:74
GLint GLsizei count
Definition: glcorearb.h:405
HD_DECLARE_DATASOURCE_INITIALIZER_LIST_NEW(HdOverlayContainerDataSource, HdContainerDataSourceHandle)