commit f209a803cf26a7c3dac33626d46c2a49c31bb4f8
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Tue Mar 3 11:14:22 2020 +0000

    Convert Sink to not use the depreciated MeshBase.setStretch() API.

diff --git a/src/main/java/org/distorted/examples/TableOfContents.java b/src/main/java/org/distorted/examples/TableOfContents.java
index 64f7f59..15623df 100644
--- a/src/main/java/org/distorted/examples/TableOfContents.java
+++ b/src/main/java/org/distorted/examples/TableOfContents.java
@@ -137,47 +137,45 @@ public class TableOfContents extends ListActivity
    
   @Override
   public void onCreate(Bundle savedInstanceState) 
-   {
-   super.onCreate(savedInstanceState);
-   setContentView(R.layout.table_of_contents);
+    {
+    super.onCreate(savedInstanceState);
+    setContentView(R.layout.table_of_contents);
       
-   final List<Map<String, Object>> data = new ArrayList<>();
-   final SparseArray<Class<? extends Activity>> activityMapping = new SparseArray<>();
+    final List<Map<String, Object>> data = new ArrayList<>();
+    final SparseArray<Class<? extends Activity>> activityMapping = new SparseArray<>();
 
-   int index=0;
+    int index=0;
 
-   for( Application app : Application.values() )
-     {
-     final Map<String, Object> item = new HashMap<>();
-     item.put(ITEM_IMAGE, app.icon);
-     item.put(ITEM_TITLE, (index+1)+". "+getText(app.title));
-     item.put(ITEM_SUBTITLE, getText(app.subtitle));
-     data.add(item);
-     activityMapping.put(index++, app.activity);
-     }
+    for( Application app : Application.values() )
+      {
+      final Map<String, Object> item = new HashMap<>();
+      item.put(ITEM_IMAGE, app.icon);
+      item.put(ITEM_TITLE, (index+1)+". "+getText(app.title));
+      item.put(ITEM_SUBTITLE, getText(app.subtitle));
+      data.add(item);
+      activityMapping.put(index++, app.activity);
+      }
 
-   final SimpleAdapter dataAdapter = new SimpleAdapter( this,
-                                                        data,
-                                                        R.layout.toc_item,
-                                                        new String[] {ITEM_IMAGE, ITEM_TITLE, ITEM_SUBTITLE},
-                                                        new int[] {R.id.Image, R.id.Title, R.id.SubTitle}  );
-   setListAdapter(dataAdapter);  
+    final SimpleAdapter dataAdapter = new SimpleAdapter( this,
+                                                         data,
+                                                         R.layout.toc_item,
+                                                         new String[] {ITEM_IMAGE, ITEM_TITLE, ITEM_SUBTITLE},
+                                                         new int[] {R.id.Image, R.id.Title, R.id.SubTitle}  );
+    setListAdapter(dataAdapter);
       
-   getListView().setOnItemClickListener(new OnItemClickListener() 
-     {
-     @Override
-     public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
+    getListView().setOnItemClickListener(new OnItemClickListener()
       {
-      final Class<? extends Activity> activityToLaunch = activityMapping.get(position);
-            
-      if (activityToLaunch != null)
+      @Override
+      public void onItemClick(AdapterView<?> parent, View view, int position, long id)
         {
-        final Intent launchIntent = new Intent(TableOfContents.this, activityToLaunch);
-        startActivity(launchIntent);
-        }            
-      }
-     });
-   }  
+        final Class<? extends Activity> activityToLaunch = activityMapping.get(position);
+            
+        if (activityToLaunch != null)
+          {
+          final Intent launchIntent = new Intent(TableOfContents.this, activityToLaunch);
+          startActivity(launchIntent);
+          }
+        }
+      });
+    }
   }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/monalisa/MonaLisaRenderer.java b/src/main/java/org/distorted/examples/monalisa/MonaLisaRenderer.java
