ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
PlyFilter.h
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - CloudViewer: www.cloudViewer.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2024 www.cloudViewer.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
8 #ifndef CC_PLY_FILTER_HEADER
9 #define CC_PLY_FILTER_HEADER
10 
11 #include "FileIOFilter.h"
12 #include "rply.h"
13 
15 static const char e_ply_type_names[][12] = {
16  "PLY_INT8", "PLY_UINT8", "PLY_INT16", "PLY_UINT16", "PLY_INT32",
17  "PLY_UIN32", "PLY_FLOAT32", "PLY_FLOAT64", "PLY_CHAR", "PLY_UCHAR",
18  "PLY_SHORT", "PLY_USHORT", "PLY_INT", "PLY_UINT", "PLY_FLOAT",
19  "PLY_DOUBLE", "PLY_LIST"};
20 
22 static const char e_ply_storage_mode_names[][24] = {
23  "PLY_BIG_ENDIAN", "PLY_LITTLE_ENDIAN", "PLY_ASCII", "PLY_DEFAULT"};
24 
26 struct plyProperty {
27  p_ply_property prop;
28  const char* propName;
29  e_ply_type type;
30  e_ply_type length_type;
31  e_ply_type value_type;
32  int elemIndex;
33 };
34 
36 struct plyElement {
37  p_ply_element elem;
38  const char* elementName;
40  std::vector<plyProperty> properties;
42  bool isFace;
43 };
44 
47 public:
49 
50  // static accessors
51  static void SetDefaultOutputFormat(e_ply_storage_mode format);
52 
53  // inherited from FileIOFilter
55  ccHObject& container,
56  LoadParameters& parameters) override;
57 
59  bool& multiple,
60  bool& exclusive) const override;
62  const QString& filename,
63  const SaveParameters& parameters) override;
64 
67  const QString& textureFilename,
68  ccHObject& container,
69  LoadParameters& parameters);
70 
71 private:
74  QString filename,
75  e_ply_storage_mode storageType);
76 };
77 
78 #endif // CC_PLY_FILTER_HEADER
int64_t CV_CLASS_ENUM
Type of object type flags (64 bits)
Definition: CVTypes.h:97
std::string filename
#define CV_IO_LIB_API
Definition: CV_io.h:15
filament::Texture::InternalFormat format
char type
CC_FILE_ERROR
Typical I/O filter errors.
Definition: FileIOFilter.h:20
static const char e_ply_storage_mode_names[][24]
PLY format storage modes.
Definition: PlyFilter.h:22
static const char e_ply_type_names[][12]
PLY format types.
Definition: PlyFilter.h:15
Generic file I/O filter.
Definition: FileIOFilter.h:46
virtual CC_FILE_ERROR saveToFile(ccHObject *entity, const QString &filename, const SaveParameters &parameters)
Saves an entity (or a group of) to a file.
Definition: FileIOFilter.h:141
Stanford PLY file I/O filter.
Definition: PlyFilter.h:46
CC_FILE_ERROR loadFile(const QString &filename, const QString &textureFilename, ccHObject &container, LoadParameters &parameters)
Custom loading method.
bool canSave(CV_CLASS_ENUM type, bool &multiple, bool &exclusive) const override
Returns whether this I/O filter can save the specified type of entity.
CC_FILE_ERROR saveToFile(ccHObject *entity, const QString &filename, const SaveParameters &parameters) override
Saves an entity (or a group of) to a file.
static void SetDefaultOutputFormat(e_ply_storage_mode format)
CC_FILE_ERROR loadFile(const QString &filename, ccHObject &container, LoadParameters &parameters) override
Loads one or more entities from a file.
Hierarchical CLOUDVIEWER Object.
Definition: ecvHObject.h:25
Generic loading parameters.
Definition: FileIOFilter.h:51
Generic saving parameters.
Definition: FileIOFilter.h:84
PLY file nuclear element.
Definition: PlyFilter.h:36
p_ply_element elem
Definition: PlyFilter.h:37
int propertiesCount
Definition: PlyFilter.h:41
bool isFace
Definition: PlyFilter.h:42
long elementInstances
Definition: PlyFilter.h:39
const char * elementName
Definition: PlyFilter.h:38
std::vector< plyProperty > properties
Definition: PlyFilter.h:40
PLY file properties.
Definition: PlyFilter.h:26
const char * propName
Definition: PlyFilter.h:28
p_ply_property prop
Definition: PlyFilter.h:27
e_ply_type value_type
Definition: PlyFilter.h:31
e_ply_type type
Definition: PlyFilter.h:29
int elemIndex
Definition: PlyFilter.h:32
e_ply_type length_type
Definition: PlyFilter.h:30