| 31 |
31 |
import org.distorted.library.type.Dynamic2D;
|
| 32 |
32 |
import org.distorted.library.type.Dynamic3D;
|
| 33 |
33 |
import org.distorted.library.type.Dynamic4D;
|
|
34 |
import org.distorted.library.type.Dynamic5D;
|
| 34 |
35 |
import org.distorted.library.type.Static1D;
|
| 35 |
36 |
import org.distorted.library.type.Static2D;
|
| 36 |
37 |
import org.distorted.library.type.Static3D;
|
| 37 |
38 |
import org.distorted.library.type.Static4D;
|
|
39 |
import org.distorted.library.type.Static5D;
|
| 38 |
40 |
|
| 39 |
41 |
import java.lang.ref.WeakReference;
|
| 40 |
42 |
|
| 41 |
43 |
///////////////////////////////////////////////////////////////////////////////////////////////////
|
| 42 |
44 |
|
| 43 |
|
public class Effects3DEffect implements SeekBar.OnSeekBarChangeListener
|
|
45 |
class Effects3DEffect implements SeekBar.OnSeekBarChangeListener
|
| 44 |
46 |
{
|
| 45 |
47 |
private WeakReference<Effects3DActivity> mAct;
|
| 46 |
48 |
|
| ... | ... | |
| 56 |
58 |
|
| 57 |
59 |
private Dynamic1D mDyn1;
|
| 58 |
60 |
private Dynamic3D mDyn3;
|
| 59 |
|
private Dynamic4D mDyn4;
|
|
61 |
private Dynamic5D mDyn5;
|
| 60 |
62 |
private Static1D mSta1;
|
| 61 |
63 |
private Static3D mSta3;
|
| 62 |
|
private Static4D mSta4;
|
|
64 |
private Static5D mSta5;
|
| 63 |
65 |
private Dynamic4D mRegionDyn;
|
| 64 |
66 |
private Static4D mRegionSta;
|
| 65 |
67 |
private Dynamic2D mCenterDyn;
|
| ... | ... | |
| 76 |
78 |
case DEFORM : return 3;
|
| 77 |
79 |
|
| 78 |
80 |
case CHROMA :
|
| 79 |
|
case SMOOTH_CHROMA:
|
| 80 |
|
case WAVE : return 4;
|
|
81 |
case SMOOTH_CHROMA: return 4;
|
|
82 |
|
|
83 |
case WAVE : return 5;
|
| 81 |
84 |
|
| 82 |
85 |
default : return 1;
|
| 83 |
86 |
}
|
| ... | ... | |
| 86 |
89 |
///////////////////////////////////////////////////////////////////////////////////////////////////
|
| 87 |
90 |
// requires knowledge about effect nature
|
| 88 |
91 |
|
| 89 |
|
public void apply(DistortedObject object)
|
|
92 |
void apply(DistortedObject object)
|
| 90 |
93 |
{
|
| 91 |
94 |
switch(mName)
|
| 92 |
95 |
{
|
| ... | ... | |
| 94 |
97 |
case DEFORM : object.deform (mDyn3, mCenterDyn ); break;
|
| 95 |
98 |
case SINK : object.sink (mDyn1, mCenterDyn, mRegionDyn); break;
|
| 96 |
99 |
case SWIRL : object.swirl (mDyn1, mCenterDyn, mRegionDyn); break;
|
| 97 |
|
case WAVE : object.wave (mDyn4, mCenterDyn, mRegionDyn); break;
|
|
100 |
case WAVE : object.wave (mDyn5, mCenterDyn, mRegionDyn); break;
|
| 98 |
101 |
|
| 99 |
102 |
case ALPHA : object.alpha (mDyn1, mRegionDyn, false); break;
|
| 100 |
103 |
case SMOOTH_ALPHA : object.alpha (mDyn1, mRegionDyn, true ); break;
|
| ... | ... | |
| 114 |
117 |
|
| 115 |
118 |
private boolean supportsRegion()
|
| 116 |
119 |
{
|
| 117 |
|
return mName == EffectNames.DEFORM ? false : true;
|
|
120 |
return mName != EffectNames.DEFORM;
|
| 118 |
121 |
}
|
| 119 |
122 |
|
| 120 |
123 |
///////////////////////////////////////////////////////////////////////////////////////////////////
|
| ... | ... | |
| 136 |
139 |
float y2 = (mInter[1]-50)*l2;
|
| 137 |
140 |
float z2 = (mInter[2]-50)*180 / 50;
|
| 138 |
141 |
float w2 = (mInter[3]-50)*180 / 50;
|
| 139 |
|
mSta4.set(x2,y2,z2,w2);
|
|
142 |
float v2 = (mInter[4]-50)*180 / 50;
|
|
143 |
mSta5.set(x2,y2,z2,w2,v2);
|
| 140 |
144 |
break;
|
| 141 |
145 |
case SINK : mSta1.set(mInter[0] > 50 ? 50.0f/(100.01f-mInter[0]) : mInter[0] / 50.0f);
|
| 142 |
146 |
break;
|
| ... | ... | |
| 178 |
182 |
mInter[1] = 50;
|
| 179 |
183 |
mInter[2] = 50;
|
| 180 |
184 |
mInter[3] = 50;
|
|
185 |
mInter[4] = 50;
|
| 181 |
186 |
break;
|
| 182 |
187 |
case SINK :
|
| 183 |
188 |
case SWIRL : mInter[0] = 50;
|
| ... | ... | |
| 222 |
227 |
text += " ("+f1+","+f2+","+f3+")";
|
| 223 |
228 |
}
|
| 224 |
229 |
|
| 225 |
|
if( mSta4 !=null )
|
|
230 |
if( mSta5 !=null )
|
| 226 |
231 |
{
|
| 227 |
|
int f1 = (int)mSta4.getX();
|
| 228 |
|
int f2 = (int)mSta4.getY();
|
| 229 |
|
int f3 = (int)mSta4.getZ();
|
| 230 |
|
int f4 = (int)mSta4.getW();
|
| 231 |
|
text += " ("+f1+","+f2+","+f3+","+f4+")";
|
|
232 |
int f1 = (int)mSta5.getX();
|
|
233 |
int f2 = (int)mSta5.getY();
|
|
234 |
int f3 = (int)mSta5.getZ();
|
|
235 |
int f4 = (int)mSta5.getW();
|
|
236 |
int f5 = (int)mSta5.getV();
|
|
237 |
text += " ("+f1+","+f2+","+f3+","+f4+","+f5+")";
|
| 232 |
238 |
}
|
| 233 |
239 |
|
| 234 |
240 |
mText.setText(text);
|
| ... | ... | |
| 306 |
312 |
|
| 307 |
313 |
///////////////////////////////////////////////////////////////////////////////////////////////////
|
| 308 |
314 |
|
| 309 |
|
public Effects3DEffect(EffectNames name, Effects3DActivity act)
|
|
315 |
Effects3DEffect(EffectNames name, Effects3DActivity act)
|
| 310 |
316 |
{
|
| 311 |
317 |
mAct = new WeakReference<>(act);
|
| 312 |
318 |
mName = name;
|
| 313 |
319 |
|
| 314 |
320 |
mDyn1 = null;
|
| 315 |
321 |
mDyn3 = null;
|
| 316 |
|
mDyn4 = null;
|
|
322 |
mDyn5 = null;
|
| 317 |
323 |
mSta1 = null;
|
| 318 |
324 |
mSta3 = null;
|
| 319 |
|
mSta4 = null;
|
|
325 |
mSta5 = null;
|
| 320 |
326 |
|
| 321 |
327 |
mDimension = getDimension();
|
| 322 |
328 |
|
| ... | ... | |
| 330 |
336 |
mSta3 = new Static3D(0,0,0);
|
| 331 |
337 |
mDyn3.add(mSta3);
|
| 332 |
338 |
break;
|
| 333 |
|
case 4 : if( mName == EffectNames.WAVE )
|
| 334 |
|
{
|
| 335 |
|
mDyn4 = new Dynamic4D();
|
| 336 |
|
mSta4 = new Static4D(0,0,0,0);
|
| 337 |
|
mDyn4.add(mSta4);
|
| 338 |
|
}
|
| 339 |
|
else
|
| 340 |
|
{
|
| 341 |
|
mDyn3 = new Dynamic3D();
|
| 342 |
|
mSta3 = new Static3D(0,0,0);
|
| 343 |
|
mDyn3.add(mSta3);
|
| 344 |
|
mDyn1 = new Dynamic1D();
|
| 345 |
|
mSta1 = new Static1D(0);
|
| 346 |
|
mDyn1.add(mSta1);
|
| 347 |
|
}
|
|
339 |
case 4 : mDyn3 = new Dynamic3D();
|
|
340 |
mSta3 = new Static3D(0,0,0);
|
|
341 |
mDyn3.add(mSta3);
|
|
342 |
mDyn1 = new Dynamic1D();
|
|
343 |
mSta1 = new Static1D(0);
|
|
344 |
mDyn1.add(mSta1);
|
|
345 |
break;
|
|
346 |
case 5 : mDyn5 = new Dynamic5D();
|
|
347 |
mSta5 = new Static5D(0,0,0,0,0);
|
|
348 |
mDyn5.add(mSta5);
|
| 348 |
349 |
break;
|
| 349 |
350 |
default: throw new RuntimeException("unsupported effect");
|
| 350 |
351 |
}
|
| ... | ... | |
| 367 |
368 |
|
| 368 |
369 |
///////////////////////////////////////////////////////////////////////////////////////////////////
|
| 369 |
370 |
|
| 370 |
|
public View createView()
|
|
371 |
View createView()
|
| 371 |
372 |
{
|
| 372 |
373 |
View effect;
|
| 373 |
374 |
SeekBar[] seek = new SeekBar[mDimension];
|
| ... | ... | |
| 408 |
409 |
mSeekID[2] = seek[2].getId();
|
| 409 |
410 |
mSeekID[3] = seek[3].getId();
|
| 410 |
411 |
break;
|
|
412 |
case 5 : effect = act.getLayoutInflater().inflate(R.layout.effect5d, null);
|
|
413 |
mText = (TextView)effect.findViewById(R.id.effect5dText);
|
|
414 |
seek[0] = (SeekBar)effect.findViewById(R.id.effect5dbar1);
|
|
415 |
seek[1] = (SeekBar)effect.findViewById(R.id.effect5dbar2);
|
|
416 |
seek[2] = (SeekBar)effect.findViewById(R.id.effect5dbar3);
|
|
417 |
seek[3] = (SeekBar)effect.findViewById(R.id.effect5dbar4);
|
|
418 |
seek[4] = (SeekBar)effect.findViewById(R.id.effect5dbar5);
|
|
419 |
mSeekID[0] = seek[0].getId();
|
|
420 |
mSeekID[1] = seek[1].getId();
|
|
421 |
mSeekID[2] = seek[2].getId();
|
|
422 |
mSeekID[3] = seek[3].getId();
|
|
423 |
mSeekID[4] = seek[4].getId();
|
|
424 |
break;
|
| 411 |
425 |
default: android.util.Log.e("Effects3DEffect", "dimension "+mDimension+" not supported!");
|
| 412 |
426 |
return null;
|
| 413 |
427 |
}
|
| ... | ... | |
| 428 |
442 |
|
| 429 |
443 |
///////////////////////////////////////////////////////////////////////////////////////////////////
|
| 430 |
444 |
|
| 431 |
|
public View createRegion()
|
|
445 |
View createRegion()
|
| 432 |
446 |
{
|
| 433 |
447 |
Effects3DActivity act = mAct.get();
|
| 434 |
448 |
|
| ... | ... | |
| 463 |
477 |
|
| 464 |
478 |
///////////////////////////////////////////////////////////////////////////////////////////////////
|
| 465 |
479 |
|
| 466 |
|
public View createCenter()
|
|
480 |
View createCenter()
|
| 467 |
481 |
{
|
| 468 |
482 |
Effects3DActivity act = mAct.get();
|
| 469 |
483 |
|
| ... | ... | |
| 520 |
534 |
fillStatics();
|
| 521 |
535 |
setText();
|
| 522 |
536 |
}
|
|
537 |
if ( mDimension>=5 && bar.getId()==mSeekID[4] )
|
|
538 |
{
|
|
539 |
mInter[4] = progress;
|
|
540 |
fillStatics();
|
|
541 |
setText();
|
|
542 |
}
|
| 523 |
543 |
|
| 524 |
544 |
if( bar.getId() == mSeekRegionID[0] )
|
| 525 |
545 |
{
|
Make the WAVE effect 5D (extra parameter 'offset')