Project

General

Profile

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

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

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.generic;
21

    
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 com.google.android.material.tabs.TabLayout;
29
import androidx.appcompat.app.AppCompatActivity;
30
import android.view.View;
31
import android.widget.CheckBox;
32

    
33
import org.distorted.examples.R;
34
import org.distorted.library.main.DistortedLibrary;
35
import org.distorted.library.main.DistortedEffects;
36
import org.distorted.library.main.DistortedTexture;
37
import org.distorted.library.mesh.MeshBase;
38
import org.distorted.library.type.Static3D;
39
import org.distorted.library.type.Static4D;
40

    
41
import java.io.IOException;
42
import java.io.InputStream;
43

    
44
///////////////////////////////////////////////////////////////////////////////////////////////////
45

    
46
public class GenericActivity2 extends AppCompatActivity
47
  {
48
  private DistortedTexture mTexture;
49
  private MeshBase mMesh;
50
  private Bitmap mBitmap;
51
  private DistortedEffects mEffects;
52
  private GenericViewPager mViewPager;
53

    
54
  private boolean mShowCenter, mShowRegion, mShowNormal, mUseOIT;
55

    
56
///////////////////////////////////////////////////////////////////////////////////////////////////
57

    
58
  @Override
59
  protected void onCreate(Bundle savedState)
60
    {
61
    super.onCreate(savedState);
62

    
63
    setTheme(R.style.CustomActivityThemeNoActionBar);
64

    
65
    Bundle b = getIntent().getExtras();
66

    
67
    int objectType = b.getInt("type");
68
    int numCols    = b.getInt("cols");
69
    int numRows    = b.getInt("rows");
70
    int numSlic    = b.getInt("slices");
71
    int bitmapID   = b.getInt("bitmap");
72
    String str     = b.getString("string");
73

    
74
    mShowCenter = false;
75
    mShowRegion = false;
76
    mShowNormal = false;
77
    mUseOIT     = false;
78

    
79
    int maxsize = numCols > numRows ? (numCols>numSlic ? numCols:numSlic) : (numRows>numSlic ? numRows:numSlic);
80
    createBitmap(maxsize, bitmapID);
81
    mMesh =  GenericMeshList.createMesh(objectType, numCols, numRows, numSlic, bitmapID, str);
82

    
83
    mMesh.setShowNormals(mShowNormal);
84
    mTexture= new DistortedTexture();
85
    mEffects= new DistortedEffects();
86

    
87
    final View view = getLayoutInflater().inflate(R.layout.genericlayout, null);
88

    
89
    setContentView(view);
90

    
91
    mViewPager = new GenericViewPager(this,R.id.generic_viewpager);
92
    TabLayout tabLayout = findViewById(R.id.generic_sliding_tabs);
93
    tabLayout.setupWithViewPager(mViewPager.getPager());
94
    }
95

    
96
///////////////////////////////////////////////////////////////////////////////////////////////////
97

    
98
  private void createBitmap(int size, int bitmapID)
99
    {
100
    if( bitmapID!=-1)
101
      {
102
      InputStream is = getResources().openRawResource(bitmapID);
103

    
104
      try
105
        {
106
        mBitmap = BitmapFactory.decodeStream(is);
107
        }
108
      finally
109
        {
110
        try
111
          {
112
          is.close();
113
          }
114
        catch(IOException e) { }
115
        }
116
      }
117
    else
118
      {
119
      final int T = 64;
120
      final int S = T*size;
121

    
122
      Paint paint = new Paint();
123
      mBitmap = Bitmap.createBitmap(S,S, Bitmap.Config.ARGB_8888);
124
      Canvas canvas = new Canvas(mBitmap);
125

    
126
      paint.setAntiAlias(true);
127
      paint.setTextAlign(Paint.Align.CENTER);
128
      paint.setColor(0xff008800);
129
      paint.setStyle(Paint.Style.FILL);
130
      canvas.drawRect(0, 0, S, S, paint);
131
      paint.setColor(0xffffffff);
132

    
133
      for(int i=0; i<=size ; i++ )
134
        {
135
        canvas.drawRect( T*i-1, 0, T*i+1, S, paint);
136
        canvas.drawRect( 0, T*i-1, S, T*i+1, paint);
137
        }
138
      }
139
    }
140

    
141
///////////////////////////////////////////////////////////////////////////////////////////////////
142

    
143
  public DistortedTexture getTexture()
144
    {
145
    return mTexture;
146
    }
147

    
148
///////////////////////////////////////////////////////////////////////////////////////////////////
149

    
150
  public MeshBase getMesh()
151
    {
152
    return mMesh;
153
    }
154

    
155
///////////////////////////////////////////////////////////////////////////////////////////////////
156

    
157
  public Bitmap getBitmap()
158
    {
159
    return mBitmap;
160
    }
161

    
162
///////////////////////////////////////////////////////////////////////////////////////////////////
163

    
164
  public DistortedEffects getEffects()
165
    {
166
    return mEffects;
167
    }
168

    
169
///////////////////////////////////////////////////////////////////////////////////////////////////
170

    
171
  public GenericViewPager getPager()
172
    {
173
    return mViewPager;
174
    }
175

    
176
///////////////////////////////////////////////////////////////////////////////////////////////////
177

    
178
  public float getWidth()
179
    {
180
    return mMesh==null ? 0: mMesh.getStretchX();
181
    }
182

    
183
///////////////////////////////////////////////////////////////////////////////////////////////////
184

    
185
  public float getHeight()
186
    {
187
    return mMesh==null ? 0: mMesh.getStretchY();
188
    }
189

    
190
///////////////////////////////////////////////////////////////////////////////////////////////////
191

    
192
  public float getDepth()
193
    {
194
    return mMesh==null ? 0: mMesh.getStretchZ();
195
    }
196

    
197
///////////////////////////////////////////////////////////////////////////////////////////////////
198

    
199
  public int getScreenWidth()
200
    {
201
    GenericSurfaceView view = findViewById(R.id.genericSurfaceView);
202
    GenericRenderer renderer = view.getRenderer();
203
    return renderer.getWidth();
204
    }
205

    
206
///////////////////////////////////////////////////////////////////////////////////////////////////
207

    
208
  public float getScaleFactor()
209
    {
210
    GenericSurfaceView view = findViewById(R.id.genericSurfaceView);
211
    GenericRenderer renderer = view.getRenderer();
212
    return renderer.getScaleFactor();
213
    }
214

    
215
///////////////////////////////////////////////////////////////////////////////////////////////////
216

    
217
  void setCenter(float x, float y, float z)
218
    {
219
    GenericSurfaceView view = findViewById(R.id.genericSurfaceView);
220
    GenericRenderer renderer = view.getRenderer();
221
    renderer.setCenter(x,y,z);
222
    }
223

    
224
///////////////////////////////////////////////////////////////////////////////////////////////////
225

    
226
  void setRegion(Static4D region)
227
    {
228
    GenericSurfaceView view = findViewById(R.id.genericSurfaceView);
229
    GenericRenderer renderer = view.getRenderer();
230
    renderer.setRegion( region.get0(), region.get1(), region.get2(), region.get3() );
231
    }
232

    
233
///////////////////////////////////////////////////////////////////////////////////////////////////
234

    
235
  public void showRegionAndCenter(View view)
236
    {
237
    CheckBox center = findViewById(R.id.genericCheckBoxCenter);
238
    mShowCenter = center.isChecked();
239
    CheckBox region = findViewById(R.id.genericCheckBoxRegion);
240
    mShowRegion = region.isChecked();
241

    
242
    GenericSurfaceView sv = findViewById(R.id.genericSurfaceView);
243

    
244
    mViewPager.showRegionAndCenter(mShowRegion, mShowCenter, sv);
245
    }
246

    
247
///////////////////////////////////////////////////////////////////////////////////////////////////
248

    
249
  public void showNormal(View view)
250
    {
251
    CheckBox box = (CheckBox)view;
252
    mShowNormal = box.isChecked();
253

    
254
    if ( mMesh!=null )
255
      {
256
      mMesh.setShowNormals(mShowNormal);
257
      }
258
    }
259

    
260
///////////////////////////////////////////////////////////////////////////////////////////////////
261

    
262
  public void triggerOIT(View view)
263
    {
264
    CheckBox box = (CheckBox)view;
265
    mUseOIT = box.isChecked();
266

    
267
    GenericSurfaceView sv = findViewById(R.id.genericSurfaceView);
268
    sv.getRenderer().useOIT(mUseOIT);
269
    }
270

    
271
///////////////////////////////////////////////////////////////////////////////////////////////////
272
// Overrides
273
///////////////////////////////////////////////////////////////////////////////////////////////////
274

    
275
  @Override
276
  protected void onPause()
277
    {
278
    GLSurfaceView mView = findViewById(R.id.genericSurfaceView);
279
    if( mView!=null ) mView.onPause();
280

    
281
    DistortedLibrary.onPause();
282
    super.onPause();
283
    }
284

    
285
///////////////////////////////////////////////////////////////////////////////////////////////////
286
    
287
  @Override
288
  protected void onResume()
289
    {
290
    super.onResume();
291
    GLSurfaceView mView = findViewById(R.id.genericSurfaceView);
292
    if( mView!=null ) mView.onResume();
293
    }
294

    
295
///////////////////////////////////////////////////////////////////////////////////////////////////
296
    
297
  @Override
298
  protected void onDestroy()
299
    {
300
    DistortedLibrary.onDestroy();
301
    super.onDestroy();
302
    }
303
  }
(2-2/8)