Project

General

Profile

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

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

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

    
32
import org.distorted.examples.R;
33
import org.distorted.library.main.DistortedLibrary;
34
import org.distorted.library.effect.EffectQuality;
35

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

    
38
public class MultiblurActivity extends Activity implements SeekBar.OnSeekBarChangeListener, AdapterView.OnItemSelectedListener
39
{
40
    private int mQuality;
41

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

    
44
    @Override
45
    protected void onCreate(Bundle savedState) 
46
      {
47
      super.onCreate(savedState);
48
      DistortedLibrary.onCreate();
49
      setContentView(R.layout.multiblurlayout);
50

    
51
      SeekBar distanceBar = findViewById(R.id.multiblurDistanceSeek);
52
      SeekBar rangeBar    = findViewById(R.id.multiblurRangeSeek);
53

    
54
      distanceBar.setOnSeekBarChangeListener(this);
55
      rangeBar.setOnSeekBarChangeListener(this);
56

    
57
      if( savedState==null )
58
        {
59
        distanceBar.setProgress(50);
60
        rangeBar.setProgress(50);
61
        mQuality = EffectQuality.HIGHEST.ordinal();
62
        }
63

    
64
      Spinner typeSpinner  = findViewById(R.id.multiblur_spinnerQuality);
65
      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
      Spinner bitmapSpinner  = findViewById(R.id.multiblur_spinnerMode);
74
      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
      MultiblurSurfaceView v = findViewById(R.id.multiblurSurfaceView);
88
      MultiblurRenderer renderer = v.getRenderer();
89
      int pid = parent.getId();
90

    
91
      if( pid == R.id.multiblur_spinnerQuality )
92
        {
93
        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
        }
109
      }
110

    
111
///////////////////////////////////////////////////////////////////////////////////////////////////
112

    
113
    public void onNothingSelected(AdapterView<?> parent)
114
      {
115
      }
116

    
117
///////////////////////////////////////////////////////////////////////////////////////////////////
118
    
119
    @Override
120
    protected void onPause() 
121
      {
122
      super.onPause();
123
      GLSurfaceView view = findViewById(R.id.multiblurSurfaceView);
124
      view.onPause();
125
      DistortedLibrary.onPause();
126
      }
127

    
128
///////////////////////////////////////////////////////////////////////////////////////////////////
129
    
130
    @Override
131
    protected void onResume() 
132
      {
133
      super.onResume();
134
      GLSurfaceView view = findViewById(R.id.multiblurSurfaceView);
135
      view.onResume();
136
      }
137
    
138
///////////////////////////////////////////////////////////////////////////////////////////////////
139
    
140
    @Override
141
    protected void onDestroy() 
142
      {
143
      DistortedLibrary.onDestroy();
144
      super.onDestroy();
145
      }
146

    
147
///////////////////////////////////////////////////////////////////////////////////////////////////
148

    
149
    @Override
150
    public void onSaveInstanceState(Bundle savedInstanceState)
151
      {
152
      super.onSaveInstanceState(savedInstanceState);
153

    
154
      MultiblurSurfaceView view = findViewById(R.id.multiblurSurfaceView);
155
      MultiblurRenderer renderer = view.getRenderer();
156

    
157
      savedInstanceState.putBooleanArray("checkboxes", renderer.getChecked() );
158
      savedInstanceState.putInt("quality", mQuality);
159
      }
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
      MultiblurSurfaceView view = findViewById(R.id.multiblurSurfaceView);
171
      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

    
181
      mQuality = savedInstanceState.getInt("quality");
182

    
183
      switch(mQuality)
184
        {
185
        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
        default: android.util.Log.e("MultiBlur", "error - unknown quality!");
190
        }
191
      }
192

    
193
///////////////////////////////////////////////////////////////////////////////////////////////////
194

    
195
    public void onProgressChanged(SeekBar bar, int progress, boolean fromUser)
196
      {
197
      int id = bar.getId();
198
      MultiblurSurfaceView v = findViewById(R.id.multiblurSurfaceView);
199
      MultiblurRenderer r = v.getRenderer();
200

    
201
      if( id == R.id.multiblurDistanceSeek ) r.setDistance(progress);
202
      if( id == R.id.multiblurRangeSeek    ) r.setRange(progress);
203
      }
204

    
205
///////////////////////////////////////////////////////////////////////////////////////////////////
206

    
207
    public void onStartTrackingTouch(SeekBar bar) { }
208

    
209
///////////////////////////////////////////////////////////////////////////////////////////////////
210

    
211
    public void onStopTrackingTouch(SeekBar bar)  { }
212

    
213
///////////////////////////////////////////////////////////////////////////////////////////////////
214

    
215
  public void onClick(View view)
216
    {
217
    CheckBox box = (CheckBox)view;
218
    int id = box.getId();
219
    boolean checked = box.isChecked();
220
    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
    }
232

    
233
}
(1-1/3)