dirtyBitsTranslator.h
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"
29 #include "pxr/imaging/hd/dataSourceLocator.h"
30 #include "pxr/imaging/hd/types.h"
31 
32 PXR_NAMESPACE_OPEN_SCOPE
33 
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 
69  using LocatorSetToDirtyBitsFnc =
70  std::function<void(HdDataSourceLocatorSet const&, HdDirtyBits *)>;
71 
72  using DirtyBitsToLocatorSetFnc =
73  std::function<void(const HdDirtyBits, HdDataSourceLocatorSet *)>;
74 
78  HD_API
79  static void RegisterTranslatorsForCustomSprimType(TfToken const& primType,
80  LocatorSetToDirtyBitsFnc sToBFnc, DirtyBitsToLocatorSetFnc bToSFnc);
81 
82 };
83 
84 PXR_NAMESPACE_CLOSE_SCOPE
85 
86 #endif // PXR_IMAGING_HD_DIRTY_BITS_TRANSLATOR_H
A set of optimized functions for translating between dirty bits and datasource locators for different...
Token for efficient comparison, assignment, and hashing of known strings.
Definition: token.h:87
Represents a set of data source locators closed under descendancy.
static HD_API void RegisterTranslatorsForCustomSprimType(TfToken const &primType, LocatorSetToDirtyBitsFnc sToBFnc, DirtyBitsToLocatorSetFnc bToSFnc)
Allows for customization of translation for unknown (to the system) sprim types.
TfToken class for efficient string referencing and hashing, plus conversions to and from stl string c...