commit 9167cfd46c157d3112dca28c8c19313b488edb2b
Author: Leszek Koltunski <leszek@distorted.org>
Date:   Fri Jul 15 22:39:36 2016 +0100

    Vertex3D: Add the new 'Grid' bitmap option!

diff --git a/src/main/java/org/distorted/examples/vertex3d/Vertex3DActivity.java b/src/main/java/org/distorted/examples/vertex3d/Vertex3DActivity.java
index d2f978d..f5dc340 100644
--- a/src/main/java/org/distorted/examples/vertex3d/Vertex3DActivity.java
+++ b/src/main/java/org/distorted/examples/vertex3d/Vertex3DActivity.java
@@ -20,6 +20,10 @@
 package org.distorted.examples.vertex3d;
 
 import android.app.Activity;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.Canvas;
+import android.graphics.Paint;
 import android.opengl.GLSurfaceView;
 import android.os.Bundle;
 import android.view.Gravity;
@@ -43,7 +47,10 @@ import org.distorted.library.type.Dynamic1D;
 import org.distorted.library.type.Dynamic2D;
 import org.distorted.library.type.Dynamic3D;
 import org.distorted.library.type.Dynamic4D;
+import org.distorted.library.type.Static3D;
 
+import java.io.IOException;
+import java.io.InputStream;
 import java.util.ArrayList;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -125,7 +132,7 @@ public class Vertex3DActivity extends Activity
     Spinner bitmapSpinner  = (Spinner)findViewById(R.id.objectpicker_spinnerBitmap);
     bitmapSpinner.setOnItemSelectedListener(this);
 
-    String[] objectBitmap = new String[] {"Girl", "Dog", "Cat", "Grid"};
+    String[] objectBitmap = new String[] { "Grid", "Girl", "Dog", "Cat", "Squares"};
 
     ArrayAdapter<String> adapterBitmap = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, objectBitmap);
     adapterBitmap.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
@@ -187,9 +194,51 @@ public class Vertex3DActivity extends Activity
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public int getBitmap()
+  public Bitmap getBitmap()
     {
-    return mBitmap;
+    Bitmap bmp;
+
+    if( mBitmap!=-1)
+      {
+      InputStream is = getResources().openRawResource(mBitmap);
+
+      try
+        {
+        bmp = BitmapFactory.decodeStream(is);
+        }
+      finally
+        {
+        try
+          {
+          is.close();
+          }
+        catch(IOException e) { }
+        }
+      }
+    else
+      {
+      final int W = 640;
+      final int H = 640;
+
+      Paint paint = new Paint();
+      bmp = Bitmap.createBitmap(W,H, Bitmap.Config.ARGB_8888);
+      Canvas canvas = new Canvas(bmp);
+
+      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);
+        canvas.drawRect(               0, H *i/mNumCols -1,  W               ,  H*i/mNumCols + 1, paint);
+        }
+      }
+
+    return bmp;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -315,10 +364,11 @@ public class Vertex3DActivity extends Activity
                                             break;
       case R.id.objectpicker_spinnerBitmap: switch(pos)
                                               {
-                                              case 0: mBitmap = R.raw.face; break;
-                                              case 1: mBitmap = R.raw.dog;  break;
-                                              case 2: mBitmap = R.raw.cat;  break;
-                                              case 3: mBitmap = R.raw.grid; break;
+                                              case 0: mBitmap = -1        ; break;
+                                              case 1: mBitmap = R.raw.face; break;
+                                              case 2: mBitmap = R.raw.dog;  break;
+                                              case 3: mBitmap = R.raw.cat;  break;
+                                              case 4: mBitmap = R.raw.grid; break;
                                               }
                                             break;
       case R.id.vertex3dspinner           : mEffectAdd = pos;
diff --git a/src/main/java/org/distorted/examples/vertex3d/Vertex3DRenderer.java b/src/main/java/org/distorted/examples/vertex3d/Vertex3DRenderer.java
index 53d3fa1..18e63fe 100644
--- a/src/main/java/org/distorted/examples/vertex3d/Vertex3DRenderer.java
+++ b/src/main/java/org/distorted/examples/vertex3d/Vertex3DRenderer.java
@@ -198,19 +198,17 @@ class Vertex3DRenderer implements GLSurfaceView.Renderer
       {
       Vertex3DActivity act = (Vertex3DActivity)mView.getContext();
 
-      InputStream is1 = act.getResources().openRawResource(act.getBitmap());
-      InputStream is2 = act.getResources().openRawResource(R.raw.water);
-      InputStream is3 = act.getResources().openRawResource(R.raw.center);
-      InputStream is4 = act.getResources().openRawResource(R.raw.region);
+      InputStream is1 = act.getResources().openRawResource(R.raw.water);
+      InputStream is2 = act.getResources().openRawResource(R.raw.center);
+      InputStream is3 = act.getResources().openRawResource(R.raw.region);
 
-      Bitmap bitmap1,bitmap2,bitmap3,bitmap4;
+      Bitmap bitmap1,bitmap2,bitmap3;
         
       try 
         {
         bitmap1 = BitmapFactory.decodeStream(is1);
         bitmap2 = BitmapFactory.decodeStream(is2);
         bitmap3 = BitmapFactory.decodeStream(is3);
-        bitmap4 = BitmapFactory.decodeStream(is4);
         }
       finally 
         {
@@ -219,15 +217,14 @@ class Vertex3DRenderer implements GLSurfaceView.Renderer
           is1.close();
           is2.close();
           is3.close();
-          is4.close();
-          } 
+          }
         catch(IOException e) { }
         }  
       
-      mObject.setBitmap(bitmap1);
-      mBackground.setBitmap(bitmap2);
-      mCenter.setBitmap(bitmap3);
-      mRegion.setBitmap(bitmap4);
+      mObject.setBitmap( act.getBitmap() );
+      mBackground.setBitmap(bitmap1);
+      mCenter.setBitmap(bitmap2);
+      mRegion.setBitmap(bitmap3);
 
       try
         {
