aboutsummaryrefslogtreecommitdiff
path: root/js/controllers/elements
diff options
context:
space:
mode:
Diffstat (limited to 'js/controllers/elements')
-rwxr-xr-xjs/controllers/elements/element-controller.js89
-rwxr-xr-xjs/controllers/elements/shapes-controller.js132
2 files changed, 203 insertions, 18 deletions
diff --git a/js/controllers/elements/element-controller.js b/js/controllers/elements/element-controller.js
index f2b54014..65d26bdd 100755
--- a/js/controllers/elements/element-controller.js
+++ b/js/controllers/elements/element-controller.js
@@ -69,27 +69,103 @@ var ElementController = exports.ElementController = Montage.create(NJComponent,
69 // Routines to get/set color properties 69 // Routines to get/set color properties
70 getColor: { 70 getColor: {
71 value: function(el, isFill) { 71 value: function(el, isFill) {
72 var colorObj,
73 color,
74 image;
75
76 // Return cached value if one exists
72 if(isFill) 77 if(isFill)
73 { 78 {
74 return this.application.ninja.stylesController.getElementStyle(el, "background-color"); 79 if(el.elementModel.fill)
80 {
81 return el.elementModel.fill;
82 }
83// return this.application.ninja.stylesController.getElementStyle(el, "background-color");
84 //TODO: Once logic for color and gradient is established, this needs to be revised
85 color = this.getProperty(el, "background-color");
86 image = this.getProperty(el, "background-image");
75 } 87 }
76 else 88 else
77 { 89 {
78 // TODO - Need to figure out which border side user wants 90 // TODO - Need to figure out which border side user wants
79 return this.application.ninja.stylesController.getElementStyle(el, "border-color"); 91 if(el.elementModel.stroke)
92 {
93 return el.elementModel.stroke;
94 }
95 // TODO - Need to figure out which border side user wants
96// return this.application.ninja.stylesController.getElementStyle(el, "border-color");
97 color = this.getProperty(el, "border-color");
98 image = this.getProperty(el, "border-image");
80 } 99 }
100
101 if(color || image) {
102 if (image && image !== 'none' && image.indexOf('-webkit') >= 0) {
103 //Gradient
104 colorObj = this.application.ninja.colorController.getColorObjFromCss(image);
105 } else {
106 //Solid
107 colorObj = this.application.ninja.colorController.getColorObjFromCss(color);
108 }
109 }
110
111 // Update cache
112 if(isFill)
113 {
114 el.elementModel.fill = colorObj;
115 }
116 else
117 {
118 el.elementModel.stroke = colorObj;
119 }
120
121 return colorObj;
81 } 122 }
82 }, 123 },
83 124
84 setColor: { 125 setColor: {
85 value: function(el, color, isFill) { 126 value: function(el, color, isFill) {
127 var mode = color.mode;
86 if(isFill) 128 if(isFill)
87 { 129 {
88 this.application.ninja.stylesController.setElementStyle(el, "background-color", color.color.css); 130 if(mode)
131 {
132 switch (mode) {
133 case 'nocolor':
134 this.setProperty(el, "background-image", "none");
135 this.setProperty(el, "background-color", "none");
136 el.elementModel.fill = null;
137 return;
138 case 'gradient':
139 this.setProperty(el, "background-image", color.color.css);
140 this.setProperty(el, "background-color", "none");
141 break;
142 default:
143 this.setProperty(el, "background-image", "none");
144 this.setProperty(el, "background-color", color.color.css);
145 }
146 }
147 el.elementModel.fill = color;
89 } 148 }
90 else 149 else
91 { 150 {
92 this.application.ninja.stylesController.setElementStyle(el, "border-color", color.color.css); 151 if(mode)
152 {
153 switch (mode) {
154 case 'nocolor':
155 this.setProperty(el, "border-image", "none");
156 this.setProperty(el, "border-color", "none");
157 el.elementModel.stroke = null;
158 return;
159 case 'gradient':
160 this.setProperty(el, "border-image", color.color.css);
161 this.setProperty(el, "border-color", "none");
162 break;
163 default:
164 this.setProperty(el, "border-image", "none");
165 this.setProperty(el, "border-color", color.color.css);
166 }
167 }
168 el.elementModel.stroke = color;
93 } 169 }
94 } 170 }
95 }, 171 },
@@ -103,8 +179,9 @@ var ElementController = exports.ElementController = Montage.create(NJComponent,
103 179
104 setStroke: { 180 setStroke: {
105 value: function(el, stroke) { 181 value: function(el, stroke) {
106 var border = stroke.borderWidth + stroke.borderUnits + " " + stroke.borderStyle + " " + stroke.color.color.css; 182 this.application.ninja.stylesController.setElementStyle(el, "border-width", stroke.borderWidth + stroke.borderUnits);
107 this.application.ninja.stylesController.setElementStyle(el, "border", border); 183 this.application.ninja.stylesController.setElementStyle(el, "border-style", stroke.borderStyle);
184 this.setColor(el, stroke.color, false);
108 } 185 }
109 }, 186 },
110 187
diff --git a/js/controllers/elements/shapes-controller.js b/js/controllers/elements/shapes-controller.js
index c5f22138..e764de4e 100755
--- a/js/controllers/elements/shapes-controller.js
+++ b/js/controllers/elements/shapes-controller.js
@@ -5,7 +5,8 @@ No rights, expressed or implied, whatsoever to this software are provided by Mot
5</copyright> */ 5</copyright> */
6 6
7var Montage = require("montage/core/core").Montage, 7var Montage = require("montage/core/core").Montage,
8 CanvasController = require("js/controllers/elements/canvas-controller").CanvasController; 8 CanvasController = require("js/controllers/elements/canvas-controller").CanvasController,
9 njModule = require("js/lib/NJUtils");
9 10
10exports.ShapesController = Montage.create(CanvasController, { 11exports.ShapesController = Montage.create(CanvasController, {
11 12
@@ -56,6 +57,35 @@ exports.ShapesController = Montage.create(CanvasController, {
56 el.elementModel.shapeModel.GLWorld.setViewportFromCanvas(el); 57 el.elementModel.shapeModel.GLWorld.setViewportFromCanvas(el);
57 el.elementModel.shapeModel.GLGeomObj.buildBuffers(); 58 el.elementModel.shapeModel.GLGeomObj.buildBuffers();
58 break; 59 break;
60 case "useWebGl":
61 var canvas = njModule.NJUtils.makeNJElement("canvas", "Canvas", "shape", el.className, true);
62 canvas.width = el.width;
63 canvas.height = el.height;
64 this.application.ninja.elementMediator.replaceElement(el, canvas);
65 NJevent("elementDeleted", el);
66 this.application.ninja.selectionController.selectElement(canvas);
67 el = canvas;
68 this.toggleWebGlMode(el, value);
69 el.elementModel.shapeModel.GLGeomObj.buildBuffers();
70 break;
71 case "strokeMaterial":
72 var sm = Object.create(MaterialsLibrary.getMaterial(value));
73 if(sm)
74 {
75 el.elementModel.shapeModel.GLGeomObj.setStrokeMaterial(sm);
76 el.elementModel.shapeModel.strokeMaterial = sm;
77 el.elementModel.shapeModel.GLGeomObj.buildBuffers();
78 }
79 break;
80 case "fillMaterial":
81 var fm = Object.create(MaterialsLibrary.getMaterial(value));
82 if(fm)
83 {
84 el.elementModel.shapeModel.GLGeomObj.setFillMaterial(fm);
85 el.elementModel.shapeModel.fillMaterial = fm;
86 el.elementModel.shapeModel.GLGeomObj.buildBuffers();
87 }
88 break;
59 default: 89 default:
60 CanvasController.setProperty(el, p, value); 90 CanvasController.setProperty(el, p, value);
61 } 91 }
@@ -66,17 +96,27 @@ exports.ShapesController = Montage.create(CanvasController, {
66 getProperty: { 96 getProperty: {
67 value: function(el, p) { 97 value: function(el, p) {
68 switch(p) { 98 switch(p) {
69 case "stroke":
70 case "fill":
71 case "strokeSize": 99 case "strokeSize":
72 case "innerRadius": 100 case "innerRadius":
73 case "tlRadius": 101 case "tlRadius":
74 case "trRadius": 102 case "trRadius":
75 case "blRadius": 103 case "blRadius":
76 case "brRadius": 104 case "brRadius":
105 case "border":
106 case "background":
107 case "useWebGl":
108 return this.getShapeProperty(el, p);
77 case "strokeMaterial": 109 case "strokeMaterial":
78 case "fillMaterial": 110 case "fillMaterial":
79 return this.getShapeProperty(el, p); 111 var m = this.getShapeProperty(el, p);
112 if(m)
113 {
114 return this.getShapeProperty(el, p).getName();
115 }