HDK
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
editContext.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_USD_EDIT_CONTEXT_H
25
#define PXR_USD_USD_EDIT_CONTEXT_H
26
27
#include "
pxr/pxr.h
"
28
#include "
pxr/usd/usd/api.h
"
29
#include "
pxr/usd/usd/editTarget.h
"
30
#include "
pxr/base/tf/declarePtrs.h
"
31
32
#include <memory>
33
#include <utility>
34
35
PXR_NAMESPACE_OPEN_SCOPE
36
37
38
TF_DECLARE_WEAK_PTRS
(
UsdStage
);
39
40
/// \class UsdEditContext
41
///
42
/// A utility class to temporarily modify a stage's current EditTarget during
43
/// an execution scope.
44
///
45
/// This is an "RAII"-like object meant to be used as an automatic local
46
/// variable. Upon construction, it sets a given stage's EditTarget, and upon
47
/// destruction it restores the stage's EditTarget to what it was previously.
48
///
49
/// Example usage, temporarily overriding a stage's EditTarget to direct an
50
/// edit to the stage's session layer. When the \a ctx object expires, it
51
/// restores the stage's EditTarget to whatever it was previously.
52
///
53
/// \code
54
/// void SetVisState(const UsdPrim &prim, bool vis) {
55
/// UsdEditContext ctx(prim.GetStage(),
56
/// prim.GetStage()->GetSessionLayer());
57
/// prim.GetAttribute("visible").Set(vis);
58
/// }
59
/// \endcode
60
///
61
/// <b>Threading Note</b>
62
///
63
/// When one thread is mutating a \a UsdStage, it is unsafe for any other thread
64
/// to either query or mutate it. Using this class with a stage in such a way
65
/// that it modifies the stage's EditTarget constitutes a mutation.
66
///
67
class
UsdEditContext
68
{
69
UsdEditContext
(
UsdEditContext
const
&) =
delete
;
70
UsdEditContext
&operator=(
UsdEditContext
const
&) =
delete
;
71
public
:
72
/// Construct without modifying \a stage's current EditTarget. Save
73
/// \a stage's current EditTarget to restore on destruction.
74
///
75
/// If \a stage is invalid, a coding error will be issued by the
76
/// constructor, and this class takes no action.
77
USD_API
78
explicit
UsdEditContext
(
const
UsdStagePtr &stage);
79
80
/// Construct and save \a stage's current EditTarget to restore on
81
/// destruction, then invoke stage->SetEditTarget(editTarget).
82
///
83
/// If \a stage is invalid, a coding error will be issued by the
84
/// constructor, and this class takes no action.
85
///
86
/// If \a editTarget is invalid, a coding error will be issued by the
87
/// \a stage, and its EditTarget will not be modified.
88
USD_API
89
UsdEditContext(
const
UsdStagePtr &stage,
const
UsdEditTarget
&editTarget);
90
91
/// \overload
92
/// This ctor is handy to construct an edit context from the return
93
/// value of another function (Cannot return a UsdEditContext since it
94
/// needs to be noncopyable).
95
///
96
/// If \a stage is invalid, a coding error will be issued by the
97
/// constructor, and this class takes no action.
98
///
99
/// If \a editTarget is invalid, a coding error will be issued by the
100
/// \a stage, and its EditTarget will not be modified.
101
USD_API
102
UsdEditContext(
const
std::pair<UsdStagePtr, UsdEditTarget > &stageTarget);
103
104
/// Restore the stage's original EditTarget if this context's stage is
105
/// valid. Otherwise do nothing.
106
USD_API
107
~UsdEditContext
();
108
109
private
:
110
// The stage this context is bound to.
111
UsdStagePtr _stage;
112
113
// The stage's original EditTarget.
114
UsdEditTarget
_originalEditTarget;
115
};
116
117
PXR_NAMESPACE_CLOSE_SCOPE
118
119
#endif // PXR_USD_USD_EDIT_CONTEXT_H
api.h
TF_DECLARE_WEAK_PTRS
PXR_NAMESPACE_OPEN_SCOPE TF_DECLARE_WEAK_PTRS(UsdStage)
USD_API
#define USD_API
Definition:
api.h:40
declarePtrs.h
UsdStage
Definition:
stage.h:151
UsdEditContext::~UsdEditContext
USD_API ~UsdEditContext()
pxr.h
UsdEditTarget
Definition:
editTarget.h:78
PXR_NAMESPACE_OPEN_SCOPE
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
Definition:
path.h:1432
PXR_NAMESPACE_CLOSE_SCOPE
#define PXR_NAMESPACE_CLOSE_SCOPE
Definition:
pxr.h:91
editTarget.h
UsdEditContext
Definition:
editContext.h:67
pxr
usd
usd
editContext.h
Generated on Sat May 10 2025 02:49:08 for HDK by
1.8.6