Revision 1585ba24
Added by Leszek Koltunski about 7 years ago
| src/main/java/org/distorted/examples/effects3d/Effects3DEffect.java | ||
|---|---|---|
| 76 | 76 |
private int[] mSeekID; |
| 77 | 77 |
private int[] mSeekRegionID; |
| 78 | 78 |
private int[] mSeekCenterID; |
| 79 |
private int mDimension; |
|
| 79 |
private int mDimension, mRegionDimension;
|
|
| 80 | 80 |
private TextView mText,mTextRegion,mTextCenter; |
| 81 | 81 |
|
| 82 | 82 |
private Dynamic1D mDyn1; |
| ... | ... | |
| 89 | 89 |
private Static3D mSta3; |
| 90 | 90 |
private Static4D mSta4; |
| 91 | 91 |
private Static5D mSta5; |
| 92 |
private Dynamic4D mRegionDyn; |
|
| 93 |
private Static4D mRegionSta; |
|
| 92 |
private Dynamic4D mRegion4Dyn; |
|
| 93 |
private Static4D mRegion4Sta; |
|
| 94 |
private Dynamic3D mRegion3Dyn; |
|
| 95 |
private Static3D mRegion3Sta; |
|
| 94 | 96 |
private Dynamic3D mCenterDyn; |
| 95 | 97 |
private Static3D mCenterSta; |
| 96 | 98 |
|
| ... | ... | |
| 147 | 149 |
case SCALE : effect = new MatrixEffectScale (mDyn3) ; break; |
| 148 | 150 |
case SHEAR : effect = new MatrixEffectShear (mDyn3, mCenterDyn); break; |
| 149 | 151 |
|
| 150 |
case DISTORT : effect = new VertexEffectDistort (mDyn3, mCenterDyn, mRegionDyn); break; |
|
| 151 |
case DEFORM : effect = new VertexEffectDeform (mDyn3, mCenterDyn, mRegionDyn); break; |
|
| 152 |
case SINK : effect = new VertexEffectSink (mDyn1, mCenterDyn, mRegionDyn); break; |
|
| 153 |
case PINCH : effect = new VertexEffectPinch (mDyn2, mCenterDyn, mRegionDyn); break; |
|
| 154 |
case SWIRL : effect = new VertexEffectSwirl (mDyn1, mCenterDyn, mRegionDyn); break; |
|
| 155 |
case WAVE : effect = new VertexEffectWave (mDyn5, mCenterDyn, mRegionDyn); break; |
|
| 156 |
|
|
| 157 |
case ALPHA : effect = new FragmentEffectAlpha (mDyn1, mRegionDyn, false); break;
|
|
| 158 |
case SMOOTH_ALPHA : effect = new FragmentEffectAlpha (mDyn1, mRegionDyn, true ); break;
|
|
| 159 |
case CHROMA : effect = new FragmentEffectChroma (mDyn1, mDyn3, mRegionDyn, false); break;
|
|
| 160 |
case SMOOTH_CHROMA : effect = new FragmentEffectChroma (mDyn1, mDyn3, mRegionDyn, true ); break;
|
|
| 161 |
case BRIGHTNESS : effect = new FragmentEffectBrightness(mDyn1, mRegionDyn, false); break;
|
|
| 162 |
case SMOOTH_BRIGHTNESS: effect = new FragmentEffectBrightness(mDyn1, mRegionDyn, true ); break;
|
|
| 163 |
case SATURATION : effect = new FragmentEffectSaturation(mDyn1, mRegionDyn, false); break;
|
|
| 164 |
case SMOOTH_SATURATION: effect = new FragmentEffectSaturation(mDyn1, mRegionDyn, true ); break;
|
|
| 165 |
case CONTRAST : effect = new FragmentEffectContrast (mDyn1, mRegionDyn, false); break;
|
|
| 166 |
case SMOOTH_CONTRAST : effect = new FragmentEffectContrast (mDyn1, mRegionDyn, true ); break;
|
|
| 152 |
case DISTORT : effect = new VertexEffectDistort (mDyn3, mCenterDyn, mRegion4Dyn); break;
|
|
| 153 |
case DEFORM : effect = new VertexEffectDeform (mDyn3, mCenterDyn, mRegion4Dyn); break;
|
|
| 154 |
case SINK : effect = new VertexEffectSink (mDyn1, mCenterDyn, mRegion4Dyn); break;
|
|
| 155 |
case PINCH : effect = new VertexEffectPinch (mDyn2, mCenterDyn, mRegion4Dyn); break;
|
|
| 156 |
case SWIRL : effect = new VertexEffectSwirl (mDyn1, mCenterDyn, mRegion4Dyn); break;
|
|
| 157 |
case WAVE : effect = new VertexEffectWave (mDyn5, mCenterDyn, mRegion4Dyn); break;
|
|
| 158 |
|
|
| 159 |
case ALPHA : effect = new FragmentEffectAlpha (mDyn1, mCenterDyn, mRegion3Dyn, false); break;
|
|
| 160 |
case SMOOTH_ALPHA : effect = new FragmentEffectAlpha (mDyn1, mCenterDyn, mRegion3Dyn, true ); break;
|
|
| 161 |
case CHROMA : effect = new FragmentEffectChroma (mDyn1, mDyn3, mCenterDyn, mRegion3Dyn, false); break;
|
|
| 162 |
case SMOOTH_CHROMA : effect = new FragmentEffectChroma (mDyn1, mDyn3, mCenterDyn, mRegion3Dyn, true ); break;
|
|
| 163 |
case BRIGHTNESS : effect = new FragmentEffectBrightness(mDyn1, mCenterDyn, mRegion3Dyn, false); break;
|
|
| 164 |
case SMOOTH_BRIGHTNESS: effect = new FragmentEffectBrightness(mDyn1, mCenterDyn, mRegion3Dyn, true ); break;
|
|
| 165 |
case SATURATION : effect = new FragmentEffectSaturation(mDyn1, mCenterDyn, mRegion3Dyn, false); break;
|
|
| 166 |
case SMOOTH_SATURATION: effect = new FragmentEffectSaturation(mDyn1, mCenterDyn, mRegion3Dyn, true ); break;
|
|
| 167 |
case CONTRAST : effect = new FragmentEffectContrast (mDyn1, mCenterDyn, mRegion3Dyn, false); break;
|
|
| 168 |
case SMOOTH_CONTRAST : effect = new FragmentEffectContrast (mDyn1, mCenterDyn, mRegion3Dyn, true ); break;
|
|
| 167 | 169 |
|
| 168 | 170 |
case BLUR : effect = new PostprocessEffectBlur (mDyn1 ); break; |
| 169 | 171 |
case GLOW : effect = new PostprocessEffectGlow (mDyn1, mDyn4); break; |
| ... | ... | |
| 401 | 403 |
float z = (mInterRegion[2]-deduct)*factorX; // ?? |
| 402 | 404 |
float r = mInterRegion[3] *(factorX+factorY)/2; |
| 403 | 405 |
|
| 404 |
mRegionSta.set(x,y,z,r); |
|
| 406 |
mRegion4Sta.set(x,y,z,r); |
|
| 407 |
mRegion3Sta.set(x,y,z); |
|
| 405 | 408 |
} |
| 406 | 409 |
|
| 407 | 410 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 418 | 421 |
|
| 419 | 422 |
private void setRegionText() |
| 420 | 423 |
{
|
| 421 |
int f0 = (int)mRegionSta.get1(); |
|
| 422 |
int f1 = (int)mRegionSta.get2(); |
|
| 423 |
int f2 = (int)mRegionSta.get3(); |
|
| 424 |
int f3 = (int)mRegionSta.get4(); |
|
| 424 |
if( mRegionDimension==4 ) |
|
| 425 |
{
|
|
| 426 |
int f0 = (int) mRegion4Sta.get1(); |
|
| 427 |
int f1 = (int) mRegion4Sta.get2(); |
|
| 428 |
int f2 = (int) mRegion4Sta.get3(); |
|
| 429 |
int f3 = (int) mRegion4Sta.get4(); |
|
| 430 |
|
|
| 431 |
mTextRegion.setText("region (" + f0 + "," + f1 + "," + f2 + "," + f3 + ")");
|
|
| 432 |
} |
|
| 425 | 433 |
|
| 426 |
mTextRegion.setText("region ("+f0+","+f1+","+f2+","+f3+")");
|
|
| 434 |
if( mRegionDimension==3 ) |
|
| 435 |
{
|
|
| 436 |
int f0 = (int) mRegion3Sta.get1(); |
|
| 437 |
int f1 = (int) mRegion3Sta.get2(); |
|
| 438 |
int f2 = (int) mRegion3Sta.get3(); |
|
| 439 |
|
|
| 440 |
mTextRegion.setText("region (" + f0 + "," + f1 + "," + f2 + ")");
|
|
| 441 |
} |
|
| 427 | 442 |
} |
| 428 | 443 |
|
| 429 | 444 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 455 | 470 |
mSta4 = null; |
| 456 | 471 |
mSta5 = null; |
| 457 | 472 |
|
| 458 |
mDimension = mName.getDimension(); |
|
| 473 |
mDimension = mName.getEffectDimension(); |
|
| 474 |
mRegionDimension = mName.getRegionDimension(); |
|
| 459 | 475 |
|
| 460 | 476 |
switch(mDimension) |
| 461 | 477 |
{
|
| ... | ... | |
| 511 | 527 |
|
| 512 | 528 |
mInterRegion = new int[4]; |
| 513 | 529 |
mSeekRegionID= new int[4]; |
| 514 |
mRegionDyn = new Dynamic4D(); |
|
| 515 |
mRegionSta = new Static4D(0,0,0,0); |
|
| 516 |
mRegionDyn.add(mRegionSta); |
|
| 530 |
mRegion4Dyn = new Dynamic4D(); |
|
| 531 |
mRegion4Sta = new Static4D(0,0,0,0); |
|
| 532 |
mRegion4Dyn.add(mRegion4Sta); |
|
| 533 |
mRegion3Dyn = new Dynamic3D(); |
|
| 534 |
mRegion3Sta = new Static3D(0,0,0); |
|
| 535 |
mRegion3Dyn.add(mRegion3Sta); |
|
| 517 | 536 |
|
| 518 | 537 |
mInterCenter = new int[3]; |
| 519 | 538 |
mSeekCenterID= new int[3]; |
| ... | ... | |
| 610 | 629 |
{
|
| 611 | 630 |
Effects3DActivity2 act = mAct.get(); |
| 612 | 631 |
|
| 613 |
mRegion = act.getLayoutInflater().inflate(R.layout.effectregion, null); |
|
| 614 |
mRegion.setBackgroundColor( num%2==1 ? BACKGROUND_EVEN: BACKGROUND_ODD ); |
|
| 632 |
if( mRegionDimension== 4 ) |
|
| 633 |
{
|
|
| 634 |
mRegion = act.getLayoutInflater().inflate(R.layout.effectregion4, null); |
|
| 635 |
mRegion.setBackgroundColor(num % 2 == 1 ? BACKGROUND_EVEN : BACKGROUND_ODD); |
|
| 615 | 636 |
|
| 616 |
SeekBar[] seek = new SeekBar[4]; |
|
| 637 |
SeekBar[] seek = new SeekBar[4];
|
|
| 617 | 638 |
|
| 618 |
seek[0] = mRegion.findViewById(R.id.effectRegionBarX );
|
|
| 619 |
seek[1] = mRegion.findViewById(R.id.effectRegionBarY );
|
|
| 620 |
seek[2] = mRegion.findViewById(R.id.effectRegionBarRX);
|
|
| 621 |
seek[3] = mRegion.findViewById(R.id.effectRegionBarRY);
|
|
| 639 |
seek[0] = mRegion.findViewById(R.id.effectRegion4BarX);
|
|
| 640 |
seek[1] = mRegion.findViewById(R.id.effectRegion4BarY);
|
|
| 641 |
seek[2] = mRegion.findViewById(R.id.effectRegion4BarZ);
|
|
| 642 |
seek[3] = mRegion.findViewById(R.id.effectRegion4BarR);
|
|
| 622 | 643 |
|
| 623 |
mSeekRegionID[0] = seek[0].getId(); |
|
| 624 |
mSeekRegionID[1] = seek[1].getId(); |
|
| 625 |
mSeekRegionID[2] = seek[2].getId(); |
|
| 626 |
mSeekRegionID[3] = seek[3].getId(); |
|
| 644 |
mSeekRegionID[0] = seek[0].getId();
|
|
| 645 |
mSeekRegionID[1] = seek[1].getId();
|
|
| 646 |
mSeekRegionID[2] = seek[2].getId();
|
|
| 647 |
mSeekRegionID[3] = seek[3].getId();
|
|
| 627 | 648 |
|
| 628 |
mTextRegion = mRegion.findViewById(R.id.effectRegionText);
|
|
| 649 |
mTextRegion = mRegion.findViewById(R.id.effectRegion4Text);
|
|
| 629 | 650 |
|
| 630 |
setDefaultRegionInter(); |
|
| 651 |
setDefaultRegionInter();
|
|
| 631 | 652 |
|
| 632 |
for(int i=0; i<4; i++) |
|
| 633 |
{
|
|
| 634 |
seek[i].setOnSeekBarChangeListener(this); |
|
| 635 |
seek[i].setProgress( mInterRegion[i] ); |
|
| 653 |
for (int i = 0; i < 4; i++) |
|
| 654 |
{
|
|
| 655 |
seek[i].setOnSeekBarChangeListener(this); |
|
| 656 |
seek[i].setProgress(mInterRegion[i]); |
|
| 657 |
} |
|
| 658 |
|
|
| 659 |
act.setRegion(mRegion4Sta.get1(), mRegion4Sta.get2(), mRegion4Sta.get3(), mRegion4Sta.get4()); |
|
| 636 | 660 |
} |
| 661 |
else |
|
| 662 |
{
|
|
| 663 |
mRegion = act.getLayoutInflater().inflate(R.layout.effectregion3, null); |
|
| 664 |
mRegion.setBackgroundColor(num % 2 == 1 ? BACKGROUND_EVEN : BACKGROUND_ODD); |
|
| 665 |
|
|
| 666 |
SeekBar[] seek = new SeekBar[3]; |
|
| 667 |
|
|
| 668 |
seek[0] = mRegion.findViewById(R.id.effectRegion3BarRX); |
|
| 669 |
seek[1] = mRegion.findViewById(R.id.effectRegion3BarRY); |
|
| 670 |
seek[2] = mRegion.findViewById(R.id.effectRegion3BarRZ); |
|
| 671 |
|
|
| 672 |
mSeekRegionID[0] = seek[0].getId(); |
|
| 673 |
mSeekRegionID[1] = seek[1].getId(); |
|
| 674 |
mSeekRegionID[2] = seek[2].getId(); |
|
| 675 |
|
|
| 676 |
mTextRegion = mRegion.findViewById(R.id.effectRegion3Text); |
|
| 637 | 677 |
|
| 638 |
act.setRegion(mRegionSta.get1(),mRegionSta.get2(),mRegionSta.get3(), mRegionSta.get4() ); |
|
| 678 |
setDefaultRegionInter(); |
|
| 679 |
|
|
| 680 |
for (int i = 0; i < 3; i++) |
|
| 681 |
{
|
|
| 682 |
seek[i].setOnSeekBarChangeListener(this); |
|
| 683 |
seek[i].setProgress(mInterRegion[i]); |
|
| 684 |
} |
|
| 685 |
|
|
| 686 |
act.setRegion(mRegion3Sta.get1(), mRegion3Sta.get2(), mRegion3Sta.get3(), 1.0f ); |
|
| 687 |
} |
|
| 639 | 688 |
|
| 640 | 689 |
return mRegion; |
| 641 | 690 |
} |
| ... | ... | |
| 709 | 758 |
setText(); |
| 710 | 759 |
} |
| 711 | 760 |
|
| 712 |
if( bar.getId() == mSeekRegionID[0] ) |
|
| 761 |
if( mRegionDimension>=1 && bar.getId() == mSeekRegionID[0] )
|
|
| 713 | 762 |
{
|
| 714 | 763 |
mInterRegion[0] = progress; |
| 715 | 764 |
fillRegionStatics(); |
| 716 | 765 |
setRegionText(); |
| 717 | 766 |
} |
| 718 |
if( bar.getId() == mSeekRegionID[1] ) |
|
| 767 |
if( mRegionDimension>=2 && bar.getId() == mSeekRegionID[1] )
|
|
| 719 | 768 |
{
|
| 720 | 769 |
mInterRegion[1] = progress; |
| 721 | 770 |
fillRegionStatics(); |
| 722 | 771 |
setRegionText(); |
| 723 | 772 |
} |
| 724 |
if( bar.getId() == mSeekRegionID[2] ) |
|
| 773 |
if( mRegionDimension>=3 && bar.getId() == mSeekRegionID[2] )
|
|
| 725 | 774 |
{
|
| 726 | 775 |
mInterRegion[2] = progress; |
| 727 | 776 |
fillRegionStatics(); |
| 728 | 777 |
setRegionText(); |
| 729 | 778 |
} |
| 730 |
if( bar.getId() == mSeekRegionID[3] ) |
|
| 779 |
if( mRegionDimension>=4 && bar.getId() == mSeekRegionID[3] )
|
|
| 731 | 780 |
{
|
| 732 | 781 |
mInterRegion[3] = progress; |
| 733 | 782 |
fillRegionStatics(); |
| ... | ... | |
| 765 | 814 |
view.getRenderer().showRegionAndCenter( showR,showC ); |
| 766 | 815 |
|
| 767 | 816 |
act.setCenter(mCenterSta.get1(),mCenterSta.get2(),mCenterSta.get3()); |
| 768 |
act.setRegion(mRegionSta.get1(),mRegionSta.get2(),mRegionSta.get3(), mRegionSta.get4());
|
|
| 817 |
act.setRegion(mRegion4Sta.get1(),mRegion4Sta.get2(),mRegion4Sta.get3(), mRegion4Sta.get4());
|
|
| 769 | 818 |
} |
| 770 | 819 |
} |
| 771 | 820 |
|
Also available in: Unified diff
Make the Fragment effects truly 3D: change their 4D 'region' into a 3D 'center' (a point in 3D) and 3D 'region' (which is now a set of 3 radii defining an ellipsoid around the center)
Also corresponding changes to the applications.