- painter->SetBrush(QBrush(QColor(Qt::blue)));
- painter->DrawArrowhead(p1, p2);
- painter->DrawArrowhead(p2, p1);
-#if 0
- // Draw arrowheads, dots, etc :-P
- // NOTE: These need some kind of enum in the header so that they can
- // be created with some kind of user control...
-
- Point p7 = position + (unit * 9.0);
- Point p8 = endpoint - (unit * 9.0);
- Point p9 = p7 + (orthogonal * 7.0);
- Point p10 = p7 + (orthogonal * 13.0);
- Point p11 = p8 + (orthogonal * 7.0);
- Point p12 = p8 + (orthogonal * 13.0);
-
- painter->DrawLine(p1, p9);
- painter->DrawLine(p9, p10);
- painter->DrawLine(p10, p1);
- painter->DrawLine(p2, p11);
- painter->DrawLine(p11, p12);
- painter->DrawLine(p12, p2);
-#endif
+ // Calculate whether or not the arrowheads are too crowded to put inside
+ // the extension lines. 9.0 is the length of the arrowhead.
+// double t = Vector::Parameter(position, endpoint, endpoint - (unit * 9.0 * size));
+ double t = Vector::Parameter(position, endpoint, position + (unit * 9.0 * size));
+// double t = Vector::Parameter(endpoint, position, position + (unit * 9.0 * size));
+//printf("Dimension::Draw(): t = %lf\n", t);
+
+// On the screen, it's acting like this is actually 58%...
+// This is correct, we want it to happen at > 50%
+ if (t > 0.58)
+ {
+ // Draw main dimension line + arrowheads
+ painter->DrawLine(p1, p2);
+ painter->DrawArrowhead(p1, p2, size);
+ painter->DrawArrowhead(p2, p1, size);
+ }
+ else
+ {
+ // Draw outside arrowheads
+ Point p7 = p1 - (unit * 9.0 * size);
+ Point p8 = p2 + (unit * 9.0 * size);
+ painter->DrawArrowhead(p1, p7, size);
+ painter->DrawArrowhead(p2, p8, size);
+ painter->DrawLine(p1, p1 - (unit * 14.0 * size));
+ painter->DrawLine(p2, p2 + (unit * 14.0 * size));
+ }