// Path: app/src/main/java/jgh/artistex/engine/IUndo.java
// public final class IUndo {
// 
//     /**
//      * The <code>UndoHandler</code> performs the
//      * actual undo and redo operations, defined per implementation.
//      */
//     private IUndoHandler mUndoHandler;
// 
// 
//     /**
//      * Creates an instance of IUndo. A non-null argument must be passed, or an
//      * <code>IllegalArgumentException</code> will be thrown.
//      *
//      * @param undoHandler the undo handler, hadnles the specifics of the undo and redo actions.
//      */
//     public IUndo(IUndoHandler undoHandler) {
//         if (undoHandler == null) throw new IllegalArgumentException("Cannot pass null argument.");
//         mUndoHandler = undoHandler;
//     }
// 
// 
//     /**
//      * Undo action -- should only be called in <code>DrawingEngine</code> because
//      * it should be applied after this <code>IUndo</code> instance is  popped
//      * off the undo stack <b>only</b>.
//      */
//     /* default */ void undo() {
//         mUndoHandler.handleUndo();
//     }
// 
// 
//     /**
//      * Redo action -- should only be called in <code>DrawingEngine</code>
//      */
//     /* default */ void redo() {
//         mUndoHandler.handleRedo();
//     }
// }
// 
// Path: app/src/main/java/jgh/artistex/engine/IUndoHandler.java
// public interface IUndoHandler {
// 
//     /**
//      * Handles the undo action.
//      */
//     void handleUndo();
// 
//     /**
//      * Handles the redo action
//      */
//     void handleRedo();
// }


import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PointF;
import android.graphics.RectF;
import android.view.MotionEvent;
import java.util.ArrayList;
import jgh.artistex.engine.IUndo;
import jgh.artistex.engine.IUndoHandler;
package jgh.artistex.engine.Layers.Pens;





/**
 * Vertex controller class controls the vertex points, and control points of
 * <code>Pen</code> objects. <code>VertexController</code> instances control the manipulation
 * of the vertex and control points.
 */
public class VertexController {

    /**
     * Currently manipulating point.
     */
    protected PointF mCurrentPoint = null;


    /**
     * Paint used for Rects representing vertex coordinates.
     */
    protected Paint mPointPaint;


    /**
     * Padding for drawing rects around vertices.
     */
    protected static final int PADDING = 10;


    /**
     * Default Constructor
     */
    public VertexController() {

// Path: app/src/main/java/jgh/artistex/engine/IUndo.java
// public final class IUndo {
// 
//     /**
//      * The <code>UndoHandler</code> performs the
//      * actual undo and redo operations, defined per implementation.
//      */
//     private IUndoHandler mUndoHandler;
// 
// 
//     /**
//      * Creates an instance of IUndo. A non-null argument must be passed, or an
//      * <code>IllegalArgumentException</code> will be thrown.
//      *
//      * @param undoHandler the undo handler, hadnles the specifics of the undo and redo actions.
//      */
//     public IUndo(IUndoHandler undoHandler) {
//         if (undoHandler == null) throw new IllegalArgumentException("Cannot pass null argument.");
//         mUndoHandler = undoHandler;
//     }
// 
// 
//     /**
//      * Undo action -- should only be called in <code>DrawingEngine</code> because
//      * it should be applied after this <code>IUndo</code> instance is  popped
//      * off the undo stack <b>only</b>.
//      */
//     /* default */ void undo() {
//         mUndoHandler.handleUndo();
//     }
// 
// 
//     /**
//      * Redo action -- should only be called in <code>DrawingEngine</code>
//      */
//     /* default */ void redo() {
//         mUndoHandler.handleRedo();
//     }
// }
// 
// Path: app/src/main/java/jgh/artistex/engine/IUndoHandler.java
// public interface IUndoHandler {
// 
//     /**
//      * Handles the undo action.
//      */
//     void handleUndo();
// 
//     /**
//      * Handles the redo action
//      */
//     void handleRedo();
// }


// Path: app/src/main/java/jgh/artistex/engine/Layers/Pens/VertexController.java
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PointF;
import android.graphics.RectF;
import android.view.MotionEvent;
import java.util.ArrayList;
import jgh.artistex.engine.IUndo;
import jgh.artistex.engine.IUndoHandler;

package jgh.artistex.engine.Layers.Pens;





/**
 * Vertex controller class controls the vertex points, and control points of
 * <code>Pen</code> objects. <code>VertexController</code> instances control the manipulation
 * of the vertex and control points.
 */
public class VertexController {

    /**
     * Currently manipulating point.
     */
    protected PointF mCurrentPoint = null;


    /**
     * Paint used for Rects representing vertex coordinates.
     */
    protected Paint mPointPaint;


    /**
     * Padding for drawing rects around vertices.
     */
    protected static final int PADDING = 10;


    /**
     * Default Constructor
     */
    public VertexController() {

        mPointPaint = new Paint(Color.BLUE);