commit 6cc818f65b26ab0a5650af299a2fd9dc68c2185e
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Thu Mar 21 01:02:14 2019 +0000

    Improve the way Center & Region bitmaps are shown in the Generic app.

diff --git a/src/main/java/org/distorted/examples/generic/GenericActivity2.java b/src/main/java/org/distorted/examples/generic/GenericActivity2.java
index 7836c31..29b945e 100644
--- a/src/main/java/org/distorted/examples/generic/GenericActivity2.java
+++ b/src/main/java/org/distorted/examples/generic/GenericActivity2.java
@@ -32,6 +32,7 @@ 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;
@@ -64,6 +65,7 @@ public class GenericActivity2 extends AppCompatActivity
   private boolean mShowRegion;
   private boolean mShowNormal;
   private boolean mUseOIT    ;
+  private EffectType mCurrentType;
 
   private GenericTab[] mTab;
 
@@ -92,6 +94,8 @@ public class GenericActivity2 extends AppCompatActivity
     mShowNormal = false;
     mUseOIT     = false;
 
+    mCurrentType = EffectType.MATRIX;
+
     int maxsize = numCols > numRows ? (numCols>numSlic ? numCols:numSlic) : (numRows>numSlic ? numRows:numSlic) ;
 
     createBitmap(maxsize, bitmapID);
