Project

General

Profile

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

examples / src / main / java / org / distorted / examples / vertex3d / Vertex3DActivity.java @ bcc8e016

1 08f92d82 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
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.vertex3d;
21
22
import android.app.Activity;
23
import android.opengl.GLSurfaceView;
24
import android.os.Bundle;
25 d40cfeb2 Leszek Koltunski
import android.view.Gravity;
26 08f92d82 Leszek Koltunski
import android.view.View;
27 50ac40a6 Leszek Koltunski
import android.widget.AdapterView;
28
import android.widget.ArrayAdapter;
29 d40cfeb2 Leszek Koltunski
import android.widget.Button;
30 08f92d82 Leszek Koltunski
import android.widget.LinearLayout;
31 d40cfeb2 Leszek Koltunski
import android.widget.NumberPicker;
32 08f92d82 Leszek Koltunski
import android.widget.SeekBar;
33
import android.widget.SeekBar.OnSeekBarChangeListener;
34 50ac40a6 Leszek Koltunski
import android.widget.Spinner;
35 d40cfeb2 Leszek Koltunski
import android.widget.TableRow;
36 08f92d82 Leszek Koltunski
import android.widget.TextView;
37
38
import org.distorted.examples.R;
39
import org.distorted.library.Distorted;
40 50ac40a6 Leszek Koltunski
import org.distorted.library.DistortedBitmap;
41
import org.distorted.library.DistortedCubes;
42
import org.distorted.library.DistortedObject;
43 08f92d82 Leszek Koltunski
import org.distorted.library.EffectNames;
44
45
///////////////////////////////////////////////////////////////////////////////////////////////////
46
47 50ac40a6 Leszek Koltunski
public class Vertex3DActivity extends Activity
48
                              implements OnSeekBarChangeListener,
49
                                         View.OnClickListener,
50
                                         AdapterView.OnItemSelectedListener
