Project

General

Profile

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

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

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 dea555b9 Leszek Koltunski
    private TextView textD, textC, textN, textX;
45 b5636dbf leszek
    private int p0,p1,p2;
46
    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 8b7c0ab3 Leszek Koltunski
      setContentView(R.layout.dynamicslayout);
55
56 2666a48c Leszek Koltunski
      textD = findViewById(R.id.dynamicTextDuration);
57
      textC = findViewById(R.id.dynamicTextCount);
58 dea555b9 Leszek Koltunski
      textX = findViewById(R.id.dynamicTextConvexity);
59 2666a48c Leszek Koltunski
      textN = findViewById(R.id.dynamicTextNoise);
60 8b7c0ab3 Leszek Koltunski
61 b5636dbf leszek
      p0=p1=p2=0;
62
      mDim = DynamicSurfaceView.DIM_2D;
63
      mMode= Dynamic1D.MODE_LOOP;
64
65 2666a48c Leszek Koltunski
      SeekBar barD = findViewById(R.id.dynamicSeekDuration);
66 b5636dbf leszek
      barD.setOnSeekBarChangeListener(this);
67 2666a48c Leszek Koltunski
      SeekBar barC = findViewById(R.id.dynamicSeekCount);
68
      barC.setOnSeekBarChangeListener(this);
69 dea555b9 Leszek Koltunski
      SeekBar barX = findViewById(R.id.dynamicSeekConvexity);
70
      barX.setOnSeekBarChangeListener(this);
71 2666a48c Leszek Koltunski
      SeekBar bar0 = findViewById(R.id.dynamicSeekNoise0);
72 b5636dbf leszek
      bar0.setOnSeekBarChangeListener(this);
73 2666a48c Leszek Koltunski
      SeekBar bar1 = findViewById(R.id.dynamicSeekNoise1);
74 b5636dbf leszek
      bar1.setOnSeekBarChangeListener(this);
75 2666a48c Leszek Koltunski
      SeekBar bar2 = findViewById(R.id.dynamicSeekNoise2);
76 b5636dbf leszek
      bar2.setOnSeekBarChangeListener(this);
77
78 2666a48c Leszek Koltunski
      Spinner dimensionSpinner  = findViewById(R.id.dynamicSpinnerDimension);
79
      dimensionSpinner.setOnItemSelectedListener(this);
80
      String[] dimensions = { "Dimension 1" , "Dimension 2" , "Dimension 3 (XY)" , "Dimension 3 (XZ)" };
81
82
      ArrayAdapter<String> adapterDim = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, dimensions );
83
      adapterDim.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
84
      dimensionSpinner.setAdapter(adapterDim);
85
      dimensionSpinner.setSelection(1);
86
87
      Spinner modeSpinner  = findViewById(R.id.dynamicSpinnerMode);
88
      modeSpinner.setOnItemSelectedListener(this);
89
      String[] modes = { "MODE_LOOP" , "MODE_PATH" , "MODE_JUMP" };
90
91
      ArrayAdapter<String> adapterMode = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, modes );
92
      adapterMode.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
93
      modeSpinner.setAdapter(adapterMode);
94 e52efe17 Leszek Koltunski
      modeSpinner.setSelection(0);
95 2666a48c Leszek Koltunski
96 b5636dbf leszek
      if( savedState==null )
97
        {
98
        barD.setProgress(50);
99 2666a48c Leszek Koltunski
        barC.setProgress(20);
100 dea555b9 Leszek Koltunski
        barX.setProgress(50);
101 b5636dbf leszek
        bar0.setProgress(0);
102
        bar1.setProgress(0);
103
        bar2.setProgress(0);
104 da77ffd8 Leszek Koltunski
105
        Toast toast = Toast.makeText(this, R.string.example_dynamic_toast, Toast.LENGTH_LONG);
106
        toast.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL, 0, 0);
107
        toast.show();
108 b5636dbf leszek
        }
109 427ab7bf Leszek Koltunski
      }
110
111 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
112 e52efe17 Leszek Koltunski
113 427ab7bf Leszek Koltunski
    @Override
114
    protected void onResume() 
115
      {
116
      super.onResume();
117
      
118 e52efe17 Leszek Koltunski
      GLSurfaceView v1 = findViewById(R.id.dynamicSurfaceView);
119
      v1.onResume();
120
      DynamicSpeedSurfaceView v2 = findViewById(R.id.dynamicSpeedSurfaceView);
121
      v2.onResume();
122 427ab7bf Leszek Koltunski
      }
