src/linetypes/circularprimitive.cpp

changeset 200
ca23936b455b
parent 199
6988973515d2
child 201
5d201ee4a9c3
--- a/src/linetypes/circularprimitive.cpp	Wed May 25 20:36:34 2022 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,108 +0,0 @@
-#include "circularprimitive.h"
-
-ldraw::CircularPrimitive::CircularPrimitive(CircularPrimitiveType type, int segments, int divisions) :
-	type{type},
-	segments{segments},
-	divisions{divisions}
-{
-}
-
-QVariant ldraw::CircularPrimitive::getProperty(Property property) const
-{
-	switch (property)
-	{
-	case Property::Segments:
-		return this->segments;
-	case Property::Divisions:
-		return this->divisions;
-	case Property::CircularPrimitiveType:
-		return this->type;
-	default:
-		return BaseClass::getProperty(property);
-	}
-}
-
-QString ldraw::CircularPrimitive::textRepresentation() const
-{
-	return circularPrimitiveTypeName(this->type) + " " + QString::number(this->fraction());
-}
-
-QString ldraw::CircularPrimitive::circularPrimitiveTypeName(CircularPrimitiveType type)
-{
-	switch (type)
-	{
-	case Circle:
-		return QObject::tr("Circle");
-	case Disc:
-		return QObject::tr("Disc");
-	}
-}
-
-ldraw::Object::Type ldraw::CircularPrimitive::typeIdentifier() const
-{
-	return ldraw::Object::Type::CircularPrimitive;
-}
-
-QDataStream &ldraw::CircularPrimitive::serialize(QDataStream &stream) const
-{
-	return BaseClass::serialize(stream) << this->type << this->segments << this->divisions;
-}
-
-QDataStream &ldraw::CircularPrimitive::deserialize(QDataStream &stream)
-{
-	return BaseClass::deserialize(stream) >> this->type >> this->segments >> this->divisions;
-}
-
-QString ldraw::CircularPrimitive::toLDrawCode() const
-{
-	return utility::format(
-		"0 !LDFORGE CIRCULAR_PRIMITIVE %1 %2 %3 %4",
-		static_cast<int>(this->type),
-		this->segments,
-		this->divisions,
-		this->transformToBareString());
-}
-
-QString ldraw::CircularPrimitive::iconName() const
-{
-	return ":/icons/linetype-circularprimitive.png";
-}
-
-QString ldraw::CircularPrimitive::typeName() const
-{
-	return QObject::tr("circular primitive");
-}
-
-void ldraw::CircularPrimitive::getPolygons(std::vector<gl::Polygon> &polygons, GetPolygonsContext *) const
-{
-	for (int i = 0; i < this->segments; i += 1)
-	{
-		const float ang_1 = (2 * pi<> * i) / this->divisions;
-		const float ang_2 = (2 * pi<> * (i + 1)) / this->divisions;
-		const glm::vec3 p_1 = {std::sin(ang_1), 0, std::cos(ang_1)};
-		const glm::vec3 p_2 = {std::sin(ang_2), 0, std::cos(ang_2)};
-		switch (this->type)
-		{
-		case Circle:
-			polygons.push_back(gl::edgeLine(
-				p_1,
-				p_2,
-				this->colorIndex,
-				this->id));
-			break;
-		case Disc:
-			polygons.push_back(gl::triangle(
-				{0, 0, 0},
-				p_1,
-				p_2,
-				this->colorIndex,
-				this->id));
-			break;
-		}
-	}
-}
-
-float ldraw::CircularPrimitive::fraction() const
-{
-	return static_cast<float>(this->segments) / static_cast<float>(this->divisions);
-}

mercurial