51 d40cfeb2 Leszek Koltunski
  {
52 50ac40a6 Leszek Koltunski
  private static final int COLOR_OFF = 0xffffe81f;
53
  private static final int COLOR_ON  = 0xff0000ff;
54
55 d40cfeb2 Leszek Koltunski
  private boolean firstScreen;
56
57
  // fields needed for the first 'pick-a-shape' screen
58
  //
59 50ac40a6 Leszek Koltunski
  private int mNumCols = 3;
60
  private int mNumRows = 3;
61 d40cfeb2 Leszek Koltunski
  private NumberPicker mColsPicker, mRowsPicker;
62
  private LinearLayout mLay;
63 50ac40a6 Leszek Koltunski
  private boolean[] mShape;
64 bcc8e016 Leszek Koltunski
  private DistortedObject mObject;
65
  private int mObjectType;
66
  private int mBitmap;
67 d40cfeb2 Leszek Koltunski
68
  // fields needed for the second 'apply vertex effects' screen
69
  //
70
  private SeekBar bar;
71 794e6c4f Leszek Koltunski
  private TextView textDeform, textDistort, textSink, textSwirl, textCenter;
72 d40cfeb2 Leszek Koltunski
  private int deformX, deformY, deformZ;
73
  private int distortX, distortY, distortZ;
74
  private int sinkA;
75
  private int swirlA;
76 794e6c4f Leszek Koltunski
  private int centerX, centerY;
77 d40cfeb2 Leszek Koltunski
78
  private float fdeformX, fdeformY, fdeformZ;
79
  private float fdistortX, fdistortY, fdistortZ;
80
  private float fsinkA;
81
  private float fswirlA;
82 794e6c4f Leszek Koltunski
  private float fcenterX, fcenterY;
83 d40cfeb2 Leszek Koltunski
  private EffectNames[] effects = new EffectNames[4];
84 bcc8e016 Leszek Koltunski
85 50ac40a6 Leszek Koltunski
86 08f92d82 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
87
    
88 d40cfeb2 Leszek Koltunski
  @Override
89
  protected void onCreate(Bundle savedState)
90
    {
91
    super.onCreate(savedState);
92
93 50ac40a6 Leszek Koltunski
    setContentView(R.layout.objectpickerlayout);
94 d40cfeb2 Leszek Koltunski
95 50ac40a6 Leszek Koltunski
    mColsPicker = (NumberPicker)findViewById(R.id.objectpicker_cols);
96
    mRowsPicker = (NumberPicker)findViewById(R.id.objectpicker_rows);
97 d40cfeb2 Leszek Koltunski
98
    mColsPicker.setMaxValue(10);
99
    mColsPicker.setMinValue( 0);
100
    mRowsPicker.setMaxValue(10);
101
    mRowsPicker.setMinValue( 0);
102
103
    mColsPicker.setOnValueChangedListener(new NumberPicker.OnValueChangeListener()
104 08f92d82 Leszek Koltunski
      {
105 d40cfeb2 Leszek Koltunski
      @Override
106
      public void onValueChange(NumberPicker picker, int oldVal, int newVal)
107
        {
108 bcc8e016 Leszek Koltunski
        mNumCols = mColsPicker.getValue();
109 d40cfeb2 Leszek Koltunski
        }
110
      });
111
112
    mRowsPicker.setOnValueChangedListener(new NumberPicker.OnValueChangeListener()
113
      {
114
      @Override
115
      public void onValueChange(NumberPicker picker, int oldVal, int newVal)
116
        {
117 bcc8e016 Leszek Koltunski
        mNumRows = mRowsPicker.getValue();
118 d40cfeb2 Leszek Koltunski
        }
119
      });
120
121
    firstScreen = true;
122
123 50ac40a6 Leszek Koltunski
    mObjectType = 0;
124 d40cfeb2 Leszek Koltunski
125 50ac40a6 Leszek Koltunski
    Spinner typeSpinner  = (Spinner)findViewById(R.id.objectpicker_spinnerType);
126
    typeSpinner.setOnItemSelectedListener(this);
127 d40cfeb2 Leszek Koltunski
128 50ac40a6 Leszek Koltunski
    String[] objectType = new String[] {"DistortedCubes", "DistortedBitmap"};
129 d40cfeb2 Leszek Koltunski
130 bcc8e016 Leszek Koltunski
    ArrayAdapter<String> adapterType = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, objectType);
131
    adapterType.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
132
    typeSpinner.setAdapter(adapterType);
133
134
    Spinner bitmapSpinner  = (Spinner)findViewById(R.id.objectpicker_spinnerBitmap);
135
    bitmapSpinner.setOnItemSelectedListener(this);
136
137
    String[] objectBitmap = new String[] {"Girl", "Dog", "Cat", "Grid"};
138
139
    ArrayAdapter<String> adapterBitmap = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, objectBitmap);
140
    adapterBitmap.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
141
    bitmapSpinner.setAdapter(adapterBitmap);
142 d40cfeb2 Leszek Koltunski
    }
143
144
///////////////////////////////////////////////////////////////////////////////////////////////////
145
146 50ac40a6 Leszek Koltunski
  private void setGrid()
