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
ScalarPropertyReader.h
Go to the documentation of this file.
1
//-*****************************************************************************
2
//
3
// Copyright (c) 2009-2011,
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_AbcCoreAbstract_ScalarPropertyReader_h
38
#define Alembic_AbcCoreAbstract_ScalarPropertyReader_h
39
40
#include <
Alembic/Util/Export.h
>
41
#include <
Alembic/AbcCoreAbstract/Foundation.h
>
42
#include <
Alembic/AbcCoreAbstract/BasePropertyReader.h
>
43
44
namespace
Alembic {
45
namespace
AbcCoreAbstract {
46
namespace
ALEMBIC_VERSION_NS
{
47
48
//-*****************************************************************************
49
//! A Scalar Property is a Rank 0 property which has a single value for each
50
//! sample. This is distinguished from an Array Property, which has a
51
//! variable number of elements per sample, and requires more sophisticated
52
//! resource management.
53
class
ALEMBIC_EXPORT
ScalarPropertyReader
54
:
public
BasePropertyReader
55
{
56
public
:
57
//! Virtual destructor
58
//! ...
59
virtual
~
ScalarPropertyReader
();
60
61
//-*************************************************************************
62
// NEW FUNCTIONS
63
//-*************************************************************************
64
65
//! Return the number of samples contained in the property.
66
//! This can be any number, including zero.
67
//! This returns the number of samples that were written, independently
68
//! of whether or not they were constant. Implementations may (and should)
69
//! choose to condense identical samples.
70
virtual
size_t
getNumSamples() = 0;
71
72
//! Ask if we're constant - no change in value amongst samples,
73
//! regardless of the time sampling.
74
virtual
bool
isConstant() = 0;
75
76
//! Returns the single sample value for the requested sample
77
//! by reference. Out-of-range indices will cause an
78
//! exception to be thrown.
79
//! It will copy the scalar value directly into the memory location
80
//! specified by iIntoLocation
81
//!
82
//! In all cases EXCEPT String and Wstring, the DataType for this
83
//! property can be used to determine the size of the memory buffer
84
//! which iIntoLocation must point to. In the case of String and Wstring,
85
//! iIntoLocation should be ( void * )&std::string and
86
//! ( void * )&std::wstring, respectively.
87
//!
88
//! This is one of the only places where we break from POD types at
89
//! the base, and we're making an explicit decision to use std::string
90
//! and std::wstring as core language-level primitives.
91
virtual
void
getSample(
index_t
iSample,
92
void
*iIntoLocation ) = 0;
93
94
//! Find the largest valid index that has a time less than or equal
95
//! to the given time. Invalid to call this with zero samples.
96
//! If the minimum sample time is greater than iTime, index
97
//! 0 will be returned.
98
virtual
std::pair<index_t, chrono_t> getFloorIndex(
chrono_t
iTime ) = 0;
99
100
//! Find the smallest valid index that has a time greater
101
//! than the given time. Invalid to call this with zero samples.
102
//! If the maximum sample time is less than iTime, index
103
//! numSamples-1 will be returned.
104
virtual
std::pair<index_t, chrono_t> getCeilIndex(
chrono_t
iTime ) = 0;
105
106
//! Find the valid index with the closest time to the given
107
//! time. Invalid to call this with zero samples.
108
virtual
std::pair<index_t, chrono_t> getNearIndex(
chrono_t
iTime ) = 0;
109
};
110
111
}
// End namespace ALEMBIC_VERSION_NS
112
113
using namespace
ALEMBIC_VERSION_NS
;
114
115
}
// End namespace AbcCoreAbstract
116
}
// End namespace Alembic
117
118
119
120
#endif
Alembic::AbcCoreAbstract::ALEMBIC_VERSION_NS::index_t
int64_t index_t
Definition:
Foundation.h:62
BasePropertyReader.h
Export.h
ALEMBIC_EXPORT
#define ALEMBIC_EXPORT
Definition:
Export.h:51
Foundation.h
Alembic::AbcCoreAbstract::ALEMBIC_VERSION_NS::ScalarPropertyReader
Definition:
ScalarPropertyReader.h:53
Alembic::AbcCoreAbstract::ALEMBIC_VERSION_NS::chrono_t
float64_t chrono_t
Definition:
Foundation.h:71
Alembic::AbcCoreAbstract::ALEMBIC_VERSION_NS::BasePropertyReader
Base Property Reader.
Definition:
BasePropertyReader.h:51
ALEMBIC_VERSION_NS
#define ALEMBIC_VERSION_NS
Definition:
Foundation.h:88
Alembic
AbcCoreAbstract
ScalarPropertyReader.h
Generated on Sat Nov 23 2024 02:45:43 for HDK by
1.8.6