Project

General

Profile

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

examples / src / main / java / org / distorted / examples / meshfile / MeshFileActivity.java @ 13884c8a

1 42aa970f 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.meshfile;
21
22
import android.app.Activity;
23
import android.opengl.GLSurfaceView;
24
import android.os.Bundle;
25 71c7624f Leszek Koltunski
import android.view.View;
26
import android.widget.AdapterView;
27
import android.widget.ArrayAdapter;
28 8aece7f2 Leszek Koltunski
import android.widget.CompoundButton;
29 7198e5c9 Leszek Koltunski
import android.widget.LinearLayout;
30 16b336db Leszek Koltunski
import android.widget.SeekBar;
31 71c7624f Leszek Koltunski
import android.widget.Spinner;
32 48c88f57 Leszek Koltunski
import android.widget.TextView;
33 8aece7f2 Leszek Koltunski
import android.widget.ToggleButton;
34 42aa970f Leszek Koltunski
35
import org.distorted.examples.R;
36
import org.distorted.library.main.DistortedLibrary;
37 6991ece5 Leszek Koltunski
import org.distorted.library.mesh.MeshBase;
38 42aa970f Leszek Koltunski
39
///////////////////////////////////////////////////////////////////////////////////////////////////
40
41 7198e5c9 Leszek Koltunski
public class MeshFileActivity extends Activity implements AdapterView.OnItemSelectedListener,
42 8aece7f2 Leszek Koltunski
                                                          SeekBar.OnSeekBarChangeListener
43 42aa970f Leszek Koltunski
{
44 6991ece5 Leszek Koltunski
    final static int PROCEDURAL = -1;
45 1bb5d3b7 Leszek Koltunski
    final static int POLYGON    = -2;
46 b2adcd57 Leszek Koltunski
    final static int MULTIGON   = -3;
47 6991ece5 Leszek Koltunski
48 7198e5c9 Leszek Koltunski
    private LinearLayout mLayout;
49 1af8e143 Leszek Koltunski
    private int mResource;
50 13884c8a Leszek Koltunski
    private String[] mNames = new String[] { "procedural" ,
51
                                             "polygon"    ,
52 b2adcd57 Leszek Koltunski
                                             "multigon"   ,
53 1beffb69 Leszek Koltunski
                                             "deferredjob",
54 71c7624f Leszek Koltunski
                                             "meshjoin"   ,
55
                                             "predeform"  ,
56
                                             "cube2"      ,
57
                                             "cube3"      ,
58
                                             "cube4"      ,
59
                                             "cube5"      ,
60
                                             "pyra3"      ,
61
                                             "pyra4"      ,
62 81c7daef Leszek Koltunski
                                             "pyra5"      ,
63 6991ece5 Leszek Koltunski
                                             "dino"       ,
64 1beffb69 Leszek Koltunski
                                             "skewb"
65 71c7624f Leszek Koltunski
                                           };
66
67
///////////////////////////////////////////////////////////////////////////////////////////////////
68
69 42aa970f Leszek Koltunski
    @Override
70
    protected void onCreate(Bundle icicle) 
71
      {
72
      super.onCreate(icicle);
73 a9df241d Leszek Koltunski
      DistortedLibrary.onCreate();
74 42aa970f Leszek Koltunski
      setContentView(R.layout.meshfilelayout);
75 71c7624f Leszek Koltunski
76
      Spinner meshSpinner  = findViewById(R.id.meshfileSpinner);
77
      meshSpinner.setOnItemSelectedListener(this);
78
79
      ArrayAdapter<String> adapterBitmap = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, mNames);
80
      adapterBitmap.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
81
      meshSpinner.setAdapter(adapterBitmap);
82 16b336db Leszek Koltunski
83
      SeekBar barB = findViewById(R.id.meshfileScale);
84
      barB.setOnSeekBarChangeListener(this);
85
      barB.setProgress(50);
86 7198e5c9 Leszek Koltunski
87
      mLayout = findViewById(R.id.meshfileComponentLayout);
88 42aa970f Leszek Koltunski
      }
89
90
///////////////////////////////////////////////////////////////////////////////////////////////////
91
    
92
    @Override
93
    protected void onPause() 
94
      {
95 c0f27889 Leszek Koltunski
      super.onPause();
96
      GLSurfaceView view = findViewById(R.id.meshfileSurfaceView);
97 42aa970f Leszek Koltunski
      view.onPause();
98
      DistortedLibrary.onPause();
99
      }
100
101
///////////////////////////////////////////////////////////////////////////////////////////////////
102
    
103
    @Override
104
    protected void onResume() 
105
      {
106
      super.onResume();
107 c0f27889 Leszek Koltunski
      GLSurfaceView view = findViewById(R.id.meshfileSurfaceView);
108 42aa970f Leszek Koltunski
      view.onResume();
109 099d8f8b Leszek Koltunski
110
      if( mResource!=0 ) Open(null);
111 42aa970f Leszek Koltunski
      }
112
    
113
///////////////////////////////////////////////////////////////////////////////////////////////////
114
    
115
    @Override
116
    protected void onDestroy() 
117
      {
118
      DistortedLibrary.onDestroy();
119
      super.onDestroy();
120
      }
121 71c7624f Leszek Koltunski
122 4d49605b Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
123
124
    public void onNormals(View v)
