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