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 PXR_IMAGING_HD_RPRIM_COLLECTION_H
25 #define PXR_IMAGING_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  // TfHash support.
193  template <class HashState>
194  friend void TfHashAppend(HashState &h, HdRprimCollection const &rc) {
195  h.Append(rc._name,
196  rc._reprSelector,
197  rc._forcedRepr,
198  rc._rootPaths,
199  rc._excludePaths,
200  rc._materialTag);
201  }
202 
203  HD_API
204  bool operator==(HdRprimCollection const & lhs) const;
205  HD_API
206  bool operator!=(HdRprimCollection const & lhs) const;
207 
208 private:
209  HD_API
210  friend std::ostream & operator <<(std::ostream &out,
211  HdRprimCollection const & v);
212 
213  TfToken _name;
214  HdReprSelector _reprSelector;
215  bool _forcedRepr;
216  TfToken _materialTag;
217  SdfPathVector _rootPaths;
218  SdfPathVector _excludePaths;
219 };
220 
221 // VtValue requirements
222 HD_API
223 std::ostream& operator<<(std::ostream& out, HdRprimCollection const & v);
224 
225 // Overload hash_value for HdRprimCollection. Used by things like boost::hash.
226 HD_API
227 size_t hash_value(HdRprimCollection const &col);
228 
229 
230 PXR_NAMESPACE_CLOSE_SCOPE
231 
232 #endif //PXR_IMAGING_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:87
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:288
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
TfToken class for efficient string referencing and hashing, plus conversions to and from stl string c...