]> Shamusworld >> Repos - architektonas/blobdiff - src/painter.cpp
Further refinements to the Circle class.
[architektonas] / src / painter.cpp
index 2a0c60060869deed8771872a1fd4c06b3af97407..c0d2c4d2300843e80aaaee7a2b8b55e52b037a2f 100644 (file)
@@ -135,6 +135,8 @@ void Painter::DrawAngledText(Vector center, double angle, QString text)
 void Painter::DrawArc(Vector center, double radius, double startAngle, double span)
 {
        center = CartesianToQtCoords(center);
+       // Need to multiply scalar quantities by the zoom factor as well...
+       radius *= zoom;
        QRectF rectangle(QPointF(center.x - radius, center.y - radius),
                QPointF(center.x + radius, center.y + radius));
        int angle1 = (int)(startAngle * RADIANS_TO_DEGREES * 16.0);
@@ -144,8 +146,17 @@ void Painter::DrawArc(Vector center, double radius, double startAngle, double sp
 
 void Painter::DrawEllipse(Vector center, double axis1, double axis2)
 {
+       // Need to multiply scalar quantities by the zoom factor as well...
        center = CartesianToQtCoords(center);
-       painter->drawEllipse(QPointF(center.x, center.y), axis1, axis2);
+       painter->drawEllipse(QPointF(center.x, center.y), axis1 * zoom, axis2 * zoom);
+}
+
+// This function is for drawing object handles without regard for zoom level;
+// we don't want our object handle size to depend on the zoom level!
+void Painter::DrawHandle(Vector center)
+{
+       center = CartesianToQtCoords(center);
+       painter->drawEllipse(QPointF(center.x, center.y), 4.0, 4.0);
 }
 
 void Painter::DrawLine(int x1, int y1, int x2, int y2)