diff options
Diffstat (limited to 'js')
-rwxr-xr-x | js/components/tools-properties/pen-properties.reel/pen-properties.js | 27 | ||||
-rwxr-xr-x | js/data/tools-data.js | 4 | ||||
-rwxr-xr-x | js/document/document-html.js | 4 | ||||
-rwxr-xr-x | js/document/models/base.js | 37 | ||||
-rwxr-xr-x | js/document/models/html.js | 25 | ||||
-rwxr-xr-x | js/document/views/design.js | 54 | ||||
-rwxr-xr-x | js/helper-classes/3D/math-utils.js | 11 | ||||
-rw-r--r-- | js/io/system/ninjalibrary.json | 2 | ||||
-rw-r--r-- | js/io/ui/new-file-dialog/new-file-options-navigator.reel/new-file-options-navigator.js | 5 | ||||
-rwxr-xr-x | js/lib/geom/brush-stroke.js | 93 | ||||
-rwxr-xr-x | js/lib/geom/sub-path.js | 331 | ||||
-rwxr-xr-x | js/mediators/keyboard-mediator.js | 7 | ||||
-rwxr-xr-x | js/stage/stage.reel/stage.js | 5 | ||||
-rw-r--r-- | js/tools/BrushTool.js | 14 | ||||
-rwxr-xr-x | js/tools/PenTool.js | 444 |
15 files changed, 748 insertions, 315 deletions
diff --git a/js/components/tools-properties/pen-properties.reel/pen-properties.js b/js/components/tools-properties/pen-properties.reel/pen-properties.js index cd205e07..c37359e1 100755 --- a/js/components/tools-properties/pen-properties.reel/pen-properties.js +++ b/js/components/tools-properties/pen-properties.reel/pen-properties.js | |||
@@ -9,6 +9,17 @@ var ToolProperties = require("js/components/tools-properties/tool-properties").T | |||
9 | 9 | ||
10 | var PenProperties = exports.PenProperties = Montage.create(ToolProperties, { | 10 | var PenProperties = exports.PenProperties = Montage.create(ToolProperties, { |
11 | addedColorChips: { value: false }, | 11 | addedColorChips: { value: false }, |
12 | _penToolRadio: { value: null, enumerable: false }, | ||
13 | _penPlusRadio: { value: null, enumerable: false }, | ||
14 | _penMinusRadio: { value: null, enumerable: false }, | ||
15 | |||
16 | _subPrepare: { | ||
17 | value: function() { | ||
18 | this._penToolRadio.addEventListener("click", this, false); | ||
19 | this._penPlusRadio.addEventListener("click", this, false); | ||
20 | this._penMinusRadio.addEventListener("click", this, false); | ||
21 | } | ||
22 | }, | ||
12 | 23 | ||
13 | _fill: { | 24 | _fill: { |
14 | enumerable: false, | 25 | enumerable: false, |
@@ -50,6 +61,22 @@ var PenProperties = exports.PenProperties = Montage.create(ToolProperties, { | |||
50 | } | 61 | } |
51 | }, | 62 | }, |
52 | 63 | ||
64 | _selectedSubtool: { | ||
65 | value: "pen", enumerable: false | ||
66 | }, | ||
67 | |||
68 | selectedSubtool: { | ||
69 | get: function() { return this._selectedSubtool;}, | ||
70 | set: function(value) { this._selectedSubtool = value; } | ||
71 | }, | ||
72 | |||
73 | handleClick: { | ||
74 | value: function(event) { | ||
75 | this._selectedSubtool = event._event.target.value; | ||
76 | NJevent("penSubToolChange"); | ||
77 | } | ||
78 | }, | ||
79 | |||
53 | draw: { | 80 | draw: { |
54 | enumerable: false, | 81 | enumerable: false, |
55 | value: function () { | 82 | value: function () { |
diff --git a/js/data/tools-data.js b/js/data/tools-data.js index 05455efe..138f9f4d 100755 --- a/js/data/tools-data.js +++ b/js/data/tools-data.js | |||
@@ -104,7 +104,7 @@ exports.ToolsData = Montage.create(Montage, { | |||
104 | "properties": "penProperties", | 104 | "properties": "penProperties", |
105 | "spriteSheet": true, | 105 | "spriteSheet": true, |
106 | "action": "PenTool", | 106 | "action": "PenTool", |
107 | "toolTip": "Pen Tool", | 107 | "toolTip": "Pen Tool (P)", |
108 | "cursor": "auto", | 108 | "cursor": "auto", |
109 | "lastInGroup": false, | 109 | "lastInGroup": false, |
110 | "container": false, | 110 | "container": false, |
@@ -165,7 +165,7 @@ exports.ToolsData = Montage.create(Montage, { | |||
165 | "properties": "brushProperties", | 165 | "properties": "brushProperties", |
166 | "spriteSheet": true, | 166 | "spriteSheet": true, |
167 | "action": "BrushTool", | 167 | "action": "BrushTool", |
168 | "toolTip": "Brush Tool", | 168 | "toolTip": "Brush Tool (B)", |
169 | "cursor": "url('images/tools/brush_down.png') 9 17, default", | 169 | "cursor": "url('images/tools/brush_down.png') 9 17, default", |
170 | "lastInGroup": false, | 170 | "lastInGroup": false, |
171 | "container": false, | 171 | "container": false, |
diff --git a/js/document/document-html.js b/js/document/document-html.js index 33a41a8e..c9acd2e0 100755 --- a/js/document/document-html.js +++ b/js/document/document-html.js | |||
@@ -68,6 +68,8 @@ exports.HtmlDocument = Montage.create(Component, { | |||
68 | if (this.model.views.design.initialize(this.model.parentContainer)) { | 68 | if (this.model.views.design.initialize(this.model.parentContainer)) { |
69 | //Hiding iFrame, just initiliazing | 69 | //Hiding iFrame, just initiliazing |
70 | this.model.views.design.hide(); | 70 | this.model.views.design.hide(); |
71 | //Setting the iFrame property for reference in helper class | ||
72 | this.model.webGlHelper.iframe = this.model.views.design.iframe; | ||
71 | } else { | 73 | } else { |
72 | //ERROR: Design View not initialized | 74 | //ERROR: Design View not initialized |
73 | } | 75 | } |
@@ -82,7 +84,7 @@ exports.HtmlDocument = Montage.create(Component, { | |||
82 | this.model.views.design.iframe.style.opacity = 0; | 84 | this.model.views.design.iframe.style.opacity = 0; |
83 | this.model.views.design.content = this.model.file.content; | 85 | this.model.views.design.content = this.model.file.content; |
84 | //TODO: Improve reference (probably through binding values) | 86 | //TODO: Improve reference (probably through binding values) |
85 | this.model.views.design.model = this.model; | 87 | this.model.views.design._webGlHelper = this.model.webGlHelper; |
86 | //Rendering design view, using observers to know when template is ready | 88 | //Rendering design view, using observers to know when template is ready |
87 | this.model.views.design.render(function () { | 89 | this.model.views.design.render(function () { |
88 | //Adding observer to know when template is ready | 90 | //Adding observer to know when template is ready |
diff --git a/js/document/models/base.js b/js/document/models/base.js index 0957145a..a3644815 100755 --- a/js/document/models/base.js +++ b/js/document/models/base.js | |||
@@ -65,7 +65,8 @@ exports.BaseDocumentModel = Montage.create(Component, { | |||
65 | _selection: { | 65 | _selection: { |
66 | value: [] | 66 | value: [] |
67 | }, | 67 | }, |
68 | 68 | //////////////////////////////////////////////////////////////////// | |
69 | // | ||
69 | selection: { | 70 | selection: { |
70 | get: function() { | 71 | get: function() { |
71 | return this._selection; | 72 | return this._selection; |
@@ -134,20 +135,22 @@ exports.BaseDocumentModel = Montage.create(Component, { | |||
134 | } | 135 | } |
135 | }, | 136 | }, |
136 | //////////////////////////////////////////////////////////////////// | 137 | //////////////////////////////////////////////////////////////////// |
137 | // | 138 | //Gets all stylesheets in document |
138 | getStyleSheets: { | 139 | getStyleSheets: { |
139 | value: function () { | 140 | value: function () { |
140 | // | 141 | //Array to store styles (style and link tags) |
141 | var styles = []; | 142 | var styles = []; |
142 | // | 143 | //Looping through document sytles |
143 | for (var k in this.views.design.iframe.contentWindow.document.styleSheets) { | 144 | for (var k in this.views.design.iframe.contentWindow.document.styleSheets) { |
145 | //Check for styles to has proper propeties | ||
144 | if (this.views.design.iframe.contentWindow.document.styleSheets[k].ownerNode && this.views.design.iframe.contentWindow.document.styleSheets[k].ownerNode.getAttribute) { | 146 | if (this.views.design.iframe.contentWindow.document.styleSheets[k].ownerNode && this.views.design.iframe.contentWindow.document.styleSheets[k].ownerNode.getAttribute) { |
147 | //Check for ninja-template styles, if so, exclude | ||
145 | if (this.views.design.iframe.contentWindow.document.styleSheets[k].ownerNode.getAttribute('data-ninja-template') === null) { | 148 | if (this.views.design.iframe.contentWindow.document.styleSheets[k].ownerNode.getAttribute('data-ninja-template') === null) { |
146 | styles.push(this.views.design.iframe.contentWindow.document.styleSheets[k]); | 149 | styles.push(this.views.design.iframe.contentWindow.document.styleSheets[k]); |
147 | } | 150 | } |
148 | } | 151 | } |
149 | } | 152 | } |
150 | // | 153 | //Returning filtered results |
151 | return styles; | 154 | return styles; |
152 | } | 155 | } |
153 | }, | 156 | }, |
@@ -155,7 +158,7 @@ exports.BaseDocumentModel = Montage.create(Component, { | |||
155 | // | 158 | // |
156 | save: { | 159 | save: { |
157 | value: function (callback, libCopyCallback) { | 160 | value: function (callback, libCopyCallback) { |
158 | // | 161 | //TODO: Implement on demand logic |
159 | if (this.needsSave) { | 162 | if (this.needsSave) { |
160 | //Save | 163 | //Save |
161 | } else { | 164 | } else { |
@@ -184,7 +187,7 @@ exports.BaseDocumentModel = Montage.create(Component, { | |||
184 | // | 187 | // |
185 | saveAll: { | 188 | saveAll: { |
186 | value: function (callback, libCopyCallback) { | 189 | value: function (callback, libCopyCallback) { |
187 | // | 190 | //TODO: Implement on demand logic |
188 | if (this.needsSave) { | 191 | if (this.needsSave) { |
189 | //Save | 192 | //Save |
190 | } else { | 193 | } else { |
@@ -214,47 +217,49 @@ exports.BaseDocumentModel = Montage.create(Component, { | |||
214 | // | 217 | // |
215 | saveAs: { | 218 | saveAs: { |
216 | value: function (callback) { | 219 | value: function (callback) { |
217 | // | 220 | //TODO: Implement on demand logic |
218 | if (this.needsSave) { | 221 | if (this.needsSave) { |
219 | //Save current file on memory | 222 | //Save current file on memory |
220 | } else { | 223 | } else { |
221 | //Copy file from disk | 224 | //Copy file from disk |
222 | } | 225 | } |
226 | //TODO: Add functionality | ||
223 | } | 227 | } |
224 | }, | 228 | }, |
225 | //////////////////////////////////////////////////////////////////// | 229 | //////////////////////////////////////////////////////////////////// |
226 | // | 230 | // |
227 | handleSaved: { | 231 | handleSaved: { |
228 | value: function (result) { | 232 | value: function (result) { |
229 | // | 233 | //Checking for success code in save |
230 | if (result.status === 204) { | 234 | if (result.status === 204) { |
235 | //Clearing flag with successful save | ||
231 | this.model.needsSave = false; | 236 | this.model.needsSave = false; |
232 | } | 237 | } |
233 | // | 238 | //Making callback call if specifed with results of operation |
234 | if (this.callback) this.callback(result); | 239 | if (this.callback) this.callback(result); |