Project

General

Profile

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

examples / src / main / java / org / distorted / examples / triblur / TriblurActivity.java @ 8392dc7b

1 80f37d1b Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
2
// Copyright 2016 Leszek Koltunski                                                               //
3
//                                                                                               //
4 71c8884f Leszek Koltunski
// This file is part of Distorted.                                                               //
5 80f37d1b Leszek Koltunski
//                                                                                               //
6 71c8884f Leszek Koltunski
// Distorted is free software: you can redistribute it and/or modify                             //
7 80f37d1b Leszek Koltunski
// 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 71c8884f Leszek Koltunski
// Distorted is distributed in the hope that it will be useful,                                  //
12 80f37d1b Leszek Koltunski
// 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 71c8884f Leszek Koltunski
// along with Distorted.  If not, see <http://www.gnu.org/licenses/>.                            //
18 80f37d1b Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
19
20
package org.distorted.examples.triblur;
21
22
import android.app.Activity;
23
import android.opengl.GLSurfaceView;
24
import android.os.Bundle;
25
import android.view.View;
26 a935e9db Leszek Koltunski
import android.widget.AdapterView;
27
import android.widget.ArrayAdapter;
28 80f37d1b Leszek Koltunski
import android.widget.SeekBar;
29 a935e9db Leszek Koltunski
import android.widget.Spinner;
30 80f37d1b Leszek Koltunski
31
import org.distorted.examples.R;
32
import org.distorted.library.effect.EffectQuality;
33 e3900503 Leszek Koltunski
import org.distorted.library.main.DistortedLibrary;
34 80f37d1b Leszek Koltunski
35
///////////////////////////////////////////////////////////////////////////////////////////////////
36
37 a935e9db Leszek Koltunski
public class TriblurActivity extends Activity implements SeekBar.OnSeekBarChangeListener, AdapterView.OnItemSelectedListener
38 80f37d1b Leszek Koltunski
{
39 c40df162 Leszek Koltunski
    private static final int NONE0 = 0;
40
    private static final int NONE1 = 1;
41
    private static final int NONE2 = 2;
42
    private static final int BLUR0 = 3;
43
    private static final int BLUR1 = 4;
44
    private static final int BLUR2 = 5;
45
    private static final int GLOW0 = 6;
46
    private static final int GLOW1 = 7;
47
    private static final int GLOW2 = 8;
48
49 80f37d1b Leszek Koltunski
    private int mQuality;
50 f1b8b412 Leszek Koltunski
    private int mBackground;
51 80f37d1b Leszek Koltunski
52
///////////////////////////////////////////////////////////////////////////////////////////////////
53
54
    @Override
55
    protected void onCreate(Bundle savedState) 
56
      {
57
      super.onCreate(savedState);
58
      setContentView(R.layout.triblurlayout);
59
60 a935e9db Leszek Koltunski
      SeekBar radiusBar0 = findViewById(R.id.triblurSeek0);
61
      SeekBar radiusBar1 = findViewById(R.id.triblurSeek1);
62
      SeekBar radiusBar2 = findViewById(R.id.triblurSeek2);
63 80f37d1b Leszek Koltunski
64
      radiusBar0.setOnSeekBarChangeListener(this);
65
      radiusBar1.setOnSeekBarChangeListener(this);
66
      radiusBar2.setOnSeekBarChangeListener(this);
67
68
      if( savedState==null )
69
        {
70
        radiusBar0.setProgress(20);
71
        radiusBar1.setProgress(50);
72
        radiusBar2.setProgress(70);
73
74 f1b8b412 Leszek Koltunski
        privateQuality(1);
75
        privateBackgroundColor(1);
76 c40df162 Leszek Koltunski
        privateEffect(BLUR0);
77
        privateEffect(BLUR1);
78
        privateEffect(BLUR2);
79 80f37d1b Leszek Koltunski
        }
80 a935e9db Leszek Koltunski
81
      Spinner typeSpinner  = findViewById(R.id.triblur_spinnerQuality);
82
      typeSpinner.setOnItemSelectedListener(this);
83
84 8392dc7b Leszek Koltunski
      String[] objectType = new String[] {"Quality Highest", "Quality High", "Quality Medium", "Quality Low"};
85 a935e9db Leszek Koltunski
86
      ArrayAdapter<String> adapterType = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, objectType);
87
      adapterType.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
88
      typeSpinner.setAdapter(adapterType);
89
90
      Spinner bitmapSpinner  = findViewById(R.id.triblur_spinnerMode);
91
      bitmapSpinner.setOnItemSelectedListener(this);
92
93
      String[] objectBitmap = new String[] { "Render: Normal", "Render: OIT" };
94
95
      ArrayAdapter<String> adapterBitmap = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, objectBitmap);
