Project

General

Profile

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

examples / src / main / java / org / distorted / examples / vertex3d / Vertex3DActivity.java @ 9167cfd4

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 9167cfd4 Leszek Koltunski
import android.graphics.Bitmap;
24
import android.graphics.BitmapFactory;
25
import android.graphics.Canvas;
26
import android.graphics.Paint;
27 08f92d82 Leszek Koltunski
import android.opengl.GLSurfaceView;
28
import android.os.Bundle;
29 d40cfeb2 Leszek Koltunski
import android.view.Gravity;
30 08f92d82 Leszek Koltunski
import android.view.View;
31 50ac40a6 Leszek Koltunski
import android.widget.AdapterView;
32
import android.widget.ArrayAdapter;
33 d40cfeb2 Leszek Koltunski
import android.widget.Button;
34 08f92d82 Leszek Koltunski
import android.widget.LinearLayout;
35 d40cfeb2 Leszek Koltunski
import android.widget.NumberPicker;
36 50ac40a6 Leszek Koltunski
import android.widget.Spinner;
37 d40cfeb2 Leszek Koltunski
import android.widget.TableRow;
38 08f92d82 Leszek Koltunski
39
import org.distorted.examples.R;
40
import org.distorted.library.Distorted;
41 50ac40a6 Leszek Koltunski
import org.distorted.library.DistortedBitmap;
42
import org.distorted.library.DistortedCubes;
43
import org.distorted.library.DistortedObject;
44 08f92d82 Leszek Koltunski
import org.distorted.library.EffectNames;
45 56cbe1cf Leszek Koltunski
import org.distorted.library.EffectTypes;
46
import org.distorted.library.type.Dynamic1D;
47
import org.distorted.library.type.Dynamic2D;
48
import org.distorted.library.type.Dynamic3D;
49
import org.distorted.library.type.Dynamic4D;
50 9167cfd4 Leszek Koltunski
import org.distorted.library.type.Static3D;
51 56cbe1cf Leszek Koltunski
52 9167cfd4 Leszek Koltunski
import java.io.IOException;
53
import java.io.InputStream;
54 56cbe1cf Leszek Koltunski
import java.util.ArrayList;
55 08f92d82 Leszek Koltunski
56
///////////////////////////////////////////////////////////////////////////////////////////////////
57
58 50ac40a6 Leszek Koltunski
public class Vertex3DActivity extends Activity
59 56cbe1cf Leszek Koltunski
                              implements View.OnClickListener,
60 50ac40a6 Leszek Koltunski
                                         AdapterView.OnItemSelectedListener
