Project

General

Profile

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

examples / src / main / java / org / distorted / examples / earth / EarthActivity.java @ 296d2e73

1 64558e4e 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.earth;
21
22
import android.app.Activity;
23 9814e53c Leszek Koltunski
import android.opengl.GLSurfaceView;
24 64558e4e Leszek Koltunski
import android.os.Bundle;
25 296d2e73 Leszek Koltunski
import android.view.View;
26
import android.widget.AdapterView;
27
import android.widget.ArrayAdapter;
28 9814e53c Leszek Koltunski
import android.widget.SeekBar;
29 296d2e73 Leszek Koltunski
import android.widget.Spinner;
30 64558e4e Leszek Koltunski
31
import org.distorted.examples.R;
32 296d2e73 Leszek Koltunski
import org.distorted.library.effect.EffectName;
33
import org.distorted.library.effect.EffectType;
34 9814e53c Leszek Koltunski
import org.distorted.library.main.Distorted;
35 64558e4e Leszek Koltunski
36
///////////////////////////////////////////////////////////////////////////////////////////////////
37
38 296d2e73 Leszek Koltunski
public class EarthActivity extends Activity implements SeekBar.OnSeekBarChangeListener, AdapterView.OnItemSelectedListener
39 9814e53c Leszek Koltunski
{
40 296d2e73 Leszek Koltunski
    private EffectName[] mEffectNames;
41 64558e4e Leszek Koltunski
42
///////////////////////////////////////////////////////////////////////////////////////////////////
43 296d2e73 Leszek Koltunski
44 9814e53c Leszek Koltunski
    @Override
45
    protected void onPause() 
46 64558e4e Leszek Koltunski
      {
47 296d2e73 Leszek Koltunski
      GLSurfaceView view = this.findViewById(R.id.earthSurfaceView);
48
      if( view!=null ) view.onPause();
49
50
      EarthSurfaceViewPicker pick = this.findViewById(R.id.earthSurfaceViewPicker);
51
      if( pick!=null ) pick.onPause();
52 64558e4e Leszek Koltunski
53 9814e53c Leszek Koltunski
      Distorted.onPause();
54
      super.onPause();
55 64558e4e Leszek Koltunski
      }
56
57
///////////////////////////////////////////////////////////////////////////////////////////////////
58 9814e53c Leszek Koltunski
    
59
    @Override
60
    protected void onResume() 
61 64558e4e Leszek Koltunski
      {
62 9814e53c Leszek Koltunski
      super.onResume();
63
      
64 296d2e73 Leszek Koltunski
      GLSurfaceView view = this.findViewById(R.id.earthSurfaceView);
65
      if( view!=null ) view.onResume();
66
67
      EarthSurfaceViewPicker pick = this.findViewById(R.id.earthSurfaceViewPicker);
68
      if( pick!=null ) pick.onResume();
69 64558e4e Leszek Koltunski
      }
70 9814e53c Leszek Koltunski
    
71 64558e4e Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
72 9814e53c Leszek Koltunski
    
73
    @Override
74
    protected void onDestroy() 
75 64558e4e Leszek Koltunski
      {
76 9814e53c Leszek Koltunski
      Distorted.onDestroy();  
77
      super.onDestroy();
78 64558e4e Leszek Koltunski
      }
79 9814e53c Leszek Koltunski
 
80 64558e4e Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
81
82 9814e53c Leszek Koltunski
    @Override
83
    protected void onCreate(Bundle savedState)
84 64558e4e Leszek Koltunski
      {
85 9814e53c Leszek Koltunski
      super.onCreate(savedState);
86 64558e4e Leszek Koltunski
87 9814e53c Leszek Koltunski
      setContentView(R.layout.earthlayout);
88 64558e4e Leszek Koltunski
89 9814e53c Leszek Koltunski
      SeekBar levelBar = findViewById(R.id.earthInflateLevel);
90
      levelBar.setOnSeekBarChangeListener(this);
91
      levelBar.setProgress(50);
92 296d2e73 Leszek Koltunski
93
      Spinner renderSpinner  = findViewById(R.id.earthSpinnerEffect);
94
      renderSpinner.setOnItemSelectedListener(this);
95
96
      ArrayAdapter<String> adapterBitmap = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, createEffectNames() );
97
      adapterBitmap.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
98
      renderSpinner.setAdapter(adapterBitmap);
99
      }
100
101
102
///////////////////////////////////////////////////////////////////////////////////////////////////
103
104
    @Override
