Project

General

Profile

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

examples / src / main / java / org / distorted / examples / transparency / TransparencyActivity.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.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
    int pid = parent.getId();
87

    
88
    if( pid == R.id.transparency_spinnerFirst ) privateRenderFirst(pos);
89
    if( pid == R.id.transparency_spinnerMode  ) setRenderModeToOIT(pos==1);
90
    }
91

    
92
///////////////////////////////////////////////////////////////////////////////////////////////////
93

    
94
  public void onNothingSelected(AdapterView<?> parent)
95
    {
96
    }
97

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

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

    
128
///////////////////////////////////////////////////////////////////////////////////////////////////
129

    
130
    @Override
131
    public void onSaveInstanceState(Bundle savedInstanceState)
132
      {
133
      super.onSaveInstanceState(savedInstanceState);
134
      savedInstanceState.putInt("render", mRenderFirst);
135
      }
136

    
137
///////////////////////////////////////////////////////////////////////////////////////////////////
138

    
139
    @Override
140
    public void onRestoreInstanceState(Bundle savedInstanceState)
141
      {
142
      super.onRestoreInstanceState(savedInstanceState);
143

    
144
      mRenderFirst= savedInstanceState.getInt("render");
145
      privateRenderFirst(mRenderFirst);
146
      }
147

    
148
///////////////////////////////////////////////////////////////////////////////////////////////////
149

    
150
    public void onProgressChanged(SeekBar bar, int progress, boolean fromUser)
151
      {
152
      int id = bar.getId();
153
      TransparencySurfaceView v = findViewById(R.id.transparencySurfaceView);
154
      TransparencyRenderer r = v.getRenderer();
155

    
156
      if( id == R.id.transparencySeekRed    ) r.setTransparency(0, (float)progress/100 );
157
      if( id == R.id.transparencySeekYellow ) r.setTransparency(1, (float)progress/100 );
158
      }
159

    
160
///////////////////////////////////////////////////////////////////////////////////////////////////
161

    
162
    public void onStartTrackingTouch(SeekBar bar) { }
163

    
164
///////////////////////////////////////////////////////////////////////////////////////////////////
165

    
166
    public void onStopTrackingTouch(SeekBar bar)  { }
167

    
168
///////////////////////////////////////////////////////////////////////////////////////////////////
169

    
170
    private void setRenderModeToOIT(boolean oit)
171
      {
172
      TransparencySurfaceView view = findViewById(R.id.transparencySurfaceView);
173
      TransparencyRenderer renderer= view.getRenderer();
174

    
175
      renderer.setRenderModeToOIT(oit);
176
      }
177

    
178
///////////////////////////////////////////////////////////////////////////////////////////////////
179

    
180
    private void privateRenderFirst(int index)
181
      {
182
      TransparencySurfaceView view = findViewById(R.id.transparencySurfaceView);
183
      TransparencyRenderer renderer= view.getRenderer();
184

    
185
      renderer.setRenderFirst(index);
186
      mRenderFirst = index;
187
      }
188

    
189

    
190
///////////////////////////////////////////////////////////////////////////////////////////////////
191

    
192
    public void onClick(View view)
193
      {
194
      CheckBox box = (CheckBox)view;
195
      boolean checked = box.isChecked();
196
      TransparencySurfaceView v = findViewById(R.id.transparencySurfaceView);
197
      TransparencyRenderer r = v.getRenderer();
198
      int id = box.getId();
199

    
200
      if( id == R.id.transparencyCheckBox0 ) r.setPostprocess(0,checked);
201
      if( id == R.id.transparencyCheckBox1 ) r.setPostprocess(1,checked);
202
      }
203
}
(1-1/3)