48static constexpr uint32_t kInvalidIndex = 0xFFFFFFFFu;
114 bool find_properties(uint32_t propIdxs[], uint32_t numIdxs, ...)
const;
172 bool find_properties(uint32_t propIdxs[], uint32_t numIdxs, ...)
const;
210 uint32_t destStride)
const;
229 bool find_pos(uint32_t propIdxs[3])
const;
236 bool refill_buffer();
237 bool rewind_to_safe_char();
241 bool match(
const char* str);
242 bool which(
const char* values[], uint32_t* index);
244 bool keyword(
const char* kw);
245 bool identifier(
char* dest,
size_t destLen);
248 bool typed_which(
const char* values[], T* index) {
249 return which(values,
reinterpret_cast<uint32_t*
>(index));
252 bool int_literal(
int* value);
253 bool float_literal(
float* value);
254 bool double_literal(
double* value);
256 bool parse_elements();
257 bool parse_element();
258 bool parse_property(std::vector<PLYProperty>& properties);
260 bool load_fixed_size_element(
PLYElement& elem);
261 bool load_variable_size_element(
PLYElement& elem);
263 bool load_ascii_scalar_property(
PLYProperty& prop,
size_t& destIndex);
265 bool load_binary_scalar_property(
PLYProperty& prop,
size_t& destIndex);
267 bool load_binary_scalar_property_big_endian(
PLYProperty& prop,
size_t& destIndex);
268 bool load_binary_list_property_big_endian(
PLYProperty& prop);
274 char* m_buf =
nullptr;
275 const char* m_bufEnd =
nullptr;
276 const char* m_pos =
nullptr;
277 const char* m_end =
nullptr;
278 bool m_inDataSection =
false;
279 bool m_atEOF =
false;
280 int64_t m_bufOffset = 0;
282 bool m_valid =
false;
285 int m_majorVersion = 0;
286 int m_minorVersion = 0;
287 std::vector<PLYElement> m_elements;
289 size_t m_currentElement = 0;
290 bool m_elementLoaded =
false;
291 std::vector<uint8_t> m_elementData;
293 char* m_tmpBuf =
nullptr;
309uint32_t
triangulate_polygon(uint32_t n,
const float pos[], uint32_t numVerts,
const int indices[],
int dst[]);
~PLYReader()
Definition miniply.cpp:591
uint32_t find_element(const char *name) const
Definition miniply.cpp:770
const PLYElement * element() const
Definition miniply.cpp:603
bool find_indices(uint32_t propIdxs[1]) const
Definition miniply.cpp:1192
bool find_color(uint32_t propIdxs[3]) const
Definition miniply.cpp:1188
bool extract_list_property(uint32_t propIdx, PLYPropertyType destType, void *dest) const
Definition miniply.cpp:1037
uint32_t find_property(const char *name) const
Definition miniply.cpp:786
uint32_t num_elements() const
Definition miniply.cpp:768
bool find_texcoord(uint32_t propIdxs[2]) const
Definition miniply.cpp:1183
bool load_element()
Definition miniply.cpp:608
uint32_t num_rows() const
Number of rows in the current element.
Definition miniply.cpp:784
void next_element()
Definition miniply.cpp:618
bool extract_properties(const uint32_t propIdxs[], uint32_t numProps, PLYPropertyType destType, void *dest) const
Definition miniply.cpp:799
bool element_is(const char *name) const
Check whether the current element has the given name.
Definition miniply.cpp:782
int version_major() const
Definition miniply.cpp:764
bool requires_triangulation(uint32_t propIdx) const
Definition miniply.cpp:1080
const uint32_t * get_list_counts(uint32_t propIdx) const
Definition miniply.cpp:1015
bool has_element() const
Definition miniply.cpp:601
uint32_t sum_of_list_counts(uint32_t propIdx) const
Definition miniply.cpp:1022
const uint8_t * get_list_data(uint32_t propIdx) const
Definition miniply.cpp:1030
PLYFileType file_type() const
Definition miniply.cpp:762
PLYElement * get_element(uint32_t idx)
Definition miniply.cpp:780
bool extract_triangles(uint32_t propIdx, const float pos[], uint32_t numVerts, PLYPropertyType destType, void *dest) const
Definition miniply.cpp:1095
int version_minor() const
Definition miniply.cpp:766
bool find_properties(uint32_t propIdxs[], uint32_t numIdxs,...) const
Equivalent to calling find_properties on the current element.
Definition miniply.cpp:788
bool extract_properties_with_stride(const uint32_t propIdxs[], uint32_t numProps, PLYPropertyType destType, void *dest, uint32_t destStride) const
Definition miniply.cpp:904
uint32_t num_triangles(uint32_t propIdx) const
Definition miniply.cpp:1064
bool find_normal(uint32_t propIdxs[3]) const
Definition miniply.cpp:1181
bool valid() const
Definition miniply.cpp:599
bool find_pos(uint32_t propIdxs[3]) const
Definition miniply.cpp:1179
The example application for uvgVPCCenc uses the external library miniply to parse the ....
Definition miniply.cpp:40
const char * kPLYFaceElement
Definition miniply.cpp:48
PLYPropertyType
Definition miniply.h:64
@ None
Special value used in Element::listCountType to indicate a non-list property.
uint32_t triangulate_polygon(uint32_t n, const float pos[], uint32_t numVerts, const int indices[], int dst[])
Definition miniply.cpp:1755
const char * kPLYVertexElement
Definition miniply.cpp:47
PLYFileType
Definition miniply.h:58
bool find_properties_va(uint32_t propIdxs[], uint32_t numIdxs, va_list names) const
Definition miniply.cpp:483
bool fixedSize
true if there are only fixed-size properties in this element, i.e. no list properties.
Definition miniply.h:93
void calculate_offsets()
Definition miniply.cpp:444
uint32_t rowStride
The number of bytes from the start of one row to the start of the next, for this element.
Definition miniply.h:94
uint32_t find_property(const char *propName) const
Definition miniply.cpp:466
std::vector< PLYProperty > properties
Definition miniply.h:91
bool find_properties(uint32_t propIdxs[], uint32_t numIdxs,...) const
Definition miniply.cpp:475
std::string name
Name of this element.
Definition miniply.h:90
uint32_t count
The number of items in this element (e.g. the number of vertices if this is the vertex element).
Definition miniply.h:92
bool convert_list_to_fixed_size(uint32_t listPropIdx, uint32_t listSize, uint32_t newPropIdxs[])
Definition miniply.cpp:493
uint32_t stride
Definition miniply.h:83
uint32_t offset
Byte offset from the start of the row.
Definition miniply.h:82
PLYPropertyType type
Type of the data. Must be set to a value other than None.
Definition miniply.h:79
std::string name
Definition miniply.h:78
PLYPropertyType countType
None indicates this is not a list type, otherwise it's the type for the list count.
Definition miniply.h:80
std::vector< uint32_t > rowCount
Definition miniply.h:86
std::vector< uint8_t > listData
Definition miniply.h:85