147 d40cfeb2 Leszek Koltunski
    {
148 bcc8e016 Leszek Koltunski
    mLay = (LinearLayout)findViewById(R.id.objectpicker_buttongrid);
149 d40cfeb2 Leszek Koltunski
150
    int width = mLay.getWidth();
151
    int height= mLay.getHeight();
152
    int w = mNumCols>0 ? (width / mNumCols) -10 : 0;
153
    int h = mNumRows>0 ? (height/ mNumRows) -10 : 0;
154
    int size= w<h ? w:h;
155
    int pad = size/20;
156
157
    mLay.removeAllViews();
158
159
    mShape = new boolean[mNumRows*mNumCols];
160
161
    TableRow.LayoutParams p = new android.widget.TableRow.LayoutParams();
162
163
    p.rightMargin  = pad;
164
    p.leftMargin   = pad;
165
    p.topMargin    = pad;
166
    p.bottomMargin = pad;
167
    p.height       = size;
168
    p.width        = size;
169
170
    for (int rows=0; rows<mNumRows; rows++)
171 08f92d82 Leszek Koltunski
      {
172 d40cfeb2 Leszek Koltunski
      TableRow tr = new TableRow(this);
173
      tr.setGravity(Gravity.CENTER);
174
175
      for(int cols=0; cols<mNumCols; cols++)
176
        {
177
        Button b = new Button(this);
178
        b.setOnClickListener(this);
179
        b.setId(rows*mNumCols+cols);
180
        b.setLayoutParams(p);
181 bcc8e016 Leszek Koltunski
        b.setBackgroundColor(COLOR_ON);
182 d40cfeb2 Leszek Koltunski
        tr.addView(b, p);
183 bcc8e016 Leszek Koltunski
        mShape[rows*mNumCols+cols] = true;
184 d40cfeb2 Leszek Koltunski
        }
185
186
      mLay.addView(tr);
187
      }
188
    }
189
190 50ac40a6 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
191
192
  public DistortedObject getObject()
193
    {
194
    return mObject;
195
    }
196
197 d40cfeb2 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
198
199
  public void onClick(View view)
200
    {
201
    Button tmp = (Button)view;
202
    int id = tmp.getId();
203
    mShape[id] = !mShape[id];
204
    tmp.setBackgroundColor(mShape[id] ? COLOR_ON:COLOR_OFF);
205
    }
206
207
///////////////////////////////////////////////////////////////////////////////////////////////////
208
209 bcc8e016 Leszek Koltunski
  public int getBitmap()
210 d40cfeb2 Leszek Koltunski
    {
211 bcc8e016 Leszek Koltunski
    return mBitmap;
212
    }
213
214
///////////////////////////////////////////////////////////////////////////////////////////////////
215 50ac40a6 Leszek Koltunski
216 bcc8e016 Leszek Koltunski
  public void Continue(View v)
217
    {
218 50ac40a6 Leszek Koltunski
    if( mObjectType==1 )
219
      {
220 bcc8e016 Leszek Koltunski
      firstScreen = false;
221 50ac40a6 Leszek Koltunski
      mObject = new DistortedBitmap(100,100,mNumCols);
222 bcc8e016 Leszek Koltunski
      setContentView(R.layout.vertex3dlayout);
223
      Default(null);
224 50ac40a6 Leszek Koltunski
      }
225
    else
226
      {
227 bcc8e016 Leszek Koltunski
      View view = getLayoutInflater().inflate(R.layout.objectpicker2layout, null);
228 50ac40a6 Leszek Koltunski
229 bcc8e016 Leszek Koltunski
      setContentView(view);
230 50ac40a6 Leszek Koltunski
231 bcc8e016 Leszek Koltunski
      view.post(new Runnable() {
232
            @Override
233
            public void run() {
234
              setGrid();
235
            }
236
        });
237 50ac40a6 Leszek Koltunski
      }
238 bcc8e016 Leszek Koltunski
    }
239
240
///////////////////////////////////////////////////////////////////////////////////////////////////
241
242
  public void Create(View v)
243
    {
244
    firstScreen = false;
245
246
    String str = "";
247
248
    for(int i=0; i<mNumRows*mNumCols; i++)
249
      str += mShape[i] ? "1" : "0";
250
251
    mObject = new DistortedCubes(mNumCols, str, 10);
252 50ac40a6 Leszek Koltunski
253 d40cfeb2 Leszek Koltunski
    setContentView(R.layout.vertex3dlayout);
254
    Default(null);
255
    }
256
257 50ac40a6 Leszek Koltunski
258
///////////////////////////////////////////////////////////////////////////////////////////////////
259
260
  public void onItemSelected(AdapterView<?> parent, View view, int pos, long id)
