Project

General

Profile

« Previous | Next » 

Revision d28ddc9b

Added by Leszek Koltunski over 5 years ago

Further improvement for the Generic app.

View differences:

src/main/java/org/distorted/examples/generic/GenericActivity2.java
31 31
import android.widget.CheckBox;
32 32

  
33 33
import org.distorted.examples.R;
34
import org.distorted.library.effect.EffectType;
35 34
import org.distorted.library.main.Distorted;
36 35
import org.distorted.library.main.DistortedEffects;
37 36
import org.distorted.library.main.DistortedTexture;
......
187 186
    return mBitmap;
188 187
    }
189 188

  
189
///////////////////////////////////////////////////////////////////////////////////////////////////
190

  
191
  public DistortedEffects getEffects()
192
    {
193
    return mEffects;
194
    }
195

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

  
198
  public GenericViewPager getPager()
199
    {
200
    return mViewPager;
201
    }
202

  
190 203
///////////////////////////////////////////////////////////////////////////////////////////////////
191 204

  
192 205
  public int getWidth()
......
232 245
    view.getRenderer().setRegion( region.get1(), region.get2(), region.get3(), region.get4() );
233 246
    }
234 247

  
235
///////////////////////////////////////////////////////////////////////////////////////////////////
236

  
237
  void resetMatrixEffects()
238
    {
239
    GenericSurfaceView view = findViewById(R.id.genericSurfaceView);
240
    GenericRenderer renderer= view.getRenderer();
241

  
242
    renderer.resetMatrixEffects();
243
    }
244

  
245
///////////////////////////////////////////////////////////////////////////////////////////////////
246

  
247
  void setCurrentTab(EffectType type)
248
    {
249
    mViewPager.setCurrentTab(type);
250
    }
251

  
252
///////////////////////////////////////////////////////////////////////////////////////////////////
253

  
254
  void setTab(GenericTab tab, int position)
255
    {
256
    mViewPager.setTab(tab,position);
257
    }
258

  
259
///////////////////////////////////////////////////////////////////////////////////////////////////
260

  
261
  public DistortedEffects getEffects()
262
    {
263
    return mEffects;
264
    }
265

  
266
///////////////////////////////////////////////////////////////////////////////////////////////////
267

  
268
  public void newEffect(View v)
269
    {
270
    mViewPager.newEffect();
271
    }
272

  
273
///////////////////////////////////////////////////////////////////////////////////////////////////
274

  
275
  public void removeAll(View v)
276
    {
277
    mViewPager.removeAll();
278
    }
279

  
280
///////////////////////////////////////////////////////////////////////////////////////////////////
281

  
282
  public void remove(View v)
283
    {
284
    mViewPager.remove(v);
285
    }
286

  
287 248
///////////////////////////////////////////////////////////////////////////////////////////////////
288 249

  
289 250
  public void showRegionAndCenter(View view)
src/main/java/org/distorted/examples/generic/GenericEffect.java
788 788
    return mId;
789 789
    }
790 790

  
791
///////////////////////////////////////////////////////////////////////////////////////////////////
792

  
793
  public int getDimension()
794
    {
795
    return mDimension;
796
    }
797

  
791 798
///////////////////////////////////////////////////////////////////////////////////////////////////
792 799

  
793 800
  public View getEffect()
src/main/java/org/distorted/examples/generic/GenericTab.java
26 26
import android.view.ViewGroup;
27 27
import android.widget.AdapterView;
28 28
import android.widget.ArrayAdapter;
29
import android.widget.Button;
29 30
import android.widget.LinearLayout;
30 31
import android.widget.Spinner;
31 32

  
33
import org.distorted.examples.R;
32 34
import org.distorted.library.effect.EffectName;
33 35
import org.distorted.library.effect.EffectType;
34 36
import org.distorted.library.main.DistortedEffects;
......
37 39

  
38 40
///////////////////////////////////////////////////////////////////////////////////////////////////
39 41

  
40
public class GenericTab extends Fragment implements AdapterView.OnItemSelectedListener
42
public class GenericTab extends Fragment implements AdapterView.OnItemSelectedListener, View.OnClickListener
41 43
  {
42 44
  private EffectType mType;
43 45
  private ArrayList<GenericEffect> mList;
......
73 75

  
74 76
    GenericActivity2 act = (GenericActivity2)getActivity();
75 77

  
76
    if( act!=null )
77
      {
78
      act.setTab(this,position);
79
      mEffects = act.getEffects();
80
      }
78
    if( act!=null ) mEffects = act.getEffects();
81 79

  
82 80
    createEffectNames(mType);
83 81
    mEffectStrings = new String[mEffectNames.length];
......
87 85
      mEffectStrings[i] = mEffectNames[i].name();
88 86
      }
89 87

  
90
    return inflater.inflate( tab, container, false);
