package com.senocular.display
{
import flash.events.Event;
import flash.geom.Matrix;
import flash.geom.Point;
public class TransformToolSkewBar extends TransformToolInternalControl {
private var locationStart:String;
private var locationEnd:String;
function TransformToolSkewBar(name:String, interactionMethod:Function, referenceName:String, locationStart:String, locationEnd:String) {
super(name, interactionMethod, referenceName);
this.locationStart = locationStart;
this.locationEnd = locationEnd;
}
override public function draw(event:Event = null):void {
graphics.clear();
if (_skin) {
super.draw(event);
return;
}
var locStart:Point = _transformTool[locationStart];
var locEnd:Point = _transformTool[locationEnd];
var toolTrans:Matrix;
var toolTransInverted:Matrix;
var maintainControlForm:Boolean = _transformTool.maintainControlForm;
if (maintainControlForm) {
toolTrans = transform.concatenatedMatrix;
toolTransInverted = toolTrans.clone();
toolTransInverted.invert();
locStart = toolTrans.transformPoint(locStart);
locEnd = toolTrans.transformPoint(locEnd);
}
var size:Number = _transformTool.controlSize/2;
var diff:Point = locEnd.subtract(locStart);
var angle:Number = Math.atan2(diff.y, diff.x) - Math.PI/2;
var offset:Point = Point.polar(size, angle);
var corner1:Point = locStart.add(offset);
var corner2:Point = locEnd.add(offset);
var corner3:Point = locEnd.subtract(offset);
var corner4:Point = locStart.subtract(offset);
if (maintainControlForm) {
corner1 = toolTransInverted.transformPoint(corner1);
corner2 = toolTransInverted.transformPoint(corner2);
corner3 = toolTransInverted.transformPoint(corner3);
corner4 = toolTransInverted.transformPoint(corner4);
}
graphics.beginFill(0xFF0000, 0);
graphics.moveTo(corner1.x, corner1.y);
graphics.lineTo(corner2.x, corner2.y);
graphics.lineTo(corner3.x, corner3.y);
graphics.lineTo(corner4.x, corner4.y);
graphics.lineTo(corner1.x, corner1.y);
graphics.endFill();
}
override public function position(event:Event = null):void {
if (_skin) {
var locStart:Point = _transformTool[locationStart];
var locEnd:Point = _transformTool[locationEnd];
var location:Point = Point.interpolate(locStart, locEnd, .5);
x = location.x;
y = location.y;
}else{
x = 0;
y = 0;
draw(event);
}
}
}
}