commit 25eeb4d445f73ef53cd223a7eaac7a6aa5bc3ad1
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Tue Mar 3 14:49:28 2020 +0000

    Port Girl to the new setStretch-less API.

diff --git a/src/main/java/org/distorted/examples/girl/GirlActivity.java b/src/main/java/org/distorted/examples/girl/GirlActivity.java
index 34aabb9..4cf70d5 100644
--- a/src/main/java/org/distorted/examples/girl/GirlActivity.java
+++ b/src/main/java/org/distorted/examples/girl/GirlActivity.java
@@ -60,7 +60,7 @@ public class GirlActivity extends Activity  implements OnSeekBarChangeListener
       barSize.setProgress(50);
       barHips.setProgress(0);
 
-      textSwing.setText(getString(R.string.swing_placeholder,0));
+      textSwing.setText(getString(R.string.swing_placeholder,0.0f));
       textSize.setText(getString(R.string.size_placeholder,1.0f));
       textHips.setText(getString(R.string.hips_placeholder,0));
       }
@@ -96,38 +96,38 @@ public class GirlActivity extends Activity  implements OnSeekBarChangeListener
       DistortedLibrary.onDestroy();
       super.onDestroy();
       }
-   
-///////////////////////////////////////////////////////////////////
-    
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
     public void onProgressChanged(SeekBar bar, int progress, boolean fromUser) 
       {
-      int v;
-      float s;
+      float v;
+      int i;
       GirlSurfaceView view = findViewById(R.id.girlSurfaceView);
 
       switch (bar.getId()) 
         {
-        case R.id.girlSeekSwing: v = progress/5;
+        case R.id.girlSeekSwing: v = progress/(5*400.0f);
                                  view.getRenderer().setSwing(v);
                                  textSwing.setText(getString(R.string.swing_placeholder,v));
                                  break;
-        case R.id.girlSeekSize : if( progress> 50) s = (progress-50)/16.0f + 1.0f;
-                                 else              s = 0.015f*progress + 0.25f;
-                                 view.getRenderer().setSize(s);
-                                 textSize.setText(getString(R.string.size_placeholder,(((int)(s*10))/10.0f)));
+        case R.id.girlSeekSize : if( progress> 50) v = (progress-50)/18.0f + 1.0f;
+                                 else              v = 0.015f*progress + 0.25f;
+                                 view.getRenderer().setSize(v);
+                                 textSize.setText(getString(R.string.size_placeholder,v));
                                  break;
-        case R.id.girlSeekHips : v = progress/5;
-                                 view.getRenderer().setHips(v);
-                                 textHips.setText(getString(R.string.hips_placeholder,v));
+        case R.id.girlSeekHips : i = progress/6;
+                                 view.getRenderer().setHips(i);
+                                 textHips.setText(getString(R.string.hips_placeholder,i));
                                  break;
         }
       }
 
-///////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////////////////
 
     public void onStartTrackingTouch(SeekBar bar) { }
-    
-///////////////////////////////////////////////////////////////////
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
 
     public void onStopTrackingTouch(SeekBar bar)  { }
      
diff --git a/src/main/java/org/distorted/examples/girl/GirlRenderer.java b/src/main/java/org/distorted/examples/girl/GirlRenderer.java
index 8b5dc49..d428413 100644
--- a/src/main/java/org/distorted/examples/girl/GirlRenderer.java
+++ b/src/main/java/org/distorted/examples/girl/GirlRenderer.java
@@ -58,18 +58,20 @@ class GirlRenderer implements GLSurfaceView.Renderer
     private Static3D v0,v1,v2,v3;
     private Static1D dBegin, dMiddle, dEnd, s0;
     private Static3D mScale;
+    private float mBmpRatio;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
+// girl bitmap: 400x600
 
    GirlRenderer(GLSurfaceView v)
       {
       mView = v;
 
-      Static3D pLeft = new Static3D(-68, 36, 0);
-      Static3D pRight= new Static3D( 47, 36, 0);
+      Static3D pLeft = new Static3D(-68/400.0f, 36/600.0f, 0);
+      Static3D pRight= new Static3D( 47/400.0f, 36/600.0f, 0);
 
       // Size
-      Static4D sinkRegion = new Static4D(0,0,0,60);
+      Static4D sinkRegion = new Static4D(0,0,0,60/400.0f);
       
       s0 = new Static1D(1.0f);
       
@@ -77,7 +79,7 @@ class GirlRenderer implements GLSurfaceView.Renderer
       diSink.add(s0);
       
       // Upper Movement
-      Static4D Region = new Static4D(0,0,0,45);
+      Static4D Region = new Static4D(0,0,0,45/400.0f);
       
       Dynamic3D diL = new Dynamic3D(1000,0.0f);
       Dynamic3D diR = new Dynamic3D(1000,0.0f);
@@ -98,8 +100,8 @@ class GirlRenderer implements GLSurfaceView.Renderer
       diR.add(v1);
       
       // Lower Movement
-      Static3D pHips      = new Static3D( 16,-205,0);
-      Static4D HipsRegion = new Static4D(0,0,0,120);
+      Static3D pHips      = new Static3D( 16/400.0f,-205/600.0f,0);
+      Static4D HipsRegion = new Static4D(0,0,0,120/400.0f);
       Dynamic1D diHips    = new Dynamic1D(1500,0.0f);
       
       dBegin = new Static1D(0);
@@ -124,6 +126,7 @@ class GirlRenderer implements GLSurfaceView.Renderer
       mScale= new Static3D(1,1,1);
       mEffects.apply(new MatrixEffectScale(mScale));
 
+      mTexture = new DistortedTexture();
       mScreen = new DistortedScreen();
       }
 
@@ -144,7 +147,7 @@ class GirlRenderer implements GLSurfaceView.Renderer
    
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-   void setSwing(int swing)
+   void setSwing(float swing)
      {
      v0.set( 0, swing, 0);
      v1.set( swing, 0, 0);
@@ -163,11 +166,9 @@ class GirlRenderer 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, min );
      mScreen.resize(width, height);
      }
 
@@ -191,17 +192,10 @@ class GirlRenderer implements GLSurfaceView.Renderer
        catch(IOException e) { }
        }
       
-     int bmpHeight = bitmap.getHeight();
-     int bmpWidth  = bitmap.getWidth();
-
-     if( mTexture==null ) mTexture = new DistortedTexture();
+     mBmpRatio = (float)bitmap.getHeight()/bitmap.getWidth();
      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);
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index 2fedf0e..08e3a1d 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -104,8 +104,8 @@
     <string name="amplitude_placeholder">Amplitu %1$d</string>
     <string name="alpha_placeholder">Alpha %1$d</string>
     <string name="beta_placeholder">Beta %1$d</string>
-    <string name="swing_placeholder">Swing %1$d</string>
-    <string name="size_placeholder">Size %1$.1f</string>
+    <string name="swing_placeholder">Swing %1$.3f</string>
+    <string name="size_placeholder">Size %1$.3f</string>
     <string name="hips_placeholder">Hips %1$d</string>
     <string name="fov_placeholder">FOV: %1$d</string>
     <string name="near_placeholder">Near: %1$.2f</string>