105
    public void onSaveInstanceState(Bundle savedInstanceState)
106
      {
107
      super.onSaveInstanceState(savedInstanceState);
108
109
      EarthSurfaceViewPicker pick = this.findViewById(R.id.earthSurfaceViewPicker);
110
      pick.save(savedInstanceState);
111
      }
112
113
///////////////////////////////////////////////////////////////////////////////////////////////////
114
115
    @Override
116
    public void onRestoreInstanceState(Bundle savedInstanceState)
117
      {
118
      super.onRestoreInstanceState(savedInstanceState);
119
120
      EarthSurfaceViewPicker pick = this.findViewById(R.id.earthSurfaceViewPicker);
121
      pick.restore(savedInstanceState);
122 64558e4e Leszek Koltunski
      }
123
124
///////////////////////////////////////////////////////////////////////////////////////////////////
125
126 9814e53c Leszek Koltunski
    public void onProgressChanged(SeekBar bar, int progress, boolean fromUser)
127 64558e4e Leszek Koltunski
      {
128 9814e53c Leszek Koltunski
      switch (bar.getId())
129
        {
130
        case R.id.earthInflateLevel: EarthSurfaceView view = this.findViewById(R.id.earthSurfaceView);
131
                                     view.getRenderer().setLevel(progress);
132
                                     break;
133
        }
134 64558e4e Leszek Koltunski
      }
135
136
///////////////////////////////////////////////////////////////////////////////////////////////////
137
138 9814e53c Leszek Koltunski
    public void onStartTrackingTouch(SeekBar bar) { }
139 64558e4e Leszek Koltunski
140
///////////////////////////////////////////////////////////////////////////////////////////////////
141 9814e53c Leszek Koltunski
142
    public void onStopTrackingTouch(SeekBar bar)  { }
143
144 64558e4e Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
145
146 296d2e73 Leszek Koltunski
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id)
147 9814e53c Leszek Koltunski
      {
148 296d2e73 Leszek Koltunski
      EarthSurfaceViewPicker mPick = this.findViewById(R.id.earthSurfaceViewPicker);
149
      mPick.setEffectMode(mEffectNames[pos]);
150 9814e53c Leszek Koltunski
      }
151 64558e4e Leszek Koltunski
152 9814e53c Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
153 64558e4e Leszek Koltunski
154 296d2e73 Leszek Koltunski
    public void onNothingSelected(AdapterView<?> parent) { }
155
156
///////////////////////////////////////////////////////////////////////////////////////////////////
157
158
    public void Remove(View v)
159 9814e53c Leszek Koltunski
      {
160 296d2e73 Leszek Koltunski
      EarthSurfaceViewPicker mPick = this.findViewById(R.id.earthSurfaceViewPicker);
161
      mPick.clearPoints();
162
163
      EarthSurfaceView view = this.findViewById(R.id.earthSurfaceView);
164
      EarthRenderer renderer = view.getRenderer();
165
166
      renderer.removeAll();
167
      }
168
169
///////////////////////////////////////////////////////////////////////////////////////////////////
170
171
    void addNewPoint(float x, float y, EffectName effect)
172
      {
173
      EarthSurfaceView view = this.findViewById(R.id.earthSurfaceView);
174
      EarthRenderer renderer = view.getRenderer();
175
176
      renderer.addNewPoint(x,y,effect);
177
      }
178
179
///////////////////////////////////////////////////////////////////////////////////////////////////
180
181
    private String[] createEffectNames()
182
      {
183
      EffectType type;
184
      EffectName[] names = EffectName.values();
185
186
      int numEffects=0;
187
188
      for(int i=0; i<names.length; i++)
189
        {
190
        type = names[i].getType();
191
        if (type == EffectType.FRAGMENT || type == EffectType.VERTEX) numEffects++;
192
        }
193
194
      mEffectNames = new EffectName[numEffects];
195
      String[] effectStrings = new String[numEffects];
196
197
      numEffects=0;
198
199
      for(int i=0; i<names.length; i++)
200
        {
201
        type = names[i].getType();
202
203
        if (type == EffectType.FRAGMENT || type == EffectType.VERTEX)
204
          {
205
          mEffectNames[numEffects]  = names[i];
206
          effectStrings[numEffects] = names[i].name();
207
208
          numEffects++;
209
          }
210
        }
211
212
      return effectStrings;
213 9814e53c Leszek Koltunski
      }
214
}