Some cleanup

Fri, 11 Nov 2016 13:34:51 +0200

author
Teemu Piippo <teemu@hecknology.net>
date
Fri, 11 Nov 2016 13:34:51 +0200
changeset 1042
b54b78ac41a5
parent 1041
9fc08b73b8c4
child 1043
0091a761daf2

Some cleanup

src/editmodes/abstractEditMode.cpp file | annotate | diff | comparison | revisions
src/editmodes/abstractEditMode.h file | annotate | diff | comparison | revisions
src/editmodes/linePathMode.cpp file | annotate | diff | comparison | revisions
--- a/src/editmodes/abstractEditMode.cpp	Sun Oct 16 18:28:56 2016 +0300
+++ b/src/editmodes/abstractEditMode.cpp	Fri Nov 11 13:34:51 2016 +0200
@@ -34,14 +34,14 @@
 ConfigOption (bool DrawLineLengths = true)
 ConfigOption (bool DrawAngles = false)
 
-AbstractEditMode::AbstractEditMode (GLRenderer* renderer) :
-	QObject (renderer),
-	HierarchyElement (renderer),
-	m_renderer (renderer) {}
+AbstractEditMode::AbstractEditMode(GLRenderer* renderer) :
+	QObject(renderer),
+	HierarchyElement(renderer),
+	m_renderer(renderer) {}
 
 AbstractEditMode::~AbstractEditMode() {}
 
-AbstractEditMode* AbstractEditMode::createByType (GLRenderer* renderer, EditModeType type)
+AbstractEditMode* AbstractEditMode::createByType(GLRenderer* renderer, EditModeType type)
 {
 	switch (type)
 	{
@@ -54,7 +54,7 @@
 	case EditModeType::Curve: return new CurveMode (renderer);
 	}
 
-	throw std::logic_error ("bad type given to AbstractEditMode::createByType");
+	throw std::logic_error("bad type given to AbstractEditMode::createByType");
 }
 
 GLRenderer* AbstractEditMode::renderer() const
@@ -62,9 +62,9 @@
 	return m_renderer;
 }
 
