Removing native layouting
[platform/core/uifw/dali-toolkit.git] / node-addon / examples / line-mesh.js
1  var window= {
2            x:0,
3            y:0,
4            width:1920,
5            height: 1080,
6            transparent: false,
7            name:'line-mesh-app'
8  };
9
10  var viewMode={
11        'stereoscopic-mode':'mono', // stereo-horizontal, stereo-vertical, stereo-interlaced,
12        'stereo-base': 65 // Distance in millimeters between left/right cameras typically between (50-70mm)
13  };
14
15  var options= {
16     'window': window,
17     'view-mode': viewMode,
18  }
19
20 try {
21   // target
22   var dali = require('dali')( options );
23 }
24 catch(err) {
25   // desktop
26   var dali = require('../build/Release/dali')( options );
27 }
28
29 var daliApp = {};
30
31 daliApp.createMeshActor = function() {
32
33       // Create shader
34       var vertShader =
35                "attribute mediump vec2    aPosition1;\
36                 attribute mediump vec2    aPosition2;\
37                 uniform   mediump mat4    uMvpMatrix;\
38                 uniform   mediump vec3    uSize;\
39                 uniform   mediump float   uMorphAmount;\
40                 void main()\
41                 {\
42                   mediump vec2 morphPosition = mix(aPosition1, aPosition2, uMorphAmount);\
43                   mediump vec4 vertexPosition = vec4(morphPosition, 0.0, 1.0);\
44                   vertexPosition.xyz *= uSize;\
45                   vertexPosition = uMvpMatrix * vertexPosition;\
46                   gl_Position = vertexPosition;\
47                 }";
48
49       var fragShader =
50                "uniform lowp  vec4    uColor;\
51                 uniform sampler2D     sTexture;\
52                 void main()\
53                 {\
54                   gl_FragColor = uColor;\
55                 }";
56
57       var shaderOptions = {
58               vertexShader : vertShader,
59               fragmentShader: fragShader
60           };
61
62       var shader = new dali.Shader(shaderOptions);
63
64       // Create vertex buffer
65       var pentagonVertexFormat ={ "aPosition1" : dali.PROPERTY_VECTOR2 };
66
67       var pentagonVertexData = [    0,     1,
68                                 -0.95,  0.31,
69                                 -0.59, -0.81,
70                                  0.59, -0.81,
71                                  0.95,  0.31];
72
73       var pentagonVertexDataArray = new Float32Array(pentagonVertexData.length);
74       pentagonVertexDataArray.set(pentagonVertexData, 0);
75       var pentagonVertices = new dali.PropertyBuffer(pentagonVertexFormat);
76       pentagonVertices.setData(pentagonVertexDataArray, 5);
77
78       var pentacleVertexFormat ={ "aPosition2" : dali.PROPERTY_VECTOR2};
79
80       var pentacleVertexData = [    0,    -1,
81                                  0.59,  0.81,
82                                 -0.95, -0.31,
83                                  0.95, -0.31,
84                                 -0.59,  0.81];
85
86       var pentacleVertexDataArray = new Float32Array(pentacleVertexData.length);
87       pentacleVertexDataArray.set(pentacleVertexData, 0);
88       var pentacleVertices = new dali.PropertyBuffer(pentacleVertexFormat);
89       pentacleVertices.setData(pentacleVertexDataArray, 5);
90
91       var indexFormat ={ "indices" : dali.PROPERTY_INTEGER };
92
93       var indexData = [0, 1, 1, 2, 2, 3, 3, 4, 4, 0];
94
95       var indexDataArray = new Uint32Array(indexData.length);
96       indexDataArray.set(indexData, 0);
97
98       // Create geometry
99       var geometry = new dali.Geometry();
100       geometry.addVertexBuffer( pentagonVertices );
101       geometry.addVertexBuffer( pentacleVertices );
102       geometry.setIndexBuffer( indexDataArray, 10 );
103       geometry.setType( dali.GEOMETRY_LINES );
104
105       var renderer = new dali.Renderer(geometry, shader);
106       renderer.depthIndex = 0;
107
108       // Create mesh actor
109       var meshActor = new dali.Actor();
110       meshActor.addRenderer( renderer );
111       meshActor.size = [300, 300, 0];
112       meshActor.parentOrigin = dali.CENTER;
113       meshActor.anchorPoint = dali.CENTER;
114       meshActor.registerAnimatableProperty("uMorphAmount", 0.0);
115
116       dali.stage.add( meshActor );
117
118       // Animate the mesh actor
119       var animation = new dali.Animation(5);
120
121       var keyFramesIndex = [{progress:0.0, value: 0.0}, {progress:1.0, value:1.0}];
122       var animOptions = { alpha:dali.ALPHA_FUNCTION_SIN, delay:0, duration:5};
123
124       animation.animateBetween( meshActor, "uMorphAmount", keyFramesIndex, animOptions );
125       animation.setLooping(true);
126       animation.play();
127 }
128
129 function startup()
130 {
131   daliApp.init();
132 }
133
134 daliApp.init = function()
135 {
136   daliApp.createMeshActor();
137 }
138
139
140 startup();
141