aboutsummaryrefslogtreecommitdiff
path: root/js/controllers/elements/body-controller.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/controllers/elements/body-controller.js')
-rwxr-xr-xjs/controllers/elements/body-controller.js95
1 files changed, 95 insertions, 0 deletions
diff --git a/js/controllers/elements/body-controller.js b/js/controllers/elements/body-controller.js
new file mode 100755
index 00000000..14aeae24
--- /dev/null
+++ b/js/controllers/elements/body-controller.js
@@ -0,0 +1,95 @@
1/* <copyright>
2This file contains proprietary software owned by Motorola Mobility, Inc.<br/>
3No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.<br/>
4(c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved.
5</copyright> */
6
7var Montage = require("montage/core/core").Montage,
8 ElementController = require("js/controllers/elements/element-controller").ElementController;
9
10exports.BodyController = Montage.create(ElementController, {
11
12 // TODO - perspective distance needs to be passed in as "dist" and matrix3d needs to be passed in as "mat"
13 set3DProperties: {
14 value: function(el, props, update3DModel) {
15 var dist = props["dist"], mat = props["mat"];
16 this.application.ninja.stylesController.setElementStyle(el, "-webkit-transform", "perspective(" + dist + ") " + "matrix3d(" + MathUtils.scientificToDecimal(mat, 5) + ")", true);
17
18 el.elementModel.props3D.matrix3d = mat;
19 el.elementModel.props3D.perspectiveDist = dist;
20
21 this.application.ninja.stage.updatedStage = true;
22
23 if(update3DModel) {
24 this._update3DProperties(el, mat, dist);
25 }
26 }
27 },
28
29 getProperty: {
30 value: function(el, p) {
31 }
32 },
33
34 setProperty: {
35 value: function(el, p, value) {
36 }
37 },
38
39 setAttribute: {
40 value: function(el, att, value) {
41 }
42 },
43
44 getPerspectiveDist: {
45 value: function(el) {
46 if(el.elementModel && el.elementModel.props3D && el.elementModel.props3D.perspectiveDist) {
47 return el.elementModel.props3D.perspectiveDist;
48 } else {
49 var dist = this.application.ninja.stylesController.getPerspectiveDistFromElement(el, true);
50 el.elementModel.props3D.perspectiveDist = dist;
51 return dist;
52 }
53 }
54 },
55
56 getMatrix: {
57 value: function(el) {
58 if(el.elementModel && el.elementModel.props3D && el.elementModel.props3D.matrix3d)
59 {
60 return el.elementModel.props3D.matrix3d.slice(0);
61 }
62 else
63 {
64 var mat;
65
66 if (el)
67 {
68 mat = this.application.ninja.stylesController.getMatrixFromElement(el, true);
69 if (!mat) {
70 mat = Matrix.I(4);
71 }
72
73 var zoom = this.application.ninja.elementMediator.getProperty(el, "zoom");
74 if (zoom)
75 {
76 zoom = Number(zoom);
77 if (zoom != 1)
78 {
79 var zoomMat = Matrix.create( [
80 [ zoom, 0, 0, 0],
81 [ 0, zoom, 0, 0],
82 [ 0, 0, zoom, 0],
83 [ 0, 0, 0, 1]
84 ] );
85 glmat4.multiply( zoomMat, mat, mat );
86 }
87 }
88 }
89
90 el.elementModel.props3D.matrix3d = mat;
91 return mat;
92 }
93 }
94 }
95});