Project

General

Profile

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

examples / src / main / java / org / distorted / examples / dynamic / DynamicActivity.java @ 2666a48c

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
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
38 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
39 427ab7bf Leszek Koltunski
40 2666a48c Leszek Koltunski
public class DynamicActivity extends Activity implements OnSeekBarChangeListener, AdapterView.OnItemSelectedListener
41 427ab7bf Leszek Koltunski
    {
42 2666a48c Leszek Koltunski
    private TextView textD, textC, textN;
43 b5636dbf leszek
    private int p0,p1,p2;
44
    private int mDim, mMode;
45 8b7c0ab3 Leszek Koltunski
46 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
47 427ab7bf Leszek Koltunski
    @Override
48 b5636dbf leszek
    protected void onCreate(Bundle savedState)
49 427ab7bf Leszek Koltunski
      {
50 b5636dbf leszek
      super.onCreate(savedState);
51 8b7c0ab3 Leszek Koltunski
      setContentView(R.layout.dynamicslayout);
52
53 2666a48c Leszek Koltunski
      textD = findViewById(R.id.dynamicTextDuration);
54
      textC = findViewById(R.id.dynamicTextCount);
55
      textN = findViewById(R.id.dynamicTextNoise);
56 8b7c0ab3 Leszek Koltunski
57 b5636dbf leszek
      p0=p1=p2=0;
58
      mDim = DynamicSurfaceView.DIM_2D;
59
      mMode= Dynamic1D.MODE_LOOP;
60
61 2666a48c Leszek Koltunski
      SeekBar barD = findViewById(R.id.dynamicSeekDuration);
62 b5636dbf leszek
      barD.setOnSeekBarChangeListener(this);
63 2666a48c Leszek Koltunski
      SeekBar barC = findViewById(R.id.dynamicSeekCount);
64
      barC.setOnSeekBarChangeListener(this);
65
      SeekBar bar0 = findViewById(R.id.dynamicSeekNoise0);
66 b5636dbf leszek
      bar0.setOnSeekBarChangeListener(this);
67 2666a48c Leszek Koltunski
      SeekBar bar1 = findViewById(R.id.dynamicSeekNoise1);
68 b5636dbf leszek
      bar1.setOnSeekBarChangeListener(this);
69 2666a48c Leszek Koltunski
      SeekBar bar2 = findViewById(R.id.dynamicSeekNoise2);
70 b5636dbf leszek
      bar2.setOnSeekBarChangeListener(this);
71
72 2666a48c Leszek Koltunski
      Spinner dimensionSpinner  = findViewById(R.id.dynamicSpinnerDimension);
73
      dimensionSpinner.setOnItemSelectedListener(this);
74
      String[] dimensions = { "Dimension 1" , "Dimension 2" , "Dimension 3 (XY)" , "Dimension 3 (XZ)" };
75
76
      ArrayAdapter<String> adapterDim = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, dimensions );
77
      adapterDim.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
78
      dimensionSpinner.setAdapter(adapterDim);
79
      dimensionSpinner.setSelection(1);
80
81
      Spinner modeSpinner  = findViewById(R.id.dynamicSpinnerMode);
82
      modeSpinner.setOnItemSelectedListener(this);
83
      String[] modes = { "MODE_LOOP" , "MODE_PATH" , "MODE_JUMP" };
84
85
      ArrayAdapter<String> adapterMode = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, modes );
86
      adapterMode.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
87
      modeSpinner.setAdapter(adapterMode);
88
89 b5636dbf leszek
      if( savedState==null )
90
        {
91
        barD.setProgress(50);
92 2666a48c Leszek Koltunski
        barC.setProgress(20);
93 b5636dbf leszek
        bar0.setProgress(0);
94
        bar1.setProgress(0);
95
        bar2.setProgress(0);
96
        }
97 427ab7bf Leszek Koltunski
      }
98
99 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
100 427ab7bf Leszek Koltunski
    @Override
101
    protected void onResume() 
102
      {
103
      super.onResume();
104
      
105 2666a48c Leszek Koltunski
      GLSurfaceView view = findViewById(R.id.dynamicSurfaceView);
106 fe3c72ce Leszek Koltunski
      view.onResume();
107 427ab7bf Leszek Koltunski
      }
108
109 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
110 427ab7bf Leszek Koltunski
    @Override
111
    protected void onPause() 
112
      {
113 2666a48c Leszek Koltunski
      GLSurfaceView view = findViewById(R.id.dynamicSurfaceView);
114 fe3c72ce Leszek Koltunski
      view.onPause();
115 b0ebdf5e Leszek Koltunski
116 e3900503 Leszek Koltunski
      DistortedLibrary.onPause();
117 427ab7bf Leszek Koltunski
      super.onPause();
118
      }
119
    
120 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
121 427ab7bf Leszek Koltunski
    @Override
122
    public void onStop()
123
      {
124
      super.onStop();
125
      }
126
127 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
128 427ab7bf Leszek Koltunski
    @Override
129
    public void onDestroy()
130
      {  
131 e3900503 Leszek Koltunski
      DistortedLibrary.onDestroy();
132 427ab7bf Leszek Koltunski
      super.onDestroy();
133
      }     
134
135 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
136 427ab7bf Leszek Koltunski
137 2666a48c Leszek Koltunski
    public void setDim(int dim)
138 427ab7bf Leszek Koltunski
      {
139 2666a48c Leszek Koltunski
      DynamicSurfaceView view = findViewById(R.id.dynamicSurfaceView);
140
      view.setDimension(dim);
141
      mDim = dim;
142
      }
