# HG changeset patch # User Teemu Piippo # Date 1529589778 -10800 # Node ID ba63c7286767af5773db5f24b01d4b6868b44cc2 # Parent 006ced51505794cde7795a6a5f7d29295e23beb5 fixed compile errors in some cases, bezier curve now stores the segment count in each object (not editable yet) diff -r 006ced515057 -r ba63c7286767 src/glcompiler.cpp --- a/src/glcompiler.cpp Wed Jun 20 00:00:26 2018 +0300 +++ b/src/glcompiler.cpp Thu Jun 21 17:02:58 2018 +0300 @@ -372,14 +372,6 @@ } break; - case LDObjectType::BezierCurve: - { - LDBezierCurve* curve = static_cast(object); - for (LDPolygon& polygon : curve->rasterizePolygons(grid()->bezierCurveSegments())) - compilePolygon (polygon, index, info); - } - break; - default: if (object->isRasterizable()) { diff -r 006ced515057 -r ba63c7286767 src/headerhistorymodel.h --- a/src/headerhistorymodel.h Wed Jun 20 00:00:26 2018 +0300 +++ b/src/headerhistorymodel.h Thu Jun 21 17:02:58 2018 +0300 @@ -19,7 +19,7 @@ #pragma once #include -class LDHeader; +struct LDHeader; class HeaderHistoryModel : public QAbstractTableModel { diff -r 006ced515057 -r ba63c7286767 src/linetypes/modelobject.cpp --- a/src/linetypes/modelobject.cpp Wed Jun 20 00:00:26 2018 +0300 +++ b/src/linetypes/modelobject.cpp Thu Jun 21 17:02:58 2018 +0300 @@ -465,9 +465,9 @@ return Vertex(); } -void LDBezierCurve::rasterize(Model& model, int segments) +void LDBezierCurve::rasterize(DocumentManager* context, Winding winding, Model& model, bool, bool) { - QVector polygons = rasterizePolygons(segments); + QVector polygons = rasterizePolygons(context, winding); for (LDPolygon& poly : polygons) { @@ -476,21 +476,21 @@ } } -QVector LDBezierCurve::rasterizePolygons(int segments) +QVector LDBezierCurve::rasterizePolygons(DocumentManager*, Winding) { QVector result; QVector parms; parms.append (pointAt (0.0)); - for (int i = 1; i < segments; ++i) - parms.append (pointAt (double (i) / segments)); + for (int i = 1; i < m_segments; ++i) + parms.append (pointAt (double (i) / m_segments)); parms.append (pointAt (1.0)); LDPolygon poly; poly.color = color().index(); poly.type = LDPolygon::Type::EdgeLine; - for (int i = 0; i < segments; ++i) + for (int i = 0; i < m_segments; ++i) { poly.vertices[0] = parms[i]; poly.vertices[1] = parms[i + 1]; @@ -500,6 +500,22 @@ return result; } +void LDBezierCurve::serialize(Serializer& serializer) +{ + LDObject::serialize(serializer); + serializer << m_segments; +} + +int LDBezierCurve::segments() const +{ + return m_segments; +} + +void LDBezierCurve::setSegments(int newSegments) +{ + changeProperty(&m_segments, newSegments); +} + LDSubfileReference::LDSubfileReference( QString referenceName, const QMatrix4x4& matrix diff -r 006ced515057 -r ba63c7286767 src/linetypes/modelobject.h --- a/src/linetypes/modelobject.h Wed Jun 20 00:00:26 2018 +0300 +++ b/src/linetypes/modelobject.h Thu Jun 21 17:02:58 2018 +0300 @@ -221,11 +221,17 @@ virtual QString asText() const override; Vertex pointAt (qreal t) const; - void rasterize(Model& model, int segments); - QVector rasterizePolygons (int segments); + void rasterize(DocumentManager*context, Winding winding, Model&, bool, bool) override; + QVector rasterizePolygons(DocumentManager*, Winding) override; int numVertices() const override { return 4; } LDColor defaultColor() const override { return EdgeColor; } QString iconName() const override { return "beziercurve"; } + void serialize(class Serializer& serializer) override; + int segments() const; + void setSegments(int newSegments); + +private: + int m_segments = 8; }; enum diff -r 006ced515057 -r ba63c7286767 src/parser.h --- a/src/parser.h Wed Jun 20 00:00:26 2018 +0300 +++ b/src/parser.h Thu Jun 21 17:02:58 2018 +0300 @@ -20,7 +20,7 @@ #include "main.h" #include "lddocument.h" -class LDHeader; +struct LDHeader; class Model; class Parser : public QObject diff -r 006ced515057 -r ba63c7286767 src/toolsets/basictoolset.cpp --- a/src/toolsets/basictoolset.cpp Wed Jun 20 00:00:26 2018 +0300 +++ b/src/toolsets/basictoolset.cpp Thu Jun 21 17:02:58 2018 +0300 @@ -137,13 +137,6 @@ } } } - - for (LDBezierCurve* curve : filterByType (selectedObjects())) - { - Model curveModel {m_documents}; - curve->rasterize(curveModel, grid()->bezierCurveSegments()); - currentDocument()->replace(curve, curveModel); - } } void BasicToolset::inlineShallow() diff -r 006ced515057 -r ba63c7286767 src/toolsets/extprogramtoolset.cpp --- a/src/toolsets/extprogramtoolset.cpp Wed Jun 20 00:00:26 2018 +0300 +++ b/src/toolsets/extprogramtoolset.cpp Thu Jun 21 17:02:58 2018 +0300 @@ -158,13 +158,6 @@ obj->rasterize(m_documents, CounterClockwise, model, true, false); writeObjects(model.objects(), f); } - else if (obj->type() == LDObjectType::BezierCurve) - { - LDBezierCurve* curve = static_cast (obj); - Model model {m_documents}; - curve->rasterize(model, grid()->bezierCurveSegments()); - writeObjects(model.objects(), f); - } else f.write ((obj->asText() + "\r\n").toUtf8()); }