88
    View view = inflater.inflate( tab, container, false);
89

  
90
    Button add = view.findViewById(R.id.effects3dButtonAdd);
91
    add.setOnClickListener(this);
92
    Button rem = view.findViewById(R.id.effects3dButtonRemove);
93
    rem.setOnClickListener(this);
94

  
95
    return view;
91 96
    }
92 97

  
93 98
///////////////////////////////////////////////////////////////////////////////////////////////////
......
108 113
    effectSpinner.setAdapter(adapterEffect);
109 114
    }
110 115

  
116
///////////////////////////////////////////////////////////////////////////////////////////////////
117

  
118
  @Override
119
  public void onClick(View v)
120
    {
121
    switch (v.getId())
122
      {
123
      case R.id.effects3dButtonAdd   : newEffect(); break;
124
      case R.id.effects3dButtonRemove: removeAll(); break;
125
      case R.id.button1dRemove       :
126
      case R.id.button2dRemove       :
127
      case R.id.button3dRemove       :
128
      case R.id.button4dRemove       :
129
      case R.id.button5dRemove       : remove(v)  ; break;
130
      }
131
    }
132

  
111 133
///////////////////////////////////////////////////////////////////////////////////////////////////
112 134

  
113 135
   @Override
......
123 145

  
124 146
         if( act!=null )
125 147
           {
126
           act.setCurrentTab(mType);
148
           GenericViewPager pager = act.getPager();
149
           pager.setCurrentTab(mType);
127 150
           act.showRegionAndCenter(null);
128 151
           }
129 152
         }
......
160 183
    View view = eff.createView(mChildren);
161 184
    layout.addView(view);
162 185

  
186
    int dimension = eff.getDimension();
187
    Button butt;
188

  
189
    switch(dimension)
190
      {
191
      case 1: butt = view.findViewById(R.id.button1dRemove);
192
              butt.setOnClickListener(this);
193
              break;
194
      case 2: butt = view.findViewById(R.id.button2dRemove);
195
              butt.setOnClickListener(this);
196
              break;
197
      case 3: butt = view.findViewById(R.id.button3dRemove);
198
              butt.setOnClickListener(this);
199
              break;
200
      case 4: butt = view.findViewById(R.id.button4dRemove);
201
              butt.setOnClickListener(this);
202
              break;
203
      case 5: butt = view.findViewById(R.id.button5dRemove);
204
              butt.setOnClickListener(this);
205
              break;
206
      }
207

  
163 208
    if( mEffectNames[mEffectAdd].getCenterDimension() > 0 )
164 209
      {
165 210
      View center = eff.createCenter(mChildren);
......
175 220
    eff.apply(mEffects);
176 221
    }
177 222

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

  
180
  private void createEffectNames(EffectType type)
181
    {
182
    EffectName[] names = EffectName.values();
183

  
184
    int numEffects=0;
185

  
186
    for(int i=0; i<names.length; i++)
187
      if( names[i].getType() == type ) numEffects++;
188

  
189
    mEffectNames = new EffectName[numEffects];
190

  
191
    numEffects=0;
192

  
193
    for(int i=0; i<names.length; i++)
194
      if( names[i].getType() == type )
195
        {
196
        mEffectNames[numEffects++] = names[i];
197
        }
198
    }
199

  
200 223
///////////////////////////////////////////////////////////////////////////////////////////////////
201 224

  
202 225
  void removeAll()
......
212 235

  
213 236
    if( mType==EffectType.MATRIX )
214 237
      {
215
      act.resetMatrixEffects();
238
      GenericSurfaceView view = act.findViewById(R.id.genericSurfaceView);
239
      GenericRenderer renderer= view.getRenderer();
240
      renderer.resetMatrixEffects();
216 241
      }
217 242
    }
218 243

  
......
252 277
        }
253 278
      }
254 279
    }
280

  
281
///////////////////////////////////////////////////////////////////////////////////////////////////
282

  
283
  private void createEffectNames(EffectType type)
284
    {
285
    EffectName[] names = EffectName.values();
286

  
287
    int numEffects=0;
288

  
289
    for(int i=0; i<names.length; i++)
290
      if( names[i].getType() == type ) numEffects++;
291

  
292
    mEffectNames = new EffectName[numEffects];
293

  
294
    numEffects=0;
295

  
296
    for(int i=0; i<names.length; i++)
297
      if( names[i].getType() == type )
298
        {
299
        mEffectNames[numEffects++] = names[i];
300
        }
301
    }
255 302
  }
src/main/java/org/distorted/examples/generic/GenericViewPager.java
25 25
import android.support.v4.app.FragmentPagerAdapter;
26 26
import android.support.v4.view.ViewPager;
27 27
import android.support.v7.app.AppCompatActivity;
28
import android.view.View;
29 28

  
30 29
import org.distorted.examples.R;
31 30
import org.distorted.library.effect.EffectType;
......
50 49
  private static final int NUM_TABS = TABS.length/NUM;
