Project

General

Profile

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

examples / src / main / java / org / distorted / examples / generic / GenericActivity2.java @ 698ad0a8

1 348dbeea Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
2
// Copyright 2016 Leszek Koltunski                                                               //
3
//                                                                                               //
4 71c8884f Leszek Koltunski
// This file is part of Distorted.                                                               //
5 348dbeea Leszek Koltunski
//                                                                                               //
6 71c8884f Leszek Koltunski
// Distorted is free software: you can redistribute it and/or modify                             //
7 348dbeea 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 348dbeea 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 348dbeea Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
19
20 2ec2dc32 Leszek Koltunski
package org.distorted.examples.generic;
21 348dbeea Leszek Koltunski
22
import android.graphics.Bitmap;
23
import android.graphics.BitmapFactory;
24
import android.graphics.Canvas;
25
import android.graphics.Paint;
26
import android.opengl.GLSurfaceView;
27
import android.os.Bundle;
28
import android.support.design.widget.TabLayout;
29 c2c45d0a Leszek Koltunski
import android.support.v7.app.AppCompatActivity;
30 348dbeea Leszek Koltunski
import android.view.View;
31
import android.widget.CheckBox;
32
33
import org.distorted.examples.R;
34 e3900503 Leszek Koltunski
import org.distorted.library.main.DistortedLibrary;
35 348dbeea Leszek Koltunski
import org.distorted.library.main.DistortedEffects;
36
import org.distorted.library.main.DistortedTexture;
37 107e4b72 Leszek Koltunski
import org.distorted.library.mesh.MeshCubes;
38 f3ca895f Leszek Koltunski
import org.distorted.library.mesh.MeshRectangles;
39 57d7fdba Leszek Koltunski
import org.distorted.library.mesh.MeshBase;
40 24624a1a Leszek Koltunski
import org.distorted.library.mesh.MeshQuad;
41
import org.distorted.library.mesh.MeshSphere;
42 1e7603bb Leszek Koltunski
import org.distorted.library.type.Static3D;
43 4db4e39b Leszek Koltunski
import org.distorted.library.type.Static4D;
44 348dbeea Leszek Koltunski
45
import java.io.IOException;
46
import java.io.InputStream;
47
48
///////////////////////////////////////////////////////////////////////////////////////////////////
49
50 46b26cdc Leszek Koltunski
public class GenericActivity2 extends AppCompatActivity
51 348dbeea Leszek Koltunski
  {
52
  private DistortedTexture mTexture;
53 57d7fdba Leszek Koltunski
  private MeshBase mMesh;
54 348dbeea Leszek Koltunski
  private Bitmap mBitmap;
55
  private DistortedEffects mEffects;
56 1e7603bb Leszek Koltunski
  private GenericViewPager mViewPager;
57 348dbeea Leszek Koltunski
58 1e7603bb Leszek Koltunski
  private boolean mShowCenter, mShowRegion, mShowNormal, mUseOIT;
59 06c636a5 Leszek Koltunski
60 348dbeea Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
61
62
  @Override
63
  protected void onCreate(Bundle savedState)
64
    {
65
    super.onCreate(savedState);
66
67 d9c55dbe Leszek Koltunski
    setTheme(R.style.CustomActivityThemeNoActionBar);
68
69 348dbeea Leszek Koltunski
    Bundle b = getIntent().getExtras();
70
71 4db4e39b Leszek Koltunski
    int objectType = b.getInt("type");
72
    int numCols    = b.getInt("cols");
73
    int numRows    = b.getInt("rows");
74
    int numSlic    = b.getInt("slices");
75
    int bitmapID   = b.getInt("bitmap");
76
    String str     = b.getString("string");
77 348dbeea Leszek Koltunski
78 f86c9fb5 Leszek Koltunski
    mShowCenter = false;
79
    mShowRegion = false;
80
    mShowNormal = false;
81 0372f32c Leszek Koltunski
    mUseOIT     = false;
82
83 698ad0a8 Leszek Koltunski
    mEffects= new DistortedEffects();
84 687263cc Leszek Koltunski
85 4db4e39b Leszek Koltunski
    int maxsize = numCols > numRows ? (numCols>numSlic ? numCols:numSlic) : (numRows>numSlic ? numRows:numSlic) ;
86
87
    createBitmap(maxsize, bitmapID);
88
89
    switch(objectType)
90 24624a1a Leszek Koltunski
      {
91 4db4e39b Leszek Koltunski
      case 0: if( bitmapID!=-1 )
92
                {
93
                mMesh = new MeshCubes(numCols, str, numSlic);
94
                }
95
              else
96
                {
97
                Static4D mapFB = new Static4D(0.0f,0.0f, (float)numCols/maxsize, (float)numRows/maxsize);
98
                Static4D mapLR = new Static4D(0.0f,0.0f, (float)numSlic/maxsize, (float)numRows/maxsize);
99
                Static4D mapTB = new Static4D(0.0f,0.0f, (float)numCols/maxsize, (float)numSlic/maxsize);
100
101
                mMesh = new MeshCubes(numCols, str, numSlic, mapFB, mapFB, mapLR, mapLR, mapTB, mapTB);
102
                }
103 698ad0a8 Leszek Koltunski
              mMesh.setStretch(numCols,numRows,numSlic);
104 24624a1a Leszek Koltunski
              break;
105 f3ca895f Leszek Koltunski
      case 1: mMesh = new MeshRectangles(numCols,numRows);
106 698ad0a8 Leszek Koltunski
              mMesh.setStretch(numCols,numRows,0);
107 24624a1a Leszek Koltunski
              break;
108 4db4e39b Leszek Koltunski
      case 2: mMesh = new MeshSphere(numRows);
109 698ad0a8 Leszek Koltunski
              mMesh.setStretch(numRows,numRows,numRows);
110 24624a1a Leszek Koltunski
              break;
111
      case 3: mMesh = new MeshQuad();
112 698ad0a8 Leszek Koltunski
              mMesh.setStretch(1,1,0);
113 24624a1a Leszek Koltunski
              break;
114
      }
115 348dbeea Leszek Koltunski
116
    mMesh.setShowNormals(mShowNormal);
117 687263cc Leszek Koltunski
    mTexture= new DistortedTexture();
118 348dbeea Leszek Koltunski
119 46b26cdc Leszek Koltunski
    final View view = getLayoutInflater().inflate(R.layout.genericlayout, null);
120 348dbeea Leszek Koltunski
121
    setContentView(view);
122
123 1e7603bb Leszek Koltunski
    mViewPager = new GenericViewPager(this,R.id.generic_viewpager);
124 46b26cdc Leszek Koltunski
    TabLayout tabLayout = findViewById(R.id.generic_sliding_tabs);
125 1e7603bb Leszek Koltunski
    tabLayout.setupWithViewPager(mViewPager.getPager());
126 348dbeea Leszek Koltunski
    }
127
128 4db4e39b Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
129
130
  private void createBitmap(int size, int bitmapID)
131
    {
132
    if( bitmapID!=-1)
133
      {
134
      InputStream is = getResources().openRawResource(bitmapID);
135
136
      try
137
        {
138
        mBitmap = BitmapFactory.decodeStream(is);
139
        }
140
      finally
141
        {
142
        try
143
          {
144
          is.close();
145
          }
146
        catch(IOException e) { }
147
        }
148
      }
149
    else
150
      {
151
      final int T = 64;
152
      final int S = T*size;
153
154
      Paint paint = new Paint();
155
      mBitmap = Bitmap.createBitmap(S,S, Bitmap.Config.ARGB_8888);
156
      Canvas canvas = new Canvas(mBitmap);
157
158
      paint.setAntiAlias(true);
159
      paint.setTextAlign(Paint.Align.CENTER);
160
      paint.setColor(0xff008800);
161
      paint.setStyle(Paint.Style.FILL);
162
      canvas.drawRect(0, 0, S, S, paint);
163
      paint.setColor(0xffffffff);
164
165
      for(int i=0; i<=size ; i++ )
166
        {
167
        canvas.drawRect( T*i-1, 0, T*i+1, S, paint);
168
        canvas.drawRect( 0, T*i-1, S, T*i+1, paint);
169
        }
170
      }
171
    }
172
173 348dbeea Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
174
175
  public DistortedTexture getTexture()
176
    {
177
    return mTexture;
178
    }
179
180
///////////////////////////////////////////////////////////////////////////////////////////////////
181
182 57d7fdba Leszek Koltunski
  public MeshBase getMesh()
183 348dbeea Leszek Koltunski
    {
184
    return mMesh;
185
    }
186
187
///////////////////////////////////////////////////////////////////////////////////////////////////
188
189
  public Bitmap getBitmap()
190
    {
191
    return mBitmap;
192
    }
193
194 d28ddc9b Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
195
196
  public DistortedEffects getEffects()
197
    {
198
    return mEffects;
199
    }
200
201
///////////////////////////////////////////////////////////////////////////////////////////////////
202
203
  public GenericViewPager getPager()
204
    {
205
    return mViewPager;
206
    }
207
208 348dbeea Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
209
210 698ad0a8 Leszek Koltunski
  public float getWidth()
211 348dbeea Leszek Koltunski
    {
212 698ad0a8 Leszek Koltunski
    return mMesh==null ? 0: mMesh.getStretchX();
213 348dbeea Leszek Koltunski
    }
214
215
///////////////////////////////////////////////////////////////////////////////////////////////////
216
217 698ad0a8 Leszek Koltunski
  public float getHeight()
218 348dbeea Leszek Koltunski
    {
219 698ad0a8 Leszek Koltunski
    return mMesh==null ? 0: mMesh.getStretchY();
220 348dbeea Leszek Koltunski
    }
221
222
///////////////////////////////////////////////////////////////////////////////////////////////////
223
224 698ad0a8 Leszek Koltunski
  public float getDepth()
225 348dbeea Leszek Koltunski
    {
226 698ad0a8 Leszek Koltunski
    return mMesh==null ? 0: mMesh.getStretchZ();
227 348dbeea Leszek Koltunski
    }
228
229
///////////////////////////////////////////////////////////////////////////////////////////////////
230
231
  public int getScreenWidth()
232
    {
233 46b26cdc Leszek Koltunski
    GenericRenderer r = ((GenericSurfaceView)findViewById(R.id.genericSurfaceView)).getRenderer();
234 65f622c1 Leszek Koltunski
    return r.getWidth();
235 348dbeea Leszek Koltunski
    }
236
237
///////////////////////////////////////////////////////////////////////////////////////////////////
238
239 1e7603bb Leszek Koltunski
  void setCenter(Static3D center)
240 348dbeea Leszek Koltunski
    {
241 46b26cdc Leszek Koltunski
    GenericSurfaceView view = findViewById(R.id.genericSurfaceView);
242 bcbd5b45 Leszek Koltunski
    view.getRenderer().setCenter( center.get0(), center.get1(), center.get2() );
243 348dbeea Leszek Koltunski
    }
244
245
///////////////////////////////////////////////////////////////////////////////////////////////////
246 65f622c1 Leszek Koltunski
247 1e7603bb Leszek Koltunski
  void setRegion(Static4D region)
248 65f622c1 Leszek Koltunski
    {
249 46b26cdc Leszek Koltunski
    GenericSurfaceView view = findViewById(R.id.genericSurfaceView);
250 bcbd5b45 Leszek Koltunski
    view.getRenderer().setRegion( region.get0(), region.get1(), region.get2(), region.get3() );
251 65f622c1 Leszek Koltunski
    }
252
253 348dbeea Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
254
255 1e7603bb Leszek Koltunski
  public void showRegionAndCenter(View view)
256 348dbeea Leszek Koltunski
    {
257 1e7603bb Leszek Koltunski
    CheckBox center = findViewById(R.id.genericCheckBoxCenter);
258
    mShowCenter = center.isChecked();
259
    CheckBox region = findViewById(R.id.genericCheckBoxRegion);
260
    mShowRegion = region.isChecked();
261 6cc818f6 Leszek Koltunski
262 46b26cdc Leszek Koltunski
    GenericSurfaceView sv = findViewById(R.id.genericSurfaceView);
263 6cc818f6 Leszek Koltunski
264 1e7603bb Leszek Koltunski
    mViewPager.showRegionAndCenter(mShowRegion, mShowCenter, sv);
265 348dbeea Leszek Koltunski
    }
266
267
///////////////////////////////////////////////////////////////////////////////////////////////////
268
269
  public void showNormal(View view)
270
    {
271
    CheckBox box = (CheckBox)view;
272
    mShowNormal = box.isChecked();
273
274
    if ( mMesh!=null )
275
      {
276
      mMesh.setShowNormals(mShowNormal);
277
      }
278
    }
279
280
///////////////////////////////////////////////////////////////////////////////////////////////////
281
282
  public void triggerOIT(View view)
283
    {
284
    CheckBox box = (CheckBox)view;
285
    mUseOIT = box.isChecked();
286
287 46b26cdc Leszek Koltunski
    GenericSurfaceView sv = findViewById(R.id.genericSurfaceView);
288 348dbeea Leszek Koltunski
    sv.getRenderer().useOIT(mUseOIT);
289
    }
290
291
///////////////////////////////////////////////////////////////////////////////////////////////////
292
// Overrides
293
///////////////////////////////////////////////////////////////////////////////////////////////////
294
295
  @Override
296
  protected void onPause()
297
    {
298 46b26cdc Leszek Koltunski
    GLSurfaceView mView = findViewById(R.id.genericSurfaceView);
299 348dbeea Leszek Koltunski
    if( mView!=null ) mView.onPause();
300
301 e3900503 Leszek Koltunski
    DistortedLibrary.onPause();
302 348dbeea Leszek Koltunski
    super.onPause();
303
    }
304
305
///////////////////////////////////////////////////////////////////////////////////////////////////
306
    
307
  @Override
308
  protected void onResume()
309
    {
310
    super.onResume();
311 46b26cdc Leszek Koltunski
    GLSurfaceView mView = findViewById(R.id.genericSurfaceView);
312 348dbeea Leszek Koltunski
    if( mView!=null ) mView.onResume();
313
    }
314
315
///////////////////////////////////////////////////////////////////////////////////////////////////
316
    
317
  @Override
318
  protected void onDestroy()
319
    {
320 e3900503 Leszek Koltunski
    DistortedLibrary.onDestroy();
321 348dbeea Leszek Koltunski
    super.onDestroy();
322
    }
323 71c8884f Leszek Koltunski
  }