When drawing circles, draw the radius in the middle

Thu, 03 Oct 2013 21:42:48 +0300

author
Santeri Piippo <crimsondusk64@gmail.com>
date
Thu, 03 Oct 2013 21:42:48 +0300
changeset 495
cb931c2d1e8b
parent 494
bd005c78a089
child 496
d6cbf21af8fb

When drawing circles, draw the radius in the middle

src/gldraw.cpp file | annotate | diff | comparison | revisions
--- a/src/gldraw.cpp	Thu Oct 03 21:08:34 2013 +0300
+++ b/src/gldraw.cpp	Thu Oct 03 21:42:48 2013 +0300
@@ -511,6 +511,7 @@
 	initGLData();
 	drawGLScene();
 
+	QPen textpen = getTextPen();
 	QPainter paint (this);
 	QFontMetrics metrics = QFontMetrics (QFont());
 	paint.setRenderHint (QPainter::HighQualityAntialiasing);
@@ -540,7 +541,11 @@
 
 		paint.setPen (getTextPen());
 		paint.drawText (m_width - textSize.width(), m_height - 16, textSize.width(),
-						textSize.height(), Qt::AlignCenter, text);
+			textSize.height(), Qt::AlignCenter, text);
+
+		QPen linepen = m_thinBorderPen;
+		linepen.setWidth (2);
+		linepen.setColor (luma (m_bgcolor) < 40 ? Qt::white : Qt::black);
 
 		// If we're drawing, draw the vertices onto the screen.
 		if (editMode() == Draw)
@@ -586,10 +591,7 @@
 				}
 
 				// Draw the polygon-to-be
-				QPen pen = m_thinBorderPen;
-				pen.setWidth (2);
-				pen.setColor (luma (m_bgcolor) < 40 ? Qt::white : Qt::black);
-				paint.setPen (pen);
+				paint.setPen (linepen);
 				paint.setBrush (QColor (64, 192, 0, 128));
 				paint.drawPolygon (poly, numverts);
 
@@ -603,7 +605,6 @@
 				}
 			}
 		}
-
 		elif (editMode() == CircleMode)
 		{	// If we have not specified the center point of the circle yet, preview it on the screen.
 			if (m_drawedVerts.size() == 0)
@@ -614,6 +615,8 @@
 				const int segs = lores;
 				const double angleUnit = (2 * pi) / segs;
 				Axis relX, relY;
+				QVector<QPoint> points;
+
 				getRelativeAxes (relX, relY);
 
 				for (int i = 0; i < segs; ++i)
@@ -623,20 +626,22 @@
 					verts << v;
 				}
 
-				QVector<QPoint> points;
-
-			for (const vertex & v : verts)
+				for (const vertex& v : verts)
 				{	QPoint point = coordconv3_2 (v);
 					drawBlip (paint, point);
 					points << point;
 				}
 
-				QPen pen = m_thinBorderPen;
-				pen.setWidth (2);
-				pen.setColor (luma (m_bgcolor) < 40 ? Qt::white : Qt::black);
-				paint.setPen (pen);
+				paint.setPen (linepen);
 				paint.setBrush (Qt::NoBrush);
 				paint.drawPolygon (QPolygon (points));
+
+				{ // Draw the current radius in the middle of the circle.
+					QPoint origin = coordconv3_2 (m_drawedVerts[0]);
+					str label = str::number (dist);
+					paint.setPen (textpen);
+					paint.drawText (origin.x() - (metrics.width (label) / 2), origin.y(), label);
+				}
 			}
 		}
 	}
@@ -649,7 +654,7 @@
 		paint.drawRect (m_cameraIcons[camera()].selRect);
 
 		// Draw the actual icons
