+++ /dev/null
-#ifndef __ACTION_H__
-#define __ACTION_H__
-
-#include <QtWidgets>
-#include "vector.h"
-
-class Object;
-class Painter;
-
-class Action: public QObject
-{
- Q_OBJECT
-
- public:
- Action();
- ~Action();
-
- // These are all pure virtual functions: Derived classes must define
- // ALL of them.
- virtual void Draw(Painter *) = 0;
- virtual void MouseDown(Vector) = 0;
- virtual void MouseMoved(Vector) = 0;
- virtual void MouseReleased(void) = 0;
- virtual void KeyDown(int) = 0;
- virtual void KeyReleased(int) = 0;
-
- signals:
- void ObjectReady(Object *);
- void NeedRefresh(void);
-
- // Class variables
-// public:
-// static unsigned int currentLayer;
-};
-
-#endif // __ACTION_H__
-
// Do object rendering...
RenderObjects(&painter, document.objects);
+ if (!informativeText.isEmpty())
+ painter.DrawInformativeText(informativeText);
+
// Do tool rendering, if any...
if (Global::tool)
{
if (obj.type == OTArc)
{
-//printf("Obj2->angle[0] = %f, obj.angle[0] = %f, angle = %f\n", obj2->angle[0], obj.angle[0], angle);
obj2->angle[0] = obj.angle[0] + angle;
if (obj2->angle[0] > PI_TIMES_2)
GetHovered(hover); // prolly needed
// Needed for grab & moving objects
+ // We do it *after*... why? (doesn't seem to confer any advantage...)
if (Global::snapToGrid)
oldPoint = SnapPointToGrid(point);
// Handle object movement (left button down & over an object)
if ((event->buttons() & Qt::LeftButton) && numHovered && !Global::tool)
{
+ if (Global::snapToGrid)
+ point = SnapPointToGrid(point);
+
HandleObjectMovement(point);
update();
oldPoint = point;
if (Global::selectionInProgress)
Global::selectionInProgress = false;
-// Should be we do this automagically? Hmm...
+ informativeText.clear();
+// Should we be doing this automagically? Hmm...
// Clear our vectors
select.clear();
hover.clear();
Global::zoom /= zoomFactor;
}
-#if 1
// Global::gridSpacing = gridPixels / Painter::zoom;
// UpdateGridBackground();
SetGridSize(Global::gridSpacing * Global::zoom);
update();
// zoomIndicator->setText(QString("Grid: %1\", BU: Inch").arg(Global::gridSpacing));
-#endif
}
}
}
+
//
// 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
void DrawingView::HandleObjectMovement(Point point)
{
- if (Global::snapToGrid)
- point = SnapPointToGrid(point);
-
Point delta = point - oldPoint;
+//printf("HOM: old = (%f,%f), new = (%f, %f), delta = (%f, %f)\n", oldPoint.x, oldPoint.y, point.x, point.y, delta.x, delta.y);
Object * obj = (Object *)hover[0];
//printf("Object type = %i (size=%i), ", obj->type, hover.size());
//printf("Object (%X) move: hp1=%s, hp2=%s, hl=%s\n", obj, (obj->hitPoint[0] ? "true" : "false"), (obj->hitPoint[1] ? "true" : "false"), (obj->hitObject ? "true" : "false"));
switch (obj->type)
{
case OTLine:
- {
-// Line * l = (Line *)obj;
-
if (obj->hitPoint[0])
obj->p[0] = point;
else if (obj->hitPoint[1])
}
break;
- }
+ case OTCircle:
+ if (obj->hitPoint[0])
+ obj->p[0] = point;
+ else if (obj->hitObject)
+ {
+//this doesn't work. we need to save this on mouse down for this to work correctly!
+// double oldRadius = obj->radius[0];
+ obj->radius[0] = Vector::Magnitude(obj->p[0], point);
+
+ QString text = QObject::tr("Radius: %1");//\nScale: %2%");
+ informativeText = text.arg(obj->radius[0], 0, 'd', 4);//.arg(obj->radius[0] / oldRadius * 100.0, 0, 'd', 0);
+ }
+
+ break;
default:
break;
}