Project

General

Profile

Download (12.3 KB) Statistics
| Branch: | Revision:

examples / src / main / java / org / distorted / examples / dynamic / DynamicActivity.java @ a9df241d

1 bc0a685b Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
2
// Copyright 2016 Leszek Koltunski                                                               //
3
//                                                                                               //
4 71c8884f Leszek Koltunski
// This file is part of Distorted.                                                               //
5 bc0a685b Leszek Koltunski
//                                                                                               //
6 71c8884f Leszek Koltunski
// Distorted is free software: you can redistribute it and/or modify                             //
7 bc0a685b Leszek Koltunski
// it under the terms of the GNU General Public License as published by                          //
8
// the Free Software Foundation, either version 2 of the License, or                             //
9
// (at your option) any later version.                                                           //
10
//                                                                                               //
11 71c8884f Leszek Koltunski
// Distorted is distributed in the hope that it will be useful,                                  //
12 bc0a685b Leszek Koltunski
// but WITHOUT ANY WARRANTY; without even the implied warranty of                                //
13
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                 //
14
// GNU General Public License for more details.                                                  //
15
//                                                                                               //
16
// You should have received a copy of the GNU General Public License                             //
17 71c8884f Leszek Koltunski
// along with Distorted.  If not, see <http://www.gnu.org/licenses/>.                            //
18 bc0a685b Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
19
20 f988589e Leszek Koltunski
package org.distorted.examples.dynamic;
21 427ab7bf Leszek Koltunski
22 e3900503 Leszek Koltunski
import org.distorted.library.main.DistortedLibrary;
23 2666a48c Leszek Koltunski
import org.distorted.library.type.Dynamic;
24 7589635e Leszek Koltunski
import org.distorted.library.type.Dynamic1D;
25 5068fa06 Leszek Koltunski
import org.distorted.examples.R;
26 427ab7bf Leszek Koltunski
27
import android.app.Activity;
28
import android.opengl.GLSurfaceView;
29
import android.os.Bundle;
30 da77ffd8 Leszek Koltunski
import android.view.Gravity;
31 427ab7bf Leszek Koltunski
import android.view.View;
32 2666a48c Leszek Koltunski
import android.widget.AdapterView;
33
import android.widget.ArrayAdapter;
34 427ab7bf Leszek Koltunski
import android.widget.SeekBar;
35 2666a48c Leszek Koltunski
import android.widget.Spinner;
36 427ab7bf Leszek Koltunski
import android.widget.TextView;
37
import android.widget.SeekBar.OnSeekBarChangeListener;
38 da77ffd8 Leszek Koltunski
import android.widget.Toast;
39 427ab7bf Leszek Koltunski
40 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
41 427ab7bf Leszek Koltunski
42 2666a48c Leszek Koltunski
public class DynamicActivity extends Activity implements OnSeekBarChangeListener, AdapterView.OnItemSelectedListener
43 427ab7bf Leszek Koltunski
    {
44 d586fda6 Leszek Koltunski
    private TextView textDuration, textCount, textNoise, textConvexity;
45
    private int mNoise0,mNoise1,mNoise2,mNoise3;
46 b5636dbf leszek
    private int mDim, mMode;
47 8b7c0ab3 Leszek Koltunski
48 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
49 e52efe17 Leszek Koltunski
50 427ab7bf Leszek Koltunski
    @Override
51 b5636dbf leszek
    protected void onCreate(Bundle savedState)
52 427ab7bf Leszek Koltunski
      {
53 b5636dbf leszek
      super.onCreate(savedState);
54 a9df241d Leszek Koltunski
      DistortedLibrary.onCreate();
55 8b7c0ab3 Leszek Koltunski
      setContentView(R.layout.dynamicslayout);
56
57 d586fda6 Leszek Koltunski
      textDuration = findViewById(R.id.dynamicTextDuration);
58
      textCount    = findViewById(R.id.dynamicTextCount);
59
      textConvexity= findViewById(R.id.dynamicTextConvexity);
60
      textNoise    = findViewById(R.id.dynamicTextNoise);
61 8b7c0ab3 Leszek Koltunski
62 d586fda6 Leszek Koltunski
      mNoise0=mNoise1=mNoise2=mNoise3=0;
63 b5636dbf leszek
      mDim = DynamicSurfaceView.DIM_2D;
64
      mMode= Dynamic1D.MODE_LOOP;
65
66 2666a48c Leszek Koltunski
      SeekBar barD = findViewById(R.id.dynamicSeekDuration);
67 b5636dbf leszek
      barD.setOnSeekBarChangeListener(this);
68 2666a48c Leszek Koltunski
      SeekBar barC = findViewById(R.id.dynamicSeekCount);
69
      barC.setOnSeekBarChangeListener(this);
70 dea555b9 Leszek Koltunski
      SeekBar barX = findViewById(R.id.dynamicSeekConvexity);
71
      barX.setOnSeekBarChangeListener(this);
72 2666a48c Leszek Koltunski
      SeekBar bar0 = findViewById(R.id.dynamicSeekNoise0);
73 b5636dbf leszek
      bar0.setOnSeekBarChangeListener(this);
74 2666a48c Leszek Koltunski
      SeekBar bar1 = findViewById(R.id.dynamicSeekNoise1);
75 b5636dbf leszek
      bar1.setOnSeekBarChangeListener(this);
76 2666a48c Leszek Koltunski
      SeekBar bar2 = findViewById(R.id.dynamicSeekNoise2);
77 b5636dbf leszek
      bar2.setOnSeekBarChangeListener(this);
78
79 2666a48c Leszek Koltunski
      Spinner dimensionSpinner  = findViewById(R.id.dynamicSpinnerDimension);
80
      dimensionSpinner.setOnItemSelectedListener(this);
81 f20265a7 Leszek Koltunski
      String[] dimensions = { "Dimension 1" , "Dimension 2" , "Dimension 3 (XY)" , "Dimension 3 (XZ)" , "Dimension 4 (XY)" , "Dimension 4 (ZW)" , "Quaternion XY" , "Quaternion ZW" };
82 2666a48c Leszek Koltunski
83
      ArrayAdapter<String> adapterDim = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, dimensions );
84
      adapterDim.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
85
      dimensionSpinner.setAdapter(adapterDim);
86
      dimensionSpinner.setSelection(1);
87
88
      Spinner modeSpinner  = findViewById(R.id.dynamicSpinnerMode);
89
      modeSpinner.setOnItemSelectedListener(this);
90
      String[] modes = { "MODE_LOOP" , "MODE_PATH" , "MODE_JUMP" };
91
92
      ArrayAdapter<String> adapterMode = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, modes );