261
    {
262
    switch(parent.getId())
263
      {
264 bcc8e016 Leszek Koltunski
      case R.id.objectpicker_spinnerType  : mObjectType = pos; break;
265
      case R.id.objectpicker_spinnerBitmap: switch(pos)
266
                                              {
267
                                              case 0: mBitmap = R.raw.face; break;
268
                                              case 1: mBitmap = R.raw.dog;  break;
269
                                              case 2: mBitmap = R.raw.cat;  break;
270
                                              case 3: mBitmap = R.raw.grid; break;
271
                                              }
272
                                            break;
273 50ac40a6 Leszek Koltunski
      }
274
    }
275
276
///////////////////////////////////////////////////////////////////////////////////////////////////
277
278
  public void onNothingSelected(AdapterView<?> parent)
279
    {
280
    }
281
282 d40cfeb2 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
283
// 'second screen' methods
284
285
  public void Default(View view)
286
    {
287
    effects[0] = EffectNames.DEFORM;
288
    effects[1] = EffectNames.DISTORT;
289
    effects[2] = EffectNames.SINK;
290
    effects[3] = EffectNames.SWIRL;
291 08f92d82 Leszek Koltunski
    
292 d40cfeb2 Leszek Koltunski
    deformX = 50;
293
    deformY = 50;
294
    deformZ = 50;
295 e2d8ea1d Leszek Koltunski
296 d40cfeb2 Leszek Koltunski
    distortX = 50;
297
    distortY = 50;
298
    distortZ = 50;
299 e2d8ea1d Leszek Koltunski
300 d40cfeb2 Leszek Koltunski
    sinkA =  50;
301
    swirlA = 50;
302 e2d8ea1d Leszek Koltunski
303 d2337a3a Leszek Koltunski
    centerX = 50;
304
    centerY = 50;
305 794e6c4f Leszek Koltunski
306
    textCenter = (TextView)findViewById(R.id.vertex3dcenterText);
307 d2337a3a Leszek Koltunski
    computeCenter();
308 794e6c4f Leszek Koltunski
    setCenterText();
309
310
    setBar(R.id.vertex3dcenterX, centerX);
311
    setBar(R.id.vertex3dcenterY, centerY);
312
313 d40cfeb2 Leszek Koltunski
    addViews();
314
    }
315 08f92d82 Leszek Koltunski
    
316
///////////////////////////////////////////////////////////////////////////////////////////////////
317
    
318 d40cfeb2 Leszek Koltunski
  private void addViews()
