//// // A simple class that allows people to mark a point on the first face and then match it up on the last face //// class BlendMarker{ public final float DOT_RADIUS = 8; public final color INIT_COLOR = color(0, 255, 0); public final color FINAL_COLOR = color(0, 0, 255); private Point initialMark; private Point finalMark; private int number; private PFont markerFont; private boolean bDraggingInitial; private boolean bDraggingFinal; public BlendMarker(int number, PFont markerFont){ this.initialMark = null; this.finalMark = null; this.number = number; this.markerFont = markerFont; this.bDraggingInitial = false; this.bDraggingFinal = false; } //// // Draw! //// public void draw(){ // movey if(this.bDraggingInitial){ this.initialMark.setTo(mouseX, mouseY, 0); } else if(this.bDraggingFinal){ this.finalMark.setTo(mouseX, mouseY, 0); } // drawy String numString = ""+this.number; textFont(this.markerFont); noStroke(); if(this.initialMark != null){ fill(INIT_COLOR); ellipse(this.initialMark.x, this.initialMark.y, 2 * DOT_RADIUS, 2 * DOT_RADIUS); fill(0); text(numString, this.initialMark.x - textWidth(numString) / 2, this.initialMark.y + 4); } if(this.finalMark != null){ fill(FINAL_COLOR); ellipse(this.finalMark.x, this.finalMark.y, 2 * DOT_RADIUS, 2 * DOT_RADIUS); fill(0); text(numString, this.finalMark.x - textWidth(numString) / 2, this.finalMark.y + 4); } } public boolean canUseInput(Point mouse){ if(this.initialMark != null){ if(mouse.distanceTo(this.initialMark) < DOT_RADIUS){ this.bDraggingInitial = true; return true; } } if(this.finalMark != null){ if(mouse.distanceTo(this.finalMark) < DOT_RADIUS){ this.bDraggingFinal = true; return true; } } return false; } public void releaseInput(){ this.bDraggingInitial = false; this.bDraggingFinal = false; } ///////////////////////// // GETTERS AND SETTERS // ///////////////////////// public void setInitialMark(Point initialMark){ this.initialMark = initialMark; } public void setFinalMark(Point finalMark){ this.finalMark = finalMark; } public Point getInitialMark(){ return this.initialMark; } public Point getFinalMark(){ return this.finalMark; } public boolean isComplete(){ if(this.finalMark != null && this.initialMark != null){ return true; } return false; } public Vector getDisplacement(){ if(this.initialMark != null && this.finalMark != null){ return this.initialMark.vecTo(this.finalMark); } else { return new Vector(); } } }