Project

General

Profile

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

examples / src / main / java / org / distorted / examples / dynamic / DynamicActivity.java @ 77e66c58

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 5068fa06 Leszek Koltunski
import org.distorted.examples.R;
25 427ab7bf Leszek Koltunski
26
import android.app.Activity;
27
import android.opengl.GLSurfaceView;
28
import android.os.Bundle;
29 da77ffd8 Leszek Koltunski
import android.view.Gravity;
30 427ab7bf Leszek Koltunski
import android.view.View;
31 2666a48c Leszek Koltunski
import android.widget.AdapterView;
32
import android.widget.ArrayAdapter;
33 427ab7bf Leszek Koltunski
import android.widget.SeekBar;
34 2666a48c Leszek Koltunski
import android.widget.Spinner;
35 427ab7bf Leszek Koltunski
import android.widget.TextView;
36
import android.widget.SeekBar.OnSeekBarChangeListener;
37 da77ffd8 Leszek Koltunski
import android.widget.Toast;
38 427ab7bf Leszek Koltunski
39 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
40 427ab7bf Leszek Koltunski
41 2666a48c Leszek Koltunski
public class DynamicActivity extends Activity implements OnSeekBarChangeListener, AdapterView.OnItemSelectedListener
42 427ab7bf Leszek Koltunski
    {
43 d586fda6 Leszek Koltunski
    private TextView textDuration, textCount, textNoise, textConvexity;
44
    private int mNoise0,mNoise1,mNoise2,mNoise3;
45 5690134d Leszek Koltunski
    private int mDim, mMode, mSpeed;
46 8b7c0ab3 Leszek Koltunski
47 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
48 e52efe17 Leszek Koltunski
49 427ab7bf Leszek Koltunski
    @Override
50 b5636dbf leszek
    protected void onCreate(Bundle savedState)
51 427ab7bf Leszek Koltunski
      {
52 b5636dbf leszek
      super.onCreate(savedState);
53 a9df241d Leszek Koltunski
      DistortedLibrary.onCreate();
54 8b7c0ab3 Leszek Koltunski
      setContentView(R.layout.dynamicslayout);
55
56 d586fda6 Leszek Koltunski
      textDuration = findViewById(R.id.dynamicTextDuration);
57
      textCount    = findViewById(R.id.dynamicTextCount);
58
      textConvexity= findViewById(R.id.dynamicTextConvexity);
59
      textNoise    = findViewById(R.id.dynamicTextNoise);
60 8b7c0ab3 Leszek Koltunski
61 d586fda6 Leszek Koltunski
      mNoise0=mNoise1=mNoise2=mNoise3=0;
62 5690134d Leszek Koltunski
      mDim  = DynamicSurfaceView.DIM_2D;
63
      mMode = Dynamic.MODE_LOOP;
64
      mSpeed= Dynamic.SPEED_MODE_SMOOTH;
65 b5636dbf leszek
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 5690134d Leszek Koltunski
      String[] dimensions = { "Dim 1" , "Dim 2" , "Dim 3 (XY)" , "Dim 3 (XZ)" , "Dim 4 (XY)" , "Dim 4 (ZW)" , "Quat XY" , "Quat 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 5690134d Leszek Koltunski
      String[] modes = { "LOOP" , "PATH" , "JUMP" };
91 2666a48c Leszek Koltunski
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 5690134d Leszek Koltunski
      Spinner speedSpinner  = findViewById(R.id.dynamicSpinnerSpeedMode);
98
      speedSpinner.setOnItemSelectedListener(this);
99
      String[] speeds = { "SMOOTH" , "SEGM_CONST" , "GLOB_CONST" };
100
101
      ArrayAdapter<String> adapterSpeed = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, speeds );
102
      adapterSpeed.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
103
      speedSpinner.setAdapter(adapterSpeed);
104
      speedSpinner.setSelection(0);
105
106 b5636dbf leszek
      if( savedState==null )
107
        {
108
        barD.setProgress(50);
109 2666a48c Leszek Koltunski
        barC.setProgress(20);
110 dea555b9 Leszek Koltunski
        barX.setProgress(50);
111 b5636dbf leszek
        bar0.setProgress(0);
112
        bar1.setProgress(0);
113
        bar2.setProgress(0);
114 da77ffd8 Leszek Koltunski
115
        Toast toast = Toast.makeText(this, R.string.example_dynamic_toast, Toast.LENGTH_LONG);
116
        toast.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL, 0, 0);
117
        toast.show();
118 b5636dbf leszek
        }
119 427ab7bf Leszek Koltunski
      }
