X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Feditwindow.cpp;h=dac63c28c736d5d3b2cf8bb8d9e8f151684bccec;hb=refs%2Fheads%2Fmaster;hp=e4f7d7b81dd47f2e691ff2548042861845573cbf;hpb=3fe885b75511c9fbfe18a5c509260e83bb7ac136;p=ttedit diff --git a/src/editwindow.cpp b/src/editwindow.cpp index e4f7d7b..dac63c2 100644 --- a/src/editwindow.cpp +++ b/src/editwindow.cpp @@ -38,6 +38,7 @@ #include "debug.h" #include "global.h" #include "mainwindow.h" +#include "mathconstants.h" #include "ttedit.h" #include "vector.h" @@ -186,6 +187,23 @@ void EditWindow::paintEvent(QPaintEvent * /*event*/) } } + // 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)); @@ -393,6 +411,8 @@ void EditWindow::mousePressEvent(QMouseEvent * event) update(); } +// Moved to mouse up routine, so we can slide the point around +#if 0 else if (tool == TOOLAddPoly) // "Add Poly" tool { #ifdef DEBUGFOO @@ -415,6 +435,7 @@ WriteLogMsg("Adding point... # polys: %u, # points: %u", pts.GetNumPolys(), pts. WriteLogMsg(" --> [# polys: %u, # points: %u]\n", pts.GetNumPolys(), pts.GetNumPoints()); #endif } +#endif else if (tool == TOOLSelect || tool == TOOLPolySelect) { if (pts.GetNumPoints() > 0) @@ -516,7 +537,7 @@ void EditWindow::mouseMoveEvent(QMouseEvent * event) 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); @@ -525,8 +546,10 @@ void EditWindow::mouseMoveEvent(QMouseEvent * 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); @@ -559,8 +582,9 @@ void EditWindow::mouseMoveEvent(QMouseEvent * event) } 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, @@ -571,8 +595,8 @@ void EditWindow::mouseMoveEvent(QMouseEvent * event) 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(); @@ -699,6 +723,7 @@ void EditWindow::mouseMoveEvent(QMouseEvent * event) 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) @@ -753,20 +778,42 @@ void EditWindow::mouseReleaseEvent(QMouseEvent * event) } 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(); @@ -775,6 +822,15 @@ void EditWindow::mouseReleaseEvent(QMouseEvent * event) 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; @@ -789,17 +845,14 @@ void EditWindow::keyPressEvent(QKeyEvent * event) 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(); }