Source: core/drawing/drawingEventHandler.js

  1. /**
  2. * @fileoverview
  3. * @private
  4. */
  5. goog.provide('xrx.drawing.EventHandler');
  6. goog.require('goog.style');
  7. goog.require('xrx.event.HandlerTarget');
  8. /**
  9. * @constructor
  10. * @private
  11. */
  12. xrx.drawing.EventHandler = function() {
  13. goog.base(this);
  14. };
  15. goog.inherits(xrx.drawing.EventHandler, xrx.event.HandlerTarget);
  16. /**
  17. *
  18. */
  19. xrx.drawing.EventHandler.prototype.eventShapeCreate = function(shapes) {
  20. this.getLayerShapeCreate().addShapes(shapes);
  21. this.draw();
  22. //if (this.handleValueChanged) this.handleValueChanged();
  23. };
  24. /**
  25. *
  26. */
  27. xrx.drawing.EventHandler.prototype.eventShapeCreated = function(shape) {
  28. this.getLayerShape().addShapes(shape);
  29. this.getLayerShapeCreate().removeShapes();
  30. this.draw();
  31. //if (this.drawing_.handleCreated) this.draw ing_.handleCreated();
  32. };
  33. /**
  34. *
  35. */
  36. xrx.drawing.EventHandler.prototype.getClientPoint = function(e) {
  37. var touches = e.getBrowserEvent().changedTouches;
  38. var x;
  39. var y;
  40. if (touches) {
  41. x = touches[0].clientX;
  42. y = touches[0].clientY;
  43. } else {
  44. x = e.clientX;
  45. y = e.clientY;
  46. }
  47. return [x, y];
  48. };
  49. /**
  50. *
  51. */
  52. xrx.drawing.EventHandler.prototype.getOffsetPoint = function(e, opt_transformed) {
  53. var pos = goog.style.getClientPosition(this.canvas_.getEngineElement().getEventTarget());
  54. var clientPoint = this.getClientPoint(e);
  55. var offset = [clientPoint[0] - pos.x, clientPoint[1] - pos.y];
  56. if (opt_transformed === true) {
  57. return this.getViewbox().getCTM().transformPoint(offset);
  58. } else {
  59. return offset;
  60. }
  61. };
  62. /**
  63. * Returns the shape currently selected or hovered by the user.
  64. * @return {xrx.shape.Shape} The selected shape.
  65. */
  66. xrx.drawing.EventHandler.prototype.getShapeSelected = function(point) {
  67. var layer;
  68. var shapes;
  69. var shape;
  70. var coords;
  71. var coord;
  72. var found = false;
  73. for (var i = this.layer_.length - 1; i >= 0; i--) {
  74. layer = this.layer_[i];
  75. if (!layer.isLocked()) {
  76. shapes = layer.getShapes() || [];
  77. for (var j = shapes.length - 1; j >= 0; j--) {
  78. shape = shapes[j];
  79. if (shape.getGeometry().containsPoint(point)) {
  80. found = true;
  81. break;
  82. }
  83. }
  84. }
  85. if (found === true) break;
  86. }
  87. return found ? shape : undefined;
  88. };
  89. /**
  90. * Returns the shapes currently selected or hovered by the user.
  91. * @return {Array<xrx.shape.Shape>} The shapes.
  92. */
  93. xrx.drawing.EventHandler.prototype.getShapesSelected = function(point) {
  94. var layer;
  95. var shapes;
  96. var shape;
  97. var coords;
  98. var coord;
  99. var found = [];
  100. for (var i = this.layer_.length - 1; i >= 0; i--) {
  101. layer = this.layer_[i];
  102. if (!layer.isLocked()) {
  103. shapes = layer.getShapes() || [];
  104. for (var j = shapes.length - 1; j >= 0; j--) {
  105. shape = shapes[j];
  106. if (shape.getGeometry().containsPoint(point)) {
  107. found.push(shape);
  108. }
  109. }
  110. }
  111. }
  112. return found;
  113. };
  114. xrx.drawing.EventHandler.prototype.disposeInternal = function() {
  115. goog.base(this, 'disposeInternal');
  116. };