Fixed circle, rectangle and line path modes not working anymore. Add blip coordinates to curve and line path modes. Circle mode for now only can show the coordinates of the initial blip

Sun, 04 Oct 2015 16:45:30 +0300

author
Teemu Piippo <crimsondusk64@gmail.com>
date
Sun, 04 Oct 2015 16:45:30 +0300
changeset 1008
74cb432812d3
parent 1006
a6b462051ae0
child 1009
85fd352bae45

Fixed circle, rectangle and line path modes not working anymore. Add blip coordinates to curve and line path modes. Circle mode for now only can show the coordinates of the initial blip

src/editmodes/abstractEditMode.cpp file | annotate | diff | comparison | revisions
src/editmodes/circleMode.cpp file | annotate | diff | comparison | revisions
src/editmodes/curvemode.cpp file | annotate | diff | comparison | revisions
src/editmodes/linePathMode.cpp file | annotate | diff | comparison | revisions
src/glRenderer.cpp file | annotate | diff | comparison | revisions
src/glRenderer.h file | annotate | diff | comparison | revisions
src/ldObject.cpp file | annotate | diff | comparison | revisions
--- a/src/editmodes/abstractEditMode.cpp	Sun Oct 04 14:08:51 2015 +0300
+++ b/src/editmodes/abstractEditMode.cpp	Sun Oct 04 16:45:30 2015 +0300
@@ -154,7 +154,7 @@
 
 	if (data.releasedButtons & Qt::LeftButton)
 	{
-		if (m_drawedVerts.size() >= maxVertices())
+		if (maxVertices() and m_drawedVerts.size() >= maxVertices())
 		{
 			endDraw();
 			return true;
@@ -214,13 +214,8 @@
 	// Draw vertex blips
 	for (int i = 0; i < poly3d.size(); ++i)
 	{
-		QPoint& blip = poly[i];
-		painter.setPen (renderer()->linePen());
-		renderer()->drawBlip (painter, blip);
-
-		// Draw their coordinates
-		painter.setPen (renderer()->textPen());
-		painter.drawText (blip.x(), blip.y() - 8, poly3d[i].toString (true));
+		renderer()->drawBlip (painter, poly[i]);
+		renderer()->drawBlipCoordinates (painter, poly3d[i], poly[i]);
 	}
 
 	// Draw line lenghts and angle info if appropriate
--- a/src/editmodes/circleMode.cpp	Sun Oct 04 14:08:51 2015 +0300
+++ b/src/editmodes/circleMode.cpp	Sun Oct 04 16:45:30 2015 +0300
@@ -205,7 +205,9 @@
 	// If we have not specified the center point of the circle yet, preview it on the screen.
 	if (m_drawedVerts.isEmpty())
 	{
-		renderer()->drawBlip (painter, renderer()->convert3dTo2d (renderer()->position3D()));
+		QPoint pos2d = renderer()->convert3dTo2d (renderer()->position3D());
+		renderer()->drawBlip (painter, pos2d);
+		renderer()->drawBlipCoordinates (painter, renderer()->position3D(), pos2d);
 		return;
 	}
 
@@ -273,7 +275,7 @@
 			lines << QLineF (innerverts2d[i], innerverts2d[i + 1]);
 	}
 
-	// Draw a green blips at where the points are
+	// Draw green blips at where the points are
 	for (QPointF const& point : innerverts2d + outerverts2d)
 		renderer()->drawBlip (painter, point);
 
--- a/src/editmodes/curvemode.cpp	Sun Oct 04 14:08:51 2015 +0300
+++ b/src/editmodes/curvemode.cpp	Sun Oct 04 16:45:30 2015 +0300
@@ -47,7 +47,12 @@
 		for (int i = 0; i < countof(curve); ++i)
 			curve2d[i] = renderer()->convert3dTo2d (curve[i]);
 
-		painter.setPen (renderer()->linePen());
+		painter.setPen (QColor (0, 112, 112));
+		if (m_drawedVerts.size() >= 2)
+			painter.drawLine (curve2d[0], curve2d[2]);
+
+		if (m_drawedVerts.size() >= 3)
+			painter.drawLine (curve2d[1], curve2d[3]);
 
 		for (int i = 0; i < qMin (countof(curve), m_drawedVerts.size() + 1); ++i)
 		{
@@ -55,7 +60,8 @@
 				renderer()->drawBlip (painter, curve2d[i]);
 			else
 				// Give control points a different color
-				renderer()->drawBlip (painter, curve2d[i], QColor (0, 96, 96));
+				renderer()->drawBlip (painter, curve2d[i], QColor (0, 112, 112));
+			renderer()->drawBlipCoordinates (painter, curve[i], curve2d[i]);
 		}
 
 		QPainterPath path (curve2d[0]);
@@ -65,8 +71,9 @@
 	else
 	{
 		// Even if we have nothing, still draw the vertex at the cursor
-		painter.setPen (renderer()->linePen());
-		renderer()->drawBlip (painter, renderer()->convert3dTo2d (getCursorVertex()));
+		QPoint vertex2d = renderer()->convert3dTo2d (getCursorVertex());
+		renderer()->drawBlip (painter, vertex2d);
+		renderer()->drawBlipCoordinates (painter, getCursorVertex(), vertex2d);
 	}
 }
 
