aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--assets/canvas-runtime.js438
-rwxr-xr-xjs/components/layout/tools-list.reel/tools-list.js1
-rwxr-xr-xjs/components/ui/color-chip.reel/color-chip.js2
-rwxr-xr-xjs/components/ui/input-group.reel/input-group.css15
-rwxr-xr-xjs/controllers/elements/component-controller.js2
-rwxr-xr-xjs/controllers/elements/element-controller.js59
-rwxr-xr-xjs/controllers/elements/shapes-controller.js395
-rwxr-xr-xjs/controllers/elements/stage-controller.js16
-rwxr-xr-xjs/controllers/selection-controller.js7
-rwxr-xr-xjs/controllers/styles-controller.js66
-rwxr-xr-xjs/data/pi/pi-data.js2
-rwxr-xr-xjs/document/html-document.js8
-rwxr-xr-xjs/document/templates/montage-html/default_html.css9
-rwxr-xr-xjs/document/templates/montage-html/index.html2
-rwxr-xr-xjs/helper-classes/3D/draw-utils.js31
-rwxr-xr-xjs/helper-classes/3D/snap-manager.js9
-rwxr-xr-xjs/helper-classes/3D/view-utils.js48
-rwxr-xr-xjs/lib/NJUtils.js12
-rwxr-xr-xjs/lib/drawing/world.js2
-rwxr-xr-xjs/lib/geom/circle.js19
-rwxr-xr-xjs/lib/geom/geom-obj.js128
-rwxr-xr-xjs/lib/geom/line.js10
-rwxr-xr-xjs/lib/geom/rectangle.js15
-rwxr-xr-xjs/mediators/element-mediator.js36
-rwxr-xr-xjs/models/color-model.js56
-rwxr-xr-xjs/models/properties-3d.js50
-rwxr-xr-xjs/models/shape-model.js7
-rwxr-xr-xjs/panels/Materials/materials-popup.reel/materials-popup.css46
-rwxr-xr-xjs/panels/Materials/materials-popup.reel/materials-popup.html2
-rwxr-xr-xjs/panels/Materials/materials-popup.reel/materials-popup.js2
-rwxr-xr-xjs/panels/Splitter.js2
-rwxr-xr-xjs/panels/properties.reel/properties.css5
-rwxr-xr-xjs/panels/properties.reel/properties.js24
-rwxr-xr-xjs/panels/properties.reel/sections/three-d-view.reel/three-d-view.html28
-rwxr-xr-xjs/panels/properties.reel/sections/three-d-view.reel/three-d-view.js14
-rwxr-xr-xjs/stage/layout.js2
-rwxr-xr-xjs/stage/stage.reel/stage.js5
-rwxr-xr-xjs/stage/tool-handle.js7
-rw-r--r--js/tools/BrushTool.js8
-rwxr-xr-xjs/tools/FillTool.js20
-rwxr-xr-xjs/tools/InkBottleTool.js21
-rwxr-xr-xjs/tools/LineTool.js11
-rwxr-xr-xjs/tools/OvalTool.js15
-rwxr-xr-xjs/tools/PenTool.js8
-rwxr-xr-xjs/tools/RectTool.js15
-rwxr-xr-xjs/tools/Rotate3DToolBase.js15
-rwxr-xr-xjs/tools/RotateObject3DTool.js1
-rwxr-xr-xjs/tools/RotateStage3DTool.js5
-rwxr-xr-xjs/tools/SelectionTool.js62
-rwxr-xr-xjs/tools/ShapeTool.js18
-rwxr-xr-xjs/tools/TagTool.js19
-rwxr-xr-xjs/tools/Translate3DToolBase.js38
-rwxr-xr-xjs/tools/TranslateObject3DTool.js33
-rwxr-xr-xjs/tools/drawing-tool-base.js2
-rwxr-xr-xjs/tools/modifier-tool-base.js26
55 files changed, 1195 insertions, 704 deletions
diff --git a/assets/canvas-runtime.js b/assets/canvas-runtime.js
index a35f473d..ee9f24a4 100644
--- a/assets/canvas-runtime.js
+++ b/assets/canvas-runtime.js
@@ -121,13 +121,12 @@ NinjaCvsRt.GLRuntime = function ( canvas, jObj, assetPath )
121 // all "live" materials 121 // all "live" materials
122 this._materials = []; 122 this._materials = [];
123 123
124 // provide the mapping for the asset directory 124 // provide the mapping for the asset directory
125 if (assetPath) 125 if (assetPath) {
126 { 126 this._assetPath = assetPath.slice();
127 this._assetPath = assetPath.slice(); 127 if (this._assetPath[this._assetPath.length - 1] != '/')
128 if (this._assetPath[this._assetPath.length-1] != '/') 128 this._assetPath += '/';
129 this._assetPath += '/'; 129 }
130 }
131 130
132 if(this._assetPath !== undefined) { 131 if(this._assetPath !== undefined) {
133 RDGE.globals.engine.setAssetPath(this._assetPath); 132 RDGE.globals.engine.setAssetPath(this._assetPath);
@@ -289,23 +288,23 @@ NinjaCvsRt.GLRuntime = function ( canvas, jObj, assetPath )
289 288
290 this.importObject = function( jObj, parent ) 289 this.importObject = function( jObj, parent )
291 { 290 {
292 var type = jObj.type 291 var type = jObj.type;
293 var obj; 292 var obj;
294 switch (type) 293 switch (type)
295 { 294 {
296 case 1: 295 case 1:
297 obj = new NinjaCvsRt.RuntimeRectangle(); 296 obj = new NinjaCvsRt.RuntimeRectangle();
298 obj.importJSON( jObj, parent ); 297 obj.importJSON( jObj );
299 break; 298 break;
300 299
301 case 2: // circle 300 case 2: // circle
302 obj = new NinjaCvsRt.RuntimeOval(); 301 obj = new NinjaCvsRt.RuntimeOval();
303 obj.importJSON( jObj, parent ); 302 obj.importJSON( jObj );
304 break; 303 break;
305 304
306 case 3: // line 305 case 3: // line
307 obj = new NinjaCvsRt.RuntimeLine(); 306 obj = new NinjaCvsRt.RuntimeLine();
308 obj.importJSON( jObj, parent ); 307 obj.importJSON( jObj );
309 break; 308 break;
310 309
311 default: 310 default:
@@ -514,7 +513,7 @@ NinjaCvsRt.RuntimeGeomObj = function ()
514 case "pulse": mat = new NinjaCvsRt.RuntimePulseMaterial(); break; 513 case "pulse": mat = new NinjaCvsRt.RuntimePulseMaterial(); break;
515 514
516 default: 515 default:
517 console.log( "material type: " + materialType + " is not supported" ); 516 console.log( "material type: " + shaderName + " is not supported" );
518 break; 517 break;
519 } 518 }
520 519
@@ -638,7 +637,7 @@ NinjaCvsRt.RuntimeGeomObj = function ()
638 637
639 return mat; 638 return mat;
640 }; 639 };
641 640
642 this.MatrixRotationZ = function( angle ) 641 this.MatrixRotationZ = function( angle )
643 { 642 {
644 var mat = this.MatrixIdentity(4); 643 var mat = this.MatrixIdentity(4);
@@ -742,7 +741,7 @@ NinjaCvsRt.RuntimeRectangle = function ()
742 ctx.quadraticCurveTo( width-inset, inset, width-inset-rad, inset ); 741 ctx.quadraticCurveTo( width-inset, inset, width-inset-rad, inset );
743 742
744 // do the top of the rectangle 743 // do the top of the rectangle
745 pt = [inset, inset] 744 pt = [inset, inset];
746 rad = tlRad - inset; 745 rad = tlRad - inset;
747 if (rad < 0) rad = 0; 746 if (rad < 0) rad = 0;
748 pt[0] += rad; 747 pt[0] += rad;
@@ -771,34 +770,81 @@ NinjaCvsRt.RuntimeRectangle = function ()
771 var w = world.getViewportWidth(), 770 var w = world.getViewportWidth(),
772 h = world.getViewportHeight(); 771 h = world.getViewportHeight();
773 772
774 // render the fill 773 var c,
775 ctx.beginPath(); 774 inset,
776 var c = null, inset = 0; 775 gradient,
777 if (this._fillColor) 776 colors,
778 { 777 len,
779 c = "rgba(" + 255*this._fillColor[0] + "," + 255*this._fillColor[1] + "," + 255*this._fillColor[2] + "," + this._fillColor[3] + ")"; 778 n,
780 ctx.fillStyle = c; 779 position,
781 780 cs;
782 ctx.lineWidth = lw; 781 // render the fill
783 inset = Math.ceil( lw ) + 0.5; 782 ctx.beginPath();
784 this.renderPath( inset, ctx ); 783 if (this._fillColor) {
785 ctx.fill(); 784 inset = Math.ceil( lw ) + 0.5;
786 ctx.closePath(); 785
787 } 786 if(this._fillColor.gradientMode) {
787 if(this._fillColor.gradientMode === "radial") {
788 gradient = ctx.createRadialGradient(w/2, h/2, 0, w/2, h/2, Math.max(w/2, h/2)-inset);
789 } else {
790 gradient = ctx.createLinearGradient(inset, h/2, w-2*inset, h/2);
791 }
792 colors = this._fillColor.color;
788 793
789 // render the stroke 794 len = colors.length;
790 ctx.beginPath();
791 if (this._strokeColor)
792 {
793 c = "rgba(" + 255*this._strokeColor[0] + "," + 255*this._strokeColor[1] + "," + 255*this._strokeColor[2] + "," + this._strokeColor[3] + ")";
794 ctx.strokeStyle = c;
795 795
796 ctx.lineWidth = lw; 796 for(n=0; n<len; n++) {
797 inset = Math.ceil( 0.5*lw ) + 0.5; 797 position = colors[n].position/100;
798 this.renderPath( inset, ctx ); 798 cs = colors[n].value;
799