]> Shamusworld >> Repos - ttedit/blobdiff - src/editwindow.cpp
Minor fixes to polygon adding, added Tau constants to math package.
[ttedit] / src / editwindow.cpp
index e4f7d7b81dd47f2e691ff2548042861845573cbf..d24c447ab6b279bdab42760a7c804c6c61a748b8 100644 (file)
@@ -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);