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