Project

General

Profile

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

examples / src / main / java / org / distorted / examples / transparency / TransparencyActivity.java @ a9df241d

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.DistortedLibrary;
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
      DistortedLibrary.onCreate();
48
      setContentView(R.layout.transparencylayout);
49

    
50
      SeekBar barRed    = findViewById(R.id.transparencySeekRed);
51
      SeekBar barYellow = findViewById(R.id.transparencySeekYellow);
52

    
53
      barRed.setOnSeekBarChangeListener(this);
54
      barYellow.setOnSeekBarChangeListener(this);
55

    
56
      if( savedState==null )
57
        {
58
        barRed.setProgress(50);
59
        barYellow.setProgress(50);
60
        privateRenderFirst(0);
61
        }
62

    
63
      Spinner typeSpinner  = findViewById(R.id.transparency_spinnerFirst);
64
      typeSpinner.setOnItemSelectedListener(this);
65

    
66
      String[] objectType = new String[] {"First: Red", "First: Yellow"};
67

    
68
      ArrayAdapter<String> adapterType = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, objectType);
69
      adapterType.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
70
      typeSpinner.setAdapter(adapterType);
71

    
72
      Spinner bitmapSpinner  = findViewById(R.id.transparency_spinnerMode);
73
      bitmapSpinner.setOnItemSelectedListener(this);
74

    
75
      String[] objectBitmap = new String[] { "Render: Normal", "Render: OIT" };
76

    
77
      ArrayAdapter<String> adapterBitmap = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, objectBitmap);
78
      adapterBitmap.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
79
      bitmapSpinner.setAdapter(adapterBitmap);
80
      }
81

    
82
///////////////////////////////////////////////////////////////////////////////////////////////////
83

    
84
  public void onItemSelected(AdapterView<?> parent, View view, int pos, long id)
85
    {
86
    switch(parent.getId())
87
      {
88
      case R.id.transparency_spinnerFirst  : privateRenderFirst(pos);
89
                                             break;
90
      case R.id.transparency_spinnerMode   : setRenderModeToOIT(pos==1);
91
                                             break;
92
      }
93
    }
94

    
95
///////////////////////////////////////////////////////////////////////////////////////////////////
96

    
97
  public void onNothingSelected(AdapterView<?> parent)
98
    {
99
    }
100

    
101
///////////////////////////////////////////////////////////////////////////////////////////////////
102
    
103
    @Override
104
    protected void onPause() 
105
      {
106
      super.onPause();
107
      GLSurfaceView view = findViewById(R.id.transparencySurfaceView);
108
      view.onPause();
109
      DistortedLibrary.onPause();
110
      }
111

    
112
///////////////////////////////////////////////////////////////////////////////////////////////////
113
    
114
    @Override
115
    protected void onResume() 
116
      {
117
      super.onResume();
118
      GLSurfaceView view = findViewById(R.id.transparencySurfaceView);
119
      view.onResume();
120
      }
121
    
122
///////////////////////////////////////////////////////////////////////////////////////////////////
123
    
124
    @Override
125
    protected void onDestroy() 
126
      {
127
      DistortedLibrary.onDestroy();
128
      super.onDestroy();
129
      }
130

    
131
///////////////////////////////////////////////////////////////////////////////////////////////////
132

    
133
    @Override
134
    public void onSaveInstanceState(Bundle savedInstanceState)
135
      {
136
      super.onSaveInstanceState(savedInstanceState);
137
      savedInstanceState.putInt("render", mRenderFirst);
138
      }
139

    
140
///////////////////////////////////////////////////////////////////////////////////////////////////
141

    
142
    @Override
143
    public void onRestoreInstanceState(Bundle savedInstanceState)
144
      {
145
      super.onRestoreInstanceState(savedInstanceState);
146

    
147
      mRenderFirst= savedInstanceState.getInt("render");
148
      privateRenderFirst(mRenderFirst);
149
      }
150

    
151
///////////////////////////////////////////////////////////////////////////////////////////////////
152

    
153
    public void onProgressChanged(SeekBar bar, int progress, boolean fromUser)
154
      {
155
      switch (bar.getId())
156
        {
157
        case R.id.transparencySeekRed:    TransparencySurfaceView view0 = findViewById(R.id.transparencySurfaceView);
158
                                          view0.getRenderer().setTransparency(0, (float)progress/100 );
159
                                          break;
160
        case R.id.transparencySeekYellow: TransparencySurfaceView view1 = findViewById(R.id.transparencySurfaceView);
161
                                          view1.getRenderer().setTransparency(1, (float)progress/100 );
162
                                          break;
163
        }
164
      }
165

    
166
///////////////////////////////////////////////////////////////////////////////////////////////////
167

    
168
    public void onStartTrackingTouch(SeekBar bar) { }
169

    
170
///////////////////////////////////////////////////////////////////////////////////////////////////
171

    
172
    public void onStopTrackingTouch(SeekBar bar)  { }
173

    
174
///////////////////////////////////////////////////////////////////////////////////////////////////
175

    
176
    private void setRenderModeToOIT(boolean oit)
177
      {
178
      TransparencySurfaceView view = findViewById(R.id.transparencySurfaceView);
179
      TransparencyRenderer renderer= view.getRenderer();
180

    
181
      renderer.setRenderModeToOIT(oit);
182
      }
183

    
184
///////////////////////////////////////////////////////////////////////////////////////////////////
185

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

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

    
195

    
196
///////////////////////////////////////////////////////////////////////////////////////////////////
197

    
198
    public void onClick(View view)
199
      {
200
      CheckBox box = (CheckBox)view;
201
      boolean checked = box.isChecked();
202
      TransparencySurfaceView sView = findViewById(R.id.transparencySurfaceView);
203

    
204
      switch(box.getId())
205
        {
206
        case R.id.transparencyCheckBox0  : sView.getRenderer().setPostprocess(0,checked); break;
207
        case R.id.transparencyCheckBox1  : sView.getRenderer().setPostprocess(1,checked); break;
208
        }
209
      }
210
}
(1-1/3)