Project

General

Profile

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

examples / src / main / java / org / distorted / examples / inflate / InflateActivity2.java @ 1a620f79

1 77a500b3 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
2
// Copyright 2016 Leszek Koltunski                                                               //
3
//                                                                                               //
4 71c8884f Leszek Koltunski
// This file is part of Distorted.                                                               //
5 77a500b3 Leszek Koltunski
//                                                                                               //
6 71c8884f Leszek Koltunski
// Distorted is free software: you can redistribute it and/or modify                             //
7 77a500b3 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 77a500b3 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 77a500b3 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
19
20
package org.distorted.examples.inflate;
21
22 e3900503 Leszek Koltunski
import org.distorted.library.main.DistortedLibrary;
23 64558e4e Leszek Koltunski
import org.distorted.examples.R;
24
import org.distorted.library.main.DistortedTexture;
25
import org.distorted.library.mesh.MeshBase;
26
27 77a500b3 Leszek Koltunski
import android.app.Activity;
28
import android.graphics.Bitmap;
29
import android.graphics.BitmapFactory;
30
import android.graphics.Canvas;
31
import android.graphics.Paint;
32
import android.opengl.GLSurfaceView;
33
import android.os.Bundle;
34 64558e4e Leszek Koltunski
import android.view.View;
35
import android.widget.AdapterView;
36
import android.widget.ArrayAdapter;
37 77a500b3 Leszek Koltunski
import android.widget.SeekBar;
38 64558e4e Leszek Koltunski
import android.widget.Spinner;
39 77a500b3 Leszek Koltunski
import android.widget.TextView;
40
41
import java.io.IOException;
42
import java.io.InputStream;
43
44
///////////////////////////////////////////////////////////////////////////////////////////////////
45
46 64558e4e Leszek Koltunski
public class InflateActivity2 extends Activity implements SeekBar.OnSeekBarChangeListener, AdapterView.OnItemSelectedListener
47 77a500b3 Leszek Koltunski
{
48
    private Bitmap mBitmap;
49 64558e4e Leszek Koltunski
    private TextView mTextLevel;
50
    private DistortedTexture mTexture;
51
    private MeshBase mMesh;
52 77a500b3 Leszek Koltunski
53
///////////////////////////////////////////////////////////////////////////////////////////////////
54
    
55
    @Override
56
    protected void onPause() 
57
      {
58
      GLSurfaceView mView = this.findViewById(R.id.inflateSurfaceView);
59
      if( mView!=null ) mView.onPause();
60
61 e3900503 Leszek Koltunski
      DistortedLibrary.onPause();
62 77a500b3 Leszek Koltunski
      super.onPause();
63
      }
64
65
///////////////////////////////////////////////////////////////////////////////////////////////////
66
    
67
    @Override
68
    protected void onResume() 
69
      {
70
      super.onResume();
71
      
72
      GLSurfaceView mView = this.findViewById(R.id.inflateSurfaceView);
73
      if( mView!=null ) mView.onResume();  
74
      }
75
    
76
///////////////////////////////////////////////////////////////////////////////////////////////////
77
    
78
    @Override
79
    protected void onDestroy() 
80
      {
81 e3900503 Leszek Koltunski
      DistortedLibrary.onDestroy();
82 77a500b3 Leszek Koltunski
      super.onDestroy();
83
      }
84 64558e4e Leszek Koltunski
85 77a500b3 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
86
87
    @Override
88
    protected void onCreate(Bundle savedState)
89
      {
90
      super.onCreate(savedState);
91
92
      Bundle b = getIntent().getExtras();
93
94
      String str     = b.getString("string");
95
      int objectType = b.getInt("type");
96 4db4e39b Leszek Koltunski
      int bitmapID   = b.getInt("bitmap");
97 83e0ca5e Leszek Koltunski
      int numCols    = b.getInt("cols");
98
      int numRows    = b.getInt("rows");
99
      int numSlic    = b.getInt("slices");
100 4db4e39b Leszek Koltunski
101 1a620f79 Leszek Koltunski
      int maxsize = numCols > numRows ? (Math.max(numCols, numSlic)) : (Math.max(numRows, numSlic));
102 4db4e39b Leszek Koltunski
      createBitmap(maxsize,bitmapID);
103 83e0ca5e Leszek Koltunski
      mMesh =  InflateMeshList.createMesh(objectType, numCols, numRows, numSlic, bitmapID, str);
104 687263cc Leszek Koltunski
      mTexture = new DistortedTexture();
105 77a500b3 Leszek Koltunski
106
      setContentView(R.layout.inflatelayout);
107
108 83e0ca5e Leszek Koltunski
      Spinner renderSpinner = findViewById(R.id.inflateSpinnerMode);
109 64558e4e Leszek Koltunski
      renderSpinner.setOnItemSelectedListener(this);
110 77a500b3 Leszek Koltunski
111 64558e4e Leszek Koltunski
      String[] objectBitmap = new String[] { "Render: Normal", "Render: OIT" };
112
113
      ArrayAdapter<String> adapterBitmap = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, objectBitmap);
114
      adapterBitmap.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
115
      renderSpinner.setAdapter(adapterBitmap);
116
117
      mTextLevel = findViewById(R.id.inflateInflateText);
118 77a500b3 Leszek Koltunski
119 64558e4e Leszek Koltunski
      SeekBar transparencyBar = findViewById(R.id.inflateTransparency);
120
      transparencyBar.setOnSeekBarChangeListener(this);
121
      transparencyBar.setProgress(50);
122
123
      SeekBar inflateBar = findViewById(R.id.inflateInflateLevel);
124
      inflateBar.setOnSeekBarChangeListener(this);
125
      inflateBar.setProgress(50);
126
      }