120
121 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
122 e52efe17 Leszek Koltunski
123 427ab7bf Leszek Koltunski
    @Override
124 c0f27889 Leszek Koltunski
    protected void onPause()
125 427ab7bf Leszek Koltunski
      {
126 c0f27889 Leszek Koltunski
      super.onPause();
127
128 e52efe17 Leszek Koltunski
      GLSurfaceView v1 = findViewById(R.id.dynamicSurfaceView);
129 c0f27889 Leszek Koltunski
      v1.onPause();
130 e52efe17 Leszek Koltunski
      DynamicSpeedSurfaceView v2 = findViewById(R.id.dynamicSpeedSurfaceView);
131 c0f27889 Leszek Koltunski
      v2.onPause();
132
133
      DistortedLibrary.onPause();
134 427ab7bf Leszek Koltunski
      }
135
136 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
137 e52efe17 Leszek Koltunski
138 427ab7bf Leszek Koltunski
    @Override
139 c0f27889 Leszek Koltunski
    protected void onResume() 
140 427ab7bf Leszek Koltunski
      {
141 c0f27889 Leszek Koltunski
      super.onResume();
142 a9df241d Leszek Koltunski
143 e52efe17 Leszek Koltunski
      GLSurfaceView v1 = findViewById(R.id.dynamicSurfaceView);
144 c0f27889 Leszek Koltunski
      v1.onResume();
145 e52efe17 Leszek Koltunski
      DynamicSpeedSurfaceView v2 = findViewById(R.id.dynamicSpeedSurfaceView);
146 c0f27889 Leszek Koltunski
      v2.onResume();
147 427ab7bf Leszek Koltunski
      }
148 c0f27889 Leszek Koltunski
149 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
150 e52efe17 Leszek Koltunski
151 427ab7bf Leszek Koltunski
    @Override
152
    public void onStop()
153
      {
154
      super.onStop();
155
      }
156
157 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
158 e52efe17 Leszek Koltunski
159 427ab7bf Leszek Koltunski
    @Override
160
    public void onDestroy()
161
      {  
162 e3900503 Leszek Koltunski
      DistortedLibrary.onDestroy();
163 427ab7bf Leszek Koltunski
      super.onDestroy();
164
      }     
165
166 e52efe17 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
167
168
    void setNumRedPoints(int numPoints)
169
      {
170
      DynamicSpeedSurfaceView view = findViewById(R.id.dynamicSpeedSurfaceView);
171
      view.setNumRedPoints(numPoints);
172
      }
173
174
///////////////////////////////////////////////////////////////////////////////////////////////////
175
176
    void addPoint(float x, float y)
177
      {
178
      DynamicSpeedSurfaceView view = findViewById(R.id.dynamicSpeedSurfaceView);
179
      view.addPoint(x,y);
180
      }
181
182 d84f5b73 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
183
184
    void clearPoints()
185
      {
186
      DynamicSpeedSurfaceView view = findViewById(R.id.dynamicSpeedSurfaceView);
187
      view.clearPoints();
188
      }
189
190 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
191 427ab7bf Leszek Koltunski
192 2666a48c Leszek Koltunski
    public void setDim(int dim)
193 427ab7bf Leszek Koltunski
      {
194 2666a48c Leszek Koltunski
      DynamicSurfaceView view = findViewById(R.id.dynamicSurfaceView);
195
      view.setDimension(dim);
196
      mDim = dim;
197
      }
198
199 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
200 427ab7bf Leszek Koltunski
201 2666a48c Leszek Koltunski
    public void setMode(int mode)
