commit 4db4e39b23431f07d83a4b7491aed549b0577ae3
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Thu Mar 14 17:01:20 2019 +0000

    Improvements for texturing MeshCubes objects in two apps (in light of the recent change in default texture mapping)

diff --git a/src/main/java/org/distorted/examples/effects3d/Effects3DActivity2.java b/src/main/java/org/distorted/examples/effects3d/Effects3DActivity2.java
index dd99699..f37fb12 100644
--- a/src/main/java/org/distorted/examples/effects3d/Effects3DActivity2.java
+++ b/src/main/java/org/distorted/examples/effects3d/Effects3DActivity2.java
@@ -32,7 +32,6 @@ import android.view.View;
 import android.widget.CheckBox;
 
 import org.distorted.examples.R;
-import org.distorted.library.effect.EffectType;
 import org.distorted.library.main.Distorted;
 import org.distorted.library.main.DistortedEffects;
 import org.distorted.library.main.DistortedTexture;
@@ -41,6 +40,7 @@ import org.distorted.library.mesh.MeshFlat;
 import org.distorted.library.mesh.MeshBase;
 import org.distorted.library.mesh.MeshQuad;
 import org.distorted.library.mesh.MeshSphere;
+import org.distorted.library.type.Static4D;
 
 import java.io.IOException;
 import java.io.InputStream;
