HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
pathTranslation.h
Go to the documentation of this file.
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_USD_PCP_PATH_TRANSLATION_H
25 #define PXR_USD_PCP_PATH_TRANSLATION_H
26 
27 /// \file pcp/pathTranslation.h
28 /// Path translation.
29 
30 #include "pxr/pxr.h"
31 #include "pxr/usd/pcp/api.h"
32 
34 
35 class PcpMapFunction;
36 class PcpNodeRef;
37 class SdfPath;
38 
39 /// Translates \p pathInNodeNamespace from the namespace of the prim index node
40 /// \p sourceNode to the namespace of the prim index's root node. This applies
41 /// all necessary namespace translations.
42 ///
43 /// If the path is successfully translated and \p pathWasTranslated is supplied,
44 /// it will be set to \c true. In some cases, paths may fail to translate
45 /// because they fall outside the set of paths that are allowed by nodes in the
46 /// prim index. For instance, for a referenced model, paths referring to
47 /// locations outside that model will not be translated. In these cases, this
48 /// function will return an empty SdfPath and \p pathWasTranslated will be set
49 /// to \c false.
50 ///
51 /// In Sd/Csd terminology, this is forward path translation from the
52 /// namespace of the prim spec represented by \p sourceNode to the composed
53 /// scene namespace.
54 PCP_API
55 SdfPath
57  const PcpNodeRef& sourceNode,
58  const SdfPath& pathInNodeNamespace,
59  bool* pathWasTranslated = 0);
60 
61 /// Translates \p pathInRootNamespace from the namespace of the root of the
62 /// prim index that \p destNode belongs to to the namespace of \p destNode
63 /// itself. This applies all necessary namespace translations.
64 ///
65 /// If the path is successfully translated and \p pathWasTranslated is supplied,
66 /// it will be set to \c true. In some cases, paths may fail to translate
67 /// because they fall outside the set of paths that are allowed by nodes in the
68 /// prim index. For instance, for a referenced model, paths referring to
69 /// locations outside that model will not be translated. In these cases, this
70 /// function will return an empty SdfPath and \p pathWasTranslated will be set
71 /// to \c false.
72 ///
73 /// In Sd/Csd terminology, this is reverse path translation from the
74 /// namespace of the composed scene to the namespace of the prim spec
75 /// represented by \p destNode.
76 PCP_API
77 SdfPath
79  const PcpNodeRef& destNode,
80  const SdfPath& pathInRootNamespace,
81  bool* pathWasTranslated = 0);
82 
83 /// Same as \a PcpTranslatePathFromRootToNode, but explicitly for use when
84 /// translating paths intended for use as attribute connections or relationship
85 /// targets. The primary difference is that variant selections will never
86 /// be included in the translated path. This is functionally equivalent to
87 /// calling StripAllVariantSelections() on the result of the referenced
88 /// function, but is more efficient.
89 PCP_API
90 SdfPath
92  const PcpNodeRef& destNode,
93  const SdfPath& pathInRootNamespace,
94  bool* pathWasTranslated = 0);
95 
96 /// Convenience function like \a PcpTranslatePathFromRootToNode, but
97 /// takes a function rather than a node.
98 PCP_API
99 SdfPath
101  const PcpMapFunction &mapToRoot,
102  const SdfPath &pathInRootNamespace,
103  bool *pathWasTranslated = 0);
104 
105 /// Convenience function like \a PcpTranslatePathFromNodeToRoot, but
106 /// takes a function rather than a node.
107 PCP_API
108 SdfPath
110  const PcpMapFunction &mapToRoot,
111  const SdfPath &pathInNodeNamespace,
112  bool *pathWasTranslated = 0);
113 
115 
116 #endif // PXR_USD_PCP_PATH_TRANSLATION_H
PCP_API SdfPath PcpTranslatePathFromRootToNodeUsingFunction(const PcpMapFunction &mapToRoot, const SdfPath &pathInRootNamespace, bool *pathWasTranslated=0)
PCP_API SdfPath PcpTranslateTargetPathFromRootToNode(const PcpNodeRef &destNode, const SdfPath &pathInRootNamespace, bool *pathWasTranslated=0)
PCP_API SdfPath PcpTranslatePathFromRootToNode(const PcpNodeRef &destNode, const SdfPath &pathInRootNamespace, bool *pathWasTranslated=0)
PCP_API SdfPath PcpTranslatePathFromNodeToRootUsingFunction(const PcpMapFunction &mapToRoot, const SdfPath &pathInNodeNamespace, bool *pathWasTranslated=0)
PCP_API SdfPath PcpTranslatePathFromNodeToRoot(const PcpNodeRef &sourceNode, const SdfPath &pathInNodeNamespace, bool *pathWasTranslated=0)
Definition: path.h:291
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
Definition: path.h:1441
#define PXR_NAMESPACE_CLOSE_SCOPE
Definition: pxr.h:91
#define PCP_API
Definition: api.h:40