Project

General

Profile

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

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

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.transparency;
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.Distorted;
34

    
35
///////////////////////////////////////////////////////////////////////////////////////////////////
36

    
37
public class TransparencyActivity extends Activity implements SeekBar.OnSeekBarChangeListener, AdapterView.OnItemSelectedListener
38
{
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
      SeekBar barRed    = findViewById(R.id.transparencySeekRed);
50
      SeekBar barYellow = findViewById(R.id.transparencySeekYellow);
51

    
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

    
62
      Spinner typeSpinner  = findViewById(R.id.transparency_spinnerFirst);
63
      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
      Spinner bitmapSpinner  = findViewById(R.id.transparency_spinnerMode);
72
      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
      }
80

    
81
///////////////////////////////////////////////////////////////////////////////////////////////////
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
///////////////////////////////////////////////////////////////////////////////////////////////////
101
    
102
    @Override
103
    protected void onPause() 
104
      {
105
      GLSurfaceView view = this.findViewById(R.id.transparencySurfaceView);
106
      view.onPause();
107
      Distorted.onPause();
108
      super.onPause();
109
      }
110

    
111
///////////////////////////////////////////////////////////////////////////////////////////////////
112
    
113
    @Override
114
    protected void onResume() 
115
      {
116
      super.onResume();
117
      GLSurfaceView view = this.findViewById(R.id.transparencySurfaceView);
118
      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
        case R.id.transparencySeekRed:    TransparencySurfaceView view0 = this.findViewById(R.id.transparencySurfaceView);
157
                                          view0.getRenderer().setTransparency(0, (float)progress/100 );
158
                                          break;
159
        case R.id.transparencySeekYellow: TransparencySurfaceView view1 = this.findViewById(R.id.transparencySurfaceView);
160
                                          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
    private void setRenderModeToOIT(boolean oit)
176
      {
177
      TransparencySurfaceView view = this.findViewById(R.id.transparencySurfaceView);
178
      TransparencyRenderer renderer= view.getRenderer();
179

    
180
      renderer.setRenderModeToOIT(oit);
181
      }
182

    
183
///////////////////////////////////////////////////////////////////////////////////////////////////
184

    
185
    private void privateRenderFirst(int index)
186
      {
187
      TransparencySurfaceView view = this.findViewById(R.id.transparencySurfaceView);
188
      TransparencyRenderer renderer= view.getRenderer();
189

    
190
      renderer.setRenderFirst(index);
191
      mRenderFirst = index;
192
      }
193

    
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
}
(1-1/3)