ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
ecvMaterialSet.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 #pragma once
9 
10 // Local
11 #include "CVShareable.h"
12 #include "ecvHObject.h"
13 #include "ecvMaterial.h"
14 
16 class CV_DB_LIB_API ccMaterialSet : public std::vector<ccMaterial::CShared>,
17  public CCShareable,
18  public ccHObject {
19 public:
21  ccMaterialSet(const QString& name = QString());
22 
23  // inherited from ccHObject
24  virtual CV_CLASS_ENUM getClassID() const override {
26  }
27  virtual bool isShareable() const override { return true; }
28 
30 
32  int findMaterialByName(QString mtlName) const;
33 
35 
37  int findMaterialByUniqueID(QString uniqueID) const;
38 
40 
46  int addMaterial(ccMaterial::CShared mat, bool allowDuplicateNames = false);
47 
49 
52  static bool ParseMTL(QString path,
53  const QString& filename,
54  ccMaterialSet& materials,
55  QStringList& errors);
56 
58  bool saveAsMTL(QString path,
59  const QString& baseFilename,
60  QStringList& errors) const;
61 
63  ccMaterialSet* clone() const;
64 
66  bool append(const ccMaterialSet& source);
67 
68  // inherited from ccSerializableObject
69  virtual bool isSerializable() const override { return true; }
70 
71 protected:
72  // inherited from ccHObject
73  bool toFile_MeOnly(QFile& out, short dataVersion) const override;
74  short minimumFileVersion_MeOnly() const override;
75  bool fromFile_MeOnly(QFile& in,
76  short dataVersion,
77  int flags,
78  LoadedIDMap& oldToNewIDMap) override;
79 };
int64_t CV_CLASS_ENUM
Type of object type flags (64 bits)
Definition: CVTypes.h:97
std::string filename
#define CV_DB_LIB_API
Definition: CV_db.h:15
std::string name
Hierarchical CLOUDVIEWER Object.
Definition: ecvHObject.h:25
virtual short minimumFileVersion_MeOnly() const
virtual bool fromFile_MeOnly(QFile &in, short dataVersion, int flags, LoadedIDMap &oldToNewIDMap)
Loads own object data.
virtual bool toFile_MeOnly(QFile &out, short dataVersion) const
Save own object data.
Mesh (triangle) material.
virtual CV_CLASS_ENUM getClassID() const override
Returns class ID.
virtual bool isShareable() const override
Returns whether object is shareable or not.
virtual bool isSerializable() const override
Returns whether object is serializable of not.
QSharedPointer< const ccMaterial > CShared
Const + Shared type.
Definition: ecvMaterial.h:31
@ MATERIAL_SET
Definition: CVTypes.h:132
static const std::string path
Definition: PointCloud.cpp:59