319
    {
320
    LinearLayout layout = (LinearLayout)findViewById(R.id.vertex3dlayout);
321 08f92d82 Leszek Koltunski
    
322 d40cfeb2 Leszek Koltunski
    layout.removeAllViews();
323 08f92d82 Leszek Koltunski
      
324 d40cfeb2 Leszek Koltunski
    View deform = getLayoutInflater().inflate(R.layout.vertex3ddeform , null);
325
    View distort= getLayoutInflater().inflate(R.layout.vertex3ddistort, null);
326
    View sink   = getLayoutInflater().inflate(R.layout.vertex3dsink   , null);
327
    View swirl  = getLayoutInflater().inflate(R.layout.vertex3dswirl  , null);
328 08f92d82 Leszek Koltunski
     
329 d40cfeb2 Leszek Koltunski
    for( int i=effects.length-1 ; i>=0 ; i-- )
330
      {
331
      switch(effects[i])
332 08f92d82 Leszek Koltunski
        {
333 d40cfeb2 Leszek Koltunski
        case DEFORM : layout.addView(deform , 0); break;
334
        case DISTORT: layout.addView(distort, 0); break;
335
        case SINK   : layout.addView(sink   , 0); break;
336
        case SWIRL  : layout.addView(swirl  , 0); break;
337 08f92d82 Leszek Koltunski
        }
338 d40cfeb2 Leszek Koltunski
      }
339 08f92d82 Leszek Koltunski
      
340 d40cfeb2 Leszek Koltunski
    textDeform = (TextView)findViewById(R.id.vertex3ddeformText);
341
    textDistort= (TextView)findViewById(R.id.vertex3ddistortText);
342
    textSink   = (TextView)findViewById(R.id.vertex3dsinkText);
343
    textSwirl  = (TextView)findViewById(R.id.vertex3dswirlText);
344 08f92d82 Leszek Koltunski
     
345 d40cfeb2 Leszek Koltunski
    setDeformText();
346
    setDistortText();
347
    setSinkText();
348
    setSwirlText();
349 08f92d82 Leszek Koltunski
      
350 d40cfeb2 Leszek Koltunski
    setBar(R.id.vertex3ddeformBar1, deformX);
351
    setBar(R.id.vertex3ddeformBar2, deformY);
352
    setBar(R.id.vertex3ddeformBar3, deformZ);
353 08f92d82 Leszek Koltunski
354 d40cfeb2 Leszek Koltunski
    setBar(R.id.vertex3ddistortBar1, distortX);
355
    setBar(R.id.vertex3ddistortBar2, distortY);
356
    setBar(R.id.vertex3ddistortBar3, distortZ);
357 08f92d82 Leszek Koltunski
      
358 d40cfeb2 Leszek Koltunski
    setBar(R.id.vertex3dsinkBar1, sinkA);
359 e2d8ea1d Leszek Koltunski
360 d40cfeb2 Leszek Koltunski
    setBar(R.id.vertex3dswirlBar1, swirlA);
361 e2d8ea1d Leszek Koltunski
362 d2337a3a Leszek Koltunski
    Vertex3DSurfaceView view = (Vertex3DSurfaceView)findViewById(R.id.vertex3dSurfaceView);
363
    view.getRenderer().setOrder(effects);
364 d40cfeb2 Leszek Koltunski
    }
365 08f92d82 Leszek Koltunski
366
///////////////////////////////////////////////////////////////////////////////////////////////////
367
368 d40cfeb2 Leszek Koltunski
  private void moveUp(EffectNames name)
369
    {
370
    int len = effects.length-1;
371
    int index = -1;
372 08f92d82 Leszek Koltunski
373 d40cfeb2 Leszek Koltunski
    for(int i=0; i<=len; i++)
374
      {
375
      if( effects[i]==name )
376 08f92d82 Leszek Koltunski
        {
377 d40cfeb2 Leszek Koltunski
        index=i;
378
        break;
379 08f92d82 Leszek Koltunski
        }
380 d40cfeb2 Leszek Koltunski
      }
381 08f92d82 Leszek Koltunski
382 d40cfeb2 Leszek Koltunski
    if( index==0 )
383
      {
384
      for(int i=0; i<len; i++)
385
        effects[i] = effects[i+1];
386 08f92d82 Leszek Koltunski
387 d40cfeb2 Leszek Koltunski
      effects[len] = name;
388 08f92d82 Leszek Koltunski
      }
389 d40cfeb2 Leszek Koltunski
    else if( index>0 )
390
      {
391
      effects[index]   = effects[index-1];
392
      effects[index-1] = name;
393
      }
394
395
    addViews();
396
    }
397 08f92d82 Leszek Koltunski
398
///////////////////////////////////////////////////////////////////////////////////////////////////
399
400 d40cfeb2 Leszek Koltunski
  public void ButtonDeform(View v)
401
    {
402
    moveUp(EffectNames.DEFORM);
403
    }
404 08f92d82 Leszek Koltunski
405
///////////////////////////////////////////////////////////////////////////////////////////////////
406
407 d40cfeb2 Leszek Koltunski
  public void ButtonDistort(View v)
408
    {
409
    moveUp(EffectNames.DISTORT);
410
    }