-AbstractDrawMode::AbstractDrawMode (GLRenderer* renderer) :
-	AbstractEditMode (renderer),
-	m_polybrush (QBrush (QColor (64, 192, 0, 128)))
+AbstractDrawMode::AbstractDrawMode(GLRenderer* renderer) :
+	AbstractEditMode(renderer),
+    m_polybrush{QBrush{QColor{64, 192, 0, 128}}}
 {
 	renderer->setContextMenuPolicy (Qt::NoContextMenu); // We need the right mouse button for removing vertices
 	renderer->setCursor (Qt::CrossCursor);
@@ -82,36 +82,36 @@
 
 // =============================================================================
 //
-void AbstractDrawMode::addDrawnVertex (Vertex const& pos)
+void AbstractDrawMode::addDrawnVertex(const Vertex& position)
 {
-	if (preAddVertex (pos))
+	if (preAddVertex(position))
 		return;
 
-	m_drawedVerts << pos;
+	m_drawedVerts << position;
 }
 
-bool AbstractDrawMode::mouseReleased (MouseEventData const& data)
+bool AbstractDrawMode::mouseReleased(MouseEventData const& data)
 {
-	if (Super::mouseReleased (data))
+	if (Super::mouseReleased(data))
 		return true;
 
 	if ((data.releasedButtons & Qt::MidButton) and (m_drawedVerts.size() < 4) and (not data.mouseMoved))
 	{
 		// Find the closest vertex to our cursor
-		double			minimumDistance = 1024.0;
-		const Vertex*	closest = nullptr;
-		Vertex			cursorPosition = renderer()->convert2dTo3d (data.ev->pos(), false);
-		QPoint			cursorPosition2D (data.ev->pos());
-		const Axis		relZ = renderer()->getRelativeZ();
-		QList<Vertex>	vertices = renderer()->document()->inlineVertices().toList();
+		double minimumDistance = 1024.0;
+		const Vertex* closest = nullptr;
+		Vertex cursorPosition = renderer()->convert2dTo3d (data.ev->pos(), false);
+		QPoint cursorPosition2D (data.ev->pos());
+		const Axis depthAxis = renderer()->getRelativeZ();
+		QList<Vertex> vertices = renderer()->document()->inlineVertices().toList();
 
 		// Sort the vertices in order of distance to camera
 		std::sort (vertices.begin(), vertices.end(), [&](const Vertex& a, const Vertex& b) -> bool
 		{
 			if (renderer()->cameraInfo (renderer()->camera()).negatedDepth)
-				return a[relZ] > b[relZ];
-
-			return a[relZ] < b[relZ];
+				return a[depthAxis] > b[depthAxis];
+			else
+				return a[depthAxis] < b[depthAxis];
 		});
 
 		for (const Vertex& vrt : vertices)
@@ -146,7 +146,7 @@
 		return true;
 	}
 
-	if ((data.releasedButtons & Qt::RightButton) and (not m_drawedVerts.isEmpty()))
+	if ((data.releasedButtons & Qt::RightButton) and not m_drawedVerts.isEmpty())
 	{
 		// Remove the last vertex
 		m_drawedVerts.removeLast();
@@ -156,19 +156,16 @@
 	if (data.releasedButtons & Qt::LeftButton)
 	{
 		if (maxVertices() and m_drawedVerts.size() >= maxVertices())
-		{
 			endDraw();
-			return true;
-		}
-
-		addDrawnVertex (getCursorVertex());
+		else
+			addDrawnVertex (getCursorVertex());
 		return true;
 	}
 
 	return false;
 }
 
-void AbstractDrawMode::finishDraw (LDObjectList const& objs)
+void AbstractDrawMode::finishDraw(LDObjectList const& objs)
 {
 	int pos = m_window->suggestInsertPoint();
 
@@ -187,7 +184,7 @@
 	m_drawedVerts.clear();
 }
 
-void AbstractDrawMode::drawLength (QPainter &painter, const Vertex &v0, const Vertex &v1,
+void AbstractDrawMode::drawLineLength(QPainter &painter, const Vertex &v0, const Vertex &v1,
 	const QPointF& v0p, const QPointF& v1p) const
 {
 	if (not m_config->drawLineLengths())
@@ -198,55 +195,53 @@
 	painter.drawText (origin, label);
 }
 
-void AbstractDrawMode::renderPolygon (QPainter& painter, const QVector<Vertex>& poly3d,
-	bool withlengths, bool withangles) const
+void AbstractDrawMode::renderPolygon(QPainter& painter, const QVector<Vertex>& polygon3d,
+	bool drawLineLengths, bool drawAngles ) const
 {
-	QVector<QPoint> poly (poly3d.size());
-	QFontMetrics metrics = QFontMetrics (QFont());
+	QVector<QPoint> polygon2d (polygon3d.size());
+	QFontMetrics metrics = QFontMetrics(QFont());
 
 	// Convert to 2D
-	for (int i = 0; i < poly3d.size(); ++i)
-		poly[i] = renderer()->convert3dTo2d (poly3d[i]);
+	for (int i = 0; i < polygon3d.size(); ++i)
+		polygon2d[i] = renderer()->convert3dTo2d(polygon3d[i]);
 
 	// Draw the polygon-to-be
-	painter.setBrush (m_polybrush);
-	painter.drawPolygon (QPolygonF (poly));
+	painter.setBrush(m_polybrush);
+	painter.drawPolygon(QPolygonF{polygon2d});
 
 	// Draw vertex blips
-	for (int i = 0; i < poly3d.size(); ++i)
+	for (int i = 0; i < polygon3d.size(); ++i)
 	{
-		renderer()->drawBlip (painter, poly[i]);
-		renderer()->drawBlipCoordinates (painter, poly3d[i], poly[i]);
+		renderer()->drawBlip(painter, polygon2d[i]);
+		renderer()->drawBlipCoordinates(painter, polygon3d[i], polygon2d[i]);
 	}
 
 	// Draw line lenghts and angle info if appropriate
-	if (poly3d.size() >= 2 and (withlengths or withangles))
+	if (polygon3d.size() >= 2 and (drawLineLengths or drawAngles))
 	{
 		painter.setPen (renderer()->textPen());
 
-		for (int i = 0; i < poly3d.size(); ++i)
+		for (int i = 0; i < polygon3d.size(); ++i)
 		{
-			const int j = (i + 1) % poly3d.size();
-			const int h = (i - 1 >= 0) ? (i - 1) : (poly3d.size() - 1);
+			int j = (i + 1) % polygon3d.size();
+			int prior = (i - 1 >= 0) ? (i - 1) : (polygon3d.size() - 1);
 
-			if (withlengths)
-				drawLength (painter, poly3d[i], poly3d[j], poly[i], poly[j]);
+			if (drawLineLengths)
+				drawLineLength(painter, polygon3d[i], polygon3d[j], polygon2d[i], polygon2d[j]);
 
-			if (withangles and m_config->drawAngles())
+			if (drawAngles and m_config->drawAngles())
 			{
-				QLineF l0 (poly[h], poly[i]),
-					l1 (poly[i], poly[j]);
-
-				double angle = 180 - l0.angleTo (l1);
+				QLineF line0 = {polygon2d[prior], polygon2d[i]};
+				QLineF line1 = {polygon2d[i], polygon2d[j]};
+				double angle = 180 - line0.angleTo(line1);
 
 				if (angle < 0)
-					angle = 180 - l1.angleTo (l0);
+					angle = 180 - line1.angleTo(line0);
 
-				QString label = QString::number (angle) + QString::fromUtf8 (QByteArray ("\302\260"));
-				QPoint pos = poly[i];
-				pos.setY (pos.y() + metrics.height());
-
-				painter.drawText (pos, label);
+				QString label = QString::number(angle) + "°";
+				QPoint textPosition = polygon2d[i];
+				textPosition.setY(textPosition.y() + metrics.height());
+				painter.drawText(textPosition, label);
 			}
 		}
 	}
@@ -266,12 +261,17 @@
 	return false;
 }
 
+//
+// roundToInterval
+//
+// Rounds 'a' to the nearest multiple of 'interval'.
+//
 template<typename T>
-T intervalClamp (T a, T interval)
+T roundToInterval (T a, T interval)
 {
 	T remainder = a % interval;
 
-	if (remainder >= float (interval / 2))
+	if (remainder >= interval / 2.0)
 		a += interval;
 
 	a -= remainder;
@@ -282,18 +282,17 @@
 {
 	Vertex result = renderer()->position3D();
 
-	if (renderer()->keyboardModifiers() & Qt::ControlModifier
-		and not m_drawedVerts.isEmpty())
+	if ((renderer()->keyboardModifiers() & Qt::ControlModifier) and not m_drawedVerts.isEmpty())
 	{
-		Vertex const& v0 = m_drawedVerts.last();
-		Vertex const& v1 = result;
-		Axis relX, relY;
+		Vertex const& vertex0 = m_drawedVerts.last();
+		Vertex const& vertex1 = result;
+		Axis relativeX, relativeY;
 
-		renderer()->getRelativeAxes (relX, relY);
-		QLineF ln (v0[relX], v0[relY], v1[relX], v1[relY]);
-		ln.setAngle (intervalClamp<int> (ln.angle(), 45));
-		result.setCoordinate (relX, grid()->snap(ln.x2(), Grid::Coordinate));
-		result.setCoordinate (relY, grid()->snap(ln.y2(), Grid::Coordinate));
+		renderer()->getRelativeAxes (relativeX, relativeY);
+		QLineF line = {vertex0[relativeX], vertex0[relativeY], vertex1[relativeX], vertex1[relativeY]};
+		line.setAngle(roundToInterval<int>(line.angle(), 45));
+		result.setCoordinate(relativeX, grid()->snap(line.x2(), Grid::Coordinate));
+		result.setCoordinate(relativeY, grid()->snap(line.y2(), Grid::Coordinate));
 	}
 
 	return result;
--- a/src/editmodes/abstractEditMode.h	Sun Oct 16 18:28:56 2016 +0300
+++ b/src/editmodes/abstractEditMode.h	Fri Nov 11 13:34:51 2016 +0200
@@ -84,7 +84,7 @@
 	void addDrawnVertex (const Vertex& pos);
 	virtual bool allowFreeCamera() const override final { return false; }
 	virtual void endDraw() {}
-	void drawLength (QPainter& painter,
+	void drawLineLength (QPainter& painter,
 		const Vertex& v0, const Vertex& v1,
 		const QPointF& v0p, const QPointF& v1p) const;
 	void finishDraw (const LDObjectList& objs);
--- a/src/editmodes/linePathMode.cpp	Sun Oct 16 18:28:56 2016 +0300
+++ b/src/editmodes/linePathMode.cpp	Fri Nov 11 13:34:51 2016 +0200
@@ -40,7 +40,7 @@
 		for (int i = 0; i < points.size() - 1; ++i)
 		{
 			painter.drawLine (QLineF (points[i], points[i + 1]));
-			drawLength (painter, points3d[i], points3d[i + 1], points[i], points[i + 1]);
+			drawLineLength (painter, points3d[i], points3d[i + 1], points[i], points[i + 1]);
 		}
 	
 		for (int i = 0; i < points.size(); ++i)

mercurial