Project

General

Profile

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

examples / src / main / java / org / distorted / examples / meshfile / MeshFileActivity.java @ 7198e5c9

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 7198e5c9 Leszek Koltunski
import android.widget.Button;
29
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 42aa970f Leszek Koltunski
34
import org.distorted.examples.R;
35
import org.distorted.library.main.DistortedLibrary;
36
37
///////////////////////////////////////////////////////////////////////////////////////////////////
38
39 7198e5c9 Leszek Koltunski
public class MeshFileActivity extends Activity implements AdapterView.OnItemSelectedListener,
40
                                                          SeekBar.OnSeekBarChangeListener,
41
                                                          View.OnClickListener
42 42aa970f Leszek Koltunski
{
43 7198e5c9 Leszek Koltunski
    private LinearLayout mLayout;
44 1af8e143 Leszek Koltunski
    private int mResource;
45 71c7624f Leszek Koltunski
    private String[] mNames = new String[] { "deferredjob",
46
                                             "meshjoin"   ,
47
                                             "predeform"  ,
48
                                             "cube2"      ,
49
                                             "cube3"      ,
50
                                             "cube4"      ,
51
                                             "cube5"      ,
52
                                             "pyra3"      ,
53
                                             "pyra4"      ,
54
                                             "pyra5"
55
                                           };
56
57
///////////////////////////////////////////////////////////////////////////////////////////////////
58
59 42aa970f Leszek Koltunski
    @Override
60
    protected void onCreate(Bundle icicle) 
61
      {
62
      super.onCreate(icicle);
63
      setContentView(R.layout.meshfilelayout);
64 71c7624f Leszek Koltunski
65
      Spinner meshSpinner  = findViewById(R.id.meshfileSpinner);
66
      meshSpinner.setOnItemSelectedListener(this);
67
68
      ArrayAdapter<String> adapterBitmap = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, mNames);
69
      adapterBitmap.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
70
      meshSpinner.setAdapter(adapterBitmap);
71 16b336db Leszek Koltunski
72
      SeekBar barB = findViewById(R.id.meshfileScale);
73
      barB.setOnSeekBarChangeListener(this);
74
      barB.setProgress(50);
75 7198e5c9 Leszek Koltunski
76
      mLayout = findViewById(R.id.meshfileComponentLayout);
77 42aa970f Leszek Koltunski
      }
78
79
///////////////////////////////////////////////////////////////////////////////////////////////////
80
    
81
    @Override
82
    protected void onPause() 
83
      {
84 c0f27889 Leszek Koltunski
      super.onPause();
85
      GLSurfaceView view = findViewById(R.id.meshfileSurfaceView);
86 42aa970f Leszek Koltunski
      view.onPause();
87
      DistortedLibrary.onPause();
88
      }
89
90
///////////////////////////////////////////////////////////////////////////////////////////////////
91
    
92
    @Override
93
    protected void onResume() 
94
      {
95
      super.onResume();
96 c0f27889 Leszek Koltunski
      GLSurfaceView view = findViewById(R.id.meshfileSurfaceView);
97 42aa970f Leszek Koltunski
      view.onResume();
98 099d8f8b Leszek Koltunski
99
      if( mResource!=0 ) Open(null);
100 42aa970f Leszek Koltunski
      }
101
    
102
///////////////////////////////////////////////////////////////////////////////////////////////////
103
    
104
    @Override
105
    protected void onDestroy() 
106
      {
107
      DistortedLibrary.onDestroy();
108
      super.onDestroy();
109
      }
110 71c7624f Leszek Koltunski
111
///////////////////////////////////////////////////////////////////////////////////////////////////
112
113
    public void Open(View v)