@@ -205,25 +209,39 @@ public class GenericActivity2 extends AppCompatActivity
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public void setRegion(float x, float y, float z, float r)
+  void setRegion(float x, float y, float z, float r)
     {
     mRegionX = x;
     mRegionY =-y;
     mRegionZ = z;
     mRegionR = r;
 
+    setRendererRegion();
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  void setRendererRegion()
+    {
     GenericSurfaceView view = findViewById(R.id.genericSurfaceView);
     view.getRenderer().setRegion(mRegionX, mRegionY, mRegionZ, mRegionR);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public void setCenter(float x, float y, float z)
+  void setCenter(float x, float y, float z)
     {
     mCenterX = x;
     mCenterY = y;
     mCenterZ = z;
 
+    setRendererCenter();
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  void setRendererCenter()
+    {
     GenericSurfaceView view = findViewById(R.id.genericSurfaceView);
     view.getRenderer().setCenter( mCenterX, mCenterY, mCenterZ );
     }
@@ -327,6 +345,13 @@ public class GenericActivity2 extends AppCompatActivity
     renderer.resetMatrixEffects();
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  void setCurrentEffectType(EffectType type)
+    {
+    mCurrentType = type;
+    }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public DistortedEffects getEffects()
@@ -389,8 +414,11 @@ public class GenericActivity2 extends AppCompatActivity
     CheckBox box = (CheckBox)view;
     mShowCenter = box.isChecked();
 
+    boolean showR=supportsRegion(mCurrentType);
+    boolean showC=supportsCenter(mCurrentType);
+
     GenericSurfaceView sv = findViewById(R.id.genericSurfaceView);
-    sv.getRenderer().showRegionAndCenter(mShowRegion,mShowCenter);
+    sv.getRenderer().showRegionAndCenter( (mShowRegion&&showR) , (mShowCenter&&showC) );
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -400,8 +428,41 @@ public class GenericActivity2 extends AppCompatActivity
     CheckBox box = (CheckBox)view;
     mShowRegion = box.isChecked();
 
+    boolean showR=supportsRegion(mCurrentType);
+    boolean showC=supportsCenter(mCurrentType);
+
     GenericSurfaceView sv = findViewById(R.id.genericSurfaceView);
-    sv.getRenderer().showRegionAndCenter(mShowRegion,mShowCenter);
+    sv.getRenderer().showRegionAndCenter( (mShowRegion&&showR) , (mShowCenter&&showC) );
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  boolean supportsCenter(EffectType type)
+    {
+    switch(type)
+      {
+      case MATRIX     : return true;
+      case VERTEX     : return true;
+      case FRAGMENT   : return true;
+      case POSTPROCESS: return false;
+      }
+
+    return false;
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  boolean supportsRegion(EffectType type)
+    {
+    switch(type)
+      {
+      case MATRIX     : return false;
+      case VERTEX     : return true;
+      case FRAGMENT   : return false;
+      case POSTPROCESS: return false;
+      }
+
+    return false;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/examples/generic/GenericEffect.java b/src/main/java/org/distorted/examples/generic/GenericEffect.java
index c91ef61..1a3498b 100644
--- a/src/main/java/org/distorted/examples/generic/GenericEffect.java
+++ b/src/main/java/org/distorted/examples/generic/GenericEffect.java
@@ -769,14 +769,6 @@ class GenericEffect implements SeekBar.OnSeekBarChangeListener
     if( fromUser )
       {
       GenericActivity2 act = mAct.get();
-
-      boolean show = (mName.getType()==EffectType.VERTEX);
-      boolean showR= (show && act.getShowRegion());
-      boolean showC= (show && act.getShowCenter());
-
-      GenericSurfaceView view = act.findViewById(R.id.genericSurfaceView);
-      view.getRenderer().showRegionAndCenter( showR,showC );
-
       act.setCenter(mCenterSta.get1(),mCenterSta.get2(),mCenterSta.get3());
       act.setRegion(mRegion4Sta.get1(),mRegion4Sta.get2(),mRegion4Sta.get3(), mRegion4Sta.get4());
       }
diff --git a/src/main/java/org/distorted/examples/generic/GenericTab.java b/src/main/java/org/distorted/examples/generic/GenericTab.java
index 9adb392..afa608f 100644
--- a/src/main/java/org/distorted/examples/generic/GenericTab.java
+++ b/src/main/java/org/distorted/examples/generic/GenericTab.java
@@ -126,10 +126,33 @@ public class GenericTab extends Fragment implements AdapterView.OnItemSelectedLi
 
     effectSpinner.setOnItemSelectedListener(this);
     effectSpinner.setAdapter(adapterEffect);
-
-    resetData();
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+   @Override
+   public void setUserVisibleHint(boolean isVisibleToUser)
+     {
+     super.setUserVisibleHint(isVisibleToUser);
+
+     if (isVisibleToUser)
+       {
+       if( mType!=null )
+         {
+         GenericActivity2 act = (GenericActivity2)getActivity();
+         boolean region = act.getShowRegion();
+         boolean center = act.getShowCenter();
+         boolean showR  = act.supportsRegion(mType);
+         boolean showC  = act.supportsCenter(mType);
+
+         GenericSurfaceView sv = act.findViewById(R.id.genericSurfaceView);
+         sv.getRenderer().showRegionAndCenter( (showR && region) , (showC && center) );
+
+         act.setCurrentEffectType(mType);
+         }
+       }
+     }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public void onItemSelected(AdapterView<?> parent, View view, int pos, long id)
@@ -146,15 +169,6 @@ public class GenericTab extends Fragment implements AdapterView.OnItemSelectedLi
     {
     }
 
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  private void resetData()
-    {
-    GenericActivity2 act = (GenericActivity2)getActivity();
-    GenericSurfaceView view = act.findViewById(R.id.genericSurfaceView);
-    view.getRenderer().showRegionAndCenter(false,false);
-    }
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   void newEffect()
@@ -182,13 +196,6 @@ public class GenericTab extends Fragment implements AdapterView.OnItemSelectedLi
       }
 
     eff.apply(mEffects);
-
-    boolean region = act.getShowRegion();
-    boolean center = act.getShowCenter();
-
-    boolean show = (mEffectNames[mEffectAdd].getType()==EffectType.VERTEX);
-    GenericSurfaceView sv = act.findViewById(R.id.genericSurfaceView);
-    sv.getRenderer().showRegionAndCenter( (show && region) , (show && center) );
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -226,7 +233,6 @@ public class GenericTab extends Fragment implements AdapterView.OnItemSelectedLi
     layout.removeAllViews();
     mEffects.abortByType(mType);
 
-    resetData();
     act.resetData();
 
     if( mType==EffectType.MATRIX )
@@ -267,8 +273,6 @@ public class GenericTab extends Fragment implements AdapterView.OnItemSelectedLi
         mList.remove(effect);
         mChildren--;
 
-        resetData();
-
         break;
         }
       }