93
      adapterMode.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
94
      modeSpinner.setAdapter(adapterMode);
95 e52efe17 Leszek Koltunski
      modeSpinner.setSelection(0);
96 2666a48c Leszek Koltunski
97 b5636dbf leszek
      if( savedState==null )
98
        {
99
        barD.setProgress(50);
100 2666a48c Leszek Koltunski
        barC.setProgress(20);
101 dea555b9 Leszek Koltunski
        barX.setProgress(50);
102 b5636dbf leszek
        bar0.setProgress(0);
103
        bar1.setProgress(0);
104
        bar2.setProgress(0);
105 da77ffd8 Leszek Koltunski
106
        Toast toast = Toast.makeText(this, R.string.example_dynamic_toast, Toast.LENGTH_LONG);
107
        toast.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL, 0, 0);
108
        toast.show();
109 b5636dbf leszek
        }
110 427ab7bf Leszek Koltunski
      }
111
112 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
113 e52efe17 Leszek Koltunski
114 427ab7bf Leszek Koltunski
    @Override
115 c0f27889 Leszek Koltunski
    protected void onPause()
116 427ab7bf Leszek Koltunski
      {
117 c0f27889 Leszek Koltunski
      super.onPause();
118
119 e52efe17 Leszek Koltunski
      GLSurfaceView v1 = findViewById(R.id.dynamicSurfaceView);
120 c0f27889 Leszek Koltunski
      v1.onPause();
121 e52efe17 Leszek Koltunski
      DynamicSpeedSurfaceView v2 = findViewById(R.id.dynamicSpeedSurfaceView);
122 c0f27889 Leszek Koltunski
      v2.onPause();
123
124
      DistortedLibrary.onPause();
125 427ab7bf Leszek Koltunski
      }
126
127 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
128 e52efe17 Leszek Koltunski
129 427ab7bf Leszek Koltunski
    @Override
130 c0f27889 Leszek Koltunski
    protected void onResume() 
131 427ab7bf Leszek Koltunski
      {
132 c0f27889 Leszek Koltunski
      super.onResume();
133 a9df241d Leszek Koltunski
134 e52efe17 Leszek Koltunski
      GLSurfaceView v1 = findViewById(R.id.dynamicSurfaceView);
135 c0f27889 Leszek Koltunski
      v1.onResume();
136 e52efe17 Leszek Koltunski
      DynamicSpeedSurfaceView v2 = findViewById(R.id.dynamicSpeedSurfaceView);
137 c0f27889 Leszek Koltunski
      v2.onResume();
138 427ab7bf Leszek Koltunski
      }
