--- 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. */