1 6 7 package com.thoughtriver.open.vectorvisuals.task; 8 9 import java.awt.geom.*; 10 11 import com.thoughtriver.open.vectorvisuals.*; 12 13 21 public class ScalingTask extends AnimationTask { 22 23 24 private final VisualObject target; 25 26 27 private final AffineTransform endScale; 28 29 30 private double xDelta = 0.0; 31 32 33 private double yDelta = 0.0; 34 35 47 public ScalingTask(final VisualObject target, final double xScale, final double yScale, final int duration) { 48 super(duration); 49 this.target = target; 50 this.endScale = AffineTransform.getScaleInstance(xScale, yScale); 51 } 52 53 56 @Override 57 protected void init() { 58 AffineTransform transform = target.getTransform(); 59 xDelta = endScale.getScaleX() - transform.getScaleX(); 60 yDelta = endScale.getScaleY() - transform.getScaleY(); 61 } 62 63 71 @Override 72 protected void update(final double progress) { 73 74 synchronized (target) { 75 AffineTransform transform = target.getTransform(); 76 double[] matrix = new double[6]; 77 transform.getMatrix(matrix); 78 79 double xScale = progress * xDelta; 80 double yScale = progress * yDelta; 81 matrix[0] = endScale.getScaleX() - (xDelta - xScale); 82 matrix[3] = endScale.getScaleY() - (yDelta - yScale); 83 84 transform = new AffineTransform(matrix); 85 target.setTransform(transform); 86 } 87 } 88 89 } 90 | Popular Tags |