@@ -51,13 +51,6 @@ public class Effects3DActivity2 extends AppCompatActivity
   {
   public static final int NUM_TABS = 4;
 
-  private int mNumCols;
-  private int mNumRows;
-  private int mNumSlic;
-  private int mObjectType;
-  private int mBitmapID;
-  private String mString;
-
   private DistortedTexture mTexture;
   private MeshBase mMesh;
   private Bitmap mBitmap;
@@ -66,7 +59,6 @@ public class Effects3DActivity2 extends AppCompatActivity
   private float mRegionX, mRegionY, mRegionZ, mRegionR;
   private DistortedEffects mEffects;
   private ViewPager mViewPager;
-  private Effects3DTabViewPager mPager;
 
   private boolean mShowCenter;
   private boolean mShowRegion;
@@ -88,32 +80,47 @@ public class Effects3DActivity2 extends AppCompatActivity
 
     Bundle b = getIntent().getExtras();
 
-    mObjectType = b.getInt("type");
-    mNumCols    = b.getInt("cols");
-    mNumRows    = b.getInt("rows");
-    mNumSlic    = b.getInt("slices");
-    mBitmapID   = b.getInt("bitmap");
-    mString     = b.getString("string");
+    int objectType = b.getInt("type");
+    int numCols    = b.getInt("cols");
+    int numRows    = b.getInt("rows");
+    int numSlic    = b.getInt("slices");
+    int bitmapID   = b.getInt("bitmap");
+    String str     = b.getString("string");
 
     mShowCenter = false;
     mShowRegion = false;
     mShowNormal = false;
     mUseOIT     = false;
 
-    switch(mObjectType)
+    int maxsize = numCols > numRows ? (numCols>numSlic ? numCols:numSlic) : (numRows>numSlic ? numRows:numSlic) ;
+
+    createBitmap(maxsize, bitmapID);
+
+    switch(objectType)
       {
-      case 0: mMesh = new MeshCubes(mNumCols, mString, mNumSlic);
+      case 0: if( bitmapID!=-1 )
+                {
+                mMesh = new MeshCubes(numCols, str, numSlic);
+                }
+              else
+                {
+                Static4D mapFB = new Static4D(0.0f,0.0f, (float)numCols/maxsize, (float)numRows/maxsize);
+                Static4D mapLR = new Static4D(0.0f,0.0f, (float)numSlic/maxsize, (float)numRows/maxsize);
+                Static4D mapTB = new Static4D(0.0f,0.0f, (float)numCols/maxsize, (float)numSlic/maxsize);
+
+                mMesh = new MeshCubes(numCols, str, numSlic, mapFB, mapFB, mapLR, mapLR, mapTB, mapTB);
+                }
               break;
-      case 1: mMesh = new MeshFlat(mNumCols,mNumRows);
+      case 1: mMesh = new MeshFlat(numCols,numRows);
               break;
-      case 2: mMesh = new MeshSphere(mNumRows);
+      case 2: mMesh = new MeshSphere(numRows);
               break;
       case 3: mMesh = new MeshQuad();
               break;
       }
 
     mMesh.setShowNormals(mShowNormal);
-    mTexture= new DistortedTexture(mNumCols,mNumRows);
+    mTexture= new DistortedTexture(numCols,numRows);
     mEffects= new DistortedEffects();
 
     final View view = getLayoutInflater().inflate(R.layout.effects3dlayout, null);
@@ -122,14 +129,59 @@ public class Effects3DActivity2 extends AppCompatActivity
 
     mViewPager = findViewById(R.id.effects3d_viewpager);
     mViewPager.setOffscreenPageLimit( NUM_TABS-1 );
-    mPager = new Effects3DTabViewPager(this, getSupportFragmentManager() );
-    mViewPager.setAdapter(mPager);
+    Effects3DTabViewPager pager = new Effects3DTabViewPager(this, getSupportFragmentManager() );
+    mViewPager.setAdapter(pager);
     TabLayout tabLayout = findViewById(R.id.effects3d_sliding_tabs);
     tabLayout.setupWithViewPager(mViewPager);
 
     resetData();
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  private void createBitmap(int size, int bitmapID)
+    {
+    if( bitmapID!=-1)
+      {
+      InputStream is = getResources().openRawResource(bitmapID);
+
+      try
+        {
+        mBitmap = BitmapFactory.decodeStream(is);
+        }
+      finally
+        {
+        try
+          {
+          is.close();
+          }
+        catch(IOException e) { }
+        }
+      }
+    else
+      {
+      final int T = 64;
+      final int S = T*size;
+
+      Paint paint = new Paint();
+      mBitmap = Bitmap.createBitmap(S,S, Bitmap.Config.ARGB_8888);
+      Canvas canvas = new Canvas(mBitmap);
+
+      paint.setAntiAlias(true);
+      paint.setTextAlign(Paint.Align.CENTER);
+      paint.setColor(0xff008800);
+      paint.setStyle(Paint.Style.FILL);
+      canvas.drawRect(0, 0, S, S, paint);
+      paint.setColor(0xffffffff);
+
+      for(int i=0; i<=size ; i++ )
+        {
+        canvas.drawRect( T*i-1, 0, T*i+1, S, paint);
+        canvas.drawRect( 0, T*i-1, S, T*i+1, paint);
+        }
+      }
+    }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public DistortedTexture getTexture()
@@ -148,46 +200,6 @@ public class Effects3DActivity2 extends AppCompatActivity
 
   public Bitmap getBitmap()
     {
-    if( mBitmap==null )
-      {
-      if( mBitmapID!=-1)
-        {
-        InputStream is = getResources().openRawResource(mBitmapID);
-
-        try
-          {
-          mBitmap = BitmapFactory.decodeStream(is);
-          }
-        finally
-          {
-          try
-            {
-            is.close();
-            }
-          catch(IOException e) { }
-          }
-        }
-      else
-        {
-        final int W = 64*mNumCols;
-        final int H = 64*mNumRows;
-
-        Paint paint = new Paint();
-        mBitmap = Bitmap.createBitmap(W,H, Bitmap.Config.ARGB_8888);
-        Canvas canvas = new Canvas(mBitmap);
-
-        paint.setAntiAlias(true);
-        paint.setTextAlign(Paint.Align.CENTER);
-        paint.setColor(0xff008800);
-        paint.setStyle(Paint.Style.FILL);
-        canvas.drawRect(0, 0, W, H, paint);
-        paint.setColor(0xffffffff);
-
-        for(int i=0; i<=mNumCols ; i++ ) canvas.drawRect(W*i/mNumCols-1, 0, W*i/mNumCols + 1, H, paint);
-        for(int i=0; i<=mNumRows ; i++ ) canvas.drawRect( 0, H*i/mNumRows-1, W,  H*i/mNumRows+1, paint);
-        }
-      }
-
     return mBitmap;
     }
 
diff --git a/src/main/java/org/distorted/examples/inflate/InflateActivity2.java b/src/main/java/org/distorted/examples/inflate/InflateActivity2.java
index b3568a8..7dee780 100644
--- a/src/main/java/org/distorted/examples/inflate/InflateActivity2.java
+++ b/src/main/java/org/distorted/examples/inflate/InflateActivity2.java
@@ -27,6 +27,7 @@ import org.distorted.library.mesh.MeshCubes;
 import org.distorted.library.mesh.MeshFlat;
 import org.distorted.library.mesh.MeshQuad;
 import org.distorted.library.mesh.MeshSphere;
+import org.distorted.library.type.Static4D;
 
 import android.app.Activity;
 import android.graphics.Bitmap;
@@ -49,10 +50,6 @@ import java.io.InputStream;
 
 public class InflateActivity2 extends Activity implements SeekBar.OnSeekBarChangeListener, AdapterView.OnItemSelectedListener
 {
-    private int mNumCols = 3;
-    private int mNumRows = 3;
-    private int mNumSlic = 1;
-    private int mBitmapID;
     private Bitmap mBitmap;
     private TextView mTextLevel;
     private DistortedTexture mTexture;
@@ -101,20 +98,39 @@ public class InflateActivity2 extends Activity implements SeekBar.OnSeekBarChang
 
       String str     = b.getString("string");
       int objectType = b.getInt("type");
-      mNumCols       = b.getInt("cols");
-      mNumRows       = b.getInt("rows");
-      mNumSlic       = b.getInt("slices");
-      mBitmapID      = b.getInt("bitmap");
+      int numCols    = b.getInt("cols");
+      int numRows    = b.getInt("rows");
+      int numSlic    = b.getInt("slices");
+      int bitmapID   = b.getInt("bitmap");
+
+      int maxsize = numCols > numRows ? (numCols>numSlic ? numCols:numSlic) : (numRows>numSlic ? numRows:numSlic) ;
+
+      createBitmap(maxsize,bitmapID);
 
       switch(objectType)
         {
-        case 0: mMesh = new MeshCubes(mNumCols, str, mNumSlic); break;
-        case 1: mMesh = new MeshFlat(mNumCols,mNumRows)       ; break;
-        case 2: mMesh = new MeshSphere(mNumRows)              ; break;
-        case 3: mMesh = new MeshQuad()                        ; break;
+        case 0: if( bitmapID!=-1 )
+                  {
+                  mMesh = new MeshCubes(numCols, str, numSlic);
+                  }
+                else
+                  {
+                  Static4D mapFB = new Static4D(0.0f,0.0f, (float)numCols/maxsize, (float)numRows/maxsize);
+                  Static4D mapLR = new Static4D(0.0f,0.0f, (float)numSlic/maxsize, (float)numRows/maxsize);
+                  Static4D mapTB = new Static4D(0.0f,0.0f, (float)numCols/maxsize, (float)numSlic/maxsize);
+
+                  mMesh = new MeshCubes(numCols, str, numSlic, mapFB, mapFB, mapLR, mapLR, mapTB, mapTB);
+                  }
+                break;
+        case 1: mMesh = new MeshFlat(numCols,numRows);
+                break;
+        case 2: mMesh = new MeshSphere(numRows);
+                break;
+        case 3: mMesh = new MeshQuad();
+                break;
         }
 
-      mTexture = new DistortedTexture(mNumCols,mNumRows);
+      mTexture = new DistortedTexture(numCols,numRows);
 
       setContentView(R.layout.inflatelayout);
 
@@ -140,48 +156,53 @@ public class InflateActivity2 extends Activity implements SeekBar.OnSeekBarChang
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-    public Bitmap getBitmap()
+    private void createBitmap(int size, int bitmapID)
       {
-      if( mBitmap==null )
+      if( bitmapID!=-1)
         {
-        if( mBitmapID!=-1)
-          {
-          InputStream is = getResources().openRawResource(mBitmapID);
+        InputStream is = getResources().openRawResource(bitmapID);
 
+        try
+          {
+          mBitmap = BitmapFactory.decodeStream(is);
+          }
+        finally
+          {
           try
             {
-            mBitmap = BitmapFactory.decodeStream(is);
-            }
-          finally
-            {
-            try
-              {
-              is.close();
-              }
-            catch(IOException e) { }
+            is.close();
             }
+          catch(IOException e) { }
           }
-        else
+        }
+      else
+        {
+        final int T = 64;
+        final int S = T*size;
+
+        Paint paint = new Paint();
+        mBitmap = Bitmap.createBitmap(S,S, Bitmap.Config.ARGB_8888);
+        Canvas canvas = new Canvas(mBitmap);
+
+        paint.setAntiAlias(true);
+        paint.setTextAlign(Paint.Align.CENTER);
+        paint.setColor(0xff008800);
+        paint.setStyle(Paint.Style.FILL);
+        canvas.drawRect(0, 0, S, S, paint);
+        paint.setColor(0xffffffff);
+
+        for(int i=0; i<=size ; i++ )
           {
-          final int W = 64*mNumCols;
-          final int H = 64*mNumRows;
-
-          Paint paint = new Paint();
-          mBitmap = Bitmap.createBitmap(W,H, Bitmap.Config.ARGB_8888);
-          Canvas canvas = new Canvas(mBitmap);
-
-          paint.setAntiAlias(true);
-          paint.setTextAlign(Paint.Align.CENTER);
-          paint.setColor(0xff008800);
-          paint.setStyle(Paint.Style.FILL);
-          canvas.drawRect(0, 0, W, H, paint);
-          paint.setColor(0xffffffff);
-
-          for(int i=0; i<=mNumCols ; i++ ) canvas.drawRect(W*i/mNumCols-1, 0, W*i/mNumCols + 1, H, paint);
-          for(int i=0; i<=mNumRows ; i++ ) canvas.drawRect( 0, H*i/mNumRows-1, W,  H*i/mNumRows+1, paint);
+          canvas.drawRect( T*i-1, 0, T*i+1, S, paint);
+          canvas.drawRect( 0, T*i-1, S, T*i+1, paint);
           }
         }
+      }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+    public Bitmap getBitmap()
+      {
       return mBitmap;
       }
 