125
      {
126
      MeshFileSurfaceView view = findViewById(R.id.meshfileSurfaceView);
127
      MeshFileRenderer renderer = view.getRenderer();
128
      renderer.flipNormals();
129
      }
130
131 71c7624f Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
132
133
    public void Open(View v)
134
      {
135 48c88f57 Leszek Koltunski
      MeshFileSurfaceView view = findViewById(R.id.meshfileSurfaceView);
136 71c7624f Leszek Koltunski
      MeshFileRenderer renderer = view.getRenderer();
137
138 1af8e143 Leszek Koltunski
      renderer.open(mResource);
139 48c88f57 Leszek Koltunski
140
      int bytes    = renderer.getBytes();
141
      int vertices = renderer.getVertices();
142
      long time    = renderer.getTime();
143
144
      TextView byt = findViewById(R.id.meshfileSize);
145
      TextView ver = findViewById(R.id.meshfileVertices);
146
      TextView tim = findViewById(R.id.meshfileTime);
147
148
      byt.setText( String.format("%d", bytes   ) );
149
      ver.setText( String.format("%d", vertices) );
150
      tim.setText( String.format("%d", time    ) );
151 7198e5c9 Leszek Koltunski
152
      mLayout.removeAllViews();
153
154
      int effComponentNum = renderer.getEffComponentNum();
155
156
      for(int i=0; i<effComponentNum; i++)
157
        {
158
        View compView = createComponentView(renderer,i);
159
        mLayout.addView(compView);
160
        }
161
      }
162
163
///////////////////////////////////////////////////////////////////////////////////////////////////
164
165 8aece7f2 Leszek Koltunski
    private View createComponentView(MeshFileRenderer renderer, final int component)
166 7198e5c9 Leszek Koltunski
      {
167
      View view = getLayoutInflater().inflate(R.layout.meshfilecomponent, null);
168
169
      TextView id = view.findViewById(R.id.meshfileComponentID);
170
      id.setText(String.valueOf(component));
171
172
      int endIndex = renderer.getEndEffIndex(component);
173
      TextView index = view.findViewById(R.id.meshfileComponentText);
174
      index.setText(String.valueOf(endIndex));
175
176 8aece7f2 Leszek Koltunski
      final ToggleButton toggle = view.findViewById(R.id.meshfileComponentToggle);
177 39b925d5 Leszek Koltunski
178 8aece7f2 Leszek Koltunski
      toggle.setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener()
179
        {
180
        @Override
181
        public void onCheckedChanged(CompoundButton toggleButton, boolean isChecked)
182
          {
183
          MeshFileSurfaceView view = findViewById(R.id.meshfileSurfaceView);
184
          MeshFileRenderer renderer = view.getRenderer();
185 6991ece5 Leszek Koltunski
          MeshBase mesh = renderer.getMesh();
186 8aece7f2 Leszek Koltunski
          mesh.setEffectAssociation(component,isChecked ? 1:0,component);
187
          }
188
        }) ;
189 7198e5c9 Leszek Koltunski
190
      return view;
191 71c7624f Leszek Koltunski
      }
192
193
///////////////////////////////////////////////////////////////////////////////////////////////////
194
195
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id)
196
      {
197
      if( parent.getId()==R.id.meshfileSpinner )
198
        {
199 1af8e143 Leszek Koltunski
        switch(pos)
200
          {
201 13884c8a Leszek Koltunski
          case  0: mResource = PROCEDURAL       ; break;
202
          case  1: mResource = POLYGON          ; break;
203
          case  2: mResource = MULTIGON         ; break;
204 b2adcd57 Leszek Koltunski
          case  3: mResource = R.raw.deferredjob; break;
205
          case  4: mResource = R.raw.meshjoin   ; break;
206
          case  5: mResource = R.raw.predeform  ; break;
207
          case  6: mResource = R.raw.cube2      ; break;
208
          case  7: mResource = R.raw.cube3      ; break;
209
          case  8: mResource = R.raw.cube4      ; break;
210
          case  9: mResource = R.raw.cube5      ; break;
211
          case 10: mResource = R.raw.pyra3      ; break;
212
          case 11: mResource = R.raw.pyra4      ; break;
213
          case 12: mResource = R.raw.pyra5      ; break;
214
          case 13: mResource = R.raw.dino       ; break;
215
          case 14: mResource = R.raw.skewb      ; break;
216 1af8e143 Leszek Koltunski
          }
217 71c7624f Leszek Koltunski
        }
218
      }
219
220
///////////////////////////////////////////////////////////////////////////////////////////////////
221
222
    public void onNothingSelected(AdapterView<?> parent)
223
      {
224
      }
225 16b336db Leszek Koltunski
226
///////////////////////////////////////////////////////////////////////////////////////////////////
227
228
    public void onProgressChanged(SeekBar bar, int progress, boolean fromUser)
229
      {
230
      if( bar.getId() == R.id.meshfileScale )
231
        {
232
        MeshFileSurfaceView view = findViewById(R.id.meshfileSurfaceView);
233
        view.getRenderer().setScale(progress);
234
        }
235
      }
236
237
///////////////////////////////////////////////////////////////////////////////////////////////////
238
239
    public void onStartTrackingTouch(SeekBar bar) { }
240
241
///////////////////////////////////////////////////////////////////////////////////////////////////
242
243
    public void onStopTrackingTouch(SeekBar bar)  { }
244
245 42aa970f Leszek Koltunski
}