Project

General

Profile

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

examples / src / main / java / org / distorted / examples / earth / EarthActivity.java @ 9df01f21

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.earth;
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.SeekBar;
29
import android.widget.Spinner;
30

    
31
import org.distorted.examples.R;
32
import org.distorted.library.effect.EffectName;
33
import org.distorted.library.effect.EffectType;
34
import org.distorted.library.main.DistortedLibrary;
35

    
36
///////////////////////////////////////////////////////////////////////////////////////////////////
37

    
38
public class EarthActivity extends Activity implements SeekBar.OnSeekBarChangeListener, AdapterView.OnItemSelectedListener
39
{
40
    private EffectName[] mEffectNames;
41

    
42
///////////////////////////////////////////////////////////////////////////////////////////////////
43

    
44
    @Override
45
    protected void onCreate(Bundle savedState)
46
      {
47
      super.onCreate(savedState);
48

    
49
      setContentView(R.layout.earthlayout);
50

    
51
      SeekBar levelBar = findViewById(R.id.earthInflateLevel);
52
      levelBar.setOnSeekBarChangeListener(this);
53
      levelBar.setProgress(50);
54

    
55
      Spinner renderSpinner  = findViewById(R.id.earthSpinnerEffect);
56
      renderSpinner.setOnItemSelectedListener(this);
57

    
58
      ArrayAdapter<String> adapterBitmap = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, createEffectNames() );
59
      adapterBitmap.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
60
      renderSpinner.setAdapter(adapterBitmap);
61
      }
62

    
63
///////////////////////////////////////////////////////////////////////////////////////////////////
64

    
65
    @Override
66
    protected void onPause() 
67
      {
68
      GLSurfaceView view = this.findViewById(R.id.earthSurfaceView);
69
      if( view!=null ) view.onPause();
70

    
71
      EarthSurfaceViewPicker pick = this.findViewById(R.id.earthSurfaceViewPicker);
72
      if( pick!=null ) pick.onPause();
73

    
74
      DistortedLibrary.onPause();
75
      super.onPause();
76
      }
77

    
78
///////////////////////////////////////////////////////////////////////////////////////////////////
79
    
80
    @Override
81
    protected void onResume() 
82
      {
83
      super.onResume();
84
      
85
      GLSurfaceView view = this.findViewById(R.id.earthSurfaceView);
86
      if( view!=null ) view.onResume();
87

    
88
      EarthSurfaceViewPicker pick = this.findViewById(R.id.earthSurfaceViewPicker);
89
      if( pick!=null ) pick.onResume();
90
      }
91
    
92
///////////////////////////////////////////////////////////////////////////////////////////////////
93
    
94
    @Override
95
    protected void onDestroy() 
96
      {
97
      DistortedLibrary.onDestroy();
98
      super.onDestroy();
99
      }
100

    
101
///////////////////////////////////////////////////////////////////////////////////////////////////
102

    
103
    @Override
104
    public void onSaveInstanceState(Bundle savedInstanceState)
105
      {
106
      super.onSaveInstanceState(savedInstanceState);
107

    
108
      EarthSurfaceViewPicker pick = this.findViewById(R.id.earthSurfaceViewPicker);
109
      pick.save(savedInstanceState);
110
      }
111

    
112
///////////////////////////////////////////////////////////////////////////////////////////////////
113

    
114
    @Override
115
    public void onRestoreInstanceState(Bundle savedInstanceState)
116
      {
117
      super.onRestoreInstanceState(savedInstanceState);
118

    
119
      EarthSurfaceViewPicker pick = this.findViewById(R.id.earthSurfaceViewPicker);
120
      pick.restore(savedInstanceState);
121
      }
122

    
123
///////////////////////////////////////////////////////////////////////////////////////////////////
124

    
125
    public void onProgressChanged(SeekBar bar, int progress, boolean fromUser)
126
      {
127
      switch (bar.getId())
128
        {
129
        case R.id.earthInflateLevel: EarthSurfaceView view = this.findViewById(R.id.earthSurfaceView);
130
                                     view.getRenderer().setLevel(progress);
131
                                     break;
132
        }
133
      }
134

    
135
///////////////////////////////////////////////////////////////////////////////////////////////////
136

    
137
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id)
138
      {
139
      EarthSurfaceViewPicker mPick = this.findViewById(R.id.earthSurfaceViewPicker);
140
      mPick.setEffectMode(mEffectNames[pos]);
141
      }
142

    
143
///////////////////////////////////////////////////////////////////////////////////////////////////
144

    
145
    public void Remove(View v)
146
      {
147
      EarthSurfaceViewPicker mPick = this.findViewById(R.id.earthSurfaceViewPicker);
148
      mPick.clearPoints();
149

    
150
      EarthSurfaceView view = this.findViewById(R.id.earthSurfaceView);
151
      EarthRenderer renderer = view.getRenderer();
152

    
153
      renderer.removeAll();
154
      }
155

    
156
///////////////////////////////////////////////////////////////////////////////////////////////////
157

    
158
    void addNewPoint(float longitude, float latitude, EffectName effect)
159
      {
160
      EarthSurfaceView view = this.findViewById(R.id.earthSurfaceView);
161
      EarthRenderer renderer = view.getRenderer();
162

    
163
      renderer.addNewPoint(longitude,latitude,effect);
164
      }
165

    
166
///////////////////////////////////////////////////////////////////////////////////////////////////
167

    
168
    private String[] createEffectNames()
169
      {
170
      EffectType type;
171
      EffectName[] names = EffectName.values();
172

    
173
      int numEffects=0;
174

    
175
      for (EffectName effectName : names)
176
        {
177
        type = effectName.getType();
178
        if (type == EffectType.FRAGMENT || type == EffectType.VERTEX) numEffects++;
179
        }
180

    
181
      mEffectNames = new EffectName[numEffects];
182
      String[] effectStrings = new String[numEffects];
183

    
184
      numEffects=0;
185

    
186
      for (EffectName name : names)
187
        {
188
        type = name.getType();
189

    
190
        if (type == EffectType.FRAGMENT || type == EffectType.VERTEX)
191
          {
192
          mEffectNames[numEffects] = name;
193
          effectStrings[numEffects] = name.name();
194

    
195
          numEffects++;
196
          }
197
        }
198

    
199
      return effectStrings;
200
      }
201

    
202
///////////////////////////////////////////////////////////////////////////////////////////////////
203

    
204
    public void onStartTrackingTouch(SeekBar bar) { }
205
    public void onStopTrackingTouch(SeekBar bar)  { }
206
    public void onNothingSelected(AdapterView<?> parent) { }
207
}
(1-1/4)