411 08f92d82 Leszek Koltunski
412
///////////////////////////////////////////////////////////////////////////////////////////////////
413
414 d40cfeb2 Leszek Koltunski
  public void ButtonSink(View v)
415
    {
416
    moveUp(EffectNames.SINK);
417
    }
418 08f92d82 Leszek Koltunski
419
///////////////////////////////////////////////////////////////////////////////////////////////////
420
421 d40cfeb2 Leszek Koltunski
  public void ButtonSwirl(View v)
422
    {
423
    moveUp(EffectNames.SWIRL);
424
    }
425 08f92d82 Leszek Koltunski
426
///////////////////////////////////////////////////////////////////////////////////////////////////
427
428 d40cfeb2 Leszek Koltunski
  private void setBar(int id, int value)
429
    {
430
    bar = (SeekBar)findViewById(id);
431
    bar.setOnSeekBarChangeListener(this);
432
    bar.setProgress(value);
433
    }
434 08f92d82 Leszek Koltunski
435
///////////////////////////////////////////////////////////////////////////////////////////////////
436
437 d40cfeb2 Leszek Koltunski
  private void computeDeform()
438
    {
439 d2337a3a Leszek Koltunski
    Vertex3DSurfaceView view = (Vertex3DSurfaceView)findViewById(R.id.vertex3dSurfaceView);
440
    Vertex3DRenderer renderer = view.getRenderer();
441 08f92d82 Leszek Koltunski
442 d2337a3a Leszek Koltunski
    fdeformX = (deformX-50)*renderer.mScreenMin/200.0f;
443
    fdeformY = (deformY-50)*renderer.mScreenMin/200.0f;
444
    fdeformZ = (deformZ-50)*renderer.mScreenMin/200.0f;
445
446
    renderer.setDeform( fdeformX, fdeformY, fdeformZ );
447 d40cfeb2 Leszek Koltunski
    }
448 08f92d82 Leszek Koltunski
449
///////////////////////////////////////////////////////////////////////////////////////////////////
450
451 d40cfeb2 Leszek Koltunski
  private void setDeformText()
452
    {
453
    fdeformX = ((int)(100*fdeformX))/100.0f;
454
    fdeformY = ((int)(100*fdeformY))/100.0f;
455
    fdeformZ = ((int)(100*fdeformZ))/100.0f;
456 08f92d82 Leszek Koltunski
457 d40cfeb2 Leszek Koltunski
    textDeform.setText("deform("+fdeformX+" , "+fdeformY+" , "+fdeformZ+")");
458
    }
459 08f92d82 Leszek Koltunski
460
///////////////////////////////////////////////////////////////////////////////////////////////////
461
462 d40cfeb2 Leszek Koltunski
  private void computeDistort()
463
    {
464 d2337a3a Leszek Koltunski
    Vertex3DSurfaceView view = (Vertex3DSurfaceView)findViewById(R.id.vertex3dSurfaceView);
465
    Vertex3DRenderer renderer = view.getRenderer();
466
467
    fdistortX = (distortX-50)*renderer.mScreenMin/200.0f;
468
    fdistortY = (distortY-50)*renderer.mScreenMin/200.0f;
469
    fdistortZ = (distortZ-50)*renderer.mScreenMin/200.0f;
470 08f92d82 Leszek Koltunski
471 d2337a3a Leszek Koltunski
    renderer.setDistort(fdistortX, fdistortY, fdistortZ);
472 d40cfeb2 Leszek Koltunski
    }
473 08f92d82 Leszek Koltunski
474
///////////////////////////////////////////////////////////////////////////////////////////////////
475
476 d40cfeb2 Leszek Koltunski
  private void setDistortText()
