1// Copyright (C) 2017 The Qt Company Ltd and/or its subsidiary(-ies).
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef PLYGEOMETRYLOADER_H
5#define PLYGEOMETRYLOADER_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists for the convenience
12// of other Qt classes. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include "basegeometryloader_p.h"
19
20QT_BEGIN_NAMESPACE
21
22namespace Qt3DRender {
23
24#define PLYGEOMETRYLOADER_EXT QLatin1String("ply")
25
26class PlyGeometryLoader : public BaseGeometryLoader
27{
28public:
29 enum DataType {
30 Int8,
31 Uint8,
32 Int16,
33 Uint16,
34 Int32,
35 Uint32,
36 Float32,
37 Float64,
38 TypeList,
39 TypeUnknown
40 };
41
42 enum PropertyType {
43 PropertyVertexIndex,
44 PropertyX,
45 PropertyY,
46 PropertyZ,
47 PropertyNormalX,
48 PropertyNormalY,
49 PropertyNormalZ,
50 PropertyTextureU,
51 PropertyTextureV,
52 PropertyUnknown,
53 };
54
55 enum Format {
56 FormatAscii,
57 FormatBinaryLittleEndian,
58 FormatBinaryBigEndian,
59 FormatUnknown,
60 };
61
62 enum ElementType {
63 ElementVertex,
64 ElementFace,
65 ElementUnknown,
66 };
67
68 struct Property {
69 PropertyType type;
70 DataType dataType;
71 DataType listSizeType;
72 DataType listElementType;
73 };
74
75 struct Element {
76 ElementType type;
77 int count;
78 QList<Property> properties;
79 };
80
81protected:
82 bool doLoad(QIODevice *ioDev, const QString &subMesh) final;
83
84private:
85 bool parseHeader(QIODevice *ioDev);
86 bool parseMesh(QIODevice *ioDev);
87
88 Format m_format;
89 QList<Element> m_elements;
90
91 bool m_hasNormals;
92 bool m_hasTexCoords;
93};
94
95} // namespace Qt3DRender
96
97QT_END_NAMESPACE
98
99#endif // PLYGEOMETRYLOADER_H
100

source code of qt3d/src/plugins/geometryloaders/default/plygeometryloader.h