Project

General

Profile

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

examples / src / main / java / org / distorted / examples / dynamic / DynamicActivity.java @ 87006e8d

1
///////////////////////////////////////////////////////////////////////////////////////////////////
2
// Copyright 2016 Leszek Koltunski                                                               //
3
//                                                                                               //
4
// This file is part of Distorted.                                                               //
5
//                                                                                               //
6
// Distorted is free software: you can redistribute it and/or modify                             //
7
// 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
// Distorted is distributed in the hope that it will be useful,                                  //
12
// 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
// along with Distorted.  If not, see <http://www.gnu.org/licenses/>.                            //
18
///////////////////////////////////////////////////////////////////////////////////////////////////
19

    
20
package org.distorted.examples.dynamic;
21

    
22
import org.distorted.library.main.DistortedLibrary;
23
import org.distorted.library.type.Dynamic;
24
import org.distorted.library.type.Dynamic1D;
25
import org.distorted.examples.R;
26

    
27
import android.app.Activity;
28
import android.opengl.GLSurfaceView;
29
import android.os.Bundle;
30
import android.view.Gravity;
31
import android.view.View;
32
import android.widget.AdapterView;
33
import android.widget.ArrayAdapter;
34
import android.widget.SeekBar;
35
import android.widget.Spinner;
36
import android.widget.TextView;
37
import android.widget.SeekBar.OnSeekBarChangeListener;
38
import android.widget.Toast;
39

    
40
///////////////////////////////////////////////////////////////////////////////////////////////////
41

    
42
public class DynamicActivity extends Activity implements OnSeekBarChangeListener, AdapterView.OnItemSelectedListener
43
    {
44
    private TextView textD, textC, textN;
45
    private int p0,p1,p2;
46
    private int mDim, mMode;
47

    
48
///////////////////////////////////////////////////////////////////////////////////////////////////
49

    
50
    @Override
51
    protected void onCreate(Bundle savedState)
52
      {
53
      super.onCreate(savedState);
54
      setContentView(R.layout.dynamicslayout);
55

    
56
      textD = findViewById(R.id.dynamicTextDuration);
57
      textC = findViewById(R.id.dynamicTextCount);
58
      textN = findViewById(R.id.dynamicTextNoise);
59

    
60
      p0=p1=p2=0;
61
      mDim = DynamicSurfaceView.DIM_2D;
62
      mMode= Dynamic1D.MODE_LOOP;
63

    
64
      SeekBar barD = findViewById(R.id.dynamicSeekDuration);
65
      barD.setOnSeekBarChangeListener(this);
66
      SeekBar barC = findViewById(R.id.dynamicSeekCount);
67
      barC.setOnSeekBarChangeListener(this);
68
      SeekBar bar0 = findViewById(R.id.dynamicSeekNoise0);
69
      bar0.setOnSeekBarChangeListener(this);
70
      SeekBar bar1 = findViewById(R.id.dynamicSeekNoise1);
71
      bar1.setOnSeekBarChangeListener(this);
72
      SeekBar bar2 = findViewById(R.id.dynamicSeekNoise2);
73
      bar2.setOnSeekBarChangeListener(this);
74

    
75
      Spinner dimensionSpinner  = findViewById(R.id.dynamicSpinnerDimension);
76
      dimensionSpinner.setOnItemSelectedListener(this);
77
      String[] dimensions = { "Dimension 1" , "Dimension 2" , "Dimension 3 (XY)" , "Dimension 3 (XZ)" };
78

    
79
      ArrayAdapter<String> adapterDim = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, dimensions );
80
      adapterDim.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
81
      dimensionSpinner.setAdapter(adapterDim);
82
      dimensionSpinner.setSelection(1);
83

    
84
      Spinner modeSpinner  = findViewById(R.id.dynamicSpinnerMode);
85
      modeSpinner.setOnItemSelectedListener(this);
86
      String[] modes = { "MODE_LOOP" , "MODE_PATH" , "MODE_JUMP" };
87

    
88
      ArrayAdapter<String> adapterMode = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, modes );
