Revision 06c636a5
Added by Leszek Koltunski over 6 years ago
src/main/java/org/distorted/examples/effects3d/Effects3DActivity2.java | ||
---|---|---|
47 | 47 |
|
48 | 48 |
public class Effects3DActivity2 extends AppCompatActivity |
49 | 49 |
{ |
50 |
public static final int NUM_TABS = 3; |
|
51 |
|
|
50 | 52 |
private int mNumCols; |
51 | 53 |
private int mNumRows; |
52 | 54 |
private int mNumSlic; |
... | ... | |
69 | 71 |
private static boolean mShowNormal = true; |
70 | 72 |
private static boolean mUseOIT = false; |
71 | 73 |
|
74 |
private Effects3DTab[] mTab; |
|
75 |
|
|
72 | 76 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
73 | 77 |
|
74 | 78 |
@Override |
... | ... | |
78 | 82 |
|
79 | 83 |
setTheme(R.style.Theme_AppCompat_NoActionBar); |
80 | 84 |
|
85 |
mTab = new Effects3DTab[NUM_TABS]; |
|
86 |
|
|
81 | 87 |
Bundle b = getIntent().getExtras(); |
82 | 88 |
|
83 | 89 |
mObjectType = b.getInt("type"); |
... | ... | |
102 | 108 |
setContentView(view); |
103 | 109 |
|
104 | 110 |
mViewPager = findViewById(R.id.effects3d_viewpager); |
105 |
mViewPager.setOffscreenPageLimit(2);
|
|
111 |
mViewPager.setOffscreenPageLimit( (NUM_TABS+1)/2 );
|
|
106 | 112 |
mPager = new Effects3DTabViewPager(this, getSupportFragmentManager() ); |
107 | 113 |
mViewPager.setAdapter(mPager); |
108 | 114 |
TabLayout tabLayout = findViewById(R.id.effects3d_sliding_tabs); |
... | ... | |
291 | 297 |
|
292 | 298 |
public void newEffect(View v) |
293 | 299 |
{ |
294 |
mPager.newEffect(v,mViewPager.getCurrentItem()); |
|
300 |
int pos = mViewPager.getCurrentItem(); |
|
301 |
|
|
302 |
if( pos>=0 && pos<NUM_TABS ) mTab[pos].newEffect(); |
|
295 | 303 |
} |
296 | 304 |
|
297 | 305 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
298 | 306 |
|
299 | 307 |
public void removeAll(View v) |
300 | 308 |
{ |
301 |
mPager.removeAll(v,mViewPager.getCurrentItem()); |
|
309 |
int pos = mViewPager.getCurrentItem(); |
|
310 |
|
|
311 |
if( pos>=0 && pos<NUM_TABS ) mTab[pos].removeAll(); |
|
302 | 312 |
} |
303 | 313 |
|
304 | 314 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
305 | 315 |
|
306 | 316 |
public void remove(View v) |
307 | 317 |
{ |
308 |
mPager.remove(v,mViewPager.getCurrentItem()); |
|
318 |
int pos = mViewPager.getCurrentItem(); |
|
319 |
|
|
320 |
if( pos>=0 && pos<NUM_TABS ) mTab[pos].remove(v); |
|
321 |
} |
|
322 |
|
|
323 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
324 |
|
|
325 |
void setTab(int pos, Effects3DTab tab) |
|
326 |
{ |
|
327 |
if( pos>=0 && pos<NUM_TABS ) mTab[pos] = tab; |
|
309 | 328 |
} |
310 | 329 |
|
311 | 330 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/examples/effects3d/Effects3DEffect.java | ||
---|---|---|
37 | 37 |
import org.distorted.library.effect.MatrixEffectRotate; |
38 | 38 |
import org.distorted.library.effect.MatrixEffectScale; |
39 | 39 |
import org.distorted.library.effect.MatrixEffectShear; |
40 |
import org.distorted.library.effect.PostprocessEffectBlur; |
|
41 |
import org.distorted.library.effect.PostprocessEffectGlow; |
|
40 | 42 |
import org.distorted.library.effect.VertexEffectDeform; |
41 | 43 |
import org.distorted.library.effect.VertexEffectDistort; |
42 | 44 |
import org.distorted.library.effect.VertexEffectPinch; |
... | ... | |
123 | 125 |
case SMOOTH_SATURATION: effect = new FragmentEffectSaturation(mDyn1, mRegionDyn, true ); break; |
124 | 126 |
case CONTRAST : effect = new FragmentEffectContrast (mDyn1, mRegionDyn, false); break; |
125 | 127 |
case SMOOTH_CONTRAST : effect = new FragmentEffectContrast (mDyn1, mRegionDyn, true ); break; |
128 |
|
|
129 |
case BLUR : effect = new PostprocessEffectBlur (mDyn1 ); break; |
|
130 |
case GLOW : effect = new PostprocessEffectGlow (mDyn1, mDyn4); break; |
|
126 | 131 |
} |
127 | 132 |
|
128 | 133 |
if( effect!=null ) |
... | ... | |
139 | 144 |
{ |
140 | 145 |
switch(mName) |
141 | 146 |
{ |
147 |
/////////////////////////////////////////////////////////////////////////////////////// |
|
148 |
// MATRIX |
|
149 |
/////////////////////////////////////////////////////////////////////////////////////// |
|
150 |
|
|
142 | 151 |
case ROTATE : float an = (mInter[0]-50)*180/50; |
143 | 152 |
float rx = (mInter[1]-50)/ 50.0f; |
144 | 153 |
float ry = (mInter[2]-50)/ 50.0f; |
... | ... | |
173 | 182 |
mSta3.set(xsh,ysh,zsh); |
174 | 183 |
break; |
175 | 184 |
|
185 |
/////////////////////////////////////////////////////////////////////////////////////// |
|
186 |
// VERTEX |
|
187 |
/////////////////////////////////////////////////////////////////////////////////////// |
|
188 |
|
|
176 | 189 |
case DISTORT : |
177 | 190 |
case DEFORM : float ld = mAct.get().getWidth()/50.0f; |
178 | 191 |
float xd = (mInter[0]-50)*ld; |
... | ... | |
197 | 210 |
mSta2.set(dp,ap); |
198 | 211 |
break; |
199 | 212 |
|
213 |
/////////////////////////////////////////////////////////////////////////////////////// |
|
214 |
// FRAGMENT |
|
215 |
/////////////////////////////////////////////////////////////////////////////////////// |
|
216 |
|
|
200 | 217 |
case ALPHA : |
201 | 218 |
case SMOOTH_ALPHA : mSta1.set(mInter[0]/100.0f); |
202 | 219 |
break; |
... | ... | |
213 | 230 |
mInter[2]/100.0f, |
214 | 231 |
mInter[3]/100.0f); |
215 | 232 |
break; |
233 |
|
|
234 |
/////////////////////////////////////////////////////////////////////////////////////// |
|
235 |
// POSTPROCESS |
|
236 |
/////////////////////////////////////////////////////////////////////////////////////// |
|
237 |
|
|
238 |
case BLUR : mSta1.set(mInter[0]/2.0f); |
|
239 |
break; |
|
240 |
case GLOW : mSta1.set(mInter[0]/2.0f); |
|
241 |
mSta4.set(mInter[1]/100.0f, |
|
242 |
mInter[2]/100.0f, |
|
243 |
mInter[3]/100.0f, |
|
244 |
mInter[4]/100.0f ); |
|
245 |
break; |
|
216 | 246 |
} |
217 | 247 |
} |
218 | 248 |
|
... | ... | |
405 | 435 |
mDyn1.add(mSta1); |
406 | 436 |
} |
407 | 437 |
break; |
408 |
case 5 : mDyn5 = new Dynamic5D(); |
|
409 |
mSta5 = new Static5D(0,0,0,0,0); |
|
410 |
mDyn5.add(mSta5); |
|
438 |
case 5 : if( mName == EffectName.WAVE ) |
|
439 |
{ |
|
440 |
mDyn5 = new Dynamic5D(); |
|
441 |
mSta5 = new Static5D(0, 0, 0, 0, 0); |
|
442 |
mDyn5.add(mSta5); |
|
443 |
} |
|
444 |
else |
|
445 |
{ |
|
446 |
mDyn4 = new Dynamic4D(); |
|
447 |
mSta4 = new Static4D(0,0,0,0); |
|
448 |
mDyn4.add(mSta4); |
|
449 |
mDyn1 = new Dynamic1D(); |
|
450 |
mSta1 = new Static1D(0); |
|
451 |
mDyn1.add(mSta1); |
|
452 |
} |
|
411 | 453 |
break; |
412 | 454 |
default: throw new RuntimeException("unsupported effect"); |
413 | 455 |
} |
src/main/java/org/distorted/examples/effects3d/Effects3DTab.java | ||
---|---|---|
87 | 87 |
} |
88 | 88 |
|
89 | 89 |
Effects3DActivity2 act = (Effects3DActivity2)getActivity(); |
90 |
act.setTab(position, this); |
|
91 |
|
|
90 | 92 |
mEffects = act.getEffects(); |
91 | 93 |
|
92 | 94 |
createEffectNames(mType); |
src/main/java/org/distorted/examples/effects3d/Effects3DTabViewPager.java | ||
---|---|---|
22 | 22 |
import android.support.v4.app.Fragment; |
23 | 23 |
import android.support.v4.app.FragmentManager; |
24 | 24 |
import android.support.v4.app.FragmentPagerAdapter; |
25 |
import android.view.View; |
|
26 | 25 |
import android.os.Bundle; |
27 | 26 |
|
28 | 27 |
import org.distorted.examples.R; |
... | ... | |
33 | 32 |
|
34 | 33 |
public class Effects3DTabViewPager extends FragmentPagerAdapter |
35 | 34 |
{ |
36 |
private static final int NUM_TABS = 3; |
|
37 |
|
|
38 | 35 |
private WeakReference<Effects3DActivity2> mAct; |
39 |
private Effects3DTab[] mTab; |
|
40 | 36 |
|
41 | 37 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
42 | 38 |
|
43 |
public Effects3DTabViewPager(Effects3DActivity2 act, FragmentManager fm)
|
|
39 |
Effects3DTabViewPager(Effects3DActivity2 act, FragmentManager fm) |
|
44 | 40 |
{ |
45 | 41 |
super(fm); |
46 | 42 |
mAct = new WeakReference<>(act); |
47 |
mTab = new Effects3DTab[NUM_TABS]; |
|
48 | 43 |
|
49 | 44 |
android.util.Log.e("viewPager"," CONSTRUCTOR "); |
50 | 45 |
} |
51 | 46 |
|
52 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
53 |
|
|
54 |
void newEffect(View v, int pos) |
|
55 |
{ |
|
56 |
if( pos>=0 && pos<NUM_TABS ) mTab[pos].newEffect(); |
|
57 |
} |
|
58 |
|
|
59 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
60 |
|
|
61 |
void removeAll(View v, int pos) |
|
62 |
{ |
|
63 |
if( pos>=0 && pos<NUM_TABS ) mTab[pos].removeAll(); |
|
64 |
} |
|
65 |
|
|
66 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
67 |
|
|
68 |
void remove(View v, int pos) |
|
69 |
{ |
|
70 |
if( pos>=0 && pos<NUM_TABS ) mTab[pos].remove(v); |
|
71 |
} |
|
72 |
|
|
73 | 47 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
74 | 48 |
|
75 | 49 |
@Override |
... | ... | |
77 | 51 |
{ |
78 | 52 |
android.util.Log.e("viewPager","creating tab "+position); |
79 | 53 |
|
80 |
if( position>=0 && position<NUM_TABS ) |
|
54 |
if( position>=0 && position<Effects3DActivity2.NUM_TABS )
|
|
81 | 55 |
{ |
82 | 56 |
Bundle bundle = new Bundle(); |
83 | 57 |
bundle.putInt("position", position); |
84 | 58 |
|
85 |
mTab[position] = new Effects3DTab();
|
|
86 |
mTab[position].setArguments(bundle);
|
|
87 |
return mTab[position];
|
|
59 |
Effects3DTab tab = new Effects3DTab();
|
|
60 |
tab.setArguments(bundle);
|
|
61 |
return tab;
|
|
88 | 62 |
} |
89 | 63 |
|
90 | 64 |
return null; |
... | ... | |
95 | 69 |
@Override |
96 | 70 |
public int getCount() |
97 | 71 |
{ |
98 |
return NUM_TABS; |
|
72 |
return Effects3DActivity2.NUM_TABS;
|
|
99 | 73 |
} |
100 | 74 |
|
101 | 75 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/res/values/strings.xml | ||
---|---|---|
144 | 144 |
<string name="example_quaternion_subtitle">Random rotations using quaternions.</string> |
145 | 145 |
<string name="example_matrix3d">Matrix Effects</string> |
146 | 146 |
<string name="example_matrix3d_subtitle">Test results of Matrix effects on a 3D object.</string> |
147 |
<string name="example_effects3d">Vertex and Fragment effects</string>
|
|
148 |
<string name="example_effects3d_subtitle">Test results of Vertex and Fragment effects on a 3D object.</string>
|
|
147 |
<string name="example_effects3d">Generic Test</string>
|
|
148 |
<string name="example_effects3d_subtitle">Apply any Effect on a 3D object.</string>
|
|
149 | 149 |
<string name="example_plainmonalisa">SurfaceView</string> |
150 | 150 |
<string name="example_plainmonalisa_subtitle">MonaLisa rendered on a plain SurfaceView</string> |
151 | 151 |
<string name="example_save">Save to PNG</string> |
Also available in: Unified diff
More progress with Effects3D app.