96
      adapterBitmap.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
97
      bitmapSpinner.setAdapter(adapterBitmap);
98
      }
99
100
///////////////////////////////////////////////////////////////////////////////////////////////////
101
102
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id)
103
      {
104
      switch(parent.getId())
105
        {
106
        case R.id.triblur_spinnerQuality: privateQuality(pos);
107
                                          break;
108 a4d59c0b Leszek Koltunski
        case R.id.triblur_spinnerMode   : TriblurSurfaceView v = findViewById(R.id.triblurSurfaceView);
109 a935e9db Leszek Koltunski
                                          TriblurRenderer renderer = v.getRenderer();
110
                                          renderer.setRenderModeToOIT(pos==1);
111
                                          break;
112
        }
113
      }
114
115
///////////////////////////////////////////////////////////////////////////////////////////////////
116
117
    public void onNothingSelected(AdapterView<?> parent)
118
      {
119 80f37d1b Leszek Koltunski
      }
120
121
///////////////////////////////////////////////////////////////////////////////////////////////////
122
    
123
    @Override
124
    protected void onPause() 
125
      {
126 a4d59c0b Leszek Koltunski
      GLSurfaceView view = findViewById(R.id.triblurSurfaceView);
127 80f37d1b Leszek Koltunski
      view.onPause();
128 e3900503 Leszek Koltunski
      DistortedLibrary.onPause();
129 80f37d1b Leszek Koltunski
      super.onPause();
130
      }
131
132
///////////////////////////////////////////////////////////////////////////////////////////////////
133
    
134
    @Override
135
    protected void onResume() 
136
      {
137
      super.onResume();
138 a4d59c0b Leszek Koltunski
      GLSurfaceView view = findViewById(R.id.triblurSurfaceView);
139 80f37d1b Leszek Koltunski
      view.onResume();
140
      }
141
    
142
///////////////////////////////////////////////////////////////////////////////////////////////////
143
    
144
    @Override
145
    protected void onDestroy() 
146
      {
147 e3900503 Leszek Koltunski
      DistortedLibrary.onDestroy();
148 80f37d1b Leszek Koltunski
      super.onDestroy();
149
      }
150
151
///////////////////////////////////////////////////////////////////////////////////////////////////
152
153
    @Override
154
    public void onSaveInstanceState(Bundle savedInstanceState)
155
      {
156
      super.onSaveInstanceState(savedInstanceState);
157
158 a4d59c0b Leszek Koltunski
      TriblurSurfaceView view = findViewById(R.id.triblurSurfaceView);
159 80f37d1b Leszek Koltunski
      TriblurRenderer renderer = view.getRenderer();
160
161 c40df162 Leszek Koltunski
      savedInstanceState.putIntArray("effects", renderer.getEffects() );
162 80f37d1b Leszek Koltunski
      savedInstanceState.putInt("quality", mQuality);
163 f1b8b412 Leszek Koltunski
      savedInstanceState.putInt("background", mBackground);
164 80f37d1b Leszek Koltunski
      }
165
166
///////////////////////////////////////////////////////////////////////////////////////////////////
167
168
    @Override