202 427ab7bf Leszek Koltunski
      {
203 e52efe17 Leszek Koltunski
      DynamicSurfaceView v1 = findViewById(R.id.dynamicSurfaceView);
204
      v1.setMode(mode);
205
      DynamicSpeedSurfaceView v2 = findViewById(R.id.dynamicSpeedSurfaceView);
206
      v2.setMode(mode);
207
208 2666a48c Leszek Koltunski
      mMode = mode;
209
      }
210 427ab7bf Leszek Koltunski
211 5690134d Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
212
213
    public void setSpeedMode(int mode)
214
      {
215
      DynamicSurfaceView view = findViewById(R.id.dynamicSurfaceView);
216
      view.setSpeedMode(mode);
217
      mSpeed = mode;
218
      }
219
220 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
221 427ab7bf Leszek Koltunski
222 2666a48c Leszek Koltunski
    public void Start(View v)
223 427ab7bf Leszek Koltunski
      {
224 e52efe17 Leszek Koltunski
      DynamicSpeedSurfaceView v2 = findViewById(R.id.dynamicSpeedSurfaceView);
225
      v2.clearPoints();
226
      DynamicSurfaceView v1 = findViewById(R.id.dynamicSurfaceView);
227
      v1.startDynamic();
228 2666a48c Leszek Koltunski
      }
229
230 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
231 427ab7bf Leszek Koltunski
232 2666a48c Leszek Koltunski
    public void Reset(View v)
233 427ab7bf Leszek Koltunski
      {
234 d84f5b73 Leszek Koltunski
      DynamicSurfaceView view = findViewById(R.id.dynamicSurfaceView);
235
      view.resetPoints();
236
      view.stopDynamic();
237 2666a48c Leszek Koltunski
      }
238 427ab7bf Leszek Koltunski
239 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
240 427ab7bf Leszek Koltunski
241 2666a48c Leszek Koltunski
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id)
242 427ab7bf Leszek Koltunski
      {
243 2666a48c Leszek Koltunski
      int spinnerID = parent.getId();
244
245
      if( spinnerID == R.id.dynamicSpinnerDimension )
246
        {
247
        switch(pos)
248
          {
249
          case 0: setDim(DynamicSurfaceView.DIM_1D  ); break;
250
          case 1: setDim(DynamicSurfaceView.DIM_2D  ); break;
251
          case 2: setDim(DynamicSurfaceView.DIM_3DXY); break;
252
          case 3: setDim(DynamicSurfaceView.DIM_3DXZ); break;
253 d586fda6 Leszek Koltunski
          case 4: setDim(DynamicSurfaceView.DIM_4DXY); break;
254
          case 5: setDim(DynamicSurfaceView.DIM_4DZW); break;
255 f20265a7 Leszek Koltunski
          case 6: setDim(DynamicSurfaceView.DIM_Q_XY); break;
256
          case 7: setDim(DynamicSurfaceView.DIM_Q_ZW); break;
257 2666a48c Leszek Koltunski
          }
258
        }
259
      else if( spinnerID == R.id.dynamicSpinnerMode )
260
        {
261
        switch(pos)
262
          {
263
          case 0: setMode(Dynamic.MODE_LOOP); break;
264
          case 1: setMode(Dynamic.MODE_PATH); break;
265
          case 2: setMode(Dynamic.MODE_JUMP); break;
266
          }
267
        }
268 5690134d Leszek Koltunski
      else if( spinnerID == R.id.dynamicSpinnerSpeedMode )
269
        {
270
        switch(pos)
271
          {
272
          case 0: setSpeedMode(Dynamic.SPEED_MODE_SMOOTH           ); break;
273
          case 1: setSpeedMode(Dynamic.SPEED_MODE_SEGMENT_CONSTANT ); break;
274
          case 2: setSpeedMode(Dynamic.SPEED_MODE_GLOBALLY_CONSTANT); break;
275
          }
276
        }
277 2666a48c Leszek Koltunski
      }
278 b5636dbf leszek
279
///////////////////////////////////////////////////////////////////////////////////////////////////
280
281
    @Override
