commit d1abb41eee01248fb93610b0b4e22990c20b55c6
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Tue Mar 3 12:16:31 2020 +0000

    Port Deform to the new setStretch-less API.

diff --git a/src/main/java/org/distorted/examples/deform/DeformRenderer.java b/src/main/java/org/distorted/examples/deform/DeformRenderer.java
index 79d594a..e35dd34 100644
--- a/src/main/java/org/distorted/examples/deform/DeformRenderer.java
+++ b/src/main/java/org/distorted/examples/deform/DeformRenderer.java
@@ -23,6 +23,7 @@ import javax.microedition.khronos.egl.EGLConfig;
 import javax.microedition.khronos.opengles.GL10;
 
 import org.distorted.library.effect.EffectName;
+import org.distorted.library.effect.MatrixEffectScale;
 import org.distorted.library.effect.MatrixEffectShear;
 import org.distorted.library.effect.VertexEffectDeform;
 import org.distorted.library.effect.VertexEffectDistort;
@@ -56,7 +57,7 @@ class DeformRenderer implements GLSurfaceView.Renderer, EffectListener
    private DistortedEffects mEffects;
    private MeshBase mMesh;
    private DistortedScreen mScreen;
-   private Static3D mTouchPoint;
+   private Static3D mTouchPoint, mScale;
 
    private Static3D[] vDistort;
    private Static3D[] vDeform;
@@ -80,9 +81,13 @@ class DeformRenderer implements GLSurfaceView.Renderer, EffectListener
       { 
       mView = view;
 
+      mTexture    = new DistortedTexture();
       mEffects    = new DistortedEffects();
       mRegion     = new Static4D(0,0,0,0);
       mTouchPoint = new Static3D(0,0,0);
+      mScale      = new Static3D(1,1,1);
+
+      mEffects.apply( new MatrixEffectScale(mScale) );
 
       // DISTORT
       Dynamic3D releasedDistortDynamic = new Dynamic3D(NUM_VECTORS*500, 0.5f);
@@ -154,8 +159,8 @@ class DeformRenderer implements GLSurfaceView.Renderer, EffectListener
 
    void setRegionRadius(int r)
       {
-      mRadius = ( r==100 ? 100.0f : r/200.0f);
-      mRegion.set3(mRadius*scrWidth);
+      mRadius = ( r==100 ? 100.0f : r/100.0f);
+      mRegion.set3(mRadius);
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -181,7 +186,7 @@ class DeformRenderer implements GLSurfaceView.Renderer, EffectListener
      scrHeight = height;
      scrWidth  = width;
 
-     mRegion.set3(mRadius*scrWidth);
+     mRegion.set3(mRadius);
 
      Canvas stretchCanvas;
      textureWidth = (int)(0.6f*width);
@@ -189,7 +194,8 @@ class DeformRenderer implements GLSurfaceView.Renderer, EffectListener
 
      if( mMesh!=null ) mMesh.markForDeletion();
      mMesh = new MeshRectangles(50,50*textureHeight/textureWidth);
-     mMesh.setStretch(textureWidth,textureHeight,0);
+
+     mScale.set(textureWidth,textureHeight,1);
 
      Bitmap stretchBitmap = Bitmap.createBitmap(textureWidth,textureHeight, Bitmap.Config.ARGB_8888);
      stretchCanvas = new Canvas(stretchBitmap);
@@ -206,7 +212,6 @@ class DeformRenderer implements GLSurfaceView.Renderer, EffectListener
        stretchCanvas.drawRect(                         0, textureHeight*i/NUM_LINES-1, textureWidth              , textureHeight*i/NUM_LINES+1, paint);
        }
 
-     if( mTexture==null ) mTexture = new DistortedTexture();
      mTexture.setTexture(stretchBitmap);
 
      mScreen.detachAll();
@@ -236,8 +241,8 @@ class DeformRenderer implements GLSurfaceView.Renderer, EffectListener
 
    void down(int x, int y)
      {
-     int xt = x-(scrWidth/2);
-     int yt = (scrHeight/2)-y;
+     float xt = (float)x/scrWidth-0.5f;
+     float yt = 0.5f-(float)y/scrHeight;
 
      switch(mMode)
        {
@@ -263,13 +268,16 @@ class DeformRenderer implements GLSurfaceView.Renderer, EffectListener
 
    void move(int x, int y)
      {
+     float xm = (float)x/textureWidth;
+     float ym = (float)y/textureHeight;
+
      switch(mMode)
        {
-       case DISTORT: vDistort[0].set(x,-y,0);
+       case DISTORT: vDistort[0].set( xm,-ym, 0);
                      break;
-       case DEFORM:  vDeform[0].set(x,-y,0);
+       case DEFORM:  vDeform[0].set ( xm,-ym, 0);
                      break;
-       case SHEAR:   vShear[0].set( (float)x/textureWidth, (float)(-y)/textureHeight, 0);
+       case SHEAR:   vShear[0].set  ( xm,-ym, 0);
                      break;
        }
      }
@@ -280,13 +288,13 @@ class DeformRenderer implements GLSurfaceView.Renderer, EffectListener
      {
      mEffects.abortById(mLastEffect);
 
-     float damp = -0.65f;
+     final float DAMP = -0.65f;
 
      switch(mMode)
        {
        case DISTORT: for(int i=1; i<NUM_VECTORS-1; i++)
                        {
-                       vDistort[i].set( vDistort[i-1].get0()*damp, vDistort[i-1].get1()*damp, 0 );
+                       vDistort[i].set( vDistort[i-1].get0()*DAMP, vDistort[i-1].get1()*DAMP, 0 );
                        }
                      vDistort[NUM_VECTORS-1].set(0,0,0);
                      mEffects.apply(mReleasedDistort);
@@ -294,7 +302,7 @@ class DeformRenderer implements GLSurfaceView.Renderer, EffectListener
                      break;
        case DEFORM : for(int i=1; i<NUM_VECTORS-1; i++)
                        {
-                       vDeform[i].set( vDeform[i-1].get0()*damp, vDeform[i-1].get1()*damp, 0 );
+                       vDeform[i].set( vDeform[i-1].get0()*DAMP, vDeform[i-1].get1()*DAMP, 0 );
                        }
                      vDeform[NUM_VECTORS-1].set(0,0,0);
                      mEffects.apply(mReleasedDeform);
@@ -302,7 +310,7 @@ class DeformRenderer implements GLSurfaceView.Renderer, EffectListener
                      break;
        case SHEAR  : for(int i=1; i<NUM_VECTORS-1; i++)
                        {
-                       vShear[i].set( vShear[i-1].get0()*damp, vShear[i-1].get1()*damp, 0 );
+                       vShear[i].set( vShear[i-1].get0()*DAMP, vShear[i-1].get1()*DAMP, 0 );
                        }
                      vShear[NUM_VECTORS-1].set(0,0,0);
                      mEffects.apply(mReleasedShear);
