10#include <fmt/format.h>
50 static const std::uint16_t
kBadId = 0;
53 inline size_t Hash()
const {
54 return static_cast<std::uint16_t
>(
type) << 16 |
id;
69 explicit operator bool()
const {
return id !=
kBadId; }
73 std::uint16_t
GetId()
const {
return id; }
89template <EntityType entityType>
94 const auto index =
static_cast<std::uint16_t
>(entityType);
105 if (abstract.
type != entityType) {
124template <EntityType entityType>
148class hash<
open3d::visualization::rendering::REHandle_abstract> {
161 std::enable_if_t<std::is_base_of<open3d::visualization::rendering::
165 template <
typename FormatContext>
166 auto format(
const open3d::visualization::rendering::REHandle_abstract& uid,
167 FormatContext& ctx)
const ->
decltype(ctx.out()) {
168 return format_to(ctx.out(),
"[{}, {}, hash: {}]",
169 open3d::visualization::rendering::REHandle_abstract::
170 TypeToString(uid.type),
171 uid.GetId(), uid.Hash());
174 template <
typename ParseContext>
175 constexpr auto parse(ParseContext& ctx) ->
decltype(ctx.begin()) {
The base geometry class.
Definition Geometry.h:18
const char const char value recording_handle imu_sample recording_handle uint8_t size_t data_size k4a_record_configuration_t config target_format k4a_capture_t capture_handle k4a_imu_sample_t imu_sample playback_handle k4a_logging_message_cb_t void min_level device_handle k4a_imu_sample_t timeout_in_ms capture_handle capture_handle capture_handle image_handle temperature_c format
Definition K4aPlugin.cpp:473
REHandle< EntityType::IndexBuffer > IndexBufferHandle
Definition RendererHandle.h:139
std::ostream & operator<<(std::ostream &os, const REHandle_abstract &uid)
Definition RendererHandle.cpp:19
REHandle< EntityType::Material > MaterialHandle
Definition RendererHandle.h:134
REHandle< EntityType::VertexBuffer > VertexBufferHandle
Definition RendererHandle.h:138
REHandle< EntityType::Scene > SceneHandle
Definition RendererHandle.h:128
EntityType
Definition RendererHandle.h:23
@ VertexBuffer
Definition RendererHandle.h:39
@ Skybox
Definition RendererHandle.h:32
@ None
Definition RendererHandle.h:24
@ MaterialInstance
Definition RendererHandle.h:35
@ IndexBuffer
Definition RendererHandle.h:40
@ IndirectLight
Definition RendererHandle.h:31
@ RenderTarget
Definition RendererHandle.h:37
@ Texture
Definition RendererHandle.h:36
@ Count
Definition RendererHandle.h:42
REHandle< EntityType::MaterialInstance > MaterialInstanceHandle
Definition RendererHandle.h:135
REHandle< EntityType::Geometry > GeometryHandle
Definition RendererHandle.h:129
REHandle< EntityType::Camera > CameraHandle
Definition RendererHandle.h:133
REHandle< EntityType::RenderTarget > RenderTargetHandle
Definition RendererHandle.h:137
REHandle< EntityType::Light > LightHandle
Definition RendererHandle.h:130
REHandle< EntityType::Texture > TextureHandle
Definition RendererHandle.h:136
REHandle< EntityType::Skybox > SkyboxHandle
Definition RendererHandle.h:132
REHandle< EntityType::View > ViewHandle
Definition RendererHandle.h:127
REHandle< EntityType::IndirectLight > IndirectLightHandle
Definition RendererHandle.h:131
Definition PinholeCameraIntrinsic.cpp:16
Definition RendererHandle.h:47
static std::array< std::uint16_t, static_cast< size_t >(EntityType::Count)> uid_table
Definition RendererHandle.h:80
bool operator!=(const REHandle_abstract &other) const
Definition RendererHandle.h:61
std::uint16_t GetId() const
Definition RendererHandle.h:73
bool operator<(const REHandle_abstract &other) const
Definition RendererHandle.h:65
const EntityType type
Definition RendererHandle.h:51
std::uint16_t id
Definition RendererHandle.h:82
size_t Hash() const
Definition RendererHandle.h:53
bool operator==(const REHandle_abstract &other) const
Definition RendererHandle.h:57
REHandle_abstract(const EntityType aType, const std::uint16_t aId)
Definition RendererHandle.h:76
REHandle_abstract()
Definition RendererHandle.h:71
static const char * TypeToString(EntityType type)
Definition RendererHandle.cpp:25
static const std::uint16_t kBadId
Definition RendererHandle.h:50
Definition RendererHandle.h:90
REHandle & operator=(const REHandle &other)
Definition RendererHandle.h:118
REHandle(std::uint16_t id)
Definition RendererHandle.h:116
static const REHandle kBad
Definition RendererHandle.h:91
static REHandle Next()
Definition RendererHandle.h:93
REHandle(const REHandle &other)
Definition RendererHandle.h:114
static REHandle Concretize(const REHandle_abstract &abstract)
Definition RendererHandle.h:104
REHandle()
Definition RendererHandle.h:113