X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fpainter.cpp;h=308cab6b7bd87ed587cb884ae52113f1173abaad;hb=bb8d0671717bac2c5350e34024273381be1d8175;hp=2a5ed33eaef1a0f200b223d9145c1076d386d33b;hpb=631fbe38f52222a65f1c3bcefb11a616d6806dd6;p=architektonas diff --git a/src/painter.cpp b/src/painter.cpp index 2a5ed33..308cab6 100644 --- a/src/painter.cpp +++ b/src/painter.cpp @@ -119,32 +119,22 @@ void Painter::DrawAngledText(Vector center, double angle, QString text, double s // 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... @@ -218,6 +208,7 @@ void Painter::DrawPoint(int x, int y) } +// This is drawn in Qt coordinates... void Painter::DrawRoundedRect(QRectF rect, double radiusX, double radiusY) { if (!painter) @@ -227,6 +218,22 @@ void Painter::DrawRoundedRect(QRectF rect, double radiusX, double radiusY) } +// This is drawn partially in Cartesian coordinates, and partially in Qt +// coordinates. The rect itself is in Cartesian but we want to pad it by a set +// number of pixels. +void Painter::DrawPaddedRect(QRectF rect) +{ + if (!painter) + return; + + Vector v1 = CartesianToQtCoords(Vector(rect.x(), rect.y())); + Vector v2 = CartesianToQtCoords(Vector(rect.right(), rect.bottom())); + QRectF screenRect(QPointF(v1.x, v1.y), QPointF(v2.x, v2.y)); + screenRect.adjust(-8, 8, 8, -8); // Left/top, right/bottom + painter->drawRect(screenRect); +} + + void Painter::DrawRect(QRectF rect) { if (!painter) @@ -258,16 +265,9 @@ void Painter::DrawArrowhead(Vector head, Vector tail, double size) Vector orthogonal = Vector(cos(orthoAngle), sin(orthoAngle)); Vector unit = Vector(head - tail).Unit(); -#if 0 -// 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); -#else Point p1 = head - (unit * 9.0 * size); Point p2 = p1 + (orthogonal * 3.0 * size); Point p3 = p1 - (orthogonal * 3.0 * size); -#endif Point p4 = CartesianToQtCoords(head); Point p5 = CartesianToQtCoords(p2);