All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
rprimCollection.h
1 //
2 // Copyright 2016 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 HD_RPRIM_COLLECTION_H
25 #define HD_RPRIM_COLLECTION_H
26 
27 #include "pxr/pxr.h"
28 #include "pxr/imaging/hd/api.h"
29 #include "pxr/imaging/hd/version.h"
30 #include "pxr/imaging/hd/repr.h"
31 #include "pxr/usd/sdf/path.h"
32 #include "pxr/base/tf/token.h"
33 
34 #include <string>
35 
36 PXR_NAMESPACE_OPEN_SCOPE
37 
38 
55 public:
56  HD_API
58 
66  HD_API
67  HdRprimCollection(TfToken const& name,
68  HdReprSelector const& reprSelector,
69  bool forcedRepr=false,
70  TfToken const& materialTag = TfToken());
71 
80  HD_API
81  HdRprimCollection(TfToken const& name,
82  HdReprSelector const& reprSelector,
83  SdfPath const& rootPath,
84  bool forcedRepr=false,
85  TfToken const& materialTag = TfToken());
86 
88  HD_API
89  HdRprimCollection(HdRprimCollection const& col);
90 
91  // Destructor.
92  HD_API
93  virtual ~HdRprimCollection();
94 
97  HD_API
98  HdRprimCollection CreateInverseCollection() const;
99 
104  TfToken const& GetName() const {
105  return _name;
106  }
107 
109  void SetName(TfToken const& name) {
110  _name = name;
111  }
112 
120  return _reprSelector;
121  }
122 
123  void SetReprSelector(HdReprSelector const& reprSelector) {
124  _reprSelector = reprSelector;
125  }
126 
127  bool IsForcedRepr() const {
128  return _forcedRepr;
129  }
130 
131  void SetForcedRepr(bool flag) {
132  _forcedRepr = flag;
133  }
134 
140  HD_API
141  SdfPathVector const& GetRootPaths() const;
142 
146  HD_API
147  void SetRootPaths(SdfPathVector const& rootPaths);
148 
152  HD_API
153  void SetRootPath(SdfPath const& rootPath);
154 
157  HD_API
158  void SetExcludePaths(SdfPathVector const& excludePaths);
159 
163  HD_API
164  SdfPathVector const& GetExcludePaths() const;
165 
177  HD_API
178  void SetMaterialTag(TfToken const& tag);
179 
180  HD_API
181  TfToken const& GetMaterialTag() const;
182 
183  HD_API
184  size_t ComputeHash() const;
185 
186  struct Hash {
187  size_t operator()(HdRprimCollection const& value) const {
188  return value.ComputeHash();
189  }
190  };
191 
192  HD_API
193  bool operator==(HdRprimCollection const & lhs) const;
194  HD_API
195  bool operator!=(HdRprimCollection const & lhs) const;
196 
197 private:
198  HD_API
199  friend std::ostream & operator <<(std::ostream &out,
200  HdRprimCollection const & v);
201 
202  TfToken _name;
203  HdReprSelector _reprSelector;
204  bool _forcedRepr;
205  TfToken _materialTag;
206  SdfPathVector _rootPaths;
207  SdfPathVector _excludePaths;
208 };
209 
210 // VtValue requirements
211 HD_API
212 std::ostream& operator<<(std::ostream& out, HdRprimCollection const & v);
213 
214 // Overload hash_value for HdRprimCollection. Used by things like boost::hash.
215 HD_API
216 size_t hash_value(HdRprimCollection const &col);
217 
218 
219 PXR_NAMESPACE_CLOSE_SCOPE
220 
221 #endif //HD_RPRIM_COLLECTION_H
HdReprSelector const & GetReprSelector() const
Returns the representation name.
HD_API SdfPathVector const & GetRootPaths() const
Returns the paths at which all Rprims must be rooted to be included in this collection.
HD_API void SetMaterialTag(TfToken const &tag)
A MaterialTag can be used to ensure only prims whos material have a matching tag will end up in the c...
HD_API SdfPathVector const & GetExcludePaths() const
Returns the excluded paths.
HD_API void SetRootPaths(SdfPathVector const &rootPaths)
Sets all root paths for this collection, replacing any existing paths that were present previously...
HD_API HdRprimCollection CreateInverseCollection() const
Constructs and returns a collection with the root and exclude paths swapped.
Token for efficient comparison, assignment, and hashing of known strings.
Definition: token.h:89
TfToken const & GetName() const
Returns the semantic name of this collection.
HD_API void SetExcludePaths(SdfPathVector const &excludePaths)
Sets all exclude paths for this collection.
A named, semantic collection of objects.
A path value used to locate objects in layers or scenegraphs.
Definition: path.h:287
void SetName(TfToken const &name)
Sets the semantic name of this collection.
GF_API std::ostream & operator<<(std::ostream &, const GfBBox3d &)
Output a GfBBox3d using the format [(range) matrix zeroArea].
HD_API void SetRootPath(SdfPath const &rootPath)
Sets the path at which all Rprims must be rooted to be included in this collection, replacing any existing root paths that were previously specified.
Describes one or more authored display representations for an rprim.
Definition: repr.h:48