public void refresh(PreviewModel m, RenderTarget target) { if (m == null) { return; } if (!inited) { CanvasSize cs = getSheetCanvasSize(m); scaling = computeDefaultScaling(cs); fit(cs); inited = true; } g2.setTransform(new AffineTransform()); background = m.getProperties() .getColorValue(PreviewProperty.BACKGROUND_COLOR); if (background != null) { g2.setColor(background); g2.fillRect(0, 0, width, height); } // user zoom Vector center = new Vector(width / 2F, height / 2F); Vector scaledCenter = Vector.mult(center, scaling); Vector scaledTrans = Vector.sub(center, scaledCenter); g2.translate(scaledTrans.x, scaledTrans.y); g2.scale(scaling, scaling); // user move g2.translate(trans.x, trans.y); //Draw target previewController.render(target); }
private Vector computeCtrlPoint( final Float x, final Float y, final Vector direction, final float factor, final Vector normalVector) { final Vector v = new Vector(direction.x, direction.y); v.mult(factor); v.add(new Vector(x, y)); v.add(normalVector); return v; } }
@Override public void mouseDragged(MouseEvent e) { if (!previewController.sendMouseEvent(buildPreviewMouseEvent(e, PreviewMouseEvent.Type.DRAGGED))) { setMoving(true); Vector trans = target.getTranslate(); trans.set(e.getX(), e.getY()); trans.sub(ref); trans.mult(isRetina ? 2f : 1f); trans.div(target.getScaling()); // ensure const. moving speed whatever the zoom is trans.add(lastMove); refreshLoop.refreshSketch(); } }
@Override public void mouseDragged(MouseEvent e) { if (!previewController.sendMouseEvent(buildPreviewMouseEvent(e, PreviewMouseEvent.Type.DRAGGED))) { setMoving(true); Vector trans = target.getTranslate(); trans.set(e.getX(), e.getY()); trans.sub(ref); trans.mult(isRetina ? 2f : 1f); trans.div(target.getScaling()); // ensure const. moving speed whatever the zoom is trans.add(lastMove); refreshLoop.refreshSketch(); } }
private Vector screenPositionToModelPosition(Vector screenPos) { Vector center = new Vector(getWidth() / 2f, getHeight() / 2f); Vector scaledCenter = Vector.mult(center, target.getScaling()); Vector scaledTrans = Vector.sub(center, scaledCenter); Vector modelPos = new Vector(screenPos.x, screenPos.y); modelPos.sub(scaledTrans); modelPos.div(target.getScaling()); modelPos.sub(target.getTranslate()); return modelPos; }
private Vector screenPositionToModelPosition(Vector screenPos) { Vector center = new Vector(getWidth() / 2f, getHeight() / 2f); Vector scaledCenter = Vector.mult(center, target.getScaling()); Vector scaledTrans = Vector.sub(center, scaledCenter); Vector modelPos = new Vector(screenPos.x, screenPos.y); modelPos.sub(scaledTrans); modelPos.div(target.getScaling()); modelPos.sub(target.getTranslate()); return modelPos; }
public Helper( final Item item, final PreviewProperties properties) { sourceItem = item.getData(SOURCE); targetItem = item.getData(TARGET); x1 = sourceItem.getData(NodeItem.X); x2 = targetItem.getData(NodeItem.X); y1 = sourceItem.getData(NodeItem.Y); y2 = targetItem.getData(NodeItem.Y); final Vector direction = new Vector(x2, y2); direction.sub(new Vector(x1, y1)); final float length = direction.mag(); direction.normalize(); final float factor = properties.getFloatValue(BEZIER_CURVENESS) * length; final Vector n = new Vector(direction.y, -direction.x); n.mult(factor); v1 = computeCtrlPoint(x1, y1, direction, factor, n); v2 = computeCtrlPoint(x2, y2, direction, -factor, n); }