89
      adapterMode.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
90
      modeSpinner.setAdapter(adapterMode);
91
      modeSpinner.setSelection(0);
92

    
93
      if( savedState==null )
94
        {
95
        barD.setProgress(50);
96
        barC.setProgress(20);
97
        bar0.setProgress(0);
98
        bar1.setProgress(0);
99
        bar2.setProgress(0);
100

    
101
        Toast toast = Toast.makeText(this, R.string.example_dynamic_toast, Toast.LENGTH_LONG);
102
        toast.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL, 0, 0);
103
        toast.show();
104
        }
105
      }
106

    
107
///////////////////////////////////////////////////////////////////////////////////////////////////
108

    
109
    @Override
110
    protected void onResume() 
111
      {
112
      super.onResume();
113
      
114
      GLSurfaceView v1 = findViewById(R.id.dynamicSurfaceView);
115
      v1.onResume();
116
      DynamicSpeedSurfaceView v2 = findViewById(R.id.dynamicSpeedSurfaceView);
117
      v2.onResume();
118
      }
119

    
120
///////////////////////////////////////////////////////////////////////////////////////////////////
121

    
122
    @Override
123
    protected void onPause() 
124
      {
125
      GLSurfaceView v1 = findViewById(R.id.dynamicSurfaceView);
126
      v1.onPause();
127
      DynamicSpeedSurfaceView v2 = findViewById(R.id.dynamicSpeedSurfaceView);
128
      v2.onPause();
129

    
130
      DistortedLibrary.onPause();
131
      super.onPause();
132
      }
133
    
134
///////////////////////////////////////////////////////////////////////////////////////////////////
135

    
136
    @Override
137
    public void onStop()
138
      {
139
      super.onStop();
140
      }
141

    
142
///////////////////////////////////////////////////////////////////////////////////////////////////
143

    
144
    @Override
145
    public void onDestroy()
146
      {  
147
      DistortedLibrary.onDestroy();
148
      super.onDestroy();
149
      }     
150

    
151
///////////////////////////////////////////////////////////////////////////////////////////////////
152

    
153
    void setNumRedPoints(int numPoints)
154
      {
155
      DynamicSpeedSurfaceView view = findViewById(R.id.dynamicSpeedSurfaceView);
156
      view.setNumRedPoints(numPoints);
157
      }
158

    
159
///////////////////////////////////////////////////////////////////////////////////////////////////
160

    
161
    void addPoint(float x, float y)
162
      {
163
      DynamicSpeedSurfaceView view = findViewById(R.id.dynamicSpeedSurfaceView);
164
      view.addPoint(x,y);
165
      }
166

    
167
///////////////////////////////////////////////////////////////////////////////////////////////////
168

    
169
    void clearPoints()
170
      {
171
      DynamicSpeedSurfaceView view = findViewById(R.id.dynamicSpeedSurfaceView);
172
      view.clearPoints();
173
      }
174

    
175
///////////////////////////////////////////////////////////////////////////////////////////////////
176

    
177
    public void setDim(int dim)
178
      {
179
      DynamicSurfaceView view = findViewById(R.id.dynamicSurfaceView);
180
      view.setDimension(dim);
181
      mDim = dim;
182
      }
183

    
184
///////////////////////////////////////////////////////////////////////////////////////////////////
185

    
186
    public void setMode(int mode)
187
      {
188
      DynamicSurfaceView v1 = findViewById(R.id.dynamicSurfaceView);
189
      v1.setMode(mode);
190
      DynamicSpeedSurfaceView v2 = findViewById(R.id.dynamicSpeedSurfaceView);
191
      v2.setMode(mode);
192

    
193
      mMode = mode;
194
      }
195

    
196
///////////////////////////////////////////////////////////////////////////////////////////////////
197

    
198
    public void Start(View v)
199
      {
200
      DynamicSpeedSurfaceView v2 = findViewById(R.id.dynamicSpeedSurfaceView);
201
      v2.clearPoints();
202
      DynamicSurfaceView v1 = findViewById(R.id.dynamicSurfaceView);
203
      v1.startDynamic();
204
      }
