import {Circle} from "../objects/Circle.js"; import {Object2D} from "../Object2D.js"; /** * Class contains helper functions to create editing object tools. * * @class */ function Helpers(){} /** * Create a rotation tool helper. * * When the object is dragged is changes the parent object rotation. * * @static */ Helpers.rotateTool = function(object) { var tool = new Circle(); tool.radius = 4; tool.layer = object.layer + 1; tool.onPointerDrag = function(pointer, viewport, delta) { object.rotation += delta.x * 1e-3; }; object.add(tool); }; /** * Create a box resize helper and attach it to an object to change the size of the object box. * * Each helper is positioned on one corner of the box, and the value of the corner is copied to the boxes as they are dragged. * * This method required to object to have a box property. * * @static */ Helpers.boxResizeTool = function(object) { if(object.box === undefined) { console.warn("escher.js: Helpers.boxResizeTool(), object box property missing."); return; } function updateHelpers() { topRight.position.copy(object.box.min); bottomLeft.position.copy(object.box.max); topLeft.position.set(object.box.max.x, object.box.min.y); bottomRight.position.set(object.box.min.x, object.box.max.y); } var topRight = new Circle(); topRight.radius = 4; topRight.layer = object.layer + 1; topRight.draggable = true; topRight.onPointerDrag = function(pointer, viewport, delta) { Object2D.prototype.onPointerDrag.call(this, pointer, viewport, delta); object.box.min.copy(topRight.position); updateHelpers(); }; object.add(topRight); var topLeft = new Circle(); topLeft.radius = 4; topLeft.layer = object.layer + 1; topLeft.draggable = true; topLeft.onPointerDrag = function(pointer, viewport, delta) { Object2D.prototype.onPointerDrag.call(this, pointer, viewport, delta); object.box.max.x = topLeft.position.x; object.box.min.y = topLeft.position.y; updateHelpers(); }; object.add(topLeft); var bottomLeft = new Circle(); bottomLeft.radius = 4; bottomLeft.layer = object.layer + 1; bottomLeft.draggable = true; bottomLeft.onPointerDrag = function(pointer, viewport, delta) { Object2D.prototype.onPointerDrag.call(this, pointer, viewport, delta); object.box.max.copy(bottomLeft.position); updateHelpers(); }; object.add(bottomLeft); var bottomRight = new Circle(); bottomRight.radius = 4; bottomRight.layer = object.layer + 1; bottomRight.draggable = true; bottomRight.onPointerDrag = function(pointer, viewport, delta) { Object2D.prototype.onPointerDrag.call(this, pointer, viewport, delta); object.box.min.x = bottomRight.position.x; object.box.max.y = bottomRight.position.y; updateHelpers(); }; object.add(bottomRight); updateHelpers(); }; export {Helpers};