61 d40cfeb2 Leszek Koltunski
  {
62 50ac40a6 Leszek Koltunski
  private static final int COLOR_OFF = 0xffffe81f;
63
  private static final int COLOR_ON  = 0xff0000ff;
64
65 d40cfeb2 Leszek Koltunski
  private boolean firstScreen;
66
67
  // fields needed for the first 'pick-a-shape' screen
68
  //
69 56cbe1cf Leszek Koltunski
  private int mNumCols = 10;
70
  private int mNumRows = 10;
71 d40cfeb2 Leszek Koltunski
  private NumberPicker mColsPicker, mRowsPicker;
72 50ac40a6 Leszek Koltunski
  private boolean[] mShape;
73 bcc8e016 Leszek Koltunski
  private DistortedObject mObject;
74
  private int mObjectType;
75
  private int mBitmap;
76 d40cfeb2 Leszek Koltunski
77 56cbe1cf Leszek Koltunski
  private ArrayList<Vertex3DEffect> mEffects;
78
  private int mEffectAdd;
79 950511ed Leszek Koltunski
  private float mCenterX, mCenterY;
80 6f779cd4 Leszek Koltunski
  private float mRegionX, mRegionY, mRegionR;
81 50ac40a6 Leszek Koltunski
82 08f92d82 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
83 56cbe1cf Leszek Koltunski
84 d40cfeb2 Leszek Koltunski
  @Override
85
  protected void onCreate(Bundle savedState)
86
    {
87
    super.onCreate(savedState);
88
89 56cbe1cf Leszek Koltunski
    mEffects = new ArrayList<>();
90
91 50ac40a6 Leszek Koltunski
    setContentView(R.layout.objectpickerlayout);
92 d40cfeb2 Leszek Koltunski
93 50ac40a6 Leszek Koltunski
    mColsPicker = (NumberPicker)findViewById(R.id.objectpicker_cols);
94
    mRowsPicker = (NumberPicker)findViewById(R.id.objectpicker_rows);
95 d40cfeb2 Leszek Koltunski
96 56cbe1cf Leszek Koltunski
    mColsPicker.setMaxValue(15);
97 d40cfeb2 Leszek Koltunski
    mColsPicker.setMinValue( 0);
98 56cbe1cf Leszek Koltunski
    mRowsPicker.setMaxValue(15);
99 d40cfeb2 Leszek Koltunski
    mRowsPicker.setMinValue( 0);
100
101
    mColsPicker.setOnValueChangedListener(new NumberPicker.OnValueChangeListener()
102 08f92d82 Leszek Koltunski
      {
103 d40cfeb2 Leszek Koltunski
      @Override
104
      public void onValueChange(NumberPicker picker, int oldVal, int newVal)
105
        {
106 bcc8e016 Leszek Koltunski
        mNumCols = mColsPicker.getValue();
107 d40cfeb2 Leszek Koltunski
        }
108
      });
109
110
    mRowsPicker.setOnValueChangedListener(new NumberPicker.OnValueChangeListener()
111
      {
112
      @Override
113
      public void onValueChange(NumberPicker picker, int oldVal, int newVal)
114
        {
115 bcc8e016 Leszek Koltunski
        mNumRows = mRowsPicker.getValue();
116 d40cfeb2 Leszek Koltunski
        }
117
      });
118
119
    firstScreen = true;
120
121 50ac40a6 Leszek Koltunski
    mObjectType = 0;
122 d40cfeb2 Leszek Koltunski
123 50ac40a6 Leszek Koltunski
    Spinner typeSpinner  = (Spinner)findViewById(R.id.objectpicker_spinnerType);
124
    typeSpinner.setOnItemSelectedListener(this);
125 d40cfeb2 Leszek Koltunski
126 50ac40a6 Leszek Koltunski
    String[] objectType = new String[] {"DistortedCubes", "DistortedBitmap"};
127 d40cfeb2 Leszek Koltunski
128 bcc8e016 Leszek Koltunski
    ArrayAdapter<String> adapterType = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, objectType);
129
    adapterType.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
130
    typeSpinner.setAdapter(adapterType);
131
132
    Spinner bitmapSpinner  = (Spinner)findViewById(R.id.objectpicker_spinnerBitmap);
133
    bitmapSpinner.setOnItemSelectedListener(this);
134
135 9167cfd4 Leszek Koltunski
    String[] objectBitmap = new String[] { "Grid", "Girl", "Dog", "Cat", "Squares"};
136 bcc8e016 Leszek Koltunski
137
    ArrayAdapter<String> adapterBitmap = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, objectBitmap);
138
    adapterBitmap.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
139
    bitmapSpinner.setAdapter(adapterBitmap);
140 d40cfeb2 Leszek Koltunski
    }
141
142
///////////////////////////////////////////////////////////////////////////////////////////////////
143
144 50ac40a6 Leszek Koltunski
  private void setGrid()