205

    
206
///////////////////////////////////////////////////////////////////////////////////////////////////
207

    
208
    public void Reset(View v)
209
      {
210
      DynamicSurfaceView view = findViewById(R.id.dynamicSurfaceView);
211
      view.resetPoints();
212
      view.stopDynamic();
213
      }
214

    
215
///////////////////////////////////////////////////////////////////////////////////////////////////
216

    
217
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id)
218
      {
219
      int spinnerID = parent.getId();
220

    
221
      if( spinnerID == R.id.dynamicSpinnerDimension )
222
        {
223
        switch(pos)
224
          {
225
          case 0: setDim(DynamicSurfaceView.DIM_1D  ); break;
226
          case 1: setDim(DynamicSurfaceView.DIM_2D  ); break;
227
          case 2: setDim(DynamicSurfaceView.DIM_3DXY); break;
228
          case 3: setDim(DynamicSurfaceView.DIM_3DXZ); break;
229
          }
230
        }
231
      else if( spinnerID == R.id.dynamicSpinnerMode )
232
        {
233
        switch(pos)
234
          {
235
          case 0: setMode(Dynamic.MODE_LOOP); break;
236
          case 1: setMode(Dynamic.MODE_PATH); break;
237
          case 2: setMode(Dynamic.MODE_JUMP); break;
238
          }
239
        }
240
      }
241

    
242
///////////////////////////////////////////////////////////////////////////////////////////////////
243

    
244
    @Override
245
    public void onSaveInstanceState(Bundle savedInstanceState)
246
      {
247
      super.onSaveInstanceState(savedInstanceState);
248

    
249
      savedInstanceState.putInt("dim" , mDim );
250
      savedInstanceState.putInt("mode", mMode);
251
      }
252

    
253
///////////////////////////////////////////////////////////////////////////////////////////////////
254

    
255
    @Override
256
    public void onRestoreInstanceState(Bundle savedInstanceState)
257
      {
258
      super.onRestoreInstanceState(savedInstanceState);
259

    
260
      mDim = savedInstanceState.getInt("dim");
261
      mMode= savedInstanceState.getInt("mode");
262

    
263
      setDim(mDim);
264
      setMode(mMode);
265
      }
266

    
267
///////////////////////////////////////////////////////////////////////////////////////////////////
268

    
269
    public void onProgressChanged(SeekBar bar, int progress, boolean fromUser) 
270
      {
271
      DynamicSurfaceView view = findViewById(R.id.dynamicSurfaceView);
272
      int id = bar.getId();
273

    
274
      if( id == R.id.dynamicSeekDuration )
275
        {
276
        float v = progress*200;
277
        int i = (int)(v/100);
278
        float t = i/10.0f;
279
        view.setDuration((int)v);
280
        textD.setText(getString(R.string.duration_placeholder, (int)t ));
281
        }
282
      else if( id == R.id.dynamicSeekCount )
283
        {
284
        float count = progress*0.05f;
285
        view.setCount(count);
286
        textC.setText(getString(R.string.count_placeholder, count ));
287
        }
288
      else
289
        {
290
        switch(id)
291
          {
292
          case R.id.dynamicSeekNoise0  : p0 = progress; break;
293
          case R.id.dynamicSeekNoise1  : p1 = progress; break;
294
          case R.id.dynamicSeekNoise2  : p2 = progress; break;
295
          }
296

    
297
        view.setNoise(p0/100.0f,p1/100.0f,p2/100.0f);
298
        textN.setText(getString(R.string.noise2_placeholder, (p0/100.f) , (p1/100.f), (p2/100.f) ));
299
        }
300
      }
301

    
302
///////////////////////////////////////////////////////////////////////////////////////////////////
303

    
304
    public void onStartTrackingTouch(SeekBar bar) { }
305
    public void onStopTrackingTouch(SeekBar bar)  { }
306
    public void onNothingSelected(AdapterView<?> parent) { }
307
}
(1-1/4)