114
      {
115 48c88f57 Leszek Koltunski
      MeshFileSurfaceView view = findViewById(R.id.meshfileSurfaceView);
116 71c7624f Leszek Koltunski
      MeshFileRenderer renderer = view.getRenderer();
117
118 1af8e143 Leszek Koltunski
      renderer.open(mResource);
119 48c88f57 Leszek Koltunski
120
      int bytes    = renderer.getBytes();
121
      int vertices = renderer.getVertices();
122
      long time    = renderer.getTime();
123
124
      TextView byt = findViewById(R.id.meshfileSize);
125
      TextView ver = findViewById(R.id.meshfileVertices);
126
      TextView tim = findViewById(R.id.meshfileTime);
127
128
      byt.setText( String.format("%d", bytes   ) );
129
      ver.setText( String.format("%d", vertices) );
130
      tim.setText( String.format("%d", time    ) );
131 7198e5c9 Leszek Koltunski
132
      mLayout.removeAllViews();
133
134
      int effComponentNum = renderer.getEffComponentNum();
135
136
      for(int i=0; i<effComponentNum; i++)
137
        {
138
        View compView = createComponentView(renderer,i);
139
        mLayout.addView(compView);
140
        }
141
      }
142
143
///////////////////////////////////////////////////////////////////////////////////////////////////
144
145
    private View createComponentView(MeshFileRenderer renderer, int component)
146
      {
147
      View view = getLayoutInflater().inflate(R.layout.meshfilecomponent, null);
148
149
      TextView id = view.findViewById(R.id.meshfileComponentID);
150
      id.setText(String.valueOf(component));
151
152
      int endIndex = renderer.getEndEffIndex(component);
153
      TextView index = view.findViewById(R.id.meshfileComponentText);
154
      index.setText(String.valueOf(endIndex));
155
156
      Button butt = view.findViewById(R.id.meshfileComponentDisappear);
157
      butt.setId(component);
158
      butt.setOnClickListener(this);
159
160
      return view;
161 71c7624f Leszek Koltunski
      }
162
163
///////////////////////////////////////////////////////////////////////////////////////////////////
164
165
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id)
166
      {
167
      if( parent.getId()==R.id.meshfileSpinner )
168
        {
169 1af8e143 Leszek Koltunski
        switch(pos)
170
          {
171
          case  0: mResource = R.raw.deferredjob; break;
172 acad428e Leszek Koltunski
          case  1: mResource = R.raw.meshjoin   ; break;
173 1af8e143 Leszek Koltunski
          case  2: mResource = R.raw.predeform  ; break;
174 acad428e Leszek Koltunski
          case  3: mResource = R.raw.cube2      ; break;
175
          case  4: mResource = R.raw.cube3      ; break;
176
          case  5: mResource = R.raw.cube4      ; break;
177
          case  6: mResource = R.raw.cube5      ; break;
178
          case  7: mResource = R.raw.pyra3      ; break;
179
          case  8: mResource = R.raw.pyra4      ; break;
180
          case  9: mResource = R.raw.pyra5      ; break;
181 1af8e143 Leszek Koltunski
          }
182 71c7624f Leszek Koltunski
        }
183
      }
184
185
///////////////////////////////////////////////////////////////////////////////////////////////////
186
187
    public void onNothingSelected(AdapterView<?> parent)
188
      {
189
      }
190 16b336db Leszek Koltunski
191 7198e5c9 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
192
193
  @Override
194
  public void onClick(View v)
195
    {
196
    int id = v.getId();
197
198
    android.util.Log.e("act", "clicked: "+id);
199
    }
200
201 16b336db Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
202
203
    public void onProgressChanged(SeekBar bar, int progress, boolean fromUser)
204
      {
205
      if( bar.getId() == R.id.meshfileScale )
206
        {
207
        MeshFileSurfaceView view = findViewById(R.id.meshfileSurfaceView);
208
        view.getRenderer().setScale(progress);
209
        }
210
      }
211
212
///////////////////////////////////////////////////////////////////////////////////////////////////
213
214
    public void onStartTrackingTouch(SeekBar bar) { }
215
216
///////////////////////////////////////////////////////////////////////////////////////////////////
217
218
    public void onStopTrackingTouch(SeekBar bar)  { }
219
220 42aa970f Leszek Koltunski
}