commit c7a313687a6769a1572e7837386253895b742917
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Tue Mar 3 16:26:19 2020 +0000

    Further corrections for the first apps.

diff --git a/src/main/java/org/distorted/examples/bean/BeanRenderer.java b/src/main/java/org/distorted/examples/bean/BeanRenderer.java
index 1fc309d..6e592c1 100644
--- a/src/main/java/org/distorted/examples/bean/BeanRenderer.java
+++ b/src/main/java/org/distorted/examples/bean/BeanRenderer.java
@@ -108,9 +108,9 @@ class BeanRenderer implements GLSurfaceView.Renderer
     
    public void onSurfaceChanged(GL10 glUnused, int width, int height)
      {
-     float min= width>height ? height : width;
+     if( width<height ) mScale.set( width,   width*mBmpRatio, 1 );
+     else               mScale.set( height/mBmpRatio, height, 1 );
 
-     mScale.set( min, min*mBmpRatio, 1 );
      mScreen.resize(width, height);
      }
 
diff --git a/src/main/java/org/distorted/examples/catanddog/CatAndDogRenderer.java b/src/main/java/org/distorted/examples/catanddog/CatAndDogRenderer.java
index 567d4f0..98bf1c9 100644
--- a/src/main/java/org/distorted/examples/catanddog/CatAndDogRenderer.java
+++ b/src/main/java/org/distorted/examples/catanddog/CatAndDogRenderer.java
@@ -124,6 +124,7 @@ class CatAndDogRenderer implements GLSurfaceView.Renderer
 
       mScreen.resize(width, height);
       }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
    
     public void onDrawFrame(GL10 glUnused) 
diff --git a/src/main/java/org/distorted/examples/girl/GirlRenderer.java b/src/main/java/org/distorted/examples/girl/GirlRenderer.java
index d428413..9ab034d 100644
--- a/src/main/java/org/distorted/examples/girl/GirlRenderer.java
+++ b/src/main/java/org/distorted/examples/girl/GirlRenderer.java
@@ -166,9 +166,9 @@ class GirlRenderer implements GLSurfaceView.Renderer
     
    public void onSurfaceChanged(GL10 glUnused, int width, int height)
      {
-     float min= width>height ? height : width;
+     if( width<height ) mScale.set( width,   width*mBmpRatio, width  );
+     else               mScale.set( height/mBmpRatio, height, height );
 
-     mScale.set( min, min*mBmpRatio, min );
      mScreen.resize(width, height);
      }
 
diff --git a/src/main/java/org/distorted/examples/listener/ListenerRenderer.java b/src/main/java/org/distorted/examples/listener/ListenerRenderer.java
index 47c2f3a..68403b3 100644
--- a/src/main/java/org/distorted/examples/listener/ListenerRenderer.java
+++ b/src/main/java/org/distorted/examples/listener/ListenerRenderer.java
@@ -139,9 +139,9 @@ class ListenerRenderer implements GLSurfaceView.Renderer,EffectListener
     
    public void onSurfaceChanged(GL10 glUnused, int width, int height)
      {
-     float min= width>height ? height : width;
+     if( width<height ) mScale.set( width,   width*mBmpRatio, width  );
+     else               mScale.set( height/mBmpRatio, height, height );
 
-     mScale.set( min, min*mBmpRatio, min );
      mScreen.resize(width, height);
      }
 
diff --git a/src/main/java/org/distorted/examples/monalisa/MonaLisaRenderer.java b/src/main/java/org/distorted/examples/monalisa/MonaLisaRenderer.java
index 437cddb..9770537 100644
--- a/src/main/java/org/distorted/examples/monalisa/MonaLisaRenderer.java
+++ b/src/main/java/org/distorted/examples/monalisa/MonaLisaRenderer.java
@@ -114,9 +114,9 @@ class MonaLisaRenderer implements GLSurfaceView.Renderer
     
     public void onSurfaceChanged(GL10 glUnused, int width, int height) 
       {
-      float min= width>height ? height : width;
+      if( width<height ) mScale.set( width,   width*mBmpRatio, 1 );
+      else               mScale.set( height/mBmpRatio, height, 1 );
 
-      mScale.set( min, min*mBmpRatio, 1 );
       mScreen.resize(width, height);
       }
 
diff --git a/src/main/java/org/distorted/examples/movingeffects/MovingEffectsRenderer.java b/src/main/java/org/distorted/examples/movingeffects/MovingEffectsRenderer.java
index ecc25db..f06ae1c 100644
--- a/src/main/java/org/distorted/examples/movingeffects/MovingEffectsRenderer.java
+++ b/src/main/java/org/distorted/examples/movingeffects/MovingEffectsRenderer.java
@@ -30,6 +30,7 @@ import android.opengl.GLSurfaceView;
 
 import org.distorted.library.effect.FragmentEffectAlpha;
 import org.distorted.library.effect.FragmentEffectChroma;
