]> Shamusworld >> Repos - ttedit/blobdiff - src/editwindow.cpp
Add ability to move points with the arrow keys.
[ttedit] / src / editwindow.cpp
index 429943d2a7c707cfbcdc08cff1f0e894ce1319f9..9d0f5d8d803b725ca27ab5a2f051e3f39bf3ea4a 100755 (executable)
@@ -212,7 +212,7 @@ void EditWindow::paintEvent(QPaintEvent * /*event*/)
                        rotated.RotatePoints(rotationAngle, IPoint(rotationCenter.x(), rotationCenter.y()));
                else if (tool == TOOLRotatePoly)
                {
-                       uint16 poly = rotated.GetPolyForPointNumber(ptHighlight);
+                       uint16_t poly = rotated.GetPolyForPointNumber(ptHighlight);
                        rotated.RotatePolyAroundCentroid(poly, rotationAngle);
                }
 
@@ -226,6 +226,7 @@ void EditWindow::DrawGlyph(QPainter & p, GlyphPoints & glyph)
 {
        for(int poly=0; poly<glyph.GetNumPolys(); poly++)
        {
+#if 0
                if (glyph.GetNumPoints(poly) < 3)
                        continue;
 
@@ -266,11 +267,14 @@ void EditWindow::DrawGlyph(QPainter & p, GlyphPoints & glyph)
                                pt = pt2;
                        }
                }
+#else
+               DrawGlyphPoly(p, glyph, poly);
+#endif
        }
 }
 
 
-void EditWindow::DrawGlyphPoly(QPainter & p, GlyphPoints & glyph, uint16 poly)
+void EditWindow::DrawGlyphPoly(QPainter & p, GlyphPoints & glyph, uint16_t poly)
 {
        // Sanity check
        if (glyph.GetNumPoints(poly) < 3)
@@ -559,7 +563,7 @@ void EditWindow::mouseMoveEvent(QMouseEvent * event)
 
                                for(int i=0; i<pts.GetNumPoints(); i++)
                                {
-                                       int32 p1x = pts.GetX(i), p1y = pts.GetY(i),
+                                       int32_t p1x = pts.GetX(i), p1y = pts.GetY(i),
                                                p2x = pts.GetX(pts.GetNext(i)), p2y = pts.GetY(pts.GetNext(i));
 
                                        Vector ls(p2x, p2y, 0, p1x, p1y, 0), v1(pt2.x(), pt2.y(), 0, p1x, p1y, 0),
@@ -659,7 +663,7 @@ void EditWindow::mouseReleaseEvent(QMouseEvent * event)
                                pts.RotatePoints(rotationAngle, IPoint(rotationCenter.x(), rotationCenter.y()));
                        else
                        {
-                               uint16 poly = pts.GetPolyForPointNumber(ptHighlight);
+                               uint16_t poly = pts.GetPolyForPointNumber(ptHighlight);
                                pts.RotatePolyAroundCentroid(poly, rotationAngle);
                        }
 
@@ -681,10 +685,31 @@ void EditWindow::mouseReleaseEvent(QMouseEvent * event)
 
 void EditWindow::keyPressEvent(QKeyEvent * event)
 {
+       // Sanity checking...
+       if (ptHighlight == -1)
+               return;
+
+       if (event->key() == Qt::Key_Up)
+       {
+               pts.SetXY(ptHighlight, pts.GetX(ptHighlight), pts.GetY(ptHighlight) + 1);
+       }
+       else if (event->key() == Qt::Key_Down)
+               pts.SetXY(ptHighlight, pts.GetX(ptHighlight), pts.GetY(ptHighlight) - 1);
+       else if (event->key() == Qt::Key_Right)
+               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
+               return;
+
+       event->accept();
+       update();
+       ((TTEdit *)qApp)->charWnd->MakePathFromPoints(&pts);
+       ((TTEdit *)qApp)->charWnd->update();
 }
 
 
-void EditWindow::keyReleaseEvent(QKeyEvent * event)
+void EditWindow::keyReleaseEvent(QKeyEvent * /*event*/)
 {
 }