35 using Ptr = std::shared_ptr<PLYGenericPropertyBuffer>;
36 using ConstPtr = std::shared_ptr<const PLYGenericPropertyBuffer>;
41 virtual std::shared_ptr<PLYGenericPropertyBuffer>
clone()
const = 0;
46 virtual size_t size()
const = 0;
49 virtual void*
get() = 0;
53 return static_cast<T*
>(
get());
73 std::shared_ptr<PLYGenericPropertyBuffer>
clone()
const override {
return std::make_shared<PLYPropertyBuffer<T>>(
name,
data.data(),
data.size()); }
77 size_t size()
const override {
return data.size(); }
79 void*
get()
override {
return data.data(); }
81 void read_from_buffer(
char* buffer,
int offset,
size_t index)
override {
data[index] = *
reinterpret_cast<T*
>(buffer + offset); }
84 if constexpr (std::is_integral_v<T>) {
93 void write_to_buffer(
char* buffer,
int offset,
size_t index)
const override { *
reinterpret_cast<T*
>(buffer + offset) =
data[index]; }
99 if constexpr (std::is_integral_v<T>) {
116 template <
typename T>
117 void add_prop(
const std::string& name,
const T* data,
size_t size) {
135std::shared_ptr<PLYData>
load_ply(
const std::string& filename);
146template <
typename T,
int D>
Definition async_buffer_copy.hpp:6
bool save_ply_binary(const std::string &filename, const PLYData &ply)
bool save_ply_ascii(const std::string &filename, const PLYData &ply)
bool save_ply(const std::string &filename, const PLYData &ply, bool binary=true)
Save a PLY file.
std::enable_if_t< needs_aligned_allocator< T >::value, std::shared_ptr< T > > make_shared(Args &&... args)
Definition make_shared.hpp:20
std::shared_ptr< PLYData > load_ply(const std::string &filename)
Load a PLY file.
PLYPropertyType
PLY property type.
Definition ply_io.hpp:11
PLYPropertyType ply_prop_type()
Get the PLY property type for a specific type.
PLY data.
Definition ply_io.hpp:114
std::vector< Eigen::Vector4f > colors
Definition ply_io.hpp:125
std::vector< int > indices
Definition ply_io.hpp:126
std::vector< Eigen::Vector3f > vertices
Definition ply_io.hpp:122
std::vector< Eigen::Vector3f > normals
Definition ply_io.hpp:123
std::vector< PLYGenericPropertyBuffer::Ptr > properties
Definition ply_io.hpp:129
std::vector< float > intensities
Definition ply_io.hpp:124
void add_prop(const std::string &name, const T *data, size_t size)
Definition ply_io.hpp:117
std::vector< std::string > comments
Definition ply_io.hpp:128
PLY property buffer.
Definition ply_io.hpp:33
virtual void write_to_stream(std::ostream &os, int offset, size_t index) const =0
PLYGenericPropertyBuffer(const std::string &name)
Definition ply_io.hpp:38
const std::string name
Definition ply_io.hpp:63
virtual void read_from_stream(std::istream &is, int offset, size_t index)=0
T * get()
Definition ply_io.hpp:52
virtual std::shared_ptr< PLYGenericPropertyBuffer > clone() const =0
virtual void read_from_buffer(char *buffer, int offset, size_t index)=0
std::shared_ptr< PLYGenericPropertyBuffer > Ptr
Definition ply_io.hpp:35
virtual PLYPropertyType type() const =0
virtual ~PLYGenericPropertyBuffer()=default
virtual void * get()=0
Get the raw pointer to the data.
virtual void write_to_buffer(char *buffer, int offset, size_t index) const =0
std::shared_ptr< const PLYGenericPropertyBuffer > ConstPtr
Definition ply_io.hpp:36
virtual size_t size() const =0
Get the number of elements.
PLY property buffer for a specific type.
Definition ply_io.hpp:68
void read_from_stream(std::istream &is, int offset, size_t index) override
Definition ply_io.hpp:83
PLYPropertyType type() const override
Definition ply_io.hpp:75
PLYPropertyBuffer(const std::string &name, size_t size)
Definition ply_io.hpp:70
void write_to_stream(std::ostream &os, int offset, size_t index) const override
Definition ply_io.hpp:95
std::shared_ptr< PLYGenericPropertyBuffer > clone() const override
Definition ply_io.hpp:73
void write_to_buffer(char *buffer, int offset, size_t index) const override
Definition ply_io.hpp:93
void read_from_buffer(char *buffer, int offset, size_t index) override
Definition ply_io.hpp:81
PLYPropertyBuffer(const std::string &name, const T *data, size_t size)
Definition ply_io.hpp:71
void * get() override
Get the raw pointer to the data.
Definition ply_io.hpp:79
size_t size() const override
Get the number of elements.
Definition ply_io.hpp:77
std::vector< T > data
Definition ply_io.hpp:107