src/linetypes/circularprimitive.h

Sun, 10 Jun 2018 23:25:08 +0300

author
Teemu Piippo <teemu@hecknology.net>
date
Sun, 10 Jun 2018 23:25:08 +0300
changeset 1402
8bbf2af8c3f5
parent 1399
f52ea4078f5d
child 1403
7a2d84112983
permissions
-rw-r--r--

some rework in description

#pragma once
#include "../primitives.h"
#include "modelobject.h"

class LDCircularPrimitive : public LDMatrixObject
{
public:
	static const LDObjectType SubclassType = LDObjectType::CircularPrimitive;

	LDCircularPrimitive() = default;
	LDCircularPrimitive(
		PrimitiveModel::Type type,
		int segments,
		int divisions,
		const Matrix& transformationMatrix,
		const Vertex& position
	);

	LDObjectType type() const override;
	QString asText() const override;
	void getVertices(DocumentManager *context, QSet<Vertex>& verts) const override;
	bool isRasterizable() const override;
	void rasterize(
		DocumentManager* context,
		Winding parentWinding,
		Model& model,
		bool deep,
		bool render
	) override;
	QVector<LDPolygon> rasterizePolygons(DocumentManager* context, Winding parentWinding) override;
	QString objectListText() const override;
	int triangleCount(DocumentManager*) const override;
	QString iconName() const override;
	void serialize(class Serializer& serializer) override;

private:
	QString buildFilename() const;
	void buildPrimitiveBody(Model& model) const;
	QString stem() const;

	PrimitiveModel::Type m_type = PrimitiveModel::Circle;
	int m_segments = MediumResolution;
	int m_divisions = MediumResolution;
};

mercurial