51 50

  
52 51
  private ViewPager mViewPager;
53
  private GenericTab[] mTab;
54 52
  private int mCurrentTab;
55 53

  
56 54
  private class GenericTabViewPager extends FragmentPagerAdapter
......
100 98
    GenericTabViewPager pager = new GenericTabViewPager( act.getSupportFragmentManager() );
101 99
    mViewPager.setAdapter(pager);
102 100

  
103
    mTab = new GenericTab[NUM_TABS];
104 101
    mCurrentTab = 0;
105 102
    }
106 103

  
......
108 105

  
109 106
  void showRegionAndCenter(boolean showR, boolean showC, GenericSurfaceView sv)
110 107
    {
111
    boolean localShowC = showCenter(mCurrentTab);
112
    boolean localShowR = showRegion(mCurrentTab);
108
    boolean localShowC = (TABS[NUM*mCurrentTab + 4] == 1);
109
    boolean localShowR = (TABS[NUM*mCurrentTab + 5] == 1);
113 110

  
114 111
    sv.getRenderer().showRegionAndCenter( (showR&&localShowR) , (showC&&localShowC) );
115 112
    }
116 113

  
117
///////////////////////////////////////////////////////////////////////////////////////////////////
118

  
119
  void newEffect()
120
    {
121
    int pos = mViewPager.getCurrentItem();
122

  
123
    if( pos>=0 && pos<NUM_TABS ) mTab[pos].newEffect();
124
    }
125

  
126
///////////////////////////////////////////////////////////////////////////////////////////////////
127

  
128
  void removeAll()
129
    {
130
    int pos = mViewPager.getCurrentItem();
131

  
132
    if( pos>=0 && pos<NUM_TABS ) mTab[pos].removeAll();
133
    }
134

  
135
///////////////////////////////////////////////////////////////////////////////////////////////////
136

  
137
  void remove(View v)
138
    {
139
    int pos = mViewPager.getCurrentItem();
140

  
141
    if( pos>=0 && pos<NUM_TABS ) mTab[pos].remove(v);
142
    }
143

  
144 114
///////////////////////////////////////////////////////////////////////////////////////////////////
145 115

  
146 116
  ViewPager getPager()
......
161 131
        }
162 132
      }
163 133
    }
164

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

  
167
  void setTab(GenericTab tab, int position)
168
    {
169
    if( position>=0 && position<NUM_TABS ) mTab[position] = tab;
170
    }
171

  
172
///////////////////////////////////////////////////////////////////////////////////////////////////
173

  
174
  private static boolean showCenter(int position)
175
    {
176
    return TABS[NUM*position + 4] == 1;
177
    }
178

  
179
///////////////////////////////////////////////////////////////////////////////////////////////////
180

  
181
  private static boolean showRegion(int position)
182
    {
183
    return TABS[NUM*position + 5] == 1;
184
    }
185 134
  }
src/main/res/layout/effect1d.xml
26 26
                    android:layout_height="wrap_content"
27 27
                    android:id="@+id/button1dRemove"
28 28
                    android:layout_weight="0.2"
29
                    android:layout_marginTop="3dp"
30
                    android:onClick="remove"/>
29
                    android:layout_marginTop="3dp"/>
31 30
        </LinearLayout>
32 31

  
33 32
        <SeekBar
src/main/res/layout/effect2d.xml
26 26
                    android:layout_height="wrap_content"
27 27
                    android:id="@+id/button2dRemove"
28 28
                    android:layout_weight="0.2"
29
                    android:layout_marginTop="3dp"
30
                    android:onClick="remove"/>
29
                    android:layout_marginTop="3dp"/>
31 30
        </LinearLayout>
32 31

  
33 32
        <SeekBar
src/main/res/layout/effect3d.xml
26 26
                    android:layout_height="wrap_content"
27 27
                    android:id="@+id/button3dRemove"
28 28
                    android:layout_weight="0.2"
29
                    android:layout_marginTop="3dp"
30
                    android:onClick="remove"/>
29
                    android:layout_marginTop="3dp"/>
31 30
        </LinearLayout>
32 31

  
33 32
        <SeekBar
src/main/res/layout/effect4d.xml
26 26
                    android:layout_height="wrap_content"
27 27
                    android:id="@+id/button4dRemove"
28 28
                    android:layout_weight="0.2"
29
                    android:layout_marginTop="3dp"
30
                    android:onClick="remove"/>
29
                    android:layout_marginTop="3dp"/>
31 30
        </LinearLayout>
32 31

  
33 32
        <SeekBar
