ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
ecvExtru.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 "ecvGenericPrimitive.h"
12 
14 
18 public:
20 
27  ccExtru(const std::vector<CCVector2>& profile,
29  const ccGLMatrix* transMat = 0,
30  QString name = QString("Extrusion"));
31 
33 
35  ccExtru(QString name = QString("Extrusion"));
36 
38  virtual CV_CLASS_ENUM getClassID() const override {
39  return CV_TYPES::EXTRU;
40  }
41 
42  // inherited from ccGenericPrimitive
43  virtual QString getTypeName() const override { return "Extrusion"; }
44  virtual ccGenericPrimitive* clone() const override;
45 
47  PointCoordinateType getThickness() const { return m_height; }
48 
50  const std::vector<CCVector2>& getProfile() const { return m_profile; }
51 
52 protected:
53  // inherited from ccGenericPrimitive
54  bool toFile_MeOnly(QFile& out, short dataVersion) const override;
55  short minimumFileVersion_MeOnly() const override;
56  bool fromFile_MeOnly(QFile& in,
57  short dataVersion,
58  int flags,
59  LoadedIDMap& oldToNewIDMap) override;
60  virtual bool buildUp() override;
61 
64 
66  std::vector<CCVector2> m_profile;
67 };
float PointCoordinateType
Type of the coordinates of a (N-D) point.
Definition: CVTypes.h:16
int64_t CV_CLASS_ENUM
Type of object type flags (64 bits)
Definition: CVTypes.h:97
#define CV_DB_LIB_API
Definition: CV_db.h:15
std::string name
int height
CloudViewerScene::LightingProfile profile
Profile extrusion (primitive)
Definition: ecvExtru.h:17
virtual QString getTypeName() const override
Returns type name (sphere, cylinder, etc.)
Definition: ecvExtru.h:43
virtual ccGenericPrimitive * clone() const override
Clones primitive.
virtual CV_CLASS_ENUM getClassID() const override
Returns class ID.
Definition: ecvExtru.h:38
bool fromFile_MeOnly(QFile &in, short dataVersion, int flags, LoadedIDMap &oldToNewIDMap) override
Loads own object data.
short minimumFileVersion_MeOnly() const override
PointCoordinateType getThickness() const
Returns extrusion thickness.
Definition: ecvExtru.h:47
PointCoordinateType m_height
Extrusion thickness.
Definition: ecvExtru.h:63
std::vector< CCVector2 > m_profile
Profile.
Definition: ecvExtru.h:66
const std::vector< CCVector2 > & getProfile() const
Returns profile.
Definition: ecvExtru.h:50
ccExtru(const std::vector< CCVector2 > &profile, PointCoordinateType height, const ccGLMatrix *transMat=0, QString name=QString("Extrusion"))
Default constructor.
virtual bool buildUp() override
Builds primitive.
ccExtru(QString name=QString("Extrusion"))
Simplified constructor.
bool toFile_MeOnly(QFile &out, short dataVersion) const override
Save own object data.
Float version of ccGLMatrixTpl.
Definition: ecvGLMatrix.h:19
Generic primitive interface.
QMultiMap< unsigned, unsigned > LoadedIDMap
Map of loaded unique IDs (old ID --> new ID)
@ EXTRU
Definition: CVTypes.h:130