139 c0f27889 Leszek Koltunski
140 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
141 e52efe17 Leszek Koltunski
142 427ab7bf Leszek Koltunski
    @Override
143
    public void onStop()
144
      {
145
      super.onStop();
146
      }
147
148 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
149 e52efe17 Leszek Koltunski
150 427ab7bf Leszek Koltunski
    @Override
151
    public void onDestroy()
152
      {  
153 e3900503 Leszek Koltunski
      DistortedLibrary.onDestroy();
154 427ab7bf Leszek Koltunski
      super.onDestroy();
155
      }     
156
157 e52efe17 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
158
159
    void setNumRedPoints(int numPoints)
160
      {
161
      DynamicSpeedSurfaceView view = findViewById(R.id.dynamicSpeedSurfaceView);
162
      view.setNumRedPoints(numPoints);
163
      }
164
165
///////////////////////////////////////////////////////////////////////////////////////////////////
166
167
    void addPoint(float x, float y)
168
      {
169
      DynamicSpeedSurfaceView view = findViewById(R.id.dynamicSpeedSurfaceView);
170
      view.addPoint(x,y);
171
      }
172
173 d84f5b73 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
174
175
    void clearPoints()
176
      {
177
      DynamicSpeedSurfaceView view = findViewById(R.id.dynamicSpeedSurfaceView);
178
      view.clearPoints();
179
      }
180
181 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
182 427ab7bf Leszek Koltunski
183 2666a48c Leszek Koltunski
    public void setDim(int dim)
184 427ab7bf Leszek Koltunski
      {
185 2666a48c Leszek Koltunski
      DynamicSurfaceView view = findViewById(R.id.dynamicSurfaceView);
186
      view.setDimension(dim);
187
      mDim = dim;
188
      }
189
190 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
191 427ab7bf Leszek Koltunski
192 2666a48c Leszek Koltunski
    public void setMode(int mode)
193 427ab7bf Leszek Koltunski
      {
194 e52efe17 Leszek Koltunski
      DynamicSurfaceView v1 = findViewById(R.id.dynamicSurfaceView);
195
      v1.setMode(mode);
196
      DynamicSpeedSurfaceView v2 = findViewById(R.id.dynamicSpeedSurfaceView);
197
      v2.setMode(mode);
198
199 2666a48c Leszek Koltunski
      mMode = mode;
200
      }
201 427ab7bf Leszek Koltunski
202 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
203 427ab7bf Leszek Koltunski
204 2666a48c Leszek Koltunski
    public void Start(View v)
205 427ab7bf Leszek Koltunski
      {
206 e52efe17 Leszek Koltunski
      DynamicSpeedSurfaceView v2 = findViewById(R.id.dynamicSpeedSurfaceView);
207
      v2.clearPoints();
208
      DynamicSurfaceView v1 = findViewById(R.id.dynamicSurfaceView);
209
      v1.startDynamic();
210 2666a48c Leszek Koltunski
      }
211
212 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
213 427ab7bf Leszek Koltunski
214 2666a48c Leszek Koltunski
    public void Reset(View v)
215 427ab7bf Leszek Koltunski
      {
216 d84f5b73 Leszek Koltunski
      DynamicSurfaceView view = findViewById(R.id.dynamicSurfaceView);
217
      view.resetPoints();
218
      view.stopDynamic();
219 2666a48c Leszek Koltunski
      }
220 427ab7bf Leszek Koltunski
221 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
222 427ab7bf Leszek Koltunski
223 2666a48c Leszek Koltunski
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id)
224 427ab7bf Leszek Koltunski
      {
225 2666a48c Leszek Koltunski
      int spinnerID = parent.getId();
226
227
      if( spinnerID == R.id.dynamicSpinnerDimension )
228
        {
229
        switch(pos)
230
          {
231
          case 0: setDim(DynamicSurfaceView.DIM_1D  ); break;
232
          case 1: setDim(DynamicSurfaceView.DIM_2D  ); break;
233
          case 2: setDim(DynamicSurfaceView.DIM_3DXY); break;
234
          case 3: setDim(DynamicSurfaceView.DIM_3DXZ); break;
235 d586fda6 Leszek Koltunski
          case 4: setDim(DynamicSurfaceView.DIM_4DXY); break;
236
          case 5: setDim(DynamicSurfaceView.DIM_4DZW); break;
237 f20265a7 Leszek Koltunski
          case 6: setDim(DynamicSurfaceView.DIM_Q_XY); break;
238
          case 7: setDim(DynamicSurfaceView.DIM_Q_ZW); break;
239 2666a48c Leszek Koltunski
          }
240
        }
241
      else if( spinnerID == R.id.dynamicSpinnerMode )
242
        {
243
        switch(pos)
244
          {
245
          case 0: setMode(Dynamic.MODE_LOOP); break;
246
          case 1: setMode(Dynamic.MODE_PATH); break;
247
          case 2: setMode(Dynamic.MODE_JUMP); break;
248
          }
249
        }
250
      }