--- a/src/editmodes/linePathMode.cpp	Sun Oct 04 14:08:51 2015 +0300
+++ b/src/editmodes/linePathMode.cpp	Sun Oct 04 16:45:30 2015 +0300
@@ -27,7 +27,7 @@
 void LinePathMode::render (QPainter& painter) const
 {
 	QVector<QPointF> points;
-	QList<Vertex> points3d (m_drawedVerts);
+	QList<Vertex> points3d = m_drawedVerts;
 	points3d << renderer()->position3D();
 
 	for (Vertex const& vrt : points3d)
@@ -43,8 +43,12 @@
 			drawLength (painter, points3d[i], points3d[i + 1], points[i], points[i + 1]);
 		}
 	
-		for (QPointF const& point : points)
+		for (int i = 0; i < points.size(); ++i)
+		{
+			const QPointF& point = points[i];
 			renderer()->drawBlip (painter, point);
+			renderer()->drawBlipCoordinates (painter, points3d[i], point);
+		}
 	}
 }
 
@@ -64,7 +68,7 @@
 
 bool LinePathMode::preAddVertex (Vertex const& pos)
 {
-	// If we picked an the last vertex, stop drawing
+	// If we picked the vertex we last drew, stop drawing
 	if (not m_drawedVerts.isEmpty() and pos == m_drawedVerts.last())
 	{
 		endDraw();
--- a/src/glRenderer.cpp	Sun Oct 04 14:08:51 2015 +0300
+++ b/src/glRenderer.cpp	Sun Oct 04 16:45:30 2015 +0300
@@ -633,7 +633,7 @@
 #ifndef RELEASE
 	if (not isPicking())
 	{
-		QString text = format ("Rotation: (%1, %2, %3)\nPanning: (%4, %5), Zoom: %6",
+		QString text = format ("Rotation: (%1°, %2°, %3°)\nPanning: (%4, %5), Zoom: %6",
 			rotation(X), rotation(Y), rotation(Z), panning(X), panning(Y), zoom());
 		QRect textSize = metrics.boundingRect (0, 0, m_width, m_height, Qt::AlignCenter, text);
 		paint.setPen (textPen());
@@ -721,14 +721,25 @@
 
 // =============================================================================
 //
-void GLRenderer::drawBlip (QPainter& paint, QPointF pos, QColor color) const
+void GLRenderer::drawBlip (QPainter& painter, QPointF pos, QColor color) const
 {
 	QPen pen = m_thinBorderPen;
 	const int blipsize = 8;
 	pen.setWidth (1);
-	paint.setPen (pen);
-	paint.setBrush (color);
-	paint.drawEllipse (pos.x() - blipsize / 2, pos.y() - blipsize / 2, blipsize, blipsize);
+	painter.setPen (pen);
+	painter.setBrush (color);
+	painter.drawEllipse (pos.x() - blipsize / 2, pos.y() - blipsize / 2, blipsize, blipsize);
+}
+
+void GLRenderer::drawBlipCoordinates (QPainter& painter, const Vertex& pos3d)
+{
+	drawBlipCoordinates (painter, pos3d, convert3dTo2d (pos3d));
+}
+
+void GLRenderer::drawBlipCoordinates (QPainter& painter, const Vertex& pos3d, QPointF pos)
+{
+	painter.setPen (textPen());
+	painter.drawText (pos.x(), pos.y() - 8, pos3d.toString (true));
 }
 
 // =============================================================================
--- a/src/glRenderer.h	Sun Oct 04 14:08:51 2015 +0300
+++ b/src/glRenderer.h	Sun Oct 04 16:45:30 2015 +0300
@@ -151,7 +151,9 @@
 	EditModeType currentEditModeType() const;
 	int depthNegateFactor() const;
 	LDDocument* document() const;
-	void drawBlip (QPainter& paint, QPointF pos, QColor color = QColor (64, 192, 0)) const;
+	void drawBlip (QPainter& painter, QPointF pos, QColor color = QColor (64, 192, 0)) const;
+	void drawBlipCoordinates (QPainter& painter, const Vertex& pos3d);
+	void drawBlipCoordinates (QPainter& painter, const Vertex& pos3d, QPointF pos);
 	void drawGLScene();
 	void forgetObject (LDObject* obj);
 	Axis getCameraAxis (bool y, ECamera camid = (ECamera) -1);
--- a/src/ldObject.cpp	Sun Oct 04 14:08:51 2015 +0300
+++ b/src/ldObject.cpp	Sun Oct 04 16:45:30 2015 +0300
@@ -157,7 +157,7 @@
 QString LDBezierCurve::asText() const
 {
 	QString result = format ("0 !LDFORGE BEZIER_CURVE %1", color());
-	
+
 	// Add the coordinates
 	for (int i = 0; i < 4; ++i)
 		result += format (" %1", vertex (i));

mercurial