index b1965a6..18722e1 100644
--- a/src/main/java/org/distorted/examples/monalisa/MonaLisaRenderer.java
+++ b/src/main/java/org/distorted/examples/monalisa/MonaLisaRenderer.java
@@ -69,7 +69,7 @@ class MonaLisaRenderer implements GLSurfaceView.Renderer
       Static4D rRight = new Static4D(  10/320.0f,  5/366.0f, 0, 25/320.0f);
 
       // two dynamics for interpolating through vectors of distortion. Interpolate
-      // every 1000 miliseconds, indefinately ('0.0f').
+      // every 1000 milliseconds, indefinitely ('0.0f').
       Dynamic3D dLeft = new Dynamic3D(1000,0.0f);
       Dynamic3D dRight= new Dynamic3D(1000,0.0f);
 
diff --git a/src/main/java/org/distorted/examples/sink/SinkRenderer.java b/src/main/java/org/distorted/examples/sink/SinkRenderer.java
index bd1ac8d..995dc1c 100644
--- a/src/main/java/org/distorted/examples/sink/SinkRenderer.java
+++ b/src/main/java/org/distorted/examples/sink/SinkRenderer.java
@@ -52,6 +52,7 @@ class SinkRenderer implements GLSurfaceView.Renderer
   private DistortedTexture mTexture;
   private MeshRectangles mMesh;
   private Static3D mScale;
+  private float mBmpRatio;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -59,12 +60,16 @@ class SinkRenderer implements GLSurfaceView.Renderer
     { 
     mView = v;
 
-    Dynamic1D sink = new Dynamic1D(2000,0.0f);
-    sink.add(new Static1D(1.0f));
-    sink.add(new Static1D(0.2f));
+    Dynamic1D sinkStrength = new Dynamic1D(2000,0.0f);
+    sinkStrength.add(new Static1D(1.0f));
+    sinkStrength.add(new Static1D(0.2f));
 
     mEffects = new DistortedEffects();
-    VertexEffectSink sinkEffect = new VertexEffectSink(sink, new Static3D(0,0,0), null);
+
+    // strength [changing in time from 1.0 to 0.2 and back],
+    // center   [(0,0,0), i.e. center of the bitmap],
+    // region   [null - apply to the whole bitmap
+    VertexEffectSink sinkEffect = new VertexEffectSink(sinkStrength, new Static3D(0,0,0), null);
     mEffects.apply(sinkEffect);
 
     mScale = new Static3D(1,1,1);
@@ -84,11 +89,9 @@ class SinkRenderer implements GLSurfaceView.Renderer
     
   public void onSurfaceChanged(GL10 glUnused, int width, int height) 
     {
-    float horiRatio = (float)width / mMesh.getStretchX();
-    float vertRatio = (float)height/ mMesh.getStretchY();
-    float factor    = horiRatio > vertRatio ? vertRatio : horiRatio;
+    float min= width>height ? height : width;
 
-    mScale.set( factor,factor,factor );
+    mScale.set( min, min*mBmpRatio, 1 );
     mScreen.resize(width, height);
     }
 
@@ -112,17 +115,12 @@ class SinkRenderer implements GLSurfaceView.Renderer
       catch(IOException e) { }
       }  
       
-    int bmpHeight = bitmap.getHeight();
-    int bmpWidth  = bitmap.getWidth();
+    mBmpRatio = (float)bitmap.getHeight()/bitmap.getWidth();
 
     if( mTexture==null ) mTexture = new DistortedTexture();
     mTexture.setTexture(bitmap);
 
-    if( mMesh==null )
-      {
-      mMesh = new MeshRectangles(30,30*bmpHeight/bmpWidth);
-      mMesh.setStretch(bmpWidth,bmpHeight,0);
-      }
+    if( mMesh==null ) mMesh = new MeshRectangles(30,(int)(30*mBmpRatio));
 
     mScreen.detachAll();
     mScreen.attach(mTexture,mEffects,mMesh);
