app.js 2.6 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 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. 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 setSelectedTool(tool) {
  66. clearSelectedTool();
  67. if (tool.id != undefined) {
  68. document.getElementById("btn-" + tool.id).disabled = true;
  69. }
  70. _selectedTool.push(tool);
  71. }
  72. function clearSelectedTool() {
  73. var tool = getSelectedTool();
  74. if (tool != undefined) {
  75. if (tool.id != undefined) {
  76. document.getElementById("btn-" + tool.id).disabled = false;
  77. }
  78. }
  79. _selectedTool = [];
  80. setStatus("");
  81. }
  82. function getSelectedTool() {
  83. if (_selectedTool.length > 0) return _selectedTool[0];
  84. return undefined;
  85. }
  86. function getRelativePointerPosition() {
  87. return stage.getPointerPosition();
  88. }
  89. function setStatus(status) {
  90. document.getElementById("status").innerHTML = status;
  91. }
  92. return {
  93. stage: stage,
  94. currentLayer: currentLayer,
  95. createLayer: createLayer,
  96. screen: screen,
  97. bootstrap: bootstrap,
  98. layers: layers,
  99. tools: tools,
  100. setSelectedTool: setSelectedTool,
  101. clearSelectedTool: clearSelectedTool,
  102. getSelectedTool: getSelectedTool,
  103. pos: getRelativePointerPosition,
  104. setStatus: setStatus
  105. };
  106. })();