Project

General

Profile

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

examples / src / main / java / org / distorted / examples / triblur / TriblurActivity.java @ 107e4b72

1 80f37d1b 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.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.CheckBox;
29
import android.widget.SeekBar;
30 a935e9db Leszek Koltunski
import android.widget.Spinner;
31 80f37d1b Leszek Koltunski
32
import org.distorted.examples.R;
33
import org.distorted.library.effect.EffectQuality;
34
import org.distorted.library.main.Distorted;
35
36
///////////////////////////////////////////////////////////////////////////////////////////////////
37
38 a935e9db Leszek Koltunski
public class TriblurActivity extends Activity implements SeekBar.OnSeekBarChangeListener, AdapterView.OnItemSelectedListener
39 80f37d1b Leszek Koltunski
{
40
    private int mQuality;
41 f1b8b412 Leszek Koltunski
    private int mBackground;
42 80f37d1b Leszek Koltunski
43
///////////////////////////////////////////////////////////////////////////////////////////////////
44
45
    @Override
46
    protected void onCreate(Bundle savedState) 
47
      {
48
      super.onCreate(savedState);
49
      setContentView(R.layout.triblurlayout);
50
51 a935e9db Leszek Koltunski
      SeekBar radiusBar0 = findViewById(R.id.triblurSeek0);
52
      SeekBar radiusBar1 = findViewById(R.id.triblurSeek1);
53
      SeekBar radiusBar2 = findViewById(R.id.triblurSeek2);
54 80f37d1b Leszek Koltunski
55
      radiusBar0.setOnSeekBarChangeListener(this);
56
      radiusBar1.setOnSeekBarChangeListener(this);
57
      radiusBar2.setOnSeekBarChangeListener(this);
58
59
      if( savedState==null )
60
        {
61
        radiusBar0.setProgress(20);
62
        radiusBar1.setProgress(50);
63
        radiusBar2.setProgress(70);
64
65 f1b8b412 Leszek Koltunski
        privateQuality(1);
66
        privateBackgroundColor(1);
67 80f37d1b Leszek Koltunski
        }
68 a935e9db Leszek Koltunski
69
      Spinner typeSpinner  = findViewById(R.id.triblur_spinnerQuality);
70
      typeSpinner.setOnItemSelectedListener(this);
71
72
      String[] objectType = new String[] {"Quality Highiest", "Quality High", "Quality Medium", "Quality Low"};
73
74
      ArrayAdapter<String> adapterType = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, objectType);
75
      adapterType.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
76
      typeSpinner.setAdapter(adapterType);
77
78
      Spinner bitmapSpinner  = findViewById(R.id.triblur_spinnerMode);
79
      bitmapSpinner.setOnItemSelectedListener(this);
80
81
      String[] objectBitmap = new String[] { "Render: Normal", "Render: OIT" };
82
83
      ArrayAdapter<String> adapterBitmap = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, objectBitmap);
84
      adapterBitmap.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
85
      bitmapSpinner.setAdapter(adapterBitmap);
86
      }
87
88
///////////////////////////////////////////////////////////////////////////////////////////////////
89
90
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id)
91
      {
92
      switch(parent.getId())
93
        {
94
        case R.id.triblur_spinnerQuality: privateQuality(pos);
95
                                          break;
96
        case R.id.triblur_spinnerMode   : TriblurSurfaceView v = this.findViewById(R.id.triblurSurfaceView);
97
                                          TriblurRenderer renderer = v.getRenderer();
98
                                          renderer.setRenderModeToOIT(pos==1);
99
                                          break;
100
        }
101
      }
102
103
///////////////////////////////////////////////////////////////////////////////////////////////////
104
105
    public void onNothingSelected(AdapterView<?> parent)
106
      {
107 80f37d1b Leszek Koltunski
      }
108
109
///////////////////////////////////////////////////////////////////////////////////////////////////
110
    
111
    @Override
112
    protected void onPause() 
113
      {
114 a935e9db Leszek Koltunski
      GLSurfaceView view = this.findViewById(R.id.triblurSurfaceView);
115 80f37d1b Leszek Koltunski
      view.onPause();
116
      Distorted.onPause();
117
      super.onPause();
118
      }
119
120
///////////////////////////////////////////////////////////////////////////////////////////////////
121
    
122
    @Override
123
    protected void onResume() 
124
      {
125
      super.onResume();
126 a935e9db Leszek Koltunski
      GLSurfaceView view = this.findViewById(R.id.triblurSurfaceView);
127 80f37d1b Leszek Koltunski
      view.onResume();
128
      }
129
    
130
///////////////////////////////////////////////////////////////////////////////////////////////////
131
    
132
    @Override
133
    protected void onDestroy() 
134
      {
135
      Distorted.onDestroy();  
136
      super.onDestroy();
137
      }
138
139
///////////////////////////////////////////////////////////////////////////////////////////////////
140
141
    @Override
142
    public void onSaveInstanceState(Bundle savedInstanceState)
143
      {
144
      super.onSaveInstanceState(savedInstanceState);
145
146 a935e9db Leszek Koltunski
      TriblurSurfaceView view = this.findViewById(R.id.triblurSurfaceView);
147 80f37d1b Leszek Koltunski
      TriblurRenderer renderer = view.getRenderer();
148
149
      savedInstanceState.putBooleanArray("checkboxes", renderer.getChecked() );
150
      savedInstanceState.putInt("quality", mQuality);
151 f1b8b412 Leszek Koltunski
      savedInstanceState.putInt("background", mBackground);
152 80f37d1b Leszek Koltunski
      }
153
154
///////////////////////////////////////////////////////////////////////////////////////////////////
155
156
    @Override
157
    public void onRestoreInstanceState(Bundle savedInstanceState)
158
      {
159
      super.onRestoreInstanceState(savedInstanceState);
160
161
      boolean[] checkboxes = savedInstanceState.getBooleanArray("checkboxes");
162
163 a935e9db Leszek Koltunski
      TriblurSurfaceView view = this.findViewById(R.id.triblurSurfaceView);
164 80f37d1b Leszek Koltunski
      TriblurRenderer renderer = view.getRenderer();
165
166
      if( checkboxes!=null )
167
        {
168
        for(int i=0; i<checkboxes.length; i++)
169
          {
170
          renderer.setChecked(i,checkboxes[i]);
171
          }
172
        }
173
174 f1b8b412 Leszek Koltunski
      mQuality    = savedInstanceState.getInt("quality");
175
      mBackground = savedInstanceState.getInt("background");
176 80f37d1b Leszek Koltunski
177 f1b8b412 Leszek Koltunski
      privateQuality(mQuality);
178
      privateBackgroundColor(mBackground);
179 80f37d1b Leszek Koltunski
      }
180
181
///////////////////////////////////////////////////////////////////////////////////////////////////
182
183
    public void onProgressChanged(SeekBar bar, int progress, boolean fromUser)
184
      {
185
      switch (bar.getId())
186
        {
187 a935e9db Leszek Koltunski
        case R.id.triblurSeek0: TriblurSurfaceView view0 = this.findViewById(R.id.triblurSurfaceView);
188 80f37d1b Leszek Koltunski
                                view0.getRenderer().setRange(0,progress);
189
                                break;
190 a935e9db Leszek Koltunski
        case R.id.triblurSeek1: TriblurSurfaceView view1 = this.findViewById(R.id.triblurSurfaceView);
191 80f37d1b Leszek Koltunski
                                view1.getRenderer().setRange(1,progress);
192
                                break;
193 a935e9db Leszek Koltunski
        case R.id.triblurSeek2: TriblurSurfaceView view2 = this.findViewById(R.id.triblurSurfaceView);
194 80f37d1b Leszek Koltunski
                                view2.getRenderer().setRange(2,progress);
195
                                break;
196
        }
197
      }
198
199
///////////////////////////////////////////////////////////////////////////////////////////////////
200
201
    public void onStartTrackingTouch(SeekBar bar) { }
202
203
///////////////////////////////////////////////////////////////////////////////////////////////////
204
205
    public void onStopTrackingTouch(SeekBar bar)  { }
206
207
///////////////////////////////////////////////////////////////////////////////////////////////////
208
209
  public void onClick(View view)
210
    {
211
    CheckBox box = (CheckBox)view;
212
    boolean checked = box.isChecked();
213 a935e9db Leszek Koltunski
    TriblurSurfaceView sView = this.findViewById(R.id.triblurSurfaceView);
214 80f37d1b Leszek Koltunski
215 f1b8b412 Leszek Koltunski
    switch(box.getId())
216 80f37d1b Leszek Koltunski
      {
217
      case R.id.triblurCheckBox0  : sView.getRenderer().setChecked(0,checked); break;
218
      case R.id.triblurCheckBox1  : sView.getRenderer().setChecked(1,checked); break;
219
      case R.id.triblurCheckBox2  : sView.getRenderer().setChecked(2,checked); break;
220
      }
221
    }
222
223
///////////////////////////////////////////////////////////////////////////////////////////////////
224
225 f1b8b412 Leszek Koltunski
  public void backgroundColor(View v)
226 80f37d1b Leszek Koltunski
    {
227 f1b8b412 Leszek Koltunski
    switch(v.getId())
228
      {
229
      case R.id.triblurRadioBackground0: privateBackgroundColor(0); break;
230
      case R.id.triblurRadioBackground1: privateBackgroundColor(1); break;
231
      case R.id.triblurRadioBackground2: privateBackgroundColor(2); break;
232
      }
233 80f37d1b Leszek Koltunski
    }
234
235
///////////////////////////////////////////////////////////////////////////////////////////////////
236
237 f1b8b412 Leszek Koltunski
  private void privateBackgroundColor(int index)
238 80f37d1b Leszek Koltunski
    {
239 a935e9db Leszek Koltunski
    TriblurSurfaceView view = this.findViewById(R.id.triblurSurfaceView);
240 80f37d1b Leszek Koltunski
    TriblurRenderer renderer = view.getRenderer();
241 f1b8b412 Leszek Koltunski
242
    switch(index)
243
      {
244
      case 0: renderer.setBackground(0.0f,0.0f,0.0f,1.0f); mBackground=0; break;
245
      case 1: renderer.setBackground(1.0f,1.0f,1.0f,1.0f); mBackground=1; break;
246
      case 2: renderer.setBackground(0.0f,0.0f,1.0f,1.0f); mBackground=2; break;
247
      }
248 80f37d1b Leszek Koltunski
    }
249
250
///////////////////////////////////////////////////////////////////////////////////////////////////
251
252 f1b8b412 Leszek Koltunski
  private void privateQuality(int index)
253 80f37d1b Leszek Koltunski
    {
254 a935e9db Leszek Koltunski
    TriblurSurfaceView view = this.findViewById(R.id.triblurSurfaceView);
255 80f37d1b Leszek Koltunski
    TriblurRenderer renderer = view.getRenderer();
256 f1b8b412 Leszek Koltunski
257
    switch(index)
258
      {
259
      case 0: renderer.setQuality(EffectQuality.HIGHEST);
260
              mQuality = EffectQuality.HIGHEST.ordinal();
261
              break;
262
      case 1: renderer.setQuality(EffectQuality.HIGH);
263
              mQuality = EffectQuality.HIGH.ordinal();
264
              break;
265
      case 2: renderer.setQuality(EffectQuality.MEDIUM);
266
              mQuality = EffectQuality.MEDIUM.ordinal();
267
              break;
268
      case 3: renderer.setQuality(EffectQuality.LOW);
269
              mQuality = EffectQuality.LOW.ordinal();
270
              break;
271 80f37d1b Leszek Koltunski
    }
272 f1b8b412 Leszek Koltunski
  }
273 80f37d1b Leszek Koltunski
}