X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Feditwindow.cpp;fp=src%2Feditwindow.cpp;h=d24c447ab6b279bdab42760a7c804c6c61a748b8;hb=0bd89e9489fa52f92545a7e94c4a31e863a5f898;hp=e4f7d7b81dd47f2e691ff2548042861845573cbf;hpb=3fe885b75511c9fbfe18a5c509260e83bb7ac136;p=ttedit diff --git a/src/editwindow.cpp b/src/editwindow.cpp index e4f7d7b..d24c447 100644 --- a/src/editwindow.cpp +++ b/src/editwindow.cpp @@ -186,6 +186,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 +410,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 +434,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 +536,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 +545,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); @@ -699,6 +721,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) @@ -767,6 +790,28 @@ void EditWindow::mouseReleaseEvent(QMouseEvent * event) 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 +820,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,13 +843,10 @@ 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);