145 d40cfeb2 Leszek Koltunski
    {
146 56cbe1cf Leszek Koltunski
    LinearLayout lay = (LinearLayout)findViewById(R.id.objectpicker_buttongrid);
147 d40cfeb2 Leszek Koltunski
148 56cbe1cf Leszek Koltunski
    int width = lay.getWidth();
149
    int height= lay.getHeight();
150 d40cfeb2 Leszek Koltunski
    int w = mNumCols>0 ? (width / mNumCols) -10 : 0;
151
    int h = mNumRows>0 ? (height/ mNumRows) -10 : 0;
152
    int size= w<h ? w:h;
153
    int pad = size/20;
154
155 56cbe1cf Leszek Koltunski
    lay.removeAllViews();
156 d40cfeb2 Leszek Koltunski
157
    mShape = new boolean[mNumRows*mNumCols];
158
159 56cbe1cf Leszek Koltunski
    TableRow.LayoutParams p = new TableRow.LayoutParams();
160 d40cfeb2 Leszek Koltunski
161
    p.rightMargin  = pad;
162
    p.leftMargin   = pad;
163
    p.topMargin    = pad;
164
    p.bottomMargin = pad;
165
    p.height       = size;
166
    p.width        = size;
167
168
    for (int rows=0; rows<mNumRows; rows++)
169 08f92d82 Leszek Koltunski
      {
170 d40cfeb2 Leszek Koltunski
      TableRow tr = new TableRow(this);
171
      tr.setGravity(Gravity.CENTER);
172
173
      for(int cols=0; cols<mNumCols; cols++)
174
        {
175
        Button b = new Button(this);
176
        b.setOnClickListener(this);
177
        b.setId(rows*mNumCols+cols);
178
        b.setLayoutParams(p);
179 bcc8e016 Leszek Koltunski
        b.setBackgroundColor(COLOR_ON);
180 d40cfeb2 Leszek Koltunski
        tr.addView(b, p);
181 bcc8e016 Leszek Koltunski
        mShape[rows*mNumCols+cols] = true;
182 d40cfeb2 Leszek Koltunski
        }
183
184 56cbe1cf Leszek Koltunski
      lay.addView(tr);
185 d40cfeb2 Leszek Koltunski
      }
186
    }
187
188 50ac40a6 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
189
190
  public DistortedObject getObject()
191
    {
192
    return mObject;
193
    }
194
195 d40cfeb2 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
196
197 9167cfd4 Leszek Koltunski
  public Bitmap getBitmap()
198 d40cfeb2 Leszek Koltunski
    {
199 9167cfd4 Leszek Koltunski
    Bitmap bmp;
200
201
    if( mBitmap!=-1)
202
      {
203
      InputStream is = getResources().openRawResource(mBitmap);
204
205
      try
206
        {
207
        bmp = BitmapFactory.decodeStream(is);
208
        }
209
      finally
210
        {
211
        try
212
          {
213
          is.close();
214
          }
215
        catch(IOException e) { }
216
        }
217
      }
218
    else
219
      {
220
      final int W = 640;
221
      final int H = 640;
222
223
      Paint paint = new Paint();
224
      bmp = Bitmap.createBitmap(W,H, Bitmap.Config.ARGB_8888);
225
      Canvas canvas = new Canvas(bmp);
226
227
      paint.setAntiAlias(true);
228
      paint.setTextAlign(Paint.Align.CENTER);
229
      paint.setColor(0xff008800);
230
      paint.setStyle(Paint.Style.FILL);
231
      canvas.drawRect(0, 0, W, H, paint);
232
      paint.setColor(0xffffffff);
233
234
      for(int i=0; i<=mNumCols ; i++ )
235
        {
236
        canvas.drawRect(W*i/mNumCols - 1,                0,  W*i/mNumCols + 1,  H               , paint);
237
        canvas.drawRect(               0, H *i/mNumCols -1,  W               ,  H*i/mNumCols + 1, paint);
238
        }
239
      }
240
241
    return bmp;
242 d40cfeb2 Leszek Koltunski
    }
243
244
///////////////////////////////////////////////////////////////////////////////////////////////////
245
246 56cbe1cf Leszek Koltunski
  public void onClick(View view)
247 d40cfeb2 Leszek Koltunski
    {
248 56cbe1cf Leszek Koltunski
    Button tmp = (Button)view;
249
    int id = tmp.getId();
250
    mShape[id] = !mShape[id];
251
    tmp.setBackgroundColor(mShape[id] ? COLOR_ON:COLOR_OFF);
252 bcc8e016 Leszek Koltunski
    }
253
254 6f779cd4 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
255
256
  public void setRegion(float x, float y, float r)