169
    public void onRestoreInstanceState(Bundle savedInstanceState)
170
      {
171
      super.onRestoreInstanceState(savedInstanceState);
172
173 c40df162 Leszek Koltunski
      int[] effects = savedInstanceState.getIntArray("effects");
174 80f37d1b Leszek Koltunski
175 a4d59c0b Leszek Koltunski
      TriblurSurfaceView view = findViewById(R.id.triblurSurfaceView);
176 80f37d1b Leszek Koltunski
      TriblurRenderer renderer = view.getRenderer();
177
178 c40df162 Leszek Koltunski
      if( effects!=null )
179 80f37d1b Leszek Koltunski
        {
180 c40df162 Leszek Koltunski
        for(int i=0; i<effects.length; i++)
181 80f37d1b Leszek Koltunski
          {
182 c40df162 Leszek Koltunski
          renderer.setEffects(i,effects[i]);
183 80f37d1b Leszek Koltunski
          }
184
        }
185
186 f1b8b412 Leszek Koltunski
      mQuality    = savedInstanceState.getInt("quality");
187
      mBackground = savedInstanceState.getInt("background");
188 80f37d1b Leszek Koltunski
189 f1b8b412 Leszek Koltunski
      privateQuality(mQuality);
190
      privateBackgroundColor(mBackground);
191 80f37d1b Leszek Koltunski
      }
192
193
///////////////////////////////////////////////////////////////////////////////////////////////////
194
195
    public void onProgressChanged(SeekBar bar, int progress, boolean fromUser)
196
      {
197
      switch (bar.getId())
198
        {
199 a4d59c0b Leszek Koltunski
        case R.id.triblurSeek0: TriblurSurfaceView view0 = findViewById(R.id.triblurSurfaceView);
200 80f37d1b Leszek Koltunski
                                view0.getRenderer().setRange(0,progress);
201
                                break;
202 a4d59c0b Leszek Koltunski
        case R.id.triblurSeek1: TriblurSurfaceView view1 = findViewById(R.id.triblurSurfaceView);
203 80f37d1b Leszek Koltunski
                                view1.getRenderer().setRange(1,progress);
204
                                break;
205 a4d59c0b Leszek Koltunski
        case R.id.triblurSeek2: TriblurSurfaceView view2 = findViewById(R.id.triblurSurfaceView);
206 80f37d1b Leszek Koltunski
                                view2.getRenderer().setRange(2,progress);
207
                                break;
208
        }
209
      }
210
211
///////////////////////////////////////////////////////////////////////////////////////////////////
212
213
    public void onStartTrackingTouch(SeekBar bar) { }
214
215
///////////////////////////////////////////////////////////////////////////////////////////////////
216
217
    public void onStopTrackingTouch(SeekBar bar)  { }
218
219
///////////////////////////////////////////////////////////////////////////////////////////////////
220
221 c40df162 Leszek Koltunski
  public void effect(View v)
222
    {
223
    switch(v.getId())
224
      {
225
      case R.id.triblurRadioNone0: privateEffect(NONE0); break;
226
      case R.id.triblurRadioNone1: privateEffect(NONE1); break;
227
      case R.id.triblurRadioNone2: privateEffect(NONE2); break;
228
      case R.id.triblurRadioBlur0: privateEffect(BLUR0); break;
229
      case R.id.triblurRadioBlur1: privateEffect(BLUR1); break;
230
      case R.id.triblurRadioBlur2: privateEffect(BLUR2); break;
231
      case R.id.triblurRadioGlow0: privateEffect(GLOW0); break;
232
      case R.id.triblurRadioGlow1: privateEffect(GLOW1); break;
233
      case R.id.triblurRadioGlow2: privateEffect(GLOW2); break;
234
      }
235
    }
236
237
///////////////////////////////////////////////////////////////////////////////////////////////////
238
239
  private void privateEffect(int index)