123
124 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
125 e52efe17 Leszek Koltunski
126 427ab7bf Leszek Koltunski
    @Override
127
    protected void onPause() 
128
      {
129 e52efe17 Leszek Koltunski
      GLSurfaceView v1 = findViewById(R.id.dynamicSurfaceView);
130
      v1.onPause();
131
      DynamicSpeedSurfaceView v2 = findViewById(R.id.dynamicSpeedSurfaceView);
132
      v2.onPause();
133 b0ebdf5e Leszek Koltunski
134 e3900503 Leszek Koltunski
      DistortedLibrary.onPause();
135 427ab7bf Leszek Koltunski
      super.onPause();
136
      }
137
    
138 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
139 e52efe17 Leszek Koltunski
140 427ab7bf Leszek Koltunski
    @Override
141
    public void onStop()
142
      {
143
      super.onStop();
144
      }
145
146 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
147 e52efe17 Leszek Koltunski
148 427ab7bf Leszek Koltunski
    @Override
149
    public void onDestroy()
150
      {  
151 e3900503 Leszek Koltunski
      DistortedLibrary.onDestroy();
152 427ab7bf Leszek Koltunski
      super.onDestroy();
153
      }     
154
155 e52efe17 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
156
157
    void setNumRedPoints(int numPoints)
158
      {
159
      DynamicSpeedSurfaceView view = findViewById(R.id.dynamicSpeedSurfaceView);
160
      view.setNumRedPoints(numPoints);
161
      }
162
163
///////////////////////////////////////////////////////////////////////////////////////////////////
164
165
    void addPoint(float x, float y)
166
      {
167
      DynamicSpeedSurfaceView view = findViewById(R.id.dynamicSpeedSurfaceView);
168
      view.addPoint(x,y);
169
      }
170
171 d84f5b73 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
172
173
    void clearPoints()
174
      {
175
      DynamicSpeedSurfaceView view = findViewById(R.id.dynamicSpeedSurfaceView);
176
      view.clearPoints();
177
      }
178
179 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
180 427ab7bf Leszek Koltunski
181 2666a48c Leszek Koltunski
    public void setDim(int dim)
182 427ab7bf Leszek Koltunski
      {
183 2666a48c Leszek Koltunski
      DynamicSurfaceView view = findViewById(R.id.dynamicSurfaceView);
184
      view.setDimension(dim);
185
      mDim = dim;
186
      }
187
188 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
189 427ab7bf Leszek Koltunski
190 2666a48c Leszek Koltunski
    public void setMode(int mode)
191 427ab7bf Leszek Koltunski
      {
192 e52efe17 Leszek Koltunski
      DynamicSurfaceView v1 = findViewById(R.id.dynamicSurfaceView);
193
      v1.setMode(mode);
194
      DynamicSpeedSurfaceView v2 = findViewById(R.id.dynamicSpeedSurfaceView);
195
      v2.setMode(mode);
196
197 2666a48c Leszek Koltunski
      mMode = mode;
198
      }
199 427ab7bf Leszek Koltunski
200 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
201 427ab7bf Leszek Koltunski
202 2666a48c Leszek Koltunski
    public void Start(View v)
203 427ab7bf Leszek Koltunski
      {
204 e52efe17 Leszek Koltunski
      DynamicSpeedSurfaceView v2 = findViewById(R.id.dynamicSpeedSurfaceView);
205
      v2.clearPoints();
206
      DynamicSurfaceView v1 = findViewById(R.id.dynamicSurfaceView);
207
      v1.startDynamic();
208 2666a48c Leszek Koltunski
      }
209
210 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
211 427ab7bf Leszek Koltunski
212 2666a48c Leszek Koltunski
    public void Reset(View v)
213 427ab7bf Leszek Koltunski
      {
214 d84f5b73 Leszek Koltunski
      DynamicSurfaceView view = findViewById(R.id.dynamicSurfaceView);
215
      view.resetPoints();
216
      view.stopDynamic();
217 2666a48c Leszek Koltunski
      }
