Alembic
1.8.11
Toggle main menu visibility
Loading...
Searching...
No Matches
IFaceSet.h
1
//-*****************************************************************************
2
//
3
// Copyright (c) 2009-2012,
4
// Sony Pictures Imageworks, Inc. and
5
// Industrial Light & Magic, a division of Lucasfilm Entertainment Company Ltd.
6
//
7
// All rights reserved.
8
//
9
// Redistribution and use in source and binary forms, with or without
10
// modification, are permitted provided that the following conditions are
11
// met:
12
// * Redistributions of source code must retain the above copyright
13
// notice, this list of conditions and the following disclaimer.
14
// * Redistributions in binary form must reproduce the above
15
// copyright notice, this list of conditions and the following disclaimer
16
// in the documentation and/or other materials provided with the
17
// distribution.
18
// * Neither the name of Sony Pictures Imageworks, nor
19
// Industrial Light & Magic nor the names of their contributors may be used
20
// to endorse or promote products derived from this software without specific
21
// prior written permission.
22
//
23
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
26
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
27
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
28
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
29
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
30
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
31
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
33
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34
//
35
//-*****************************************************************************
36
37
#ifndef Alembic_AbcGeom_IFaceSet_h
38
#define Alembic_AbcGeom_IFaceSet_h
39
40
#include <Alembic/Util/Export.h>
41
#include <Alembic/AbcGeom/Foundation.h>
42
#include <Alembic/AbcGeom/SchemaInfoDeclarations.h>
43
#include <Alembic/AbcGeom/IGeomParam.h>
44
#include <Alembic/AbcGeom/FaceSetExclusivity.h>
45
#include <Alembic/AbcGeom/IGeomBase.h>
46
47
namespace
Alembic
{
48
namespace
AbcGeom {
49
namespace
ALEMBIC_VERSION_NS {
50
51
//-*****************************************************************************
52
class
ALEMBIC_EXPORT
IFaceSetSchema
:
public
IGeomBaseSchema
<FaceSetSchemaInfo>
53
{
54
public
:
55
//-*************************************************************************
56
// FACESET MESH SCHEMA SAMPLE TYPE
57
//-*************************************************************************
58
class
Sample
59
{
60
public
:
61
typedef
Sample
this_type;
62
64
Sample
() { reset(); }
65
66
// main stuff
67
Abc::Int32ArraySamplePtr getFaces()
const
{
return
m_faces; }
68
69
// bounds
70
Abc::Box3d getSelfBounds()
const
{
return
m_selfBounds; }
71
72
bool
valid()
const
73
{
74
return
m_faces.get() != 0;
75
}
76
77
void
reset()
78
{
79
m_faces.reset();
80
81
m_selfBounds.makeEmpty();
82
}
83
84
ALEMBIC_OPERATOR_BOOL( valid() );
85
86
protected
:
87
friend
class
IFaceSetSchema;
88
89
Abc::Int32ArraySamplePtr m_faces;
90
91
92
// bounds
93
Abc::Box3d m_selfBounds;
94
95
};
// end IFaceSetSchema::Sample
96
97
//-*************************************************************************
98
// FACESET SCHEMA
99
//-*************************************************************************
100
public
:
103
typedef
IFaceSetSchema
this_type
;
104
105
//-*************************************************************************
106
// CONSTRUCTION, DESTRUCTION, ASSIGNMENT
107
//-*************************************************************************
108
111
IFaceSetSchema
() {}
112
119
IFaceSetSchema
(
const
ICompoundProperty
&iParent,
120
const
std::string &iName,
121
122
const
Abc::Argument
&iArg0 =
Abc::Argument
(),
123
const
Abc::Argument
&iArg1 =
Abc::Argument
() )
124
:
IGeomBaseSchema
<FaceSetSchemaInfo>( iParent, iName, iArg0, iArg1 )
125
{
126
init( iArg0, iArg1 );
127
}
128
133
IFaceSetSchema
(
const
ICompoundProperty
&iProp,
134
const
Abc::Argument
&iArg0 =
Abc::Argument
(),
135
const
Abc::Argument
&iArg1 =
Abc::Argument
() )
136
:
IGeomBaseSchema
<FaceSetSchemaInfo>( iProp, iArg0, iArg1 )
137
{
138
init( iArg0, iArg1 );
139
}
140
142
template
<
class
CPROP_PTR>
143
IFaceSetSchema
( CPROP_PTR iThis,
144
Abc::WrapExistingFlag iFlag,
145
146
const
Abc::Argument
&iArg0 =
Abc::Argument
(),
147
const
Abc::Argument
&iArg1 =
Abc::Argument
() )
148
:
IGeomBaseSchema
<FaceSetSchemaInfo>( iThis, iFlag, iArg0, iArg1 )
149
{
150
init( iArg0, iArg1 );
151
}
152
154
155
//-*************************************************************************
156
// SCHEMA STUFF
157
//-*************************************************************************
158
159
161
bool
isConstant
()
const
{
return
(m_facesProperty.isConstant ()); }
162
163
//-*************************************************************************
164
// SAMPLE STUFF
165
//-*************************************************************************
166
169
size_t
getNumSamples()
const
;
170
172
AbcA::TimeSamplingPtr
getTimeSampling
()
const
173
{
174
if
( m_facesProperty.valid() )
175
return
m_facesProperty.getTimeSampling();
176
return
getObject
().getArchive().getTimeSampling(0);
177
}
178
179
void
get( Sample &iSamp,
180
const
Abc::ISampleSelector
&iSS =
Abc::ISampleSelector
() )
const
;
181
182
Sample getValue(
const
Abc::ISampleSelector
&iSS =
Abc::ISampleSelector
() )
const
183
{
184
Sample smp;
185
get( smp, iSS );
186
return
smp;
187
}
188
189
FaceSetExclusivity getFaceExclusivity()
const
;
190
191
Abc::IInt32ArrayProperty getFacesProperty()
const
192
{
193
return
m_facesProperty;
194
}
195
196
//-*************************************************************************
197
// ABC BASE MECHANISMS
198
// These functions are used by Abc to deal with errors, rewrapping,
199
// and so on.
200
//-*************************************************************************
201
204
void
reset
()
205
{
206
m_facesProperty.reset();
207
208
IGeomBaseSchema<FaceSetSchemaInfo>::reset();
209
}
210
213
bool
valid
()
const
214
{
215
return
( IGeomBaseSchema<FaceSetSchemaInfo>::valid() &&
216
m_facesProperty.valid() );
217
}
218
221
ALEMBIC_OVERRIDE_OPERATOR_BOOL
(
IFaceSetSchema::valid
() );
222
223
protected
:
224
void
init(
const
Abc::Argument
&iArg0,
const
Abc::Argument
&iArg1 );
225
226
Abc::IInt32ArrayProperty m_facesProperty;
227
};
228
229
//-*****************************************************************************
230
// SCHEMA OBJECT
231
//-*****************************************************************************
232
typedef
Abc::ISchemaObject<IFaceSetSchema>
IFaceSet;
233
234
typedef
Util::shared_ptr< IFaceSet > IFaceSetPtr;
235
236
}
// End namespace ALEMBIC_VERSION_NS
237
238
using namespace
ALEMBIC_VERSION_NS;
239
240
}
// End namespace AbcGeom
241
}
// End namespace Alembic
242
243
#endif
Alembic::Abc::ALEMBIC_VERSION_NS::Argument
Definition
Argument.h:120
Alembic::Abc::ALEMBIC_VERSION_NS::IBasePropertyT< AbcA::CompoundPropertyReaderPtr >::getObject
IObject getObject() const
Definition
IBaseProperty.h:207
Alembic::Abc::ALEMBIC_VERSION_NS::ICompoundProperty
Definition
ICompoundProperty.h:53
Alembic::Abc::ALEMBIC_VERSION_NS::ISampleSelector
Definition
ISampleSelector.h:49
Alembic::Abc::ALEMBIC_VERSION_NS::ISchemaObject
Definition
ISchemaObject.h:56
Alembic::AbcGeom::ALEMBIC_VERSION_NS::IFaceSetSchema::Sample::Sample
Sample()
Users never create this data directly.
Definition
IFaceSet.h:64
Alembic::AbcGeom::ALEMBIC_VERSION_NS::IFaceSetSchema::IFaceSetSchema
IFaceSetSchema()
Definition
IFaceSet.h:111
Alembic::AbcGeom::ALEMBIC_VERSION_NS::IFaceSetSchema::getTimeSampling
AbcA::TimeSamplingPtr getTimeSampling() const
Return the time sampling.
Definition
IFaceSet.h:172
Alembic::AbcGeom::ALEMBIC_VERSION_NS::IFaceSetSchema::ALEMBIC_OVERRIDE_OPERATOR_BOOL
ALEMBIC_OVERRIDE_OPERATOR_BOOL(IFaceSetSchema::valid())
Alembic::AbcGeom::ALEMBIC_VERSION_NS::IFaceSetSchema::valid
bool valid() const
Definition
IFaceSet.h:213
Alembic::AbcGeom::ALEMBIC_VERSION_NS::IFaceSetSchema::isConstant
bool isConstant() const
Default assignment and copy operator used.
Definition
IFaceSet.h:161
Alembic::AbcGeom::ALEMBIC_VERSION_NS::IFaceSetSchema::IFaceSetSchema
IFaceSetSchema(const ICompoundProperty &iParent, const std::string &iName, const Abc::Argument &iArg0=Abc::Argument(), const Abc::Argument &iArg1=Abc::Argument())
Definition
IFaceSet.h:119
Alembic::AbcGeom::ALEMBIC_VERSION_NS::IFaceSetSchema::reset
void reset()
Definition
IFaceSet.h:204
Alembic::AbcGeom::ALEMBIC_VERSION_NS::IFaceSetSchema::IFaceSetSchema
IFaceSetSchema(CPROP_PTR iThis, Abc::WrapExistingFlag iFlag, const Abc::Argument &iArg0=Abc::Argument(), const Abc::Argument &iArg1=Abc::Argument())
wrap an existing schema object
Definition
IFaceSet.h:143
Alembic::AbcGeom::ALEMBIC_VERSION_NS::IFaceSetSchema::IFaceSetSchema
IFaceSetSchema(const ICompoundProperty &iProp, const Abc::Argument &iArg0=Abc::Argument(), const Abc::Argument &iArg1=Abc::Argument())
Definition
IFaceSet.h:133
Alembic::AbcGeom::ALEMBIC_VERSION_NS::IFaceSetSchema::this_type
IFaceSetSchema this_type
Definition
IFaceSet.h:103
Alembic::AbcGeom::ALEMBIC_VERSION_NS::IGeomBaseSchema< FaceSetSchemaInfo >::IGeomBaseSchema
IGeomBaseSchema()
Definition
IGeomBase.h:76
Alembic
Alembic namespace ...
Definition
ArchiveInfo.cpp:39
AbcGeom
IFaceSet.h
Generated by
1.18.0