Project

General

Profile

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

examples / src / main / java / org / distorted / examples / transparency / TransparencyActivity.java @ 29aba2d1

1 664a0e45 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.transparency;
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 29aba2d1 Leszek Koltunski
import android.widget.CheckBox;
29 664a0e45 Leszek Koltunski
import android.widget.SeekBar;
30 a935e9db Leszek Koltunski
import android.widget.Spinner;
31 664a0e45 Leszek Koltunski
32
import org.distorted.examples.R;
33
import org.distorted.library.main.Distorted;
34
35
///////////////////////////////////////////////////////////////////////////////////////////////////
36
37 a935e9db Leszek Koltunski
public class TransparencyActivity extends Activity implements SeekBar.OnSeekBarChangeListener, AdapterView.OnItemSelectedListener
38 664a0e45 Leszek Koltunski
{
39
    private int mRenderFirst;
40
41
///////////////////////////////////////////////////////////////////////////////////////////////////
42
43
    @Override
44
    protected void onCreate(Bundle savedState) 
45
      {
46
      super.onCreate(savedState);
47
      setContentView(R.layout.transparencylayout);
48
49 29aba2d1 Leszek Koltunski
      SeekBar barRed    = findViewById(R.id.transparencySeekRed);
50
      SeekBar barYellow = findViewById(R.id.transparencySeekYellow);
51 664a0e45 Leszek Koltunski
52
      barRed.setOnSeekBarChangeListener(this);
53
      barYellow.setOnSeekBarChangeListener(this);
54
55
      if( savedState==null )
56
        {
57
        barRed.setProgress(50);
58
        barYellow.setProgress(50);
59
        privateRenderFirst(0);
60
        }
61 a935e9db Leszek Koltunski
62 29aba2d1 Leszek Koltunski
      Spinner typeSpinner  = findViewById(R.id.transparency_spinnerFirst);
63 a935e9db Leszek Koltunski
      typeSpinner.setOnItemSelectedListener(this);
64
65
      String[] objectType = new String[] {"First: Red", "First: Yellow"};
66
67
      ArrayAdapter<String> adapterType = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, objectType);
68
      adapterType.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
69
      typeSpinner.setAdapter(adapterType);
70
71 29aba2d1 Leszek Koltunski
      Spinner bitmapSpinner  = findViewById(R.id.transparency_spinnerMode);
72 a935e9db Leszek Koltunski
      bitmapSpinner.setOnItemSelectedListener(this);
73
74
      String[] objectBitmap = new String[] { "Render: Normal", "Render: OIT" };
75
76
      ArrayAdapter<String> adapterBitmap = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, objectBitmap);
77
      adapterBitmap.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
78
      bitmapSpinner.setAdapter(adapterBitmap);
79 664a0e45 Leszek Koltunski
      }
80
81 a935e9db Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
82
83
  public void onItemSelected(AdapterView<?> parent, View view, int pos, long id)
84
    {
85
    switch(parent.getId())
86
      {
87
      case R.id.transparency_spinnerFirst  : privateRenderFirst(pos);
88
                                             break;
89
      case R.id.transparency_spinnerMode   : setRenderModeToOIT(pos==1);
90
                                             break;
91
      }
92
    }
93
94
///////////////////////////////////////////////////////////////////////////////////////////////////
95
96
  public void onNothingSelected(AdapterView<?> parent)
97
    {
98
    }
99
100 664a0e45 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
101
    
102
    @Override
103
    protected void onPause() 
104
      {
105 29aba2d1 Leszek Koltunski
      GLSurfaceView view = this.findViewById(R.id.transparencySurfaceView);
106 664a0e45 Leszek Koltunski
      view.onPause();
107
      Distorted.onPause();
108
      super.onPause();
109
      }
110
111
///////////////////////////////////////////////////////////////////////////////////////////////////
112
    
113
    @Override
114
    protected void onResume() 
115
      {
116
      super.onResume();
117 29aba2d1 Leszek Koltunski
      GLSurfaceView view = this.findViewById(R.id.transparencySurfaceView);
118 664a0e45 Leszek Koltunski
      view.onResume();
119
      }
