aboutsummaryrefslogtreecommitdiff
path: root/js/controllers
diff options
context:
space:
mode:
authorNivesh Rajbhandari2012-04-09 16:04:24 -0700
committerNivesh Rajbhandari2012-04-09 16:04:24 -0700
commit952e0b2c28af081041fa8987c3e865b931d052fa (patch)
tree51a2d9a210cc89b8df8edd120d78c4fbd2480b06 /js/controllers
parentc62c5c4287a1ee8a276b32dc61f06abbc24818ec (diff)
downloadninja-952e0b2c28af081041fa8987c3e865b931d052fa.tar.gz
Single perspective fix.
Note that rotating multiple objects when the stage is rotated still doesn't work and flatten still doesn't work. Signed-off-by: Nivesh Rajbhandari <mqg734@motorola.com>
Diffstat (limited to 'js/controllers')
-rwxr-xr-xjs/controllers/elements/element-controller.js10
-rwxr-xr-xjs/controllers/elements/stage-controller.js20
-rwxr-xr-xjs/controllers/styles-controller.js35
3 files changed, 42 insertions, 23 deletions
diff --git a/js/controllers/elements/element-controller.js b/js/controllers/elements/element-controller.js
index fda3a3c5..7ab6664f 100755
--- a/js/controllers/elements/element-controller.js
+++ b/js/controllers/elements/element-controller.js
@@ -249,10 +249,6 @@ exports.ElementController = Montage.create(Component, {
249 else 249 else
250 { 250 {
251 var dist = this.application.ninja.stylesController.getPerspectiveDistFromElement(el, false); 251 var dist = this.application.ninja.stylesController.getPerspectiveDistFromElement(el, false);
252 if(dist == null) {
253 dist = 1400;
254 }
255
256 el.elementModel.props3D.perspectiveDist = dist; 252 el.elementModel.props3D.perspectiveDist = dist;
257 return dist; 253 return dist;
258 } 254 }
@@ -266,9 +262,13 @@ exports.ElementController = Montage.create(Component, {
266 mat = props[index]["mat"]; 262 mat = props[index]["mat"];
267 this.application.ninja.stylesController.setElementStyle(el, 263 this.application.ninja.stylesController.setElementStyle(el,
268 "-webkit-transform", 264 "-webkit-transform",
269 "perspective(" + dist + ") " +
270 "matrix3d(" + MathUtils.scientificToDecimal(mat, 5) + ")"); 265 "matrix3d(" + MathUtils.scientificToDecimal(mat, 5) + ")");
271 266
267 // TODO - We don't support perspective on individual elements yet
268// this.application.ninja.stylesController.setElementStyle(el,
269// "-webkit-perspective",
270// dist);
271
272 el.elementModel.props3D.matrix3d = mat; 272 el.elementModel.props3D.matrix3d = mat;
273 el.elementModel.props3D.perspectiveDist = dist; 273 el.elementModel.props3D.perspectiveDist = dist;
274 274
diff --git a/js/controllers/elements/stage-controller.js b/js/controllers/elements/stage-controller.js
index dc916b1a..f376e40f 100755
--- a/js/controllers/elements/stage-controller.js
+++ b/js/controllers/elements/stage-controller.js
@@ -90,7 +90,7 @@ exports.StageController = Montage.create(ElementController, {
90 return el.elementModel.stageView.style.getProperty(p); 90 return el.elementModel.stageView.style.getProperty(p);
91 } 91 }
92 default: 92 default:
93 return ElementController.getProperty(el, p, false, true); 93 return ElementController.getProperty(el, p, true, true);
94 //console.log("Undefined Stage property ", p); 94 //console.log("Undefined Stage property ", p);
95 } 95 }
96 } 96 }
@@ -119,6 +119,7 @@ exports.StageController = Montage.create(ElementController, {
119 break; 119 break;
120 case "-webkit-transform-style": 120 case "-webkit-transform-style":
121 el.elementModel.stageView.style.setProperty(p, value); 121 el.elementModel.stageView.style.setProperty(p, value);
122 this.application.ninja.stage.updatedStage = true;
122 break; 123 break;
123 default: 124 default:
124 console.log("Undefined property ", p, "for the Stage Controller"); 125 console.log("Undefined property ", p, "for the Stage Controller");
@@ -178,5 +179,20 @@ exports.StageController = Montage.create(ElementController, {
178 return mat; 179 return mat;
179 } 180 }
180 } 181 }
181 } 182 },
183
184 getPerspectiveDist: {
185 value: function(el) {
186 if(el.elementModel && el.elementModel.props3D && el.elementModel.props3D.perspectiveDist)
187 {
188 return el.elementModel.props3D.perspectiveDist;
189 }
190 else
191 {
192 var dist = this.application.ninja.stylesController.getPerspectiveDistFromElement(el, true);
193 el.elementModel.props3D.perspectiveDist = dist;
194 return dist;
195 }
196 }
197 },
182}); 198});
diff --git a/js/controllers/styles-controller.js b/js/controllers/styles-controller.js
index 5d5f27ba..ec4314f9 100755
--- a/js/controllers/styles-controller.js
+++ b/js/controllers/styles-controller.js
@@ -1130,7 +1130,7 @@ var stylesController = exports.StylesController = Montage.create(Component, {
1130 1130
1131 getMatrixFromElement : { 1131 getMatrixFromElement : {
1132 value: function(element, isStage) { 1132 value: function(element, isStage) {
1133 var xformStr = this.getElementStyle(element, "-webkit-transform", false, isStage), 1133 var xformStr = this.getElementStyle(element, "-webkit-transform", true, isStage),
1134 mat; 1134 mat;
1135 1135
1136 if (xformStr) { 1136 if (xformStr) {
@@ -1163,26 +1163,29 @@ var stylesController = exports.StylesController = Montage.create(Component, {
1163 1163
1164 getPerspectiveDistFromElement : { 1164 getPerspectiveDistFromElement : {
1165 value: function(element, isStage) { 1165 value: function(element, isStage) {
1166 var xformStr = this.getElementStyle(element, "-webkit-transform", false, isStage), 1166 var xformStr = this.getElementStyle(element, "-webkit-perspective", false, isStage),
1167 dist; 1167 dist;
1168 1168
1169 if (xformStr) { 1169 if(xformStr) {
1170 var index1 = xformStr.indexOf( "perspective("); 1170 dist = parseInt(xformStr);
1171 if (index1 >= 0) { 1171 } else {
1172 index1 += 12; // do not include 'perspective(' 1172 xformStr = this.getElementStyle(element, "-webkit-transform", true, isStage);
1173 var index2 = xformStr.indexOf( ")", index1 ); 1173 if (xformStr) {
1174 if (index2 >= 0) { 1174 var index1 = xformStr.indexOf( "perspective(");
1175 var substr = xformStr.substr( index1, (index2-index1)); 1175 if (index1 >= 0) {
1176 if (substr && (substr.length > 0)) { 1176 index1 += 12; // do not include 'perspective('
1177 dist = parseInt( substr ); 1177 var index2 = xformStr.indexOf( ")", index1 );
1178 if (index2 >= 0) {
1179 var substr = xformStr.substr( index1, (index2-index1));
1180 if (substr && (substr.length > 0)) {
1181 dist = parseInt( substr );
1182 }
1178 } 1183 }
1179 } 1184 }
1180 } 1185 }
1181 } else { 1186 }
1182 xformStr = this.getElementStyle(element, "-webkit-perspective", false, isStage); 1187 if(isNaN(dist)) {
1183 if(xformStr) { 1188 dist = null;
1184 dist = parseInt(xformStr);
1185 }
1186 } 1189 }
1187 return dist; 1190 return dist;
1188 } 1191 }