162 lines
6.0 KiB
C++
162 lines
6.0 KiB
C++
// This file was generated by generate-classes.
|
|
// DO NOT EDIT THIS FILE!
|
|
#pragma once
|
|
|
|
#include <CesiumGltf/Library.h>
|
|
#include <CesiumUtility/ExtensibleObject.h>
|
|
#include <CesiumUtility/JsonValue.h>
|
|
|
|
#include <cstdint>
|
|
#include <optional>
|
|
#include <string>
|
|
|
|
namespace CesiumGltf {
|
|
/**
|
|
* @brief An array of binary property values.
|
|
*/
|
|
struct CESIUMGLTF_API PropertyTableProperty final
|
|
: public CesiumUtility::ExtensibleObject {
|
|
/**
|
|
* @brief The original name of this type.
|
|
*/
|
|
static constexpr const char* TypeName = "PropertyTableProperty";
|
|
|
|
/**
|
|
* @brief Known values for The type of values in `arrayOffsets`.
|
|
*/
|
|
struct ArrayOffsetType {
|
|
/** @brief `UINT8` */
|
|
inline static const std::string UINT8 = "UINT8";
|
|
|
|
/** @brief `UINT16` */
|
|
inline static const std::string UINT16 = "UINT16";
|
|
|
|
/** @brief `UINT32` */
|
|
inline static const std::string UINT32 = "UINT32";
|
|
|
|
/** @brief `UINT64` */
|
|
inline static const std::string UINT64 = "UINT64";
|
|
};
|
|
|
|
/**
|
|
* @brief Known values for The type of values in `stringOffsets`.
|
|
*/
|
|
struct StringOffsetType {
|
|
/** @brief `UINT8` */
|
|
inline static const std::string UINT8 = "UINT8";
|
|
|
|
/** @brief `UINT16` */
|
|
inline static const std::string UINT16 = "UINT16";
|
|
|
|
/** @brief `UINT32` */
|
|
inline static const std::string UINT32 = "UINT32";
|
|
|
|
/** @brief `UINT64` */
|
|
inline static const std::string UINT64 = "UINT64";
|
|
};
|
|
|
|
/**
|
|
* @brief The index of the buffer view containing property values. The data
|
|
* type of property values is determined by the property definition: When
|
|
* `type` is `BOOLEAN` values are packed into a bitstream. When `type` is
|
|
* `STRING` values are stored as byte sequences and decoded as UTF-8 strings.
|
|
* When `type` is `SCALAR`, `VECN`, or `MATN` the values are stored as the
|
|
* provided `componentType` and the buffer view `byteOffset` must be aligned
|
|
* to a multiple of the `componentType` size. When `type` is `ENUM` values are
|
|
* stored as the enum's `valueType` and the buffer view `byteOffset` must be
|
|
* aligned to a multiple of the `valueType` size. Each enum value in the array
|
|
* must match one of the allowed values in the enum definition. `arrayOffsets`
|
|
* is required for variable-length arrays and `stringOffsets` is required for
|
|
* strings (for variable-length arrays of strings, both are required).
|
|
*/
|
|
int32_t values = -1;
|
|
|
|
/**
|
|
* @brief The index of the buffer view containing offsets for variable-length
|
|
* arrays. The number of offsets is equal to the property table `count` plus
|
|
* one. The offsets represent the start positions of each array, with the last
|
|
* offset representing the position after the last array. The array length is
|
|
* computed using the difference between the subsequent offset and the current
|
|
* offset. If `type` is `STRING` the offsets index into the string offsets
|
|
* array (stored in `stringOffsets`), otherwise they index into the property
|
|
* array (stored in `values`). The data type of these offsets is determined by
|
|
* `arrayOffsetType`. The buffer view `byteOffset` must be aligned to a
|
|
* multiple of the `arrayOffsetType` size.
|
|
*/
|
|
int32_t arrayOffsets = -1;
|
|
|
|
/**
|
|
* @brief The index of the buffer view containing offsets for strings. The
|
|
* number of offsets is equal to the number of string elements plus one. The
|
|
* offsets represent the byte offsets of each string in the property array
|
|
* (stored in `values`), with the last offset representing the byte offset
|
|
* after the last string. The string byte length is computed using the
|
|
* difference between the subsequent offset and the current offset. The data
|
|
* type of these offsets is determined by `stringOffsetType`. The buffer view
|
|
* `byteOffset` must be aligned to a multiple of the `stringOffsetType` size.
|
|
*/
|
|
int32_t stringOffsets = -1;
|
|
|
|
/**
|
|
* @brief The type of values in `arrayOffsets`.
|
|
*
|
|
* Known values are defined in {@link ArrayOffsetType}.
|
|
*
|
|
*/
|
|
std::string arrayOffsetType = ArrayOffsetType::UINT32;
|
|
|
|
/**
|
|
* @brief The type of values in `stringOffsets`.
|
|
*
|
|
* Known values are defined in {@link StringOffsetType}.
|
|
*
|
|
*/
|
|
std::string stringOffsetType = StringOffsetType::UINT32;
|
|
|
|
/**
|
|
* @brief An offset to apply to property values. Only applicable when the
|
|
* component type is `FLOAT32` or `FLOAT64`, or when the property is
|
|
* `normalized`. Overrides the class property's `offset` if both are defined.
|
|
*/
|
|
std::optional<CesiumUtility::JsonValue> offset;
|
|
|
|
/**
|
|
* @brief A scale to apply to property values. Only applicable when the
|
|
* component type is `FLOAT32` or `FLOAT64`, or when the property is
|
|
* `normalized`. Overrides the class property's `scale` if both are defined.
|
|
*/
|
|
std::optional<CesiumUtility::JsonValue> scale;
|
|
|
|
/**
|
|
* @brief Maximum value present in the property values. Only applicable to
|
|
* `SCALAR`, `VECN`, and `MATN` types. This is the maximum of all property
|
|
* values, after the transforms based on the `normalized`, `offset`, and
|
|
* `scale` properties have been applied.
|
|
*/
|
|
std::optional<CesiumUtility::JsonValue> max;
|
|
|
|
/**
|
|
* @brief Minimum value present in the property values. Only applicable to
|
|
* `SCALAR`, `VECN`, and `MATN` types. This is the minimum of all property
|
|
* values, after the transforms based on the `normalized`, `offset`, and
|
|
* `scale` properties have been applied.
|
|
*/
|
|
std::optional<CesiumUtility::JsonValue> min;
|
|
|
|
/**
|
|
* @brief Calculates the size in bytes of this object, including the contents
|
|
* of all collections, pointers, and strings. This will NOT include the size
|
|
* of any extensions attached to the object. Calling this method may be slow
|
|
* as it requires traversing the object's entire structure.
|
|
*/
|
|
int64_t getSizeBytes() const {
|
|
int64_t accum = 0;
|
|
accum += int64_t(sizeof(PropertyTableProperty));
|
|
accum += CesiumUtility::ExtensibleObject::getSizeBytes() -
|
|
int64_t(sizeof(CesiumUtility::ExtensibleObject));
|
|
|
|
return accum;
|
|
}
|
|
};
|
|
} // namespace CesiumGltf
|