OpenVDB 7.0.0

GridDescriptor.h
Go to the documentation of this file.
1 // Copyright Contributors to the OpenVDB Project
2 // SPDX-License-Identifier: MPL-2.0
3
4 #ifndef OPENVDB_IO_GRIDDESCRIPTOR_HAS_BEEN_INCLUDED
5 #define OPENVDB_IO_GRIDDESCRIPTOR_HAS_BEEN_INCLUDED
6
7 #include <openvdb/Grid.h>
8 #include <iostream>
9 #include <string>
10
11 namespace openvdb {
12 OPENVDB_USE_VERSION_NAMESPACE
13 namespace OPENVDB_VERSION_NAME {
14 namespace io {
15
19 class OPENVDB_API GridDescriptor
20 {
21 public:
22 GridDescriptor();
23 GridDescriptor(const Name& name, const Name& gridType, bool saveFloatAsHalf = false);
24 GridDescriptor(const GridDescriptor&) = default;
25 GridDescriptor& operator=(const GridDescriptor&) = default;
26 ~GridDescriptor();
27
28 const Name& gridType() const { return mGridType; }
29 const Name& gridName() const { return mGridName; }
30 const Name& uniqueName() const { return mUniqueName; }
31
32 const Name& instanceParentName() const { return mInstanceParentName; }
33 void setInstanceParentName(const Name& name) { mInstanceParentName = name; }
34 bool isInstance() const { return !mInstanceParentName.empty(); }
35
36 bool saveFloatAsHalf() const { return mSaveFloatAsHalf; }
37
38 void setGridPos(int64_t pos) { mGridPos = pos; }
39 int64_t getGridPos() const { return mGridPos; }
40
41 void setBlockPos(int64_t pos) { mBlockPos = pos; }
42 int64_t getBlockPos() const { return mBlockPos; }
43
44 void setEndPos(int64_t pos) { mEndPos = pos; }
45 int64_t getEndPos() const { return mEndPos; }
46
47 // These methods seek to the right position in the given stream.
48 void seekToGrid(std::istream&) const;
49 void seekToBlocks(std::istream&) const;
50 void seekToEnd(std::istream&) const;
51
52 void seekToGrid(std::ostream&) const;
53 void seekToBlocks(std::ostream&) const;
54 void seekToEnd(std::ostream&) const;
55
58 void writeHeader(std::ostream&) const;
59
62 void writeStreamPos(std::ostream&) const;
63
66 GridBase::Ptr read(std::istream&);
67
70 static Name addSuffix(const Name&, int n);
73 static Name stripSuffix(const Name&);
76 static std::string nameAsString(const Name&);
80 static Name stringAsUniqueName(const std::string&);
81
82 private:
84 Name mGridName;
86 Name mUniqueName;
88 Name mInstanceParentName;
90 Name mGridType;
92 bool mSaveFloatAsHalf;
94 int64_t mGridPos;
96 int64_t mBlockPos;
98 int64_t mEndPos;
99 };
100
101 } // namespace io
102 } // namespace OPENVDB_VERSION_NAME
103 } // namespace openvdb
104
105 #endif // OPENVDB_IO_GRIDDESCRIPTOR_HAS_BEEN_INCLUDED
openvdb::v7_0::io::GridDescriptor::gridType
const Name & gridType() const
Definition: GridDescriptor.h:28
openvdb::v7_0::io::GridDescriptor::getEndPos
int64_t getEndPos() const
Definition: GridDescriptor.h:45
openvdb::v7_0::io::GridDescriptor::setGridPos
void setGridPos(int64_t pos)
Definition: GridDescriptor.h:38
openvdb::v7_0::io::GridDescriptor::setInstanceParentName
void setInstanceParentName(const Name &name)
Definition: GridDescriptor.h:33
Grid.h
openvdb::v7_0::io::GridDescriptor::getGridPos
int64_t getGridPos() const
Definition: GridDescriptor.h:39
openvdb::v7_0::io::GridDescriptor::uniqueName
const Name & uniqueName() const
Definition: GridDescriptor.h:30
OPENVDB_API
#define OPENVDB_API
Helper macros for defining library symbol visibility.
Definition: Platform.h:230
openvdb::v7_0::GridBase::Ptr
SharedPtr< GridBase > Ptr
Definition: Grid.h:80
openvdb::v7_0::io::GridDescriptor::getBlockPos
int64_t getBlockPos() const
Definition: GridDescriptor.h:42
openvdb::v7_0::io::GridDescriptor
Definition: GridDescriptor.h:19
OPENVDB_USE_VERSION_NAMESPACE
#define OPENVDB_USE_VERSION_NAMESPACE
Definition: version.h:154
openvdb::v7_0::io::GridDescriptor::isInstance
bool isInstance() const
Definition: GridDescriptor.h:34
openvdb::v7_0::io::GridDescriptor::setEndPos
void setEndPos(int64_t pos)
Definition: GridDescriptor.h:44
openvdb::v7_0::io::GridDescriptor::saveFloatAsHalf
bool saveFloatAsHalf() const
Definition: GridDescriptor.h:36
openvdb::v7_0::Name
std::string Name
Definition: Name.h:17
OPENVDB_VERSION_NAME
#define OPENVDB_VERSION_NAME
The version namespace name for this library version.
Definition: version.h:102
openvdb::v7_0::io::GridDescriptor::gridName
const Name & gridName() const
Definition: GridDescriptor.h:29
openvdb::v7_0::io::GridDescriptor::setBlockPos
void setBlockPos(int64_t pos)
Definition: GridDescriptor.h:41
openvdb
Definition: Exceptions.h:13
openvdb::v7_0::io::GridDescriptor::instanceParentName
const Name & instanceParentName() const
Definition: GridDescriptor.h:32