Project

General

Profile

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

examples / src / main / java / org / distorted / examples / multiblur / MultiblurActivity.java @ 77e66c58

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