257
    {
258
    mRegionX = x;
259
    mRegionY = y;
260
    mRegionR = r;
261
262
    Vertex3DSurfaceView view = (Vertex3DSurfaceView)findViewById(R.id.vertex3dSurfaceView);
263
264
    view.getRenderer().setRegion(mRegionX, mRegionY, mRegionR);
265
    }
266
267 950511ed Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
268
269
  public void setCenter(float x, float y)
270
    {
271
    mCenterX = x;
272
    mCenterY = y;
273
274
    Vertex3DSurfaceView view = (Vertex3DSurfaceView)findViewById(R.id.vertex3dSurfaceView);
275
276
    view.getRenderer().setCenter( mCenterX, mCenterY );
277
    }
278
279
///////////////////////////////////////////////////////////////////////////////////////////////////
280
281
  public float getCenterX()
282
    {
283
    return mCenterX;
284
    }
285
286
///////////////////////////////////////////////////////////////////////////////////////////////////
287
288
  public float getCenterY()
289
    {
290
    return mCenterY;
291
    }
292
293 6f779cd4 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
294
295
  public float getRegionX()
296
    {
297
    return mRegionX;
298
    }
299
300
///////////////////////////////////////////////////////////////////////////////////////////////////
301
302
  public float getRegionY()
303
    {
304
    return mRegionY;
305
    }
306
307
///////////////////////////////////////////////////////////////////////////////////////////////////
308
309
  public float getRegionR()
310
    {
311
    return mRegionR;
312
    }
313
314 bcc8e016 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
315 50ac40a6 Leszek Koltunski
316 bcc8e016 Leszek Koltunski
  public void Continue(View v)
317
    {
318 56cbe1cf Leszek Koltunski
    firstScreen = false;
319
320 50ac40a6 Leszek Koltunski
    if( mObjectType==1 )
321
      {
322
      mObject = new DistortedBitmap(100,100,mNumCols);
323 56cbe1cf Leszek Koltunski
      setVertexView();
324 50ac40a6 Leszek Koltunski
      }
325
    else
326
      {
327 bcc8e016 Leszek Koltunski
      View view = getLayoutInflater().inflate(R.layout.objectpicker2layout, null);
328 50ac40a6 Leszek Koltunski
329 bcc8e016 Leszek Koltunski
      setContentView(view);
330 50ac40a6 Leszek Koltunski
331 bcc8e016 Leszek Koltunski
      view.post(new Runnable() {
332
            @Override
333
            public void run() {
334
              setGrid();
335
            }
336
        });
337 50ac40a6 Leszek Koltunski
      }
338 bcc8e016 Leszek Koltunski
    }
339
340
///////////////////////////////////////////////////////////////////////////////////////////////////
341
342
  public void Create(View v)
343
    {
344
    firstScreen = false;
345
346
    String str = "";
347
348
    for(int i=0; i<mNumRows*mNumCols; i++)
349
      str += mShape[i] ? "1" : "0";
350
351
    mObject = new DistortedCubes(mNumCols, str, 10);
352 50ac40a6 Leszek Koltunski
353 56cbe1cf Leszek Koltunski
    setVertexView();
354 d40cfeb2 Leszek Koltunski
    }
355
356 50ac40a6 Leszek Koltunski
357
///////////////////////////////////////////////////////////////////////////////////////////////////
358
359
  public void onItemSelected(AdapterView<?> parent, View view, int pos, long id)
360
    {
361
    switch(parent.getId())
362
      {
363 56cbe1cf Leszek Koltunski
      case R.id.objectpicker_spinnerType  : mObjectType = pos;
364
                                            break;
365 bcc8e016 Leszek Koltunski
      case R.id.objectpicker_spinnerBitmap: switch(pos)
366
                                              {
367 9167cfd4 Leszek Koltunski
                                              case 0: mBitmap = -1        ; break;
368
                                              case 1: mBitmap = R.raw.face; break;
369
                                              case 2: mBitmap = R.raw.dog;  break;
370
                                              case 3: mBitmap = R.raw.cat;  break;
371
                                              case 4: mBitmap = R.raw.grid; break;
372 bcc8e016 Leszek Koltunski
                                              }
373
                                            break;
374 56cbe1cf Leszek Koltunski
      case R.id.vertex3dspinner           : mEffectAdd = pos;
375
                                            break;
376 50ac40a6 Leszek Koltunski
      }
377
    }