240 80f37d1b Leszek Koltunski
    {
241 a4d59c0b Leszek Koltunski
    TriblurSurfaceView view = findViewById(R.id.triblurSurfaceView);
242 c40df162 Leszek Koltunski
    TriblurRenderer renderer = view.getRenderer();
243 80f37d1b Leszek Koltunski
244 c40df162 Leszek Koltunski
    switch(index)
245 80f37d1b Leszek Koltunski
      {
246 c40df162 Leszek Koltunski
      case NONE0: renderer.setEffects(0,0); break;
247
      case NONE1: renderer.setEffects(1,0); break;
248
      case NONE2: renderer.setEffects(2,0); break;
249
      case BLUR0: renderer.setEffects(0,1); break;
250
      case BLUR1: renderer.setEffects(1,1); break;
251
      case BLUR2: renderer.setEffects(2,1); break;
252
      case GLOW0: renderer.setEffects(0,2); break;
253
      case GLOW1: renderer.setEffects(1,2); break;
254
      case GLOW2: renderer.setEffects(2,2); break;
255 80f37d1b Leszek Koltunski
      }
256
    }
257
258
///////////////////////////////////////////////////////////////////////////////////////////////////
259
260 f1b8b412 Leszek Koltunski
  public void backgroundColor(View v)
261 80f37d1b Leszek Koltunski
    {
262 f1b8b412 Leszek Koltunski
    switch(v.getId())
263
      {
264
      case R.id.triblurRadioBackground0: privateBackgroundColor(0); break;
265
      case R.id.triblurRadioBackground1: privateBackgroundColor(1); break;
266
      case R.id.triblurRadioBackground2: privateBackgroundColor(2); break;
267
      }
268 80f37d1b Leszek Koltunski
    }
269
270
///////////////////////////////////////////////////////////////////////////////////////////////////
271
272 f1b8b412 Leszek Koltunski
  private void privateBackgroundColor(int index)
273 80f37d1b Leszek Koltunski
    {
274 a4d59c0b Leszek Koltunski
    TriblurSurfaceView view = findViewById(R.id.triblurSurfaceView);
275 80f37d1b Leszek Koltunski
    TriblurRenderer renderer = view.getRenderer();
276 f1b8b412 Leszek Koltunski
277
    switch(index)
278
      {
279
      case 0: renderer.setBackground(0.0f,0.0f,0.0f,1.0f); mBackground=0; break;
280
      case 1: renderer.setBackground(1.0f,1.0f,1.0f,1.0f); mBackground=1; break;
281
      case 2: renderer.setBackground(0.0f,0.0f,1.0f,1.0f); mBackground=2; break;
282
      }
283 80f37d1b Leszek Koltunski
    }
284
285
///////////////////////////////////////////////////////////////////////////////////////////////////
286
287 f1b8b412 Leszek Koltunski
  private void privateQuality(int index)
288 80f37d1b Leszek Koltunski
    {
289 a4d59c0b Leszek Koltunski
    TriblurSurfaceView view = findViewById(R.id.triblurSurfaceView);
290 80f37d1b Leszek Koltunski
    TriblurRenderer renderer = view.getRenderer();
291 f1b8b412 Leszek Koltunski
292
    switch(index)
293
      {
294
      case 0: renderer.setQuality(EffectQuality.HIGHEST);
295
              mQuality = EffectQuality.HIGHEST.ordinal();
296
              break;
297
      case 1: renderer.setQuality(EffectQuality.HIGH);
298
              mQuality = EffectQuality.HIGH.ordinal();
299
              break;
300
      case 2: renderer.setQuality(EffectQuality.MEDIUM);
301
              mQuality = EffectQuality.MEDIUM.ordinal();
302
              break;
303
      case 3: renderer.setQuality(EffectQuality.LOW);
304
              mQuality = EffectQuality.LOW.ordinal();
305
              break;
306 80f37d1b Leszek Koltunski
    }
307 f1b8b412 Leszek Koltunski
  }
308 80f37d1b Leszek Koltunski
}