HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
legacyDisplayStyleOverrideSceneIndex.h
Go to the documentation of this file.
1 //
2 // Copyright 2023 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_HDSI_LEGACY_DISPLAY_STYLE_OVERRIDE_SCENE_INDEX_H
25 #define PXR_IMAGING_HDSI_LEGACY_DISPLAY_STYLE_OVERRIDE_SCENE_INDEX_H
26 
27 #include "pxr/pxr.h"
28 #include "pxr/imaging/hdsi/api.h"
30 
32 
33 namespace HdsiLegacyDisplayStyleSceneIndex_Impl
34 {
35 struct _StyleInfo;
36 using _StyleInfoSharedPtr = std::shared_ptr<_StyleInfo>;
37 }
38 
40 
41 ///
42 /// \class HdsiLegacyDisplayStyleOverrideSceneIndex
43 ///
44 /// A scene index overriding the legacy display style for each prim.
45 /// So far, it only supports the refine level.
46 ///
49 {
50 public:
51  HDSI_API
52  static HdsiLegacyDisplayStyleOverrideSceneIndexRefPtr
53  New(const HdSceneIndexBaseRefPtr &inputSceneIndex);
54 
55  HDSI_API
56  HdSceneIndexPrim GetPrim(const SdfPath &primPath) const override;
57 
58  HDSI_API
59  SdfPathVector GetChildPrimPaths(const SdfPath &primPath) const override;
60 
61  /// A replacement for std::optional<int> that is not available until C++17.
62  struct OptionalInt
63  {
64  bool hasValue = false;
65  int value = 0;
66 
67  operator bool() const { return hasValue; }
68  int operator*() const { return value; }
69  };
70 
71  /// Sets the refine level (at data source locator displayStyle:refineLevel)
72  /// for every prim in the input scene inedx.
73  ///
74  /// If an empty optional value is provided, a null data source will be
75  /// returned for the data source locator.
76  ///
77  HDSI_API
78  void SetRefineLevel(const OptionalInt &refineLevel);
79 
80 protected:
82  const HdSceneIndexBaseRefPtr &inputSceneIndex);
83 
84  void _PrimsAdded(
85  const HdSceneIndexBase &sender,
86  const HdSceneIndexObserver::AddedPrimEntries &entries) override;
87 
88  void _PrimsRemoved(
89  const HdSceneIndexBase &sender,
90  const HdSceneIndexObserver::RemovedPrimEntries &entries) override;
91 
92  void _PrimsDirtied(
93  const HdSceneIndexBase &sender,
94  const HdSceneIndexObserver::DirtiedPrimEntries &entries) override;
95 
96 private:
97  void _DirtyAllPrims(const HdDataSourceLocatorSet &locators);
98 
100  _StyleInfoSharedPtr const _styleInfo;
101 
102  /// Prim overlay data source.
103  HdContainerDataSourceHandle const _overlayDs;
104 };
105 
106 HDSI_API
107 bool operator==(
110 
111 HDSI_API
112 bool operator!=(
115 
117 
118 #endif //PXR_IMAGING_HDSI_LEGACY_DISPLAY_STYLE_OVERRIDE_SCENE_INDEX_H
HdsiLegacyDisplayStyleOverrideSceneIndex(const HdSceneIndexBaseRefPtr &inputSceneIndex)
void _PrimsDirtied(const HdSceneIndexBase &sender, const HdSceneIndexObserver::DirtiedPrimEntries &entries) override
void _PrimsAdded(const HdSceneIndexBase &sender, const HdSceneIndexObserver::AddedPrimEntries &entries) override
HDSI_API HdSceneIndexPrim GetPrim(const SdfPath &primPath) const override
GLboolean GLboolean GLboolean GLboolean a
Definition: glcorearb.h:1222
void _PrimsRemoved(const HdSceneIndexBase &sender, const HdSceneIndexObserver::RemovedPrimEntries &entries) override
bool operator!=(const Mat3< T0 > &m0, const Mat3< T1 > &m1)
Inequality operator, does exact floating point comparisons.
Definition: Mat3.h:556
TF_DECLARE_REF_PTRS(HdsiLegacyDisplayStyleOverrideSceneIndex)
HDSI_API void SetRefineLevel(const OptionalInt &refineLevel)
Definition: path.h:291
GLboolean GLboolean GLboolean b
Definition: glcorearb.h:1222
std::vector< class SdfPath > SdfPathVector
A vector of SdfPaths.
Definition: path.h:212
#define HDSI_API
Definition: api.h:40
HDSI_API SdfPathVector GetChildPrimPaths(const SdfPath &primPath) const override
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
Definition: path.h:1441
#define PXR_NAMESPACE_CLOSE_SCOPE
Definition: pxr.h:91
Definition: core.h:1131
static HDSI_API HdsiLegacyDisplayStyleOverrideSceneIndexRefPtr New(const HdSceneIndexBaseRefPtr &inputSceneIndex)
A replacement for std::optional<int> that is not available until C++17.
bool operator==(const Mat3< T0 > &m0, const Mat3< T1 > &m1)
Equality operator, does exact floating point comparisons.
Definition: Mat3.h:542