HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
dirtyBitsTranslator.h
Go to the documentation of this file.
1 //
2 // Copyright 2021 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_DIRTY_BITS_TRANSLATOR_H
25 #define PXR_IMAGING_HD_DIRTY_BITS_TRANSLATOR_H
26 
27 #include "pxr/pxr.h"
28 #include "pxr/base/tf/token.h"
30 #include "pxr/imaging/hd/types.h"
31 
33 
34 /// \class HdDirtyBitsTranslator
35 ///
36 /// A set of optimized functions for translating between dirty bits and
37 /// datasource locators for different prim types.
39 {
40 public:
41  // Dirty bits to locators.
42  HD_API
43  static void RprimDirtyBitsToLocatorSet(TfToken const& primType,
44  const HdDirtyBits bits, HdDataSourceLocatorSet *set);
45  HD_API
46  static void SprimDirtyBitsToLocatorSet(TfToken const& primType,
47  const HdDirtyBits bits, HdDataSourceLocatorSet *set);
48  HD_API
49  static void BprimDirtyBitsToLocatorSet(TfToken const& primType,
50  const HdDirtyBits bits, HdDataSourceLocatorSet *set);
51  HD_API
52  static void InstancerDirtyBitsToLocatorSet(TfToken const& primType,
53  const HdDirtyBits bits, HdDataSourceLocatorSet *set);
54 
55  // Locators to dirty bits.
56  HD_API
57  static HdDirtyBits RprimLocatorSetToDirtyBits(TfToken const& primType,
58  HdDataSourceLocatorSet const& set);
59  HD_API
60  static HdDirtyBits SprimLocatorSetToDirtyBits(TfToken const& primType,
61  HdDataSourceLocatorSet const& set);
62  HD_API
63  static HdDirtyBits BprimLocatorSetToDirtyBits(TfToken const& primType,
64  HdDataSourceLocatorSet const& set);
65  HD_API
66  static HdDirtyBits InstancerLocatorSetToDirtyBits(TfToken const& primType,
67  HdDataSourceLocatorSet const& set);
68 
70  std::function<void(HdDataSourceLocatorSet const&, HdDirtyBits *)>;
71 
73  std::function<void(const HdDirtyBits, HdDataSourceLocatorSet *)>;
74 
75  /// Allows for customization of translation for unknown (to the system)
76  /// sprim types. Absence of registered functions for an unknown type falls
77  /// back to DirtyAll equivalents in both directions.
78  HD_API
79  static void RegisterTranslatorsForCustomSprimType(TfToken const& primType,
81 
82 };
83 
85 
86 #endif // PXR_IMAGING_HD_DIRTY_BITS_TRANSLATOR_H
std::function< void(HdDataSourceLocatorSet const &, HdDirtyBits *)> LocatorSetToDirtyBitsFnc
static HD_API HdDirtyBits RprimLocatorSetToDirtyBits(TfToken const &primType, HdDataSourceLocatorSet const &set)
std::function< void(const HdDirtyBits, HdDataSourceLocatorSet *)> DirtyBitsToLocatorSetFnc
uint32_t HdDirtyBits
Definition: types.h:158
static HD_API HdDirtyBits InstancerLocatorSetToDirtyBits(TfToken const &primType, HdDataSourceLocatorSet const &set)
#define HD_API
Definition: api.h:40
static HD_API void SprimDirtyBitsToLocatorSet(TfToken const &primType, const HdDirtyBits bits, HdDataSourceLocatorSet *set)
static HD_API void InstancerDirtyBitsToLocatorSet(TfToken const &primType, const HdDirtyBits bits, HdDataSourceLocatorSet *set)
Definition: token.h:87
static HD_API void BprimDirtyBitsToLocatorSet(TfToken const &primType, const HdDirtyBits bits, HdDataSourceLocatorSet *set)
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
Definition: path.h:1441
static HD_API HdDirtyBits BprimLocatorSetToDirtyBits(TfToken const &primType, HdDataSourceLocatorSet const &set)
#define PXR_NAMESPACE_CLOSE_SCOPE
Definition: pxr.h:91
static HD_API HdDirtyBits SprimLocatorSetToDirtyBits(TfToken const &primType, HdDataSourceLocatorSet const &set)
static HD_API void RegisterTranslatorsForCustomSprimType(TfToken const &primType, LocatorSetToDirtyBitsFnc sToBFnc, DirtyBitsToLocatorSetFnc bToSFnc)
static HD_API void RprimDirtyBitsToLocatorSet(TfToken const &primType, const HdDirtyBits bits, HdDataSourceLocatorSet *set)