Project

General

Profile

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

examples / src / main / java / org / distorted / examples / triblur / TriblurActivity.java @ f1b8b412

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.triblur;
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.CheckBox;
27
import android.widget.SeekBar;
28

    
29
import org.distorted.examples.R;
30
import org.distorted.library.effect.EffectQuality;
31
import org.distorted.library.main.Distorted;
32

    
33
///////////////////////////////////////////////////////////////////////////////////////////////////
34

    
35
public class TriblurActivity extends Activity implements SeekBar.OnSeekBarChangeListener
36
{
37
    private int mQuality;
38
    private int mBackground;
39

    
40
///////////////////////////////////////////////////////////////////////////////////////////////////
41

    
42
    @Override
43
    protected void onCreate(Bundle savedState) 
44
      {
45
      super.onCreate(savedState);
46
      setContentView(R.layout.triblurlayout);
47

    
48
      SeekBar radiusBar0 = (SeekBar)findViewById(R.id.triblurSeek0);
49
      SeekBar radiusBar1 = (SeekBar)findViewById(R.id.triblurSeek1);
50
      SeekBar radiusBar2 = (SeekBar)findViewById(R.id.triblurSeek2);
51

    
52
      radiusBar0.setOnSeekBarChangeListener(this);
53
      radiusBar1.setOnSeekBarChangeListener(this);
54
      radiusBar2.setOnSeekBarChangeListener(this);
55

    
56
      if( savedState==null )
57
        {
58
        radiusBar0.setProgress(20);
59
        radiusBar1.setProgress(50);
60
        radiusBar2.setProgress(70);
61

    
62
        privateQuality(1);
63
        privateBackgroundColor(1);
64
        }
65
      }
66

    
67
///////////////////////////////////////////////////////////////////////////////////////////////////
68
    
69
    @Override
70
    protected void onPause() 
71
      {
72
      GLSurfaceView view = (GLSurfaceView) this.findViewById(R.id.triblurSurfaceView);
73
      view.onPause();
74
      Distorted.onPause();
75
      super.onPause();
76
      }
77

    
78
///////////////////////////////////////////////////////////////////////////////////////////////////
79
    
80
    @Override
81
    protected void onResume() 
82
      {
83
      super.onResume();
84
      GLSurfaceView view = (GLSurfaceView) this.findViewById(R.id.triblurSurfaceView);
85
      view.onResume();
86
      }
87
    
88
///////////////////////////////////////////////////////////////////////////////////////////////////
89
    
90
    @Override
91
    protected void onDestroy() 
92
      {
93
      Distorted.onDestroy();  
94
      super.onDestroy();
95
      }
96

    
97
///////////////////////////////////////////////////////////////////////////////////////////////////
98

    
99
    @Override
100
    public void onSaveInstanceState(Bundle savedInstanceState)
101
      {
102
      super.onSaveInstanceState(savedInstanceState);
103

    
104
      TriblurSurfaceView view = (TriblurSurfaceView) this.findViewById(R.id.triblurSurfaceView);
105
      TriblurRenderer renderer = view.getRenderer();
106

    
107
      savedInstanceState.putBooleanArray("checkboxes", renderer.getChecked() );
108
      savedInstanceState.putInt("quality", mQuality);
109
      savedInstanceState.putInt("background", mBackground);
110
      }
111

    
112
///////////////////////////////////////////////////////////////////////////////////////////////////
113

    
114
    @Override
115
    public void onRestoreInstanceState(Bundle savedInstanceState)
116
      {
117
      super.onRestoreInstanceState(savedInstanceState);
118

    
119
      boolean[] checkboxes = savedInstanceState.getBooleanArray("checkboxes");
120

    
121
      TriblurSurfaceView view = (TriblurSurfaceView) this.findViewById(R.id.triblurSurfaceView);
122
      TriblurRenderer renderer = view.getRenderer();
123

    
124
      if( checkboxes!=null )
125
        {
126
        for(int i=0; i<checkboxes.length; i++)
127
          {
128
          renderer.setChecked(i,checkboxes[i]);
129
          }
130
        }
131

    
132
      mQuality    = savedInstanceState.getInt("quality");
133
      mBackground = savedInstanceState.getInt("background");
134

    
135
      privateQuality(mQuality);
136
      privateBackgroundColor(mBackground);
137
      }
138

    
139
///////////////////////////////////////////////////////////////////////////////////////////////////
140

    
141
    public void onProgressChanged(SeekBar bar, int progress, boolean fromUser)
142
      {
143
      switch (bar.getId())
144
        {
145
        case R.id.triblurSeek0: TriblurSurfaceView view0 = (TriblurSurfaceView) this.findViewById(R.id.triblurSurfaceView);
146
                                view0.getRenderer().setRange(0,progress);
147
                                break;
148
        case R.id.triblurSeek1: TriblurSurfaceView view1 = (TriblurSurfaceView) this.findViewById(R.id.triblurSurfaceView);
149
                                view1.getRenderer().setRange(1,progress);
150
                                break;
151
        case R.id.triblurSeek2: TriblurSurfaceView view2 = (TriblurSurfaceView) this.findViewById(R.id.triblurSurfaceView);
152
                                view2.getRenderer().setRange(2,progress);
153
                                break;
154
        }
155
      }
156

    
157
///////////////////////////////////////////////////////////////////////////////////////////////////
158

    
159
    public void onStartTrackingTouch(SeekBar bar) { }
160

    
161
///////////////////////////////////////////////////////////////////////////////////////////////////
162

    
163
    public void onStopTrackingTouch(SeekBar bar)  { }
164

    
165
///////////////////////////////////////////////////////////////////////////////////////////////////
166

    
167
  public void onClick(View view)
168
    {
169
    CheckBox box = (CheckBox)view;
170
    boolean checked = box.isChecked();
171
    TriblurSurfaceView sView = (TriblurSurfaceView) this.findViewById(R.id.triblurSurfaceView);
172

    
173
    switch(box.getId())
174
      {
175
      case R.id.triblurCheckBox0  : sView.getRenderer().setChecked(0,checked); break;
176
      case R.id.triblurCheckBox1  : sView.getRenderer().setChecked(1,checked); break;
177
      case R.id.triblurCheckBox2  : sView.getRenderer().setChecked(2,checked); break;
178
      }
179
    }
180

    
181
///////////////////////////////////////////////////////////////////////////////////////////////////
182

    
183
  public void backgroundColor(View v)
184
    {
185
    switch(v.getId())
186
      {
187
      case R.id.triblurRadioBackground0: privateBackgroundColor(0); break;
188
      case R.id.triblurRadioBackground1: privateBackgroundColor(1); break;
189
      case R.id.triblurRadioBackground2: privateBackgroundColor(2); break;
190
      }
191
    }
192

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

    
195
  public void quality(View v)
196
    {
197
    switch(v.getId())
198
      {
199
      case R.id.triblurRadioQuality0: privateQuality(0); break;
200
      case R.id.triblurRadioQuality1: privateQuality(1); break;
201
      case R.id.triblurRadioQuality2: privateQuality(2); break;
202
      case R.id.triblurRadioQuality3: privateQuality(3); break;
203
      }
204
    }
205

    
206
///////////////////////////////////////////////////////////////////////////////////////////////////
207

    
208
  private void privateBackgroundColor(int index)
209
    {
210
    TriblurSurfaceView view = (TriblurSurfaceView) this.findViewById(R.id.triblurSurfaceView);
211
    TriblurRenderer renderer = view.getRenderer();
212

    
213
    switch(index)
214
      {
215
      case 0: renderer.setBackground(0.0f,0.0f,0.0f,1.0f); mBackground=0; break;
216
      case 1: renderer.setBackground(1.0f,1.0f,1.0f,1.0f); mBackground=1; break;
217
      case 2: renderer.setBackground(0.0f,0.0f,1.0f,1.0f); mBackground=2; break;
218
      }
219
    }
220

    
221
///////////////////////////////////////////////////////////////////////////////////////////////////
222

    
223
  private void privateQuality(int index)
224
    {
225
    TriblurSurfaceView view = (TriblurSurfaceView) this.findViewById(R.id.triblurSurfaceView);
226
    TriblurRenderer renderer = view.getRenderer();
227

    
228
    switch(index)
229
      {
230
      case 0: renderer.setQuality(EffectQuality.HIGHEST);
231
              mQuality = EffectQuality.HIGHEST.ordinal();
232
              break;
233
      case 1: renderer.setQuality(EffectQuality.HIGH);
234
              mQuality = EffectQuality.HIGH.ordinal();
235
              break;
236
      case 2: renderer.setQuality(EffectQuality.MEDIUM);
237
              mQuality = EffectQuality.MEDIUM.ordinal();
238
              break;
239
      case 3: renderer.setQuality(EffectQuality.LOW);
240
              mQuality = EffectQuality.LOW.ordinal();
241
              break;
242
    }
243
  }
244
}
(1-1/3)