-	for (CameraIcon & info : m_cameraIcons)
+		for (CameraIcon& info : m_cameraIcons)
 		{	// Don't draw the free camera icon when in draw mode
 			if (&info == &m_cameraIcons[GL::Free] && editMode() != Select)
 				continue;
@@ -660,11 +665,11 @@
 		str fmtstr = tr ("%1 Camera");
 
 		// Draw a label for the current camera in the bottom left corner
-		{	const ushort margin = 4;
+		{	const int margin = 4;
 
 			str label;
 			label = fmt (fmtstr, tr (g_CameraNames[camera()]));
-			paint.setPen (getTextPen());
+			paint.setPen (textpen);
 			paint.drawText (QPoint (margin, height() - (margin + metrics.descent())), label);
 		}
 
@@ -685,7 +690,7 @@
 		const int margin = 2;
 		QColor penColor = getTextPen();
 
-	for (const MessageManager::Line & line : msglog()->getLines())
+		for (const MessageManager::Line& line : msglog()->getLines())
 		{	penColor.setAlphaF (line.alpha);
 			paint.setPen (penColor);
 			paint.drawText (QPoint (margin, y + margin + metrics.ascent()), line.text);
@@ -695,10 +700,10 @@
 
 	// If we're range-picking, draw a rectangle encompassing the selection area.
 	if (m_rangepick && !m_picking && m_totalmove >= 10)
-	{	const short x0 = m_rangeStart.x(),
-						y0 = m_rangeStart.y(),
-						x1 = m_pos.x(),
-						y1 = m_pos.y();
+	{	int x0 = m_rangeStart.x(),
+			y0 = m_rangeStart.y(),
+			x1 = m_pos.x(),
+			y1 = m_pos.y();
 
 		QRect rect (x0, y0, x1 - x0, y1 - y0);
 		QColor fillColor = (m_addpick ? "#40FF00" : "#00CCFF");
@@ -883,7 +888,7 @@
 	if (wasLeft)
 	{	// Check if we selected a camera icon
 		if (!m_rangepick)
-	{	for (CameraIcon & info : m_cameraIcons)
+		{	for (CameraIcon & info : m_cameraIcons)
 			{	if (info.destRect.contains (ev->pos()))
 				{	setCamera (info.cam);
 					goto end;
@@ -892,9 +897,9 @@
 		}
 
 		switch (editMode())
-		{	case Draw:
-
-				if (m_rectdraw)
+		{
+			case Draw:
+			{	if (m_rectdraw)
 				{	if (m_drawedVerts.size() == 2)
 					{	endDraw (true);
 						return;
@@ -914,21 +919,19 @@
 				}
 
 				addDrawnVertex (m_hoverpos);
-				break;
+			} break;
 
 			case CircleMode:
-
-				if (m_drawedVerts.size() == 2)
+			{	if (m_drawedVerts.size() == 2)
 				{	endDraw (true);
 					return;
 				}
 
 				addDrawnVertex (m_hoverpos);
-				break;
+			} break;
 
 			case Select:
-
-				if (!drawOnly())
+			{	if (!drawOnly())
 				{	if (m_totalmove < 10)
 						m_rangepick = false;
 
@@ -938,8 +941,7 @@
 					if (m_totalmove < 10 || m_rangepick)
 						pick (ev->x(), ev->y());
 				}
-
-				break;
+			} break;
 		}
 
 		m_rangepick = false;
@@ -953,7 +955,7 @@
 
 		QPoint curspos = coordconv3_2 (m_hoverpos);
 
-	for (const vertex & pos3d: m_knownVerts)
+		for (const vertex& pos3d: m_knownVerts)
 		{	QPoint pos2d = coordconv3_2 (pos3d);
 
 			// Measure squared distance
@@ -1243,14 +1245,13 @@
 
 	switch (editMode())
 	{	case Select:
-			unsetCursor();
+		{	unsetCursor();
 			setContextMenuPolicy (Qt::DefaultContextMenu);
-			break;
+		} break;
 
 		case Draw:
 		case CircleMode:
-
-			// Cannot draw into the free camera - use top instead.
+		{	// Cannot draw into the free camera - use top instead.
 			if (m_camera == Free)
 				setCamera (Top);
 
@@ -1267,7 +1268,7 @@
 			g_win->sel().clear();
 			g_win->updateSelection();
 			m_drawedVerts.clear();
-			break;
+		} break;
 	}
 
 	g_win->updateEditModeActions();
@@ -1353,9 +1354,8 @@
 			for (int i = 0; i < 9; ++i)
 			{	if (transform[i] == 2)
 					transform[i] = dist;
-
 				elif (transform[i] == 1 && camera() >= 3)
-				transform[i] = -1;
+					transform[i] = -1;
 			}
 
 			LDSubfile* ref = new LDSubfile;

mercurial