app.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. var app = (function() {
  2. var width = window.innerWidth;
  3. var height = window.innerHeight;
  4. var layers = [];
  5. var _layer = [];
  6. var tools = [];
  7. var menu = [];
  8. var layer = undefined;
  9. var _selectedTool = [];
  10. var group = undefined;
  11. var stage = new Konva.Stage({
  12. container: "container",
  13. width: width,
  14. height: height
  15. });
  16. var screen = {
  17. width: width,
  18. height: height
  19. };
  20. function createLayer() {
  21. var sequence = 0;
  22. if (layers == null || layers.length == 0) {
  23. sequence++;
  24. } else {
  25. sequence = layers.length + 1;
  26. }
  27. var layer = { sequence: sequence, layer: new Konva.Layer() };
  28. layers.push(layer);
  29. if (currentLayer() == undefined && _layer.length == 0) {
  30. _layer = [];
  31. _layer.push(layer);
  32. }
  33. return layer;
  34. }
  35. function bootstrap() {
  36. createLayer();
  37. configureDragAndDrop();
  38. layer = currentLayer();
  39. configureGroup();
  40. }
  41. function currentLayer() {
  42. if (_layer[0] == undefined) return undefined;
  43. return _layer[0].layer;
  44. }
  45. function configureDragAndDrop() {
  46. stage.on("click tap", function(e) {
  47. var tool = getSelectedTool();
  48. if (tool != undefined && (e.target == undefined || e.target === stage)) {
  49. tool.draw();
  50. }
  51. if (e.target === stage) {
  52. stage.find("Transformer").destroy();
  53. layer.draw();
  54. return;
  55. }
  56. stage.find("Transformer").destroy();
  57. var tr = new Konva.Transformer({
  58. anchorStrokeWidth: 2
  59. });
  60. layer.add(tr);
  61. tr.attachTo(e.target);
  62. layer.draw();
  63. });
  64. }
  65. function configureGroup() {
  66. group = new Konva.Group({
  67. x: 30,
  68. rotation: 10,
  69. scaleX: 1.5
  70. });
  71. layer.add(group);
  72. }
  73. function setSelectedTool(tool) {
  74. clearSelectedTool();
  75. _selectedTool.push(tool);
  76. }
  77. function clearSelectedTool() {
  78. _selectedTool = [];
  79. setStatus("");
  80. }
  81. function getSelectedTool() {
  82. if (_selectedTool.length > 0) return _selectedTool[0];
  83. return undefined;
  84. }
  85. function getRelativePointerPosition() {
  86. return stage.getPointerPosition();
  87. }
  88. function setStatus(status) {
  89. document.getElementById("status").innerHTML = status;
  90. }
  91. return {
  92. stage: stage,
  93. currentLayer: currentLayer,
  94. createLayer: createLayer,
  95. screen: screen,
  96. bootstrap: bootstrap,
  97. layers: layers,
  98. tools: tools,
  99. setSelectedTool: setSelectedTool,
  100. clearSelectedTool: clearSelectedTool,
  101. getSelectedTool: getSelectedTool,
  102. pos: getRelativePointerPosition,
  103. setStatus: setStatus
  104. };
  105. })();