+import org.distorted.library.effect.MatrixEffectScale;
 import org.distorted.library.effect.VertexEffectDeform;
 import org.distorted.library.effect.VertexEffectSink;
 import org.distorted.library.effect.VertexEffectSwirl;
@@ -38,6 +39,7 @@ import org.distorted.library.main.DistortedScreen;
 import org.distorted.library.main.DistortedTexture;
 import org.distorted.library.main.DistortedEffects;
 import org.distorted.library.mesh.MeshRectangles;
+import org.distorted.library.type.Static3D;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -54,6 +56,7 @@ class MovingEffectsRenderer implements GLSurfaceView.Renderer
    private DistortedScreen mScreen;
    private MeshRectangles mMesh;
    private boolean mRefresh;
+   private Static3D mScale;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -67,7 +70,11 @@ class MovingEffectsRenderer implements GLSurfaceView.Renderer
      mView   = v;
      mEffects= new DistortedEffects();
      mScreen = new DistortedScreen();
+     mTexture= new DistortedTexture();
      mRefresh= true;
+
+     mScale = new Static3D(1,1,1);
+     mEffects.apply( new MatrixEffectScale(mScale));
      }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -136,14 +143,13 @@ class MovingEffectsRenderer implements GLSurfaceView.Renderer
      texW = width;
      texH = height;
 
-     if( mTexture!=null ) mTexture.markForDeletion();
-     mTexture = new DistortedTexture();
+     mScale.set(width,height,width);
+
      mBitmap  = Bitmap.createBitmap(texW,texH, Bitmap.Config.ARGB_8888);
      mCanvas  = new Canvas(mBitmap);
 
      if( mMesh!=null ) mMesh.markForDeletion();
      mMesh = new MeshRectangles(80,80*texH/texW);
-     mMesh.setStretch(texW,texH,0);
 
      mScreen.detachAll();
      mScreen.attach(mTexture,mEffects,mMesh);
diff --git a/src/main/java/org/distorted/examples/movingeffects/MovingEffectsSurfaceView.java b/src/main/java/org/distorted/examples/movingeffects/MovingEffectsSurfaceView.java
index 5b444c4..f006109 100644
--- a/src/main/java/org/distorted/examples/movingeffects/MovingEffectsSurfaceView.java
+++ b/src/main/java/org/distorted/examples/movingeffects/MovingEffectsSurfaceView.java
@@ -58,9 +58,6 @@ public class MovingEffectsSurfaceView extends GLSurfaceView
     private static final Object lock = new Object();
 
     private Dynamic3D mCenter;
-    private Static4D mRegionVertex;
-    private Static3D mRegionFragment;
-
     private Paint mPaint;
     private int moving;
     private int mScrWidth, mScrHeight;
@@ -89,10 +86,8 @@ public class MovingEffectsSurfaceView extends GLSurfaceView
       mPaint.setStyle(Style.FILL);
       moving = -1;
       
-      mCenter         = new Dynamic3D(LOOP_TIME,0.0f);
-      mRegionFragment = new Static3D(0,0,0);
-      mRegionVertex   = new Static4D(0,0,0,0);
-      mDeform         = new Static3D(0,0,0);
+      mCenter = new Dynamic3D(LOOP_TIME,0.0f);
+      mDeform = new Static3D(0,0,0.15f);
 
       if(!isInEditMode())
         {
@@ -105,11 +100,14 @@ public class MovingEffectsSurfaceView extends GLSurfaceView
         setEGLContextClientVersion( (configurationInfo.reqGlEsVersion>>16) >= 3 ? 3:2 );
         setRenderer(mRenderer);
 
-        mEffectDeform  = new VertexEffectDeform  ( mDeform          , mCenter, mRegionVertex);
-        mEffectSink    = new VertexEffectSink    (new Static1D(10)  , mCenter, mRegionVertex);
-        mEffectSwirl   = new VertexEffectSwirl   (new Static1D(30)  , mCenter, mRegionVertex);
-        mEffectAlpha   = new FragmentEffectAlpha (new Static1D(0.5f), mCenter, mRegionFragment, true);
-        mEffectChroma  = new FragmentEffectChroma(new Static1D(0.5f), new Static3D(1,0,0), mCenter, mRegionFragment, true);
+        Static3D regionFrag = new Static3D(0.15f,0.15f,0.15f);
+        Static4D regionVert = new Static4D(0,0,0,0.15f);
+
+        mEffectDeform  = new VertexEffectDeform  ( mDeform          , mCenter, regionVert);
+        mEffectSink    = new VertexEffectSink    (new Static1D(10)  , mCenter, regionVert);
+        mEffectSwirl   = new VertexEffectSwirl   (new Static1D(30)  , mCenter, regionVert);
+        mEffectAlpha   = new FragmentEffectAlpha (new Static1D(0.5f), mCenter, regionFrag, true);
+        mEffectChroma  = new FragmentEffectChroma(new Static1D(0.5f), new Static3D(1,0,0), mCenter, regionFrag, true);
         }
       }
 
