Project

General

Profile

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

examples / src / main / java / org / distorted / examples / meshfile / MeshFileActivity.java @ 8aece7f2

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