477
    {
478
    fdistortX = ((int)(100*fdistortX))/100.0f;
479
    fdistortY = ((int)(100*fdistortY))/100.0f;
480
    fdistortZ = ((int)(100*fdistortZ))/100.0f;
481 08f92d82 Leszek Koltunski
482 d40cfeb2 Leszek Koltunski
    textDistort.setText("distort("+fdistortX+" , "+fdistortY+" , "+fdistortZ+")");
483
    }
484 08f92d82 Leszek Koltunski
485
///////////////////////////////////////////////////////////////////////////////////////////////////
486
487 d40cfeb2 Leszek Koltunski
  private void computeSink()
488
    {
489 d2337a3a Leszek Koltunski
    Vertex3DSurfaceView view = (Vertex3DSurfaceView)findViewById(R.id.vertex3dSurfaceView);
490
491 e642b4aa Leszek Koltunski
    fsinkA = (sinkA>= 50 ? 0.18f*sinkA-8.0f : 0.018f*sinkA + 0.1f);
492 08f92d82 Leszek Koltunski
493 d2337a3a Leszek Koltunski
    view.getRenderer().setSink( fsinkA );
494 d40cfeb2 Leszek Koltunski
    }
495 08f92d82 Leszek Koltunski
496
///////////////////////////////////////////////////////////////////////////////////////////////////
497
498 d40cfeb2 Leszek Koltunski
  private void setSinkText()
499
    {
500
    fsinkA = ((int)(100*fsinkA))/100.0f;
501 08f92d82 Leszek Koltunski
502 d40cfeb2 Leszek Koltunski
    textSink.setText("sink("+fsinkA+")");
503
    }
504 08f92d82 Leszek Koltunski
505
///////////////////////////////////////////////////////////////////////////////////////////////////
506
507 d40cfeb2 Leszek Koltunski
  private void computeSwirl()
508
    {
509 d2337a3a Leszek Koltunski
    Vertex3DSurfaceView view = (Vertex3DSurfaceView)findViewById(R.id.vertex3dSurfaceView);
510
511 d40cfeb2 Leszek Koltunski
    fswirlA = (swirlA-50)*3.6f;
512 08f92d82 Leszek Koltunski
513 d2337a3a Leszek Koltunski
    view.getRenderer().setSwirl( fswirlA );
514 d40cfeb2 Leszek Koltunski
    }
515 08f92d82 Leszek Koltunski
    
516
///////////////////////////////////////////////////////////////////////////////////////////////////
517
518 d40cfeb2 Leszek Koltunski
  private void setSwirlText()
519
    {
520
    fswirlA = ((int)(100*fswirlA))/100.0f;
521 e2d8ea1d Leszek Koltunski
522 d40cfeb2 Leszek Koltunski
    textSwirl.setText("swirl("+fswirlA+")");
523
    }
524 794e6c4f Leszek Koltunski
525
///////////////////////////////////////////////////////////////////////////////////////////////////
526
527
  private void computeCenter()
528
    {
529 d2337a3a Leszek Koltunski
    Vertex3DSurfaceView view = (Vertex3DSurfaceView)findViewById(R.id.vertex3dSurfaceView);
530 794e6c4f Leszek Koltunski
531 d2337a3a Leszek Koltunski
    fcenterX = centerX;
532
    fcenterY = centerY;
533
534
    view.getRenderer().setCenter( fcenterX, fcenterY );
535 794e6c4f Leszek Koltunski
    }
536
537
///////////////////////////////////////////////////////////////////////////////////////////////////
538
539
  private void setCenterText()
540
    {
541
    fcenterX = ((int)(100*fcenterX))/100.0f;
542
    fcenterY = ((int)(100*fcenterY))/100.0f;
543
544
    textCenter.setText("center("+fcenterX+","+fcenterY+")");
545
    }
546
547 d2337a3a Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
548
549
  public float getCenterX()
550
    {
551
    return fcenterX;
552
    }
553
554
///////////////////////////////////////////////////////////////////////////////////////////////////
555
556
  public float getCenterY()
557
    {
558
    return fcenterY;
559
    }
