app.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. var app = (function() {
  2. var width = $("#content").width();
  3. var height =
  4. $("#sidebar").height() - $("#header").height() - $("#files").height() - 2;
  5. var layers = [];
  6. var _layer = [];
  7. var tools = [];
  8. var menu = [];
  9. var layer = undefined;
  10. var _selectedTool = [];
  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. stage.add(layer.layer);
  34. return layer;
  35. }
  36. function bootstrap() {
  37. createLayer();
  38. configureStageEvents();
  39. layer = currentLayer();
  40. }
  41. function currentLayer() {
  42. if (_layer[0] == undefined) return undefined;
  43. return _layer[0].layer;
  44. }
  45. function configureStageEvents() {
  46. stage.on("click tap", function(e) {
  47. var tool = getSelectedTool();
  48. if (tool != undefined) {
  49. tool.draw();
  50. return;
  51. }
  52. var transformEnabled = true;
  53. if (
  54. e.target.attrs.transformEnabled != undefined &&
  55. e.target.attrs.transformEnabled == false
  56. ) {
  57. transformEnabled = false;
  58. }
  59. if (e.target === stage || !transformEnabled) {
  60. stage.find("Transformer").destroy();
  61. layer.draw();
  62. return;
  63. }
  64. stage.find("Transformer").destroy();
  65. var tr = new Konva.Transformer({
  66. anchorStrokeWidth: 2
  67. });
  68. layer.add(tr);
  69. tr.attachTo(e.target);
  70. layer.draw();
  71. });
  72. }
  73. function setSelectedTool(tool) {
  74. clearSelectedTool();
  75. if (tool.id != undefined) {
  76. document.getElementById("btn-" + tool.id).disabled = true;
  77. }
  78. _selectedTool.push(tool);
  79. }
  80. function clearSelectedTool() {
  81. var tool = getSelectedTool();
  82. if (tool != undefined) {
  83. if (tool.id != undefined) {
  84. document.getElementById("btn-" + tool.id).disabled = false;
  85. }
  86. }
  87. _selectedTool = [];
  88. setStatus("");
  89. }
  90. function getSelectedTool() {
  91. if (_selectedTool.length > 0) return _selectedTool[0];
  92. return undefined;
  93. }
  94. function getRelativePointerPosition() {
  95. return stage.getPointerPosition();
  96. }
  97. function setStatus(status) {
  98. document.getElementById("status").innerHTML = status;
  99. }
  100. return {
  101. stage: stage,
  102. currentLayer: currentLayer,
  103. createLayer: createLayer,
  104. screen: screen,
  105. bootstrap: bootstrap,
  106. layers: layers,
  107. tools: tools,
  108. setSelectedTool: setSelectedTool,
  109. clearSelectedTool: clearSelectedTool,
  110. getSelectedTool: getSelectedTool,
  111. pos: getRelativePointerPosition,
  112. setStatus: setStatus
  113. };
  114. })();