251 b5636dbf leszek
252
///////////////////////////////////////////////////////////////////////////////////////////////////
253
254
    @Override
255
    public void onSaveInstanceState(Bundle savedInstanceState)
256
      {
257
      super.onSaveInstanceState(savedInstanceState);
258
259
      savedInstanceState.putInt("dim" , mDim );
260
      savedInstanceState.putInt("mode", mMode);
261
      }
262
263
///////////////////////////////////////////////////////////////////////////////////////////////////
264
265
    @Override
266
    public void onRestoreInstanceState(Bundle savedInstanceState)
267
      {
268
      super.onRestoreInstanceState(savedInstanceState);
269
270
      mDim = savedInstanceState.getInt("dim");
271
      mMode= savedInstanceState.getInt("mode");
272
273 2666a48c Leszek Koltunski
      setDim(mDim);
274
      setMode(mMode);
275 b5636dbf leszek
      }
276
277 2666a48c Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
278
279 427ab7bf Leszek Koltunski
    public void onProgressChanged(SeekBar bar, int progress, boolean fromUser) 
280
      {
281 2666a48c Leszek Koltunski
      DynamicSurfaceView view = findViewById(R.id.dynamicSurfaceView);
282 8b7c0ab3 Leszek Koltunski
      int id = bar.getId();
283
284
      if( id == R.id.dynamicSeekDuration )
285
        {
286
        float v = progress*200;
287
        int i = (int)(v/100);
288
        float t = i/10.0f;
289 fe3c72ce Leszek Koltunski
        view.setDuration((int)v);
290 d586fda6 Leszek Koltunski
        textDuration.setText(getString(R.string.duration_placeholder, (int)t ));
291 2666a48c Leszek Koltunski
        }
292
      else if( id == R.id.dynamicSeekCount )
293
        {
294
        float count = progress*0.05f;
295
        view.setCount(count);
296 d586fda6 Leszek Koltunski
        textCount.setText(getString(R.string.count_placeholder, count ));
297 8b7c0ab3 Leszek Koltunski
        }
298 dea555b9 Leszek Koltunski
      else if( id == R.id.dynamicSeekConvexity )
299
        {
300
        float convexity = progress/25.0f - 1.0f;
301
        view.setConvexity(convexity);
302 d586fda6 Leszek Koltunski
        textConvexity.setText(getString(R.string.convexity_placeholder, convexity ));
303 dea555b9 Leszek Koltunski
        }
304 8b7c0ab3 Leszek Koltunski
      else
305 427ab7bf Leszek Koltunski
        {
306 8b7c0ab3 Leszek Koltunski
        switch(id)
307
          {
308 d586fda6 Leszek Koltunski
          case R.id.dynamicSeekNoise0  : mNoise0 = progress; break;
309
          case R.id.dynamicSeekNoise1  : mNoise1 = progress; break;
310
          case R.id.dynamicSeekNoise2  : mNoise2 = progress; break;
311
          case R.id.dynamicSeekNoise3  : mNoise3 = progress; break;
312 8b7c0ab3 Leszek Koltunski
          }
313
314 d586fda6 Leszek Koltunski
        float n0 = mNoise0/100.f;
315
        float n1 = mNoise1/100.f;
316
        float n2 = mNoise2/100.f;
317
        float n3 = mNoise3/100.f;
318
319
        view.setNoise(n0,n1,n2,n3);
320
        textNoise.setText(getString(R.string.noise3_placeholder, n0,n1,n2,n3 ));
321 427ab7bf Leszek Koltunski
        }
322
      }
323
324 2666a48c Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
325 427ab7bf Leszek Koltunski
326
    public void onStartTrackingTouch(SeekBar bar) { }
327
    public void onStopTrackingTouch(SeekBar bar)  { }
328 2666a48c Leszek Koltunski
    public void onNothingSelected(AdapterView<?> parent) { }
329 427ab7bf Leszek Koltunski
}