Revision d28ddc9b
Added by Leszek Koltunski over 5 years ago
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
Further improvement for the Generic app.