gridBackground(BACKGROUND_MAX_SIZE, BACKGROUND_MAX_SIZE),
scale(1.0), offsetX(-10), offsetY(-10),
document(Vector(0, 0)),
- gridSpacing(12.0), gridPixels(0), collided(false), rotateTool(false),
+ /*gridSpacing(12.0),*/ gridPixels(0), collided(false), rotateTool(false),
rx(150.0), ry(150.0),
scrollDrag(false), addLineTool(false), addCircleTool(false),
addDimensionTool(false),
setBackgroundRole(QPalette::Base);
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+ Object::gridSpacing = 12.0;
// toolPalette = new ToolWindow();
// CreateCursors();
// setCursor(cur[TOOLSelect]);
pmp.end();
// Set up new BG brush & zoom level (pixels per base unit)
- Painter::zoom = gridPixels / gridSpacing;
+// Painter::zoom = gridPixels / gridSpacing;
+ Painter::zoom = gridPixels / Object::gridSpacing;
UpdateGridBackground();
}
}
+#if 0
//
// This looks strange, but it's really quite simple: We want a point that's
// more than half-way to the next grid point to snap there while conversely we
point *= gridSpacing;
return point;
}
+#endif
void DrawingView::paintEvent(QPaintEvent * /*event*/)
Maybe we can fix this by having the initial point not be snapped, but when there's
a drag, we substitute the snapped point 'oldPoint' which the Object keeps track of
internally to know how far it was dragged...
+
+Now we do... :-/
*/
+#if 0
if (Object::snapToGrid)
- point = SnapPointToGrid(point);
+ point = Object::SnapPointToGrid(point);
+#endif
collided = document.Collided(point);
update(); // Do an update if collided with at least *one* object in the document
if (toolAction)
+ {
+ if (Object::snapToGrid)
+ point = Object::SnapPointToGrid(point);
+
toolAction->MouseDown(point);
+ }
// Didn't hit any object and not using a tool, so do a selection rectangle
if (!(collided || toolAction))
}
// Grid processing...
-#if 1
if ((event->buttons() & Qt::LeftButton) && Object::snapToGrid)
{
-#if 0
- point += gridSpacing / 2.0; // *This* adds to Z!!!
- point /= gridSpacing;
-//200% is ok, gridSpacing = 6 in this case...
-//won't run into problems until gridSpacing = 1.5 (zoom = 800%)
-//run into problems with this approach: when zoom level is 200% this truncates to
-//integers, which is *not* what's wanted here...
- point.x = floor(point.x);//need to fix this for negative numbers...
- point.y = floor(point.y);
- point.z = 0; // Make *sure* Z doesn't go anywhere!!!
- point *= gridSpacing;
-#else
- point = SnapPointToGrid(point);
-#endif
+ point = Object::SnapPointToGrid(point);
}
-#endif
+
oldPoint = point;
//we should keep track of the last point here and only pass this down *if* the point
//changed...
{
if (Object::snapToGrid)
{
- point = SnapPointToGrid(point);
+ point = Object::SnapPointToGrid(point);
oldPoint = point;
}
}
}
+
+void DrawingView::keyPressEvent(QKeyEvent * event)
+{
+ if (toolAction)
+ {
+ bool needUpdate = toolAction->KeyDown(event->key());
+
+ if (needUpdate)
+ update();
+ }
+}
+
+
+void DrawingView::keyReleaseEvent(QKeyEvent * event)
+{
+ if (toolAction)
+ {
+ bool needUpdate = toolAction->KeyReleased(event->key());
+
+ if (needUpdate)
+ update();
+ }
+}
+