src/invert.cpp

changeset 183
97b591813c8b
parent 33
4c41bfe2ec6e
child 200
ca23936b455b
--- a/src/invert.cpp	Sun Mar 13 20:26:28 2022 +0200
+++ b/src/invert.cpp	Tue Mar 15 18:52:48 2022 +0200
@@ -20,54 +20,8 @@
 #include "model.h"
 #include "gl/common.h"
 #include "invert.h"
-
-#if 0
-/*
- * Returns whether or not the document is flat.
- * If it is flat, the result is stored in *axis.
- */
-bool isflat(Model* model, Axis* flatDimension)
-{
-	// The dimensions that this model is potentially flat in.
-	QVector<Axis> dimensions = {X, Y, Z};
-
-	// Iterate through everything in the subfile. If there is any vertex with a coordinate not at
-	// zero, the subfile is not flat in that dimension.
-	for (LDObject* subfileObject : model->objects())
-	{
-		for (int i = 0; i < subfileObject->numVertices(); ++i)
-		{
-			Vertex const& v_i = subfileObject->vertex(i);
-
-			if (not qFuzzyCompare(v_i.x, 0.0))
-				dimensions.removeOne(X);
-
-			if (not qFuzzyCompare(v_i.y, 0.0))
-				dimensions.removeOne(Y);
-
-			if (not qFuzzyCompare(v_i.z, 0.0))
-				dimensions.removeOne(Z);
-		}
-
-		// If there are no more dimensions left, we can exit the loop.
-		if (dimensions.isEmpty())
-			break;
-	}
-
-	if (dimensions.size() == 1)
-	{
-		// The model is flat in one dimension, return that.
-		// If the model is flat in two or three dimensions, it's not really a valid model.
-		*flatDimension = dimensions[0];
-		return true;
-	}
-	else
-	{
-		// The model is not flat.
-		return false;
-	}
-}
-#endif
+#include "documentmanager.h"
+#include "modeleditor.h"
 
 /*
  * Returns a matrix that causes a flip on the given dimension.
@@ -80,56 +34,6 @@
 	return result;
 }
 
-#if 0
-/*
- * Inverts an LDObject so that its winding is changed.
- */
-void invert(LDObject* obj, DocumentManager* context)
-{
-	if (obj->numPolygonVertices() > 0)
-	{
-		// Object is vertex based, so change the order of the vertices.
-		QVector<Vertex> vertices;
-		vertices.resize(obj->numPolygonVertices());
-
-		for (int i = 0; i < vertices.size(); i += 1)
-			vertices[vertices.size() - 1 - i] = obj->vertex(i);
-
-		for (int i = 0; i < vertices.size(); i += 1)
-			obj->setVertex(i, vertices[i]);
-	}
-	else if (obj->type() == LDObjectType::SubfileReference)
-	{
-		// Check whether subfile is flat. If it is, flip it on the axis on which it is flat.
-		Model model {context};
-		LDSubfileReference* reference = static_cast<LDSubfileReference*>(obj);
-		reference->fileInfo(context)->inlineContents(model, true, false);
-		Axis flatDimension;
-
-		if (::isflat(&model, &flatDimension))
-		{
-			reference->setTransformationMatrix(
-				reference->transformationMatrix() * ::flipmatrix(flatDimension)
-			);
-		}
-		else
-		{
-			// Subfile is not flat. Resort to invertnext.
-			reference->setInverted(not reference->isInverted());
-		}
-	}
-	else if (obj->type() == LDObjectType::CircularPrimitive)
-	{
-		auto primitive = static_cast<LDCircularPrimitive*>(obj);
-
-		if (primitive->isFlat())
-			primitive->setTransformationMatrix(primitive->transformationMatrix() * ::flipmatrix(Y));
-		else
-			primitive->setInverted(not primitive->isInverted());
-	}
-}
-#endif
-
 /*
  * Inverts the winding of a polygon.
  */

mercurial