560
561 08f92d82 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
562 d40cfeb2 Leszek Koltunski
// Overrides
563
564
  @Override
565
  protected void onPause()
566
    {
567
    GLSurfaceView mView = (GLSurfaceView)findViewById(R.id.vertex3dSurfaceView);
568
    if( mView!=null ) mView.onPause();
569
    super.onPause();
570
    }
571 08f92d82 Leszek Koltunski
572
///////////////////////////////////////////////////////////////////////////////////////////////////
573
    
574 d40cfeb2 Leszek Koltunski
  @Override
575
  protected void onResume()
576
    {
577
    super.onResume();
578
    GLSurfaceView mView = (GLSurfaceView)findViewById(R.id.vertex3dSurfaceView);
579
    if( mView!=null ) mView.onResume();
580
    }
581 08f92d82 Leszek Koltunski
582
///////////////////////////////////////////////////////////////////////////////////////////////////
583
    
584 d40cfeb2 Leszek Koltunski
  @Override
585
  public void onWindowFocusChanged(boolean hasFocus)
586
    {
587
    super.onWindowFocusChanged(hasFocus);
588
589
    if( firstScreen )
590
      {
591
      mColsPicker.setValue(mNumCols);
592
      mRowsPicker.setValue(mNumRows);
593
      }
594
    }
595 08f92d82 Leszek Koltunski
596
///////////////////////////////////////////////////////////////////////////////////////////////////
597
    
598 d40cfeb2 Leszek Koltunski
  @Override
599
  protected void onDestroy()
600
    {
601
    Distorted.onDestroy();
602
    super.onDestroy();
603
    }
604 08f92d82 Leszek Koltunski
    
605
///////////////////////////////////////////////////////////////////////////////////////////////////
606
    
607 d40cfeb2 Leszek Koltunski
  public void onProgressChanged(SeekBar bar, int progress, boolean fromUser)
608
    {
609
    switch (bar.getId())
610 08f92d82 Leszek Koltunski
      {
611 794e6c4f Leszek Koltunski
      case R.id.vertex3dcenterX     : centerX = progress; computeCenter() ; setCenterText()  ; break;
612
      case R.id.vertex3dcenterY     : centerY = progress; computeCenter() ; setCenterText()  ; break;
613 d40cfeb2 Leszek Koltunski
      case R.id.vertex3ddeformBar1  : deformX = progress; computeDeform() ; setDeformText()  ; break;
614
      case R.id.vertex3ddeformBar2  : deformY = progress; computeDeform() ; setDeformText()  ; break;
615
      case R.id.vertex3ddeformBar3  : deformZ = progress; computeDeform() ; setDeformText()  ; break;
616
      case R.id.vertex3ddistortBar1 : distortX= progress; computeDistort(); setDistortText() ; break;
617
      case R.id.vertex3ddistortBar2 : distortY= progress; computeDistort(); setDistortText() ; break;
618
      case R.id.vertex3ddistortBar3 : distortZ= progress; computeDistort(); setDistortText() ; break;
619
      case R.id.vertex3dsinkBar1    : sinkA   = progress; computeSink()   ; setSinkText()    ; break;
620
      case R.id.vertex3dswirlBar1   : swirlA  = progress; computeSwirl()  ; setSwirlText()   ; break;
621 08f92d82 Leszek Koltunski
      }
622 d40cfeb2 Leszek Koltunski
    }
623 08f92d82 Leszek Koltunski
624
///////////////////////////////////////////////////////////////////////////////////////////////////
625
626 d40cfeb2 Leszek Koltunski
  public void onStartTrackingTouch(SeekBar bar) { }
627 08f92d82 Leszek Koltunski
    
628
///////////////////////////////////////////////////////////////////////////////////////////////////
629
630 d40cfeb2 Leszek Koltunski
  public void onStopTrackingTouch(SeekBar bar)  { }
631
  }