app.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  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 stage = new Konva.Stage({
  11. container: "container",
  12. width: width,
  13. height: height
  14. });
  15. var screen = {
  16. width: width,
  17. height: height
  18. };
  19. function createLayer() {
  20. var sequence = 0;
  21. if (layers == null || layers.length == 0) {
  22. sequence++;
  23. } else {
  24. sequence = layers.length + 1;
  25. }
  26. var layer = { sequence: sequence, layer: new Konva.Layer() };
  27. layers.push(layer);
  28. if (currentLayer() == undefined && _layer.length == 0) {
  29. _layer = [];
  30. _layer.push(layer);
  31. }
  32. stage.add(layer.layer);
  33. return layer;
  34. }
  35. function bootstrap() {
  36. createLayer();
  37. configureStageEvents();
  38. layer = currentLayer();
  39. }
  40. function currentLayer() {
  41. if (_layer[0] == undefined) return undefined;
  42. return _layer[0].layer;
  43. }
  44. function configureStageEvents() {
  45. stage.on("click tap", function(e) {
  46. var tool = getSelectedTool();
  47. if (tool != undefined) {
  48. tool.draw();
  49. return;
  50. }
  51. var transformEnabled = true;
  52. if (
  53. e.target.attrs.transformEnabled != undefined &&
  54. e.target.attrs.transformEnabled == false
  55. ) {
  56. transformEnabled = false;
  57. }
  58. if (e.target === stage || !transformEnabled) {
  59. stage.find("Transformer").destroy();
  60. layer.draw();
  61. return;
  62. }
  63. stage.find("Transformer").destroy();
  64. var tr = new Konva.Transformer({
  65. anchorStrokeWidth: 2
  66. });
  67. layer.add(tr);
  68. tr.attachTo(e.target);
  69. layer.draw();
  70. });
  71. }
  72. function setSelectedTool(tool) {
  73. clearSelectedTool();
  74. if (tool.id != undefined) {
  75. document.getElementById("btn-" + tool.id).disabled = true;
  76. }
  77. _selectedTool.push(tool);
  78. }
  79. function clearSelectedTool() {
  80. var tool = getSelectedTool();
  81. if (tool != undefined) {
  82. if (tool.id != undefined) {
  83. document.getElementById("btn-" + tool.id).disabled = false;
  84. }
  85. }
  86. _selectedTool = [];
  87. setStatus("");
  88. }
  89. function getSelectedTool() {
  90. if (_selectedTool.length > 0) return _selectedTool[0];
  91. return undefined;
  92. }
  93. function getRelativePointerPosition() {
  94. return stage.getPointerPosition();
  95. }
  96. function setStatus(status) {
  97. document.getElementById("status").innerHTML = status;
  98. }
  99. return {
  100. stage: stage,
  101. currentLayer: currentLayer,
  102. createLayer: createLayer,
  103. screen: screen,
  104. bootstrap: bootstrap,
  105. layers: layers,
  106. tools: tools,
  107. setSelectedTool: setSelectedTool,
  108. clearSelectedTool: clearSelectedTool,
  109. getSelectedTool: getSelectedTool,
  110. pos: getRelativePointerPosition,
  111. setStatus: setStatus
  112. };
  113. })();