120
    
121
///////////////////////////////////////////////////////////////////////////////////////////////////
122
    
123
    @Override
124
    protected void onDestroy() 
125
      {
126
      Distorted.onDestroy();  
127
      super.onDestroy();
128
      }
129
130
///////////////////////////////////////////////////////////////////////////////////////////////////
131
132
    @Override
133
    public void onSaveInstanceState(Bundle savedInstanceState)
134
      {
135
      super.onSaveInstanceState(savedInstanceState);
136
      savedInstanceState.putInt("render", mRenderFirst);
137
      }
138
139
///////////////////////////////////////////////////////////////////////////////////////////////////
140
141
    @Override
142
    public void onRestoreInstanceState(Bundle savedInstanceState)
143
      {
144
      super.onRestoreInstanceState(savedInstanceState);
145
146
      mRenderFirst= savedInstanceState.getInt("render");
147
      privateRenderFirst(mRenderFirst);
148
      }
149
150
///////////////////////////////////////////////////////////////////////////////////////////////////
151
152
    public void onProgressChanged(SeekBar bar, int progress, boolean fromUser)
153
      {
154
      switch (bar.getId())
155
        {
156 29aba2d1 Leszek Koltunski
        case R.id.transparencySeekRed:    TransparencySurfaceView view0 = this.findViewById(R.id.transparencySurfaceView);
157 664a0e45 Leszek Koltunski
                                          view0.getRenderer().setTransparency(0, (float)progress/100 );
158
                                          break;
159 29aba2d1 Leszek Koltunski
        case R.id.transparencySeekYellow: TransparencySurfaceView view1 = this.findViewById(R.id.transparencySurfaceView);
160 664a0e45 Leszek Koltunski
                                          view1.getRenderer().setTransparency(1, (float)progress/100 );
161
                                          break;
162
        }
163
      }
164
165
///////////////////////////////////////////////////////////////////////////////////////////////////
166
167
    public void onStartTrackingTouch(SeekBar bar) { }
168
169
///////////////////////////////////////////////////////////////////////////////////////////////////
170
171
    public void onStopTrackingTouch(SeekBar bar)  { }
172
173
///////////////////////////////////////////////////////////////////////////////////////////////////
174
175 a935e9db Leszek Koltunski
    private void setRenderModeToOIT(boolean oit)
176 664a0e45 Leszek Koltunski
      {
177 29aba2d1 Leszek Koltunski
      TransparencySurfaceView view = this.findViewById(R.id.transparencySurfaceView);
178 a935e9db Leszek Koltunski
      TransparencyRenderer renderer= view.getRenderer();
179
180
      renderer.setRenderModeToOIT(oit);
181 664a0e45 Leszek Koltunski
      }
182
183
///////////////////////////////////////////////////////////////////////////////////////////////////
184
185
    private void privateRenderFirst(int index)
186
      {
187 29aba2d1 Leszek Koltunski
      TransparencySurfaceView view = this.findViewById(R.id.transparencySurfaceView);
188 664a0e45 Leszek Koltunski
      TransparencyRenderer renderer= view.getRenderer();
189
190
      renderer.setRenderFirst(index);
191
      mRenderFirst = index;
192
      }
193 29aba2d1 Leszek Koltunski
194
195
///////////////////////////////////////////////////////////////////////////////////////////////////
196
197
    public void onClick(View view)
198
      {
199
      CheckBox box = (CheckBox)view;
200
      boolean checked = box.isChecked();
201
      TransparencySurfaceView sView = this.findViewById(R.id.transparencySurfaceView);
202
203
      switch(box.getId())
204
        {
205
        case R.id.transparencyCheckBox0  : sView.getRenderer().setPostprocess(0,checked); break;
206
        case R.id.transparencyCheckBox1  : sView.getRenderer().setPostprocess(1,checked); break;
207
        }
208
      }
209 664a0e45 Leszek Koltunski
}