Revision 06c636a5
Added by Leszek Koltunski over 7 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.