378
379
///////////////////////////////////////////////////////////////////////////////////////////////////
380
381
  public void onNothingSelected(AdapterView<?> parent)
382
    {
383
    }
384
385 d40cfeb2 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
386
387 56cbe1cf Leszek Koltunski
  public int getWidth()
388 d40cfeb2 Leszek Koltunski
    {
389 56cbe1cf Leszek Koltunski
    return mObject==null ? 0: mObject.getWidth();
390 d40cfeb2 Leszek Koltunski
    }
391 08f92d82 Leszek Koltunski
392
///////////////////////////////////////////////////////////////////////////////////////////////////
393
394 56cbe1cf Leszek Koltunski
  public int getHeight()
395 d40cfeb2 Leszek Koltunski
    {
396 56cbe1cf Leszek Koltunski
    return mObject==null ? 0: mObject.getHeight();
397 d40cfeb2 Leszek Koltunski
    }
398 08f92d82 Leszek Koltunski
399
///////////////////////////////////////////////////////////////////////////////////////////////////
400
401 6f779cd4 Leszek Koltunski
  private void resetData()
402 d40cfeb2 Leszek Koltunski
    {
403 950511ed Leszek Koltunski
    mCenterX = 0.5f*getWidth();
404
    mCenterY = 0.5f*getHeight();
405 6f779cd4 Leszek Koltunski
    mRegionX = 0;
406
    mRegionY = 0;
407
    mRegionR = getWidth()/2;
408
    }
409
410
///////////////////////////////////////////////////////////////////////////////////////////////////
411
// 'second screen' methods
412
413
  private void setVertexView()
414
    {
415
    resetData();
416 950511ed Leszek Koltunski
417 56cbe1cf Leszek Koltunski
    final View view = getLayoutInflater().inflate(R.layout.vertex3dlayout, null);
418 e2d8ea1d Leszek Koltunski
419 56cbe1cf Leszek Koltunski
    setContentView(view);
420 794e6c4f Leszek Koltunski
421 56cbe1cf Leszek Koltunski
    String[] effects = new String[] { "DISTORT",
422
                                      "DEFORM",
423
                                      "SINK",
424
                                      "SWIRL" };
425 794e6c4f Leszek Koltunski
426 56cbe1cf Leszek Koltunski
    Spinner effectSpinner = (Spinner)findViewById(R.id.vertex3dspinner );
427
    effectSpinner.setOnItemSelectedListener(this);
428 794e6c4f Leszek Koltunski
429 56cbe1cf Leszek Koltunski
    ArrayAdapter<String> adapterEffect = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, effects);
430
    adapterEffect.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
431
    effectSpinner.setAdapter(adapterEffect);
432 d2337a3a Leszek Koltunski
433 56cbe1cf Leszek Koltunski
    mEffectAdd = 0;
434 794e6c4f Leszek Koltunski
    }
435
436
///////////////////////////////////////////////////////////////////////////////////////////////////
437
438 56cbe1cf Leszek Koltunski
  public void newEffect(View v)