src/main/res/layout/effect5d.xml
26 26
                    android:layout_height="wrap_content"
27 27
                    android:id="@+id/button5dRemove"
28 28
                    android:layout_weight="0.2"
29
                    android:layout_marginTop="3dp"
30
                    android:onClick="remove"/>
29
                    android:layout_marginTop="3dp"/>
31 30
        </LinearLayout>
32 31

  
33 32
        <SeekBar
src/main/res/layout/effects3dtab0.xml
11 11
            android:orientation="horizontal">
12 12

  
13 13
            <Button
14
                android:id="@+id/buttonAdd"
14
                android:id="@+id/effects3dButtonAdd"
15 15
                android:layout_width="wrap_content"
16 16
                android:layout_height="wrap_content"
17
                android:onClick="newEffect"
18 17
                android:text="@string/Add"
19 18
                />
20 19

  
......
32 31
                android:layout_weight="0.5"/>
33 32

  
34 33
            <Button
35
                android:id="@+id/buttonRemove"
34
                android:id="@+id/effects3dButtonRemove"
36 35
                android:layout_width="wrap_content"
37 36
                android:layout_height="wrap_content"
38
                android:onClick="removeAll"
39 37
                android:text="@string/reset"
40 38
                />
41 39

  
src/main/res/layout/effects3dtab1.xml
11 11
            android:orientation="horizontal">
12 12

  
13 13
            <Button
14
                android:id="@+id/buttonAdd"
14
                android:id="@+id/effects3dButtonAdd"
15 15
                android:layout_width="wrap_content"
16 16
                android:layout_height="wrap_content"
17
                android:onClick="newEffect"
18 17
                android:text="@string/Add"
19 18
                />
20 19

  
......
32 31
                android:layout_weight="0.5"/>
33 32

  
34 33
            <Button
35
                android:id="@+id/buttonRemove"
34
                android:id="@+id/effects3dButtonRemove"
36 35
                android:layout_width="wrap_content"
37 36
                android:layout_height="wrap_content"
38
                android:onClick="removeAll"
39 37
                android:text="@string/reset"
40 38
                />
41 39

  
src/main/res/layout/effects3dtab2.xml
11 11
            android:orientation="horizontal">
12 12

  
13 13
            <Button
14
                android:id="@+id/buttonAdd"
14
                android:id="@+id/effects3dButtonAdd"
15 15
                android:layout_width="wrap_content"
16 16
                android:layout_height="wrap_content"
17
                android:onClick="newEffect"
18 17
                android:text="@string/Add"
19 18
                />
20 19

  
......
32 31
                android:layout_weight="0.5"/>
33 32

  
34 33
            <Button
35
                android:id="@+id/buttonRemove"
34
                android:id="@+id/effects3dButtonRemove"
36 35
                android:layout_width="wrap_content"
37 36
                android:layout_height="wrap_content"
38
                android:onClick="removeAll"
39 37
                android:text="@string/reset"
40 38
                />
41 39

  
src/main/res/layout/effects3dtab3.xml
11 11
            android:orientation="horizontal">
12 12

  
13 13
            <Button
14
                android:id="@+id/buttonAdd"
14
                android:id="@+id/effects3dButtonAdd"
15 15
                android:layout_width="wrap_content"
16 16
                android:layout_height="wrap_content"
17
                android:onClick="newEffect"
18 17
                android:text="@string/Add"
19 18
                />
20 19

  
......
32 31
                android:layout_weight="0.5"/>
33 32

  
34 33
            <Button
35
                android:id="@+id/buttonRemove"
34
                android:id="@+id/effects3dButtonRemove"
36 35
                android:layout_width="wrap_content"
37 36
                android:layout_height="wrap_content"
38
                android:onClick="removeAll"
39 37
                android:text="@string/reset"
40 38
                />
41 39

  
src/main/res/layout/genericlayout.xml
5 5
    android:layout_weight="1"
6 6
    android:orientation="vertical" >
7 7

  
8
    <org.distorted.examples.generic.GenericSurfaceView
9
        android:id="@+id/genericSurfaceView"
10
        android:layout_width="fill_parent"
11
        android:layout_height="0dp"
12
        android:layout_weight="1" />
13

  
14 8
    <LinearLayout
15 9
        android:layout_width="match_parent"
16 10
        android:layout_height="32dp"
......
58 52

  
59 53
    </LinearLayout>
60 54

  
55
    <org.distorted.examples.generic.GenericSurfaceView
56
        android:id="@+id/genericSurfaceView"
57
        android:layout_width="fill_parent"
58
        android:layout_height="0dp"
59
        android:layout_weight="1" />
60

  
61 61
    <android.support.design.widget.TabLayout
62 62
        android:id="@+id/generic_sliding_tabs"
63 63
        android:layout_width="match_parent"

Also available in: Unified diff