Project

General

Profile

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

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

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.View;
31
import android.widget.AdapterView;
32
import android.widget.ArrayAdapter;
33
import android.widget.SeekBar;
34
import android.widget.Spinner;
35
import android.widget.TextView;
36
import android.widget.SeekBar.OnSeekBarChangeListener;
37

    
38
///////////////////////////////////////////////////////////////////////////////////////////////////
39

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

    
46
///////////////////////////////////////////////////////////////////////////////////////////////////
47
    @Override
48
    protected void onCreate(Bundle savedState)
49
      {
50
      super.onCreate(savedState);
51
      setContentView(R.layout.dynamicslayout);
52

    
53
      textD = findViewById(R.id.dynamicTextDuration);
54
      textC = findViewById(R.id.dynamicTextCount);
55
      textN = findViewById(R.id.dynamicTextNoise);
56

    
57
      p0=p1=p2=0;
58
      mDim = DynamicSurfaceView.DIM_2D;
59
      mMode= Dynamic1D.MODE_LOOP;
60

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

    
72
      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
      if( savedState==null )
90
        {
91
        barD.setProgress(50);
92
        barC.setProgress(20);
93
        bar0.setProgress(0);
94
        bar1.setProgress(0);
95
        bar2.setProgress(0);
96
        }
97
      }
98

    
99
///////////////////////////////////////////////////////////////////////////////////////////////////
100
    @Override
101
    protected void onResume() 
102
      {
103
      super.onResume();
104
      
105
      GLSurfaceView view = findViewById(R.id.dynamicSurfaceView);
106
      view.onResume();
107
      }
108

    
109
///////////////////////////////////////////////////////////////////////////////////////////////////
110
    @Override
111
    protected void onPause() 
112
      {
113
      GLSurfaceView view = findViewById(R.id.dynamicSurfaceView);
114
      view.onPause();
115

    
116
      DistortedLibrary.onPause();
117
      super.onPause();
118
      }
119
    
120
///////////////////////////////////////////////////////////////////////////////////////////////////
121
    @Override
122
    public void onStop()
123
      {
124
      super.onStop();
125
      }
126

    
127
///////////////////////////////////////////////////////////////////////////////////////////////////
128
    @Override
129
    public void onDestroy()
130
      {  
131
      DistortedLibrary.onDestroy();
132
      super.onDestroy();
133
      }     
134

    
135
///////////////////////////////////////////////////////////////////////////////////////////////////
136

    
137
    public void setDim(int dim)
138
      {
139
      DynamicSurfaceView view = findViewById(R.id.dynamicSurfaceView);
140
      view.setDimension(dim);
141
      mDim = dim;
142
      }
143

    
144
///////////////////////////////////////////////////////////////////////////////////////////////////
145

    
146
    public void setMode(int mode)
147
      {
148
      DynamicSurfaceView view = findViewById(R.id.dynamicSurfaceView);
149
      view.setMode(mode);
150
      mMode = mode;
151
      }
152

    
153
///////////////////////////////////////////////////////////////////////////////////////////////////
154

    
155
    public void Start(View v)
156
      {
157
      DynamicSurfaceView view = findViewById(R.id.dynamicSurfaceView);
158
      view.startDynamic();
159
      }
160

    
161
///////////////////////////////////////////////////////////////////////////////////////////////////
162

    
163
    public void Reset(View v)
164
      {
165
      DynamicSurfaceView view = findViewById(R.id.dynamicSurfaceView);
166
      view.resetPoints();
167
      view.stopDynamic();
168
      }
169

    
170
///////////////////////////////////////////////////////////////////////////////////////////////////
171

    
172
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id)
173
      {
174
      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

    
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
      setDim(mDim);
219
      setMode(mMode);
220
      }
221

    
222
///////////////////////////////////////////////////////////////////////////////////////////////////
223

    
224
    public void onProgressChanged(SeekBar bar, int progress, boolean fromUser) 
225
      {
226
      DynamicSurfaceView view = findViewById(R.id.dynamicSurfaceView);
227
      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
        view.setDuration((int)v);
235
        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
        }
243
      else
244
        {
245
        switch(id)
246
          {
247
          case R.id.dynamicSeekNoise0  : p0 = progress; break;
248
          case R.id.dynamicSeekNoise1  : p1 = progress; break;
249
          case R.id.dynamicSeekNoise2  : p2 = progress; break;
250
          }
251

    
252
        view.setNoise(p0/100.0f,p1/100.0f,p2/100.0f);
253
        textN.setText(getString(R.string.noise2_placeholder, (p0/100.f) , (p1/100.f), (p2/100.f) ));
254
        }
255
      }
256

    
257
///////////////////////////////////////////////////////////////////////////////////////////////////
258

    
259
    public void onStartTrackingTouch(SeekBar bar) { }
260
    public void onStopTrackingTouch(SeekBar bar)  { }
261
    public void onNothingSelected(AdapterView<?> parent) { }
262
}
(1-1/3)