439 794e6c4f Leszek Koltunski
    {
440 56cbe1cf Leszek Koltunski
    EffectNames name;
441 794e6c4f Leszek Koltunski
442 56cbe1cf Leszek Koltunski
    switch(mEffectAdd)
443
      {
444
      case 0 : name = EffectNames.DISTORT; break;
445
      case 1 : name = EffectNames.DEFORM ; break;
446
      case 2 : name = EffectNames.SINK   ; break;
447
      case 3 : name = EffectNames.SWIRL  ; break;
448
      default: return;
449
      }
450 794e6c4f Leszek Koltunski
451 56cbe1cf Leszek Koltunski
    Vertex3DEffect eff = new Vertex3DEffect(name, this);
452
    mEffects.add(eff);
453 d2337a3a Leszek Koltunski
454 56cbe1cf Leszek Koltunski
    LinearLayout layout = (LinearLayout)findViewById(R.id.vertex3dlayout);
455
    View view = eff.createView();
456
    layout.addView(view);
457 950511ed Leszek Koltunski
458
    if( mEffectAdd!=1 ) // deform does not support regions
459
      {
460
      View region = eff.createRegion();
461
      layout.addView(region);
462
      }
463
464 56cbe1cf Leszek Koltunski
    View center = eff.createCenter();
465
    layout.addView(center);
466
467
    Dynamic1D dyn1 = eff.getDyn1();
468
    Dynamic2D cent = eff.getCenter();
469
    Dynamic3D dyn3 = eff.getDyn3();
470
    Dynamic4D regi = eff.getRegion();
471
472
    switch(mEffectAdd)
473
      {
474
      case 0: mObject.distort(dyn3, cent, regi); break;
475
      case 1: mObject.deform (dyn3, cent      ); break;
476
      case 2: mObject.sink   (dyn1, cent, regi); break;
477
      case 3: mObject.swirl  (dyn1, cent, regi); break;
478
      }
479 d2337a3a Leszek Koltunski
    }
480
481
///////////////////////////////////////////////////////////////////////////////////////////////////
482
483 56cbe1cf Leszek Koltunski
  public void removeAll(View v)
484 d2337a3a Leszek Koltunski
    {
485 56cbe1cf Leszek Koltunski
    mEffects.clear();
486
    LinearLayout layout = (LinearLayout)findViewById(R.id.vertex3dlayout);
487
    layout.removeAllViews();
488
    mObject.abortEffects(EffectTypes.VERTEX);
489 950511ed Leszek Koltunski
490 6f779cd4 Leszek Koltunski
    resetData();
491 950511ed Leszek Koltunski
492
    Vertex3DSurfaceView view = (Vertex3DSurfaceView)findViewById(R.id.vertex3dSurfaceView);
493
    Vertex3DRenderer renderer= view.getRenderer();
494
495
    renderer.setCenter( mCenterX, mCenterY );
496 6f779cd4 Leszek Koltunski
    renderer.setRegion( mRegionX, mRegionY, mRegionR );
497 950511ed Leszek Koltunski
    renderer.mQuat1.set(0,0,0,1);
498
    renderer.mQuat2.set(0,0,0,1);
499 d2337a3a Leszek Koltunski
    }
500
501 08f92d82 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
502 d40cfeb2 Leszek Koltunski
// Overrides
503
504
  @Override
505
  protected void onPause()
506
    {
507
    GLSurfaceView mView = (GLSurfaceView)findViewById(R.id.vertex3dSurfaceView);
508
    if( mView!=null ) mView.onPause();
509
    super.onPause();
510
    }
511 08f92d82 Leszek Koltunski
512
///////////////////////////////////////////////////////////////////////////////////////////////////
513
    
514 d40cfeb2 Leszek Koltunski
  @Override
515
  protected void onResume()
516
    {
517
    super.onResume();
518
    GLSurfaceView mView = (GLSurfaceView)findViewById(R.id.vertex3dSurfaceView);
519
    if( mView!=null ) mView.onResume();
520
    }
521 08f92d82 Leszek Koltunski
522
///////////////////////////////////////////////////////////////////////////////////////////////////
523
    
524 d40cfeb2 Leszek Koltunski
  @Override
525
  public void onWindowFocusChanged(boolean hasFocus)
526
    {
527
    super.onWindowFocusChanged(hasFocus);
528
529
    if( firstScreen )
530
      {
531
      mColsPicker.setValue(mNumCols);
532
      mRowsPicker.setValue(mNumRows);
533
      }
534
    }
535 08f92d82 Leszek Koltunski
536
///////////////////////////////////////////////////////////////////////////////////////////////////
537
    
538 d40cfeb2 Leszek Koltunski
  @Override
539
  protected void onDestroy()
540
    {
541
    Distorted.onDestroy();
542
    super.onDestroy();
543
    }
544 08f92d82 Leszek Koltunski
545 d40cfeb2 Leszek Koltunski
  }