282
    public void onSaveInstanceState(Bundle savedInstanceState)
283
      {
284
      super.onSaveInstanceState(savedInstanceState);
285
286 5690134d Leszek Koltunski
      savedInstanceState.putInt("dim"  , mDim  );
287
      savedInstanceState.putInt("mode" , mMode );
288
      savedInstanceState.putInt("speed", mSpeed);
289 b5636dbf leszek
      }
290
291
///////////////////////////////////////////////////////////////////////////////////////////////////
292
293
    @Override
294
    public void onRestoreInstanceState(Bundle savedInstanceState)
295
      {
296
      super.onRestoreInstanceState(savedInstanceState);
297
298 5690134d Leszek Koltunski
      mDim  = savedInstanceState.getInt("dim");
299
      mMode = savedInstanceState.getInt("mode");
300
      mSpeed= savedInstanceState.getInt("speed");
301 b5636dbf leszek
302 2666a48c Leszek Koltunski
      setDim(mDim);
303
      setMode(mMode);
304 5690134d Leszek Koltunski
      setSpeedMode(mSpeed);
305 b5636dbf leszek
      }
306
307 2666a48c Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
308
309 427ab7bf Leszek Koltunski
    public void onProgressChanged(SeekBar bar, int progress, boolean fromUser) 
310
      {
311 2666a48c Leszek Koltunski
      DynamicSurfaceView view = findViewById(R.id.dynamicSurfaceView);
312 8b7c0ab3 Leszek Koltunski
      int id = bar.getId();
313
314
      if( id == R.id.dynamicSeekDuration )
315
        {
316
        float v = progress*200;
317
        int i = (int)(v/100);
318
        float t = i/10.0f;
319 fe3c72ce Leszek Koltunski
        view.setDuration((int)v);
320 d586fda6 Leszek Koltunski
        textDuration.setText(getString(R.string.duration_placeholder, (int)t ));
321 2666a48c Leszek Koltunski
        }
322
      else if( id == R.id.dynamicSeekCount )
323
        {
324
        float count = progress*0.05f;
325
        view.setCount(count);
326 d586fda6 Leszek Koltunski
        textCount.setText(getString(R.string.count_placeholder, count ));
327 8b7c0ab3 Leszek Koltunski
        }
328 dea555b9 Leszek Koltunski
      else if( id == R.id.dynamicSeekConvexity )
329
        {
330
        float convexity = progress/25.0f - 1.0f;
331
        view.setConvexity(convexity);
332 d586fda6 Leszek Koltunski
        textConvexity.setText(getString(R.string.convexity_placeholder, convexity ));
333 dea555b9 Leszek Koltunski
        }
334 8b7c0ab3 Leszek Koltunski
      else
335 427ab7bf Leszek Koltunski
        {
336 77e66c58 Leszek Koltunski
             if( id == R.id.dynamicSeekNoise0 ) mNoise0 = progress;
337
        else if( id == R.id.dynamicSeekNoise1 ) mNoise1 = progress;
338
        else if( id == R.id.dynamicSeekNoise2 ) mNoise2 = progress;
339
        else if( id == R.id.dynamicSeekNoise3 ) mNoise3 = progress;
340 8b7c0ab3 Leszek Koltunski
341 d586fda6 Leszek Koltunski
        float n0 = mNoise0/100.f;
342
        float n1 = mNoise1/100.f;
343
        float n2 = mNoise2/100.f;
344
        float n3 = mNoise3/100.f;
345
346
        view.setNoise(n0,n1,n2,n3);
347
        textNoise.setText(getString(R.string.noise3_placeholder, n0,n1,n2,n3 ));
348 427ab7bf Leszek Koltunski
        }
349
      }
350
351 2666a48c Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
352 427ab7bf Leszek Koltunski
353
    public void onStartTrackingTouch(SeekBar bar) { }
354
    public void onStopTrackingTouch(SeekBar bar)  { }
355 2666a48c Leszek Koltunski
    public void onNothingSelected(AdapterView<?> parent) { }
356 427ab7bf Leszek Koltunski
}