#include "debug.h"
#include "global.h"
#include "mainwindow.h"
+#include "mathconstants.h"
#include "ttedit.h"
#include "vector.h"
}
}
+ // Draw highlighted point on poly add tool
+ if (tool == TOOLAddPoly)
+ {
+ painter.SetPen(QPen(Qt::red, 1.0, Qt::SolidLine));
+
+ if (addPointOnCurve)
+ {
+ painter.DrawSquareDotN(addPoint, 7);
+ painter.DrawSquareDotN(addPoint, 9);
+ }
+ else
+ {
+ painter.DrawRoundDotN(addPoint, 7);
+ painter.DrawRoundDotN(addPoint, 9);
+ }
+ }
+
// Draw curve formed by points
painter.SetPen(QPen(Qt::black, 1.0, Qt::SolidLine));
update();
}
+// Moved to mouse up routine, so we can slide the point around
+#if 0
else if (tool == TOOLAddPoly) // "Add Poly" tool
{
#ifdef DEBUGFOO
WriteLogMsg(" --> [# polys: %u, # points: %u]\n", pts.GetNumPolys(), pts.GetNumPoints());
#endif
}
+#endif
else if (tool == TOOLSelect || tool == TOOLPolySelect)
{
if (pts.GetNumPoints() > 0)
if (tool == TOOLAddPt || tool == TOOLAddPoly || tool == TOOLSelect)
{
// Bail out if we have the select tool and no points yet...
- if (tool == TOOLSelect && pts.GetNumPoints() == 0)
+ if ((tool == TOOLSelect) && (pts.GetNumPoints() == 0))
return;
// QPoint pt2 = GetAdjustedMousePosition(event);
if (tool != TOOLSelect)
{
addPoint = pt2;
+ ptHighlight = -1;
// Prolly should move this to the key handlers below...
- addPointOnCurve = ((event->modifiers() == Qt::ShiftModifier) || (event->modifiers() == Qt::ControlModifier) ? false : true);
+//now we do! :-D
+// addPointOnCurve = ((event->modifiers() == Qt::ShiftModifier) || (event->modifiers() == Qt::ControlModifier) ? false : true);
}
else
pts.SetXY(ptHighlight, pt2.x, pt2.y);
}
else
{
- // Figure out the angle between the "zero" vector and the current one,
- // then rotate all points relative to the "zero" vector (done by paint())
+ // Figure out the angle between the "zero" vector and the
+ // current one, then rotate all points relative to the
+ // "zero" vector (done by paint())
// QPoint currentPoint = GetAdjustedMousePosition(event);
Vector currentPoint = Painter::QtToCartesianCoords(Vector(event->x(), event->y()));
Vector v1(rotationZeroPoint.x, rotationZeroPoint.y, 0,
rotationAngle = v2.Angle(v1);
QString s;
- s.sprintf("%.3f degrees", rotationAngle * 180.0 / 3.14159265358979323);
- ((TTEdit *)qApp)->mainWindow->statusBar()->showMessage(s);
+ s.sprintf("%.3f degrees", rotationAngle * RADIANS_TO_DEGREES);
+ Global::mainWindow->statusBar()->showMessage(s);
}
update();
ptPrevious = Vector(event->x(), event->y());
addPoint = Painter::QtToCartesianCoords(Vector(event->x(), event->y()));
+//handled by real key handlers now...
// addPointOnCurve = ((event->modifiers() == Qt::ShiftModifier) || (event->modifiers() == Qt::ControlModifier) ? false : true);
if (tool == TOOLAddPoly)
}
update();
- ((TTEdit *)qApp)->mainWindow->statusBar()->showMessage("");
+ Global::mainWindow->statusBar()->showMessage("");
}
// if (tool == TOOLScroll || tool == TOOLZoom)
// ReleaseMouse();
//this is prolly too much
- ((TTEdit *)qApp)->charWnd->MakePathFromPoints(&pts);
- ((TTEdit *)qApp)->charWnd->update();
+ Global::charWnd->MakePathFromPoints(&pts);
+ Global::charWnd->update();
if (tool == TOOLMultiSelect)
{
selectionInProgress = false;
update();
}
+ else if (tool == TOOLAddPoly) // "Add Poly" tool
+ {
+#ifdef DEBUGFOO
+WriteLogMsg("Adding point... # polys: %u, # points: %u", pts.GetNumPolys(), pts.GetNumPoints());
+#endif
+ if (polyFirstPoint)
+ {
+ polyFirstPoint = false;
+ pts.AddNewPolyAtEnd();
+ }
+
+// QPoint pt = GetAdjustedMousePosition(event);
+ Vector pt = Painter::QtToCartesianCoords(Vector(event->x(), event->y()));
+//printf("GetAdjustedMousePosition = %i, %i\n", pt.x(), pt.y());
+ // Append a point to the end of the structure
+ pts += IPoint(pt.x, pt.y, addPointOnCurve);
+// ptHighlight = pts.GetNumPoints() - 1;
+ update();
+#ifdef DEBUGFOO
+WriteLogMsg(" --> [# polys: %u, # points: %u]\n", pts.GetNumPolys(), pts.GetNumPoints());
+#endif
+ }
}
event->accept();
void EditWindow::keyPressEvent(QKeyEvent * event)
{
+ // We do this here because of the ptHighlight nonsense. If we're in
+ // the add poly tool, we'll never see this if it's under the 'sanity'
+ // check (which is needed for the arrow key shite, but still...)
+ if ((event->key() == Qt::Key_Shift) || (event->key() == Qt::Key_Control))
+ {
+ addPointOnCurve = false;
+ update();
+ }
+
// Sanity checking...
if (ptHighlight == -1)
return;
pts.SetXY(ptHighlight, pts.GetX(ptHighlight) + 1, pts.GetY(ptHighlight));
else if (event->key() == Qt::Key_Left)
pts.SetXY(ptHighlight, pts.GetX(ptHighlight) - 1, pts.GetY(ptHighlight));
- else if ((event->key() == Qt::Key_Shift) || (event->key() == Qt::Key_Control))
- {
- addPointOnCurve = false;
- }
else
return;
+//Not need but you need to call the base class for some reason??
// event->accept();
update();
- ((TTEdit *)qApp)->charWnd->MakePathFromPoints(&pts);
- ((TTEdit *)qApp)->charWnd->update();
+ Global::charWnd->MakePathFromPoints(&pts);
+ Global::charWnd->update();
}