X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fpainter.cpp;h=6cfd91f8ef62641d6584158631c6a3834866532a;hb=11802354d1ddc5bc571d83d8fc9b600618cb4372;hp=7d146b1888cdfb3d5b430cf0c2e269860e4c2aee;hpb=ba6723b86d8dd67ebc7b11b245de3e7ff64f06b1;p=architektonas diff --git a/src/painter.cpp b/src/painter.cpp index 7d146b1..6cfd91f 100644 --- a/src/painter.cpp +++ b/src/painter.cpp @@ -106,7 +106,7 @@ void Painter::SetPen(QPen pen) } -void Painter::DrawAngledText(Vector center, double angle, QString text) +void Painter::DrawAngledText(Vector center, double angle, QString text, double size) { if (!painter) return; @@ -119,29 +119,22 @@ void Painter::DrawAngledText(Vector center, double angle, QString text) // We may need this stuff... If dimension text is large enough. // int textWidth = QFontMetrics(painter->font()).width(text); // int textHeight = QFontMetrics(painter->font()).height(); -// NOTE: SCREEN_ZOOM is a kludge to make things look right at screen resolution... - QRectF textBox(-100.0 * zoom * SCREEN_ZOOM, -100.0 * zoom * SCREEN_ZOOM, 200.0 * zoom * SCREEN_ZOOM, 200.0 * zoom * SCREEN_ZOOM); // x, y, w, h; x/y = upper left corner + QRectF textBox(-100.0 * zoom * size, -100.0 * zoom * size, 200.0 * zoom * size, 200.0 * zoom * size); // x, y, w, h; x/y = upper left corner // This is in pixels. Might not render correctly at all zoom levels. - // Need to figure out if dimensions are always rendered at one size regardless of zoom, - // or if they have a definite size, and are thus zoomable. - // If zoomable, this is incorrect: - // (Added zoom, so this is correct now :-) - float yOffset = -12.0 * zoom * SCREEN_ZOOM; + // Need to figure out if dimensions are always rendered at one size + // regardless of zoom, or if they have a definite size, and are thus + // zoomable. + float yOffset = -12.0 * zoom * size; // Fix text so it isn't upside down... if ((angle > PI * 0.5) && (angle < PI * 1.5)) { angle += PI; - yOffset = 12.0 * zoom * SCREEN_ZOOM; + yOffset = 12.0 * zoom * size; } -#if 0 - Vector offset = CartesianToQtCoords(Vector(0, yOffset)); - textBox.translate(offset.x, offset.y); -#else textBox.translate(0, yOffset); -#endif painter->save(); painter->translate(center.x, center.y); // Angles are backwards in the Qt coord system, so we flip ours... @@ -245,7 +238,7 @@ void Painter::DrawText(QRectF rect, int type, QString text) } -void Painter::DrawArrowhead(Vector head, Vector tail) +void Painter::DrawArrowhead(Vector head, Vector tail, double size) { QPolygonF arrow; @@ -255,10 +248,9 @@ void Painter::DrawArrowhead(Vector head, Vector tail) Vector orthogonal = Vector(cos(orthoAngle), sin(orthoAngle)); Vector unit = Vector(head - tail).Unit(); -// NOTE: SCREEN_ZOOM is a kludge to make things look right at scale... - Point p1 = head - (unit * 9.0 * SCREEN_ZOOM); - Point p2 = p1 + (orthogonal * 3.0 * SCREEN_ZOOM); - Point p3 = p1 - (orthogonal * 3.0 * SCREEN_ZOOM); + Point p1 = head - (unit * 9.0 * size); + Point p2 = p1 + (orthogonal * 3.0 * size); + Point p3 = p1 - (orthogonal * 3.0 * size); Point p4 = CartesianToQtCoords(head); Point p5 = CartesianToQtCoords(p2);