143
144 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
145 427ab7bf Leszek Koltunski
146 2666a48c Leszek Koltunski
    public void setMode(int mode)
147 427ab7bf Leszek Koltunski
      {
148 2666a48c Leszek Koltunski
      DynamicSurfaceView view = findViewById(R.id.dynamicSurfaceView);
149
      view.setMode(mode);
150
      mMode = mode;
151
      }
152 427ab7bf Leszek Koltunski
153 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
154 427ab7bf Leszek Koltunski
155 2666a48c Leszek Koltunski
    public void Start(View v)
156 427ab7bf Leszek Koltunski
      {
157 2666a48c Leszek Koltunski
      DynamicSurfaceView view = findViewById(R.id.dynamicSurfaceView);
158
      view.startDynamic();
159
      }
160
161 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
162 427ab7bf Leszek Koltunski
163 2666a48c Leszek Koltunski
    public void Reset(View v)
164 427ab7bf Leszek Koltunski
      {
165 2666a48c Leszek Koltunski
      DynamicSurfaceView view = findViewById(R.id.dynamicSurfaceView);
166
      view.resetPoints();
167
      view.stopDynamic();
168
      }
169 427ab7bf Leszek Koltunski
170 b5636dbf leszek
///////////////////////////////////////////////////////////////////////////////////////////////////
171 427ab7bf Leszek Koltunski
172 2666a48c Leszek Koltunski
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id)
173 427ab7bf Leszek Koltunski
      {
174 2666a48c Leszek Koltunski
      int spinnerID = parent.getId();
175
176
      if( spinnerID == R.id.dynamicSpinnerDimension )
177
        {
178
        switch(pos)
179
          {
180
          case 0: setDim(DynamicSurfaceView.DIM_1D  ); break;
181
          case 1: setDim(DynamicSurfaceView.DIM_2D  ); break;
182
          case 2: setDim(DynamicSurfaceView.DIM_3DXY); break;
183
          case 3: setDim(DynamicSurfaceView.DIM_3DXZ); break;
184
          }
185
        }
186
      else if( spinnerID == R.id.dynamicSpinnerMode )
187
        {
188
        switch(pos)
189
          {
190
          case 0: setMode(Dynamic.MODE_LOOP); break;
191
          case 1: setMode(Dynamic.MODE_PATH); break;
192
          case 2: setMode(Dynamic.MODE_JUMP); break;
193
          }
194
        }
195
      }
196 b5636dbf leszek
197
///////////////////////////////////////////////////////////////////////////////////////////////////
198
199
    @Override
200
    public void onSaveInstanceState(Bundle savedInstanceState)
201
      {
202
      super.onSaveInstanceState(savedInstanceState);
203
204
      savedInstanceState.putInt("dim" , mDim );
205
      savedInstanceState.putInt("mode", mMode);
206
      }
207
208
///////////////////////////////////////////////////////////////////////////////////////////////////
209
210
    @Override
211
    public void onRestoreInstanceState(Bundle savedInstanceState)
212
      {
213
      super.onRestoreInstanceState(savedInstanceState);
214
215
      mDim = savedInstanceState.getInt("dim");
216
      mMode= savedInstanceState.getInt("mode");
217
218 2666a48c Leszek Koltunski
      setDim(mDim);
219
      setMode(mMode);
220 b5636dbf leszek
      }
221
222 2666a48c Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
223
224 427ab7bf Leszek Koltunski
    public void onProgressChanged(SeekBar bar, int progress, boolean fromUser) 
225
      {
226 2666a48c Leszek Koltunski
      DynamicSurfaceView view = findViewById(R.id.dynamicSurfaceView);
227 8b7c0ab3 Leszek Koltunski
      int id = bar.getId();
228
229
      if( id == R.id.dynamicSeekDuration )
230
        {
231
        float v = progress*200;
232
        int i = (int)(v/100);
233
        float t = i/10.0f;
234 fe3c72ce Leszek Koltunski
        view.setDuration((int)v);
235 2666a48c Leszek Koltunski
        textD.setText(getString(R.string.duration_placeholder, (int)t ));
236
        }
237
      else if( id == R.id.dynamicSeekCount )
238
        {
239
        float count = progress*0.05f;
240
        view.setCount(count);
241
        textC.setText(getString(R.string.count_placeholder, count ));
242 8b7c0ab3 Leszek Koltunski
        }
243
      else
244 427ab7bf Leszek Koltunski
        {
245 8b7c0ab3 Leszek Koltunski
        switch(id)
246
          {
247 b5636dbf leszek
          case R.id.dynamicSeekNoise0  : p0 = progress; break;
248
          case R.id.dynamicSeekNoise1  : p1 = progress; break;
249
          case R.id.dynamicSeekNoise2  : p2 = progress; break;
250 8b7c0ab3 Leszek Koltunski
          }
251
252 b5636dbf leszek
        view.setNoise(p0/100.0f,p1/100.0f,p2/100.0f);
253 2666a48c Leszek Koltunski
        textN.setText(getString(R.string.noise2_placeholder, (p0/100.f) , (p1/100.f), (p2/100.f) ));
254 427ab7bf Leszek Koltunski
        }
255
      }
256
257 2666a48c Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
258 427ab7bf Leszek Koltunski
259
    public void onStartTrackingTouch(SeekBar bar) { }
260
    public void onStopTrackingTouch(SeekBar bar)  { }
261 2666a48c Leszek Koltunski
    public void onNothingSelected(AdapterView<?> parent) { }
262 427ab7bf Leszek Koltunski
}