Project

General

Profile

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

examples / src / main / java / org / distorted / examples / meshfile / MeshFileActivity.java @ 81c7daef

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

    
22
import android.app.Activity;
23
import android.opengl.GLSurfaceView;
24
import android.os.Bundle;
25
import android.view.View;
26
import android.widget.AdapterView;
27
import android.widget.ArrayAdapter;
28
import android.widget.CompoundButton;
29
import android.widget.LinearLayout;
30
import android.widget.SeekBar;
31
import android.widget.Spinner;
32
import android.widget.TextView;
33
import android.widget.ToggleButton;
34

    
35
import org.distorted.examples.R;
36
import org.distorted.library.main.DistortedLibrary;
37
import org.distorted.library.mesh.MeshFile;
38

    
39
///////////////////////////////////////////////////////////////////////////////////////////////////
40

    
41
public class MeshFileActivity extends Activity implements AdapterView.OnItemSelectedListener,
42
                                                          SeekBar.OnSeekBarChangeListener
43
{
44
    private LinearLayout mLayout;
45
    private int mResource;
46
    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
                                             "dino"
57
                                           };
58

    
59
///////////////////////////////////////////////////////////////////////////////////////////////////
60

    
61
    @Override
62
    protected void onCreate(Bundle icicle) 
63
      {
64
      super.onCreate(icicle);
65
      setContentView(R.layout.meshfilelayout);
66

    
67
      Spinner meshSpinner  = findViewById(R.id.meshfileSpinner);
68
      meshSpinner.setOnItemSelectedListener(this);
69

    
70
      ArrayAdapter<String> adapterBitmap = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, mNames);
71
      adapterBitmap.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
72
      meshSpinner.setAdapter(adapterBitmap);
73

    
74
      SeekBar barB = findViewById(R.id.meshfileScale);
75
      barB.setOnSeekBarChangeListener(this);
76
      barB.setProgress(50);
77

    
78
      mLayout = findViewById(R.id.meshfileComponentLayout);
79
      }
80

    
81
///////////////////////////////////////////////////////////////////////////////////////////////////
82
    
83
    @Override
84
    protected void onPause() 
85
      {
86
      super.onPause();
87
      GLSurfaceView view = findViewById(R.id.meshfileSurfaceView);
88
      view.onPause();
89
      DistortedLibrary.onPause();
90
      }
91

    
92
///////////////////////////////////////////////////////////////////////////////////////////////////
93
    
94
    @Override
95
    protected void onResume() 
96
      {
97
      super.onResume();
98
      GLSurfaceView view = findViewById(R.id.meshfileSurfaceView);
99
      view.onResume();
100

    
101
      if( mResource!=0 ) Open(null);
102
      }
103
    
104
///////////////////////////////////////////////////////////////////////////////////////////////////
105
    
106
    @Override
107
    protected void onDestroy() 
108
      {
109
      DistortedLibrary.onDestroy();
110
      super.onDestroy();
111
      }
112

    
113
///////////////////////////////////////////////////////////////////////////////////////////////////
114

    
115
    public void Open(View v)
116
      {
117
      MeshFileSurfaceView view = findViewById(R.id.meshfileSurfaceView);
118
      MeshFileRenderer renderer = view.getRenderer();
119

    
120
      renderer.open(mResource);
121

    
122
      int bytes    = renderer.getBytes();
123
      int vertices = renderer.getVertices();
124
      long time    = renderer.getTime();
125

    
126
      TextView byt = findViewById(R.id.meshfileSize);
127
      TextView ver = findViewById(R.id.meshfileVertices);
128
      TextView tim = findViewById(R.id.meshfileTime);
129

    
130
      byt.setText( String.format("%d", bytes   ) );
131
      ver.setText( String.format("%d", vertices) );
132
      tim.setText( String.format("%d", time    ) );
133

    
134
      mLayout.removeAllViews();
135

    
136
      int effComponentNum = renderer.getEffComponentNum();
137

    
138
      for(int i=0; i<effComponentNum; i++)
139
        {
140
        View compView = createComponentView(renderer,i);
141
        mLayout.addView(compView);
142
        }
143
      }
144

    
145
///////////////////////////////////////////////////////////////////////////////////////////////////
146

    
147
    private View createComponentView(MeshFileRenderer renderer, final int component)
148
      {
149
      View view = getLayoutInflater().inflate(R.layout.meshfilecomponent, null);
150

    
151
      TextView id = view.findViewById(R.id.meshfileComponentID);
152
      id.setText(String.valueOf(component));
153

    
154
      int endIndex = renderer.getEndEffIndex(component);
155
      TextView index = view.findViewById(R.id.meshfileComponentText);
156
      index.setText(String.valueOf(endIndex));
157

    
158
      final ToggleButton toggle = view.findViewById(R.id.meshfileComponentToggle);
159

    
160
      toggle.setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener()
161
        {
162
        @Override
163
        public void onCheckedChanged(CompoundButton toggleButton, boolean isChecked)
164
          {
165
          MeshFileSurfaceView view = findViewById(R.id.meshfileSurfaceView);
166
          MeshFileRenderer renderer = view.getRenderer();
167
          MeshFile mesh = renderer.getMesh();
168
          mesh.setEffectAssociation(component,isChecked ? 1:0,component);
169
          }
170
        }) ;
171

    
172
      return view;
173
      }
174

    
175
///////////////////////////////////////////////////////////////////////////////////////////////////
176

    
177
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id)
178
      {
179
      if( parent.getId()==R.id.meshfileSpinner )
180
        {
181
        switch(pos)
182
          {
183
          case  0: mResource = R.raw.deferredjob; break;
184
          case  1: mResource = R.raw.meshjoin   ; break;
185
          case  2: mResource = R.raw.predeform  ; break;
186
          case  3: mResource = R.raw.cube2      ; break;
187
          case  4: mResource = R.raw.cube3      ; break;
188
          case  5: mResource = R.raw.cube4      ; break;
189
          case  6: mResource = R.raw.cube5      ; break;
190
          case  7: mResource = R.raw.pyra3      ; break;
191
          case  8: mResource = R.raw.pyra4      ; break;
192
          case  9: mResource = R.raw.pyra5      ; break;
193
          case 10: mResource = R.raw.dino       ; break;
194
          }
195
        }
196
      }
197

    
198
///////////////////////////////////////////////////////////////////////////////////////////////////
199

    
200
    public void onNothingSelected(AdapterView<?> parent)
201
      {
202
      }
203

    
204
///////////////////////////////////////////////////////////////////////////////////////////////////
205

    
206
    public void onProgressChanged(SeekBar bar, int progress, boolean fromUser)
207
      {
208
      if( bar.getId() == R.id.meshfileScale )
209
        {
210
        MeshFileSurfaceView view = findViewById(R.id.meshfileSurfaceView);
211
        view.getRenderer().setScale(progress);
212
        }
213
      }
214

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

    
217
    public void onStartTrackingTouch(SeekBar bar) { }
218

    
219
///////////////////////////////////////////////////////////////////////////////////////////////////
220

    
221
    public void onStopTrackingTouch(SeekBar bar)  { }
222

    
223
}
(1-1/3)