Project

General

Profile

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

examples / src / main / java / org / distorted / examples / generic / GenericActivity2.java @ b1fca44e

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