@@ -124,11 +122,6 @@ public class MovingEffectsSurfaceView extends GLSurfaceView
 
       mSize1 = max/200;
       mSize2 = max/80;
-      int rad= max/6;
-
-      mRegionVertex.set(0,0,0,rad);
-      mRegionFragment.set(rad,rad,rad);
-      mDeform.set2(max/7);
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -246,13 +239,13 @@ public class MovingEffectsSurfaceView extends GLSurfaceView
 
         if( len>=2 )
           {
-          float step = (float)LOOP_TIME/(NUM_POINTS+1);
+          final float step = (float)LOOP_TIME/(NUM_POINTS+1);
 
           for(int i=0; i<NUM_POINTS; i++)
             {
             mPaint.setColor( 0xffffffff );
             mCenter.get( drawCoord, 0, (long)(i*step) );
-            c.drawCircle(drawCoord[0] + mScrWidth*0.5f, mScrHeight*0.5f - drawCoord[1], mSize1, mPaint );
+            c.drawCircle( (drawCoord[0]+0.5f)*mScrWidth, mScrHeight*(0.5f-drawCoord[1]), mSize1, mPaint );
             }
           }
      
@@ -261,7 +254,7 @@ public class MovingEffectsSurfaceView extends GLSurfaceView
         for(int curr=0; curr<len; curr++)
           {       
           cu = mCenter.getPoint(curr);
-          c.drawCircle(cu.get0() + mScrWidth*0.5f, mScrHeight*0.5f - cu.get1(), mSize2, mPaint);
+          c.drawCircle( (cu.get0()+0.5f)*mScrWidth, mScrHeight*(0.5f-cu.get1()), mSize2, mPaint);
           }
         
         if( time-mTime > LOOP_TIME ) mTime = time;
@@ -275,8 +268,8 @@ public class MovingEffectsSurfaceView extends GLSurfaceView
       {
       if( mCurrEffect!=EFFECT_POINTS ) return true;   
 
-      int xDown = (int)event.getX() - mScrWidth/2;
-      int yDown = mScrHeight/2 - (int)event.getY();
+      float xDown = event.getX()/mScrWidth - 0.5f;
+      float yDown = 0.5f - event.getY()/mScrHeight;
 
       switch(event.getAction())
         {
diff --git a/src/main/java/org/distorted/examples/projection/ProjectionRenderer.java b/src/main/java/org/distorted/examples/projection/ProjectionRenderer.java
index 141aebe..aa4f1f3 100644
--- a/src/main/java/org/distorted/examples/projection/ProjectionRenderer.java
+++ b/src/main/java/org/distorted/examples/projection/ProjectionRenderer.java
@@ -125,7 +125,7 @@ class ProjectionRenderer implements GLSurfaceView.Renderer
         bmpCanvas.drawRect(                 0, height*i/NUMLINES-1, width             , height*i/NUMLINES+1, paint);
         }
 
-      mScale.set(width,height,width);  // TODO - width in the third scale??
+      mScale.set(width,height,width);
 
       mTexture.setTexture(bmp);
 
diff --git a/src/main/java/org/distorted/examples/sink/SinkRenderer.java b/src/main/java/org/distorted/examples/sink/SinkRenderer.java
index 0bd4721..601a133 100644
--- a/src/main/java/org/distorted/examples/sink/SinkRenderer.java
+++ b/src/main/java/org/distorted/examples/sink/SinkRenderer.java
@@ -88,9 +88,9 @@ class SinkRenderer implements GLSurfaceView.Renderer
     
   public void onSurfaceChanged(GL10 glUnused, int width, int height) 
     {
-    float min= width>height ? height : width;
+    if( width<height ) mScale.set( width,   width*mBmpRatio, 1 );
+    else               mScale.set( height/mBmpRatio, height, 1 );
 
-    mScale.set( min, min*mBmpRatio, 1 );
     mScreen.resize(width, height);
     }
 