127 77a500b3 Leszek Koltunski
128
///////////////////////////////////////////////////////////////////////////////////////////////////
129
130 4db4e39b Leszek Koltunski
    private void createBitmap(int size, int bitmapID)
131 77a500b3 Leszek Koltunski
      {
132 4db4e39b Leszek Koltunski
      if( bitmapID!=-1)
133 77a500b3 Leszek Koltunski
        {
134 4db4e39b Leszek Koltunski
        InputStream is = getResources().openRawResource(bitmapID);
135 77a500b3 Leszek Koltunski
136 4db4e39b Leszek Koltunski
        try
137
          {
138
          mBitmap = BitmapFactory.decodeStream(is);
139
          }
140
        finally
141
          {
142 77a500b3 Leszek Koltunski
          try
143
            {
144 4db4e39b Leszek Koltunski
            is.close();
145 77a500b3 Leszek Koltunski
            }
146 4db4e39b Leszek Koltunski
          catch(IOException e) { }
147 77a500b3 Leszek Koltunski
          }
148 4db4e39b Leszek Koltunski
        }
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 77a500b3 Leszek Koltunski
          {
167 4db4e39b Leszek Koltunski
          canvas.drawRect( T*i-1, 0, T*i+1, S, paint);
168
          canvas.drawRect( 0, T*i-1, S, T*i+1, paint);
169 77a500b3 Leszek Koltunski
          }
170
        }
171 4db4e39b Leszek Koltunski
      }
172 77a500b3 Leszek Koltunski
173 4db4e39b Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
174
175
    public Bitmap getBitmap()
176
      {
177 77a500b3 Leszek Koltunski
      return mBitmap;
178
      }
179
180 64558e4e Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
181
182
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id)
183
      {
184
      InflateSurfaceView v = this.findViewById(R.id.inflateSurfaceView);
185
      InflateRenderer renderer = v.getRenderer();
186
187
      switch(parent.getId())
188
        {
189
        case R.id.inflateSpinnerMode: renderer.setRenderModeToOIT(pos==1);
190
                                      break;
191
        }
192
      }
193
194
///////////////////////////////////////////////////////////////////////////////////////////////////
195
196
    public void onNothingSelected(AdapterView<?> parent)
197
      {
198
      }
199
200 77a500b3 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
201
202
    public void onProgressChanged(SeekBar bar, int progress, boolean fromUser)
203
      {
204
      switch (bar.getId())
205
        {
206 64558e4e Leszek Koltunski
        case R.id.inflateTransparency: InflateSurfaceView v1 = this.findViewById(R.id.inflateSurfaceView);
207
                                       v1.getRenderer().setTransparency(progress);
208
                                       break;
209
        case R.id.inflateInflateLevel: InflateSurfaceView v2 = this.findViewById(R.id.inflateSurfaceView);
210
                                       float level = v2.getRenderer().setLevel(progress);
211
                                       mTextLevel.setText(getString(R.string.inflate_placeholder, level));
212
                                       break;
213 77a500b3 Leszek Koltunski
        }
214
      }
215
216
///////////////////////////////////////////////////////////////////////////////////////////////////
217
218
    public void onStartTrackingTouch(SeekBar bar) { }
219
220
///////////////////////////////////////////////////////////////////////////////////////////////////
221
222
    public void onStopTrackingTouch(SeekBar bar)  { }
223
224
///////////////////////////////////////////////////////////////////////////////////////////////////
225
226
    public DistortedTexture getTexture()
227
      {
228
      return mTexture;
229
      }
230
231
///////////////////////////////////////////////////////////////////////////////////////////////////
232
233
    public MeshBase getMesh()
234
      {
235
      return mMesh;
236
      }
237
}