218 427ab7bf Leszek Koltunski
219 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
220 427ab7bf Leszek Koltunski
221 2666a48c Leszek Koltunski
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id)
222 427ab7bf Leszek Koltunski
      {
223 2666a48c Leszek Koltunski
      int spinnerID = parent.getId();
224
225
      if( spinnerID == R.id.dynamicSpinnerDimension )
226
        {
227
        switch(pos)
228
          {
229
          case 0: setDim(DynamicSurfaceView.DIM_1D  ); break;
230
          case 1: setDim(DynamicSurfaceView.DIM_2D  ); break;
231
          case 2: setDim(DynamicSurfaceView.DIM_3DXY); break;
232
          case 3: setDim(DynamicSurfaceView.DIM_3DXZ); break;
233
          }
234
        }
235
      else if( spinnerID == R.id.dynamicSpinnerMode )
236
        {
237
        switch(pos)
238
          {
239
          case 0: setMode(Dynamic.MODE_LOOP); break;
240
          case 1: setMode(Dynamic.MODE_PATH); break;
241
          case 2: setMode(Dynamic.MODE_JUMP); break;
242
          }
243
        }
244
      }
245 b5636dbf leszek
246
///////////////////////////////////////////////////////////////////////////////////////////////////
247
248
    @Override
249
    public void onSaveInstanceState(Bundle savedInstanceState)
250
      {
251
      super.onSaveInstanceState(savedInstanceState);
252
253
      savedInstanceState.putInt("dim" , mDim );
254
      savedInstanceState.putInt("mode", mMode);
255
      }
256
257
///////////////////////////////////////////////////////////////////////////////////////////////////
258
259
    @Override
260
    public void onRestoreInstanceState(Bundle savedInstanceState)
261
      {
262
      super.onRestoreInstanceState(savedInstanceState);
263
264
      mDim = savedInstanceState.getInt("dim");
265
      mMode= savedInstanceState.getInt("mode");
266
267 2666a48c Leszek Koltunski
      setDim(mDim);
268
      setMode(mMode);
269 b5636dbf leszek
      }
270
271 2666a48c Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
272
273 427ab7bf Leszek Koltunski
    public void onProgressChanged(SeekBar bar, int progress, boolean fromUser) 
274
      {
275 2666a48c Leszek Koltunski
      DynamicSurfaceView view = findViewById(R.id.dynamicSurfaceView);
276 8b7c0ab3 Leszek Koltunski
      int id = bar.getId();
277
278
      if( id == R.id.dynamicSeekDuration )
279
        {
280
        float v = progress*200;
281
        int i = (int)(v/100);
282
        float t = i/10.0f;
283 fe3c72ce Leszek Koltunski
        view.setDuration((int)v);
284 2666a48c Leszek Koltunski
        textD.setText(getString(R.string.duration_placeholder, (int)t ));
285
        }
286
      else if( id == R.id.dynamicSeekCount )
287
        {
288
        float count = progress*0.05f;
289
        view.setCount(count);
290
        textC.setText(getString(R.string.count_placeholder, count ));
291 8b7c0ab3 Leszek Koltunski
        }
292 dea555b9 Leszek Koltunski
      else if( id == R.id.dynamicSeekConvexity )
293
        {
294
        float convexity = progress/25.0f - 1.0f;
295
        view.setConvexity(convexity);
296
        textX.setText(getString(R.string.convexity_placeholder, convexity ));
297
        }
298 8b7c0ab3 Leszek Koltunski
      else
299 427ab7bf Leszek Koltunski
        {
300 8b7c0ab3 Leszek Koltunski
        switch(id)
301
          {
302 b5636dbf leszek
          case R.id.dynamicSeekNoise0  : p0 = progress; break;
303
          case R.id.dynamicSeekNoise1  : p1 = progress; break;
304
          case R.id.dynamicSeekNoise2  : p2 = progress; break;
305 8b7c0ab3 Leszek Koltunski
          }
306
307 b5636dbf leszek
        view.setNoise(p0/100.0f,p1/100.0f,p2/100.0f);
308 2666a48c Leszek Koltunski
        textN.setText(getString(R.string.noise2_placeholder, (p0/100.f) , (p1/100.f), (p2/100.f) ));
309 427ab7bf Leszek Koltunski
        }
310
      }
311
312 2666a48c Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
313 427ab7bf Leszek Koltunski
314
    public void onStartTrackingTouch(SeekBar bar) { }
315
    public void onStopTrackingTouch(SeekBar bar)  { }
316 2666a48c Leszek Koltunski
    public void onNothingSelected(AdapterView<?> parent) { }
317 427ab7bf Leszek Koltunski
}