Project

General

Profile

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

examples / src / main / java / org / distorted / examples / multiblur / MultiblurActivity.java @ c0f27889

1 58059374 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
2
// Copyright 2016 Leszek Koltunski                                                               //
3
//                                                                                               //
4 71c8884f Leszek Koltunski
// This file is part of Distorted.                                                               //
5 58059374 Leszek Koltunski
//                                                                                               //
6 71c8884f Leszek Koltunski
// Distorted is free software: you can redistribute it and/or modify                             //
7 58059374 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 58059374 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 58059374 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
19
20
package org.distorted.examples.multiblur;
21
22
import android.app.Activity;
23 3e673c74 Leszek Koltunski
import android.opengl.GLSurfaceView;
24 58059374 Leszek Koltunski
import android.os.Bundle;
25 febb61ba Leszek Koltunski
import android.view.View;
26 a935e9db Leszek Koltunski
import android.widget.AdapterView;
27
import android.widget.ArrayAdapter;
28 febb61ba Leszek Koltunski
import android.widget.CheckBox;
29 3e673c74 Leszek Koltunski
import android.widget.SeekBar;
30 a935e9db Leszek Koltunski
import android.widget.Spinner;
31 3e673c74 Leszek Koltunski
32
import org.distorted.examples.R;
33 e3900503 Leszek Koltunski
import org.distorted.library.main.DistortedLibrary;
34 8843b69b leszek
import org.distorted.library.effect.EffectQuality;
35 58059374 Leszek Koltunski
36
///////////////////////////////////////////////////////////////////////////////////////////////////
37
38 a935e9db Leszek Koltunski
public class MultiblurActivity extends Activity implements SeekBar.OnSeekBarChangeListener, AdapterView.OnItemSelectedListener
39 58059374 Leszek Koltunski
{
40 6d896e0e leszek
    private int mQuality;
41
42 58059374 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
43
44
    @Override
45
    protected void onCreate(Bundle savedState) 
46
      {
47
      super.onCreate(savedState);
48 3e673c74 Leszek Koltunski
      setContentView(R.layout.multiblurlayout);
49
50 9c3e749e Leszek Koltunski
      SeekBar distanceBar = findViewById(R.id.multiblurDistanceSeek);
51
      SeekBar rangeBar    = findViewById(R.id.multiblurRangeSeek);
52 dea953f4 leszek
53 fc6f1299 Leszek Koltunski
      distanceBar.setOnSeekBarChangeListener(this);
54
      rangeBar.setOnSeekBarChangeListener(this);
55 dea953f4 leszek
56
      if( savedState==null )
57
        {
58
        distanceBar.setProgress(50);
59 886800be leszek
        rangeBar.setProgress(50);
60 6d896e0e leszek
        mQuality = EffectQuality.HIGHEST.ordinal();
61 dea953f4 leszek
        }
62 a935e9db Leszek Koltunski
63 9c3e749e Leszek Koltunski
      Spinner typeSpinner  = findViewById(R.id.multiblur_spinnerQuality);
64 a935e9db Leszek Koltunski
      typeSpinner.setOnItemSelectedListener(this);
65
66
      String[] objectType = new String[] {"Quality Highiest", "Quality High", "Quality Medium", "Quality Low"};
67
68
      ArrayAdapter<String> adapterType = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, objectType);
69
      adapterType.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
70
      typeSpinner.setAdapter(adapterType);
71
72 9c3e749e Leszek Koltunski
      Spinner bitmapSpinner  = findViewById(R.id.multiblur_spinnerMode);
73 a935e9db Leszek Koltunski
      bitmapSpinner.setOnItemSelectedListener(this);
74
75
      String[] objectBitmap = new String[] { "Render: Normal", "Render: OIT" };
76
77
      ArrayAdapter<String> adapterBitmap = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, objectBitmap);
78
      adapterBitmap.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
79
      bitmapSpinner.setAdapter(adapterBitmap);
80
      }
81
82
///////////////////////////////////////////////////////////////////////////////////////////////////
83
84
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id)
85
      {
86 a4d59c0b Leszek Koltunski
      MultiblurSurfaceView v = findViewById(R.id.multiblurSurfaceView);
87 a935e9db Leszek Koltunski
      MultiblurRenderer renderer = v.getRenderer();
88
89
      switch(parent.getId())
90
        {
91
        case R.id.multiblur_spinnerQuality: EffectQuality quality;
92
93
                                            switch(pos)
94
                                              {
95
                                              case 0 : quality = EffectQuality.HIGHEST; break;
96
                                              case 1 : quality = EffectQuality.HIGH   ; break;
97
                                              case 2 : quality = EffectQuality.MEDIUM ; break;
98
                                              default: quality = EffectQuality.LOW    ;
99
                                              }
100
                                            renderer.setQuality(quality);
101
                                            mQuality = quality.ordinal();
102
                                            break;
103
        case R.id.multiblur_spinnerMode   : renderer.setRenderModeToOIT(pos==1);
104
                                            break;
105
        }
106
      }
107
108
///////////////////////////////////////////////////////////////////////////////////////////////////
109
110
    public void onNothingSelected(AdapterView<?> parent)
111
      {
112 58059374 Leszek Koltunski
      }
113
114
///////////////////////////////////////////////////////////////////////////////////////////////////
115
    
116
    @Override
117
    protected void onPause() 
118
      {
119 c0f27889 Leszek Koltunski
      super.onPause();
120
      GLSurfaceView view = findViewById(R.id.multiblurSurfaceView);
121 3e673c74 Leszek Koltunski
      view.onPause();
122 e3900503 Leszek Koltunski
      DistortedLibrary.onPause();
123 58059374 Leszek Koltunski
      }
124
125
///////////////////////////////////////////////////////////////////////////////////////////////////
126
    
127
    @Override
128
    protected void onResume() 
129
      {
130
      super.onResume();
131 a4d59c0b Leszek Koltunski
      GLSurfaceView view = findViewById(R.id.multiblurSurfaceView);
132 3e673c74 Leszek Koltunski
      view.onResume();
133 58059374 Leszek Koltunski
      }
134
    
135
///////////////////////////////////////////////////////////////////////////////////////////////////
136
    
137
    @Override
138
    protected void onDestroy() 
139
      {
140 e3900503 Leszek Koltunski
      DistortedLibrary.onDestroy();
141 58059374 Leszek Koltunski
      super.onDestroy();
142
      }
143 3e673c74 Leszek Koltunski
144 46ab4363 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
145
146
    @Override
147
    public void onSaveInstanceState(Bundle savedInstanceState)
148
      {
149
      super.onSaveInstanceState(savedInstanceState);
150
151 a4d59c0b Leszek Koltunski
      MultiblurSurfaceView view = findViewById(R.id.multiblurSurfaceView);
152 46ab4363 Leszek Koltunski
      MultiblurRenderer renderer = view.getRenderer();
153
154
      savedInstanceState.putBooleanArray("checkboxes", renderer.getChecked() );
155 6d896e0e leszek
      savedInstanceState.putInt("quality", mQuality);
156 46ab4363 Leszek Koltunski
      }
157
158
///////////////////////////////////////////////////////////////////////////////////////////////////
159
160
    @Override
161
    public void onRestoreInstanceState(Bundle savedInstanceState)
162
      {
163
      super.onRestoreInstanceState(savedInstanceState);
164
165
      boolean[] checkboxes = savedInstanceState.getBooleanArray("checkboxes");
166
167 a4d59c0b Leszek Koltunski
      MultiblurSurfaceView view = findViewById(R.id.multiblurSurfaceView);
168 46ab4363 Leszek Koltunski
      MultiblurRenderer renderer = view.getRenderer();
169
170
      if( checkboxes!=null )
171
        {
172
        for(int i=0; i<checkboxes.length; i++)
173
          {
174
          renderer.setChecked(i,checkboxes[i]);
175
          }
176
        }
177 6d896e0e leszek
178
      mQuality = savedInstanceState.getInt("quality");
179
180
      switch(mQuality)
181
        {
182 a935e9db Leszek Koltunski
        case 0 : renderer.setQuality(EffectQuality.HIGHEST); break;
183
        case 1 : renderer.setQuality(EffectQuality.HIGH   ); break;
184
        case 2 : renderer.setQuality(EffectQuality.MEDIUM ); break;
185
        case 3 : renderer.setQuality(EffectQuality.LOW    ); break;
186 80f37d1b Leszek Koltunski
        default: android.util.Log.e("MultiBlur", "error - unknown quality!");
187 6d896e0e leszek
        }
188 46ab4363 Leszek Koltunski
      }
189
190 3e673c74 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
191
192
    public void onProgressChanged(SeekBar bar, int progress, boolean fromUser)
193
      {
194
      switch (bar.getId())
195
        {
196 a4d59c0b Leszek Koltunski
        case R.id.multiblurDistanceSeek: MultiblurSurfaceView view1 = findViewById(R.id.multiblurSurfaceView);
197 7af96b9f Leszek Koltunski
                                         view1.getRenderer().setDistance(progress);
198 fc6f1299 Leszek Koltunski
                                         break;
199 a4d59c0b Leszek Koltunski
        case R.id.multiblurRangeSeek   : MultiblurSurfaceView view2 = findViewById(R.id.multiblurSurfaceView);
200 fc6f1299 Leszek Koltunski
                                         view2.getRenderer().setRange(progress);
201
                                         break;
202
203 3e673c74 Leszek Koltunski
        }
204
      }
205
206
///////////////////////////////////////////////////////////////////////////////////////////////////
207
208
    public void onStartTrackingTouch(SeekBar bar) { }
209
210
///////////////////////////////////////////////////////////////////////////////////////////////////
211
212
    public void onStopTrackingTouch(SeekBar bar)  { }
213
214
///////////////////////////////////////////////////////////////////////////////////////////////////
215 febb61ba Leszek Koltunski
216
  public void onClick(View view)
217
    {
218
    CheckBox box = (CheckBox)view;
219
    int id = box.getId();
220
    boolean checked = box.isChecked();
221 a4d59c0b Leszek Koltunski
    MultiblurSurfaceView sView = findViewById(R.id.multiblurSurfaceView);
222 febb61ba Leszek Koltunski
223
    switch(id)
224
      {
225 46ab4363 Leszek Koltunski
      case R.id.multiblurCheckBox0  : sView.getRenderer().setChecked(0,checked); break;
226
      case R.id.multiblurCheckBox1  : sView.getRenderer().setChecked(1,checked); break;
227
      case R.id.multiblurCheckBox2  : sView.getRenderer().setChecked(2,checked); break;
228
      case R.id.multiblurCheckBox3  : sView.getRenderer().setChecked(3,checked); break;
229
      case R.id.multiblurCheckBox4  : sView.getRenderer().setChecked(4,checked); break;
230
      case R.id.multiblurCheckBox5  : sView.getRenderer().setChecked(5,checked); break;
231
      case R.id.multiblurCheckBox6  : sView.getRenderer().setChecked(6,checked); break;
232
      case R.id.multiblurCheckBox7  : sView.getRenderer().setChecked(7,checked); break;
233 febb61ba Leszek Koltunski
      }
234
    }
235 bf0bc90f Leszek Koltunski
236 58059374 Leszek Koltunski
}