commit cef5d3268801f2085548ed1a027a0072b08b81cb
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Fri Oct 8 12:42:07 2021 +0200

    New BORDER effect.

diff --git a/src/main/java/org/distorted/examples/generic/GenericEffect.java b/src/main/java/org/distorted/examples/generic/GenericEffect.java
index ae94501..2399950 100644
--- a/src/main/java/org/distorted/examples/generic/GenericEffect.java
+++ b/src/main/java/org/distorted/examples/generic/GenericEffect.java
@@ -19,51 +19,16 @@
 
 package org.distorted.examples.generic;
 
+import java.lang.ref.WeakReference;
+
 import android.view.View;
 import android.widget.SeekBar;
 import android.widget.TextView;
 
 import org.distorted.examples.R;
-import org.distorted.library.effect.Effect;
-import org.distorted.library.effect.EffectName;
-import org.distorted.library.effect.EffectType;
-import org.distorted.library.effect.FragmentEffectAlpha;
-import org.distorted.library.effect.FragmentEffectBrightness;
-import org.distorted.library.effect.FragmentEffectChroma;
-import org.distorted.library.effect.FragmentEffectContrast;
-import org.distorted.library.effect.FragmentEffectSaturation;
-import org.distorted.library.effect.MatrixEffectMove;
-import org.distorted.library.effect.MatrixEffectQuaternion;
-import org.distorted.library.effect.MatrixEffectRotate;
-import org.distorted.library.effect.MatrixEffectScale;
-import org.distorted.library.effect.MatrixEffectShear;
-import org.distorted.library.effect.PostprocessEffectBlur;
-import org.distorted.library.effect.PostprocessEffectGlow;
-import org.distorted.library.effect.VertexEffectDeform;
-import org.distorted.library.effect.VertexEffectDisappear;
-import org.distorted.library.effect.VertexEffectDistort;
-import org.distorted.library.effect.VertexEffectMove;
-import org.distorted.library.effect.VertexEffectPinch;
-import org.distorted.library.effect.VertexEffectQuaternion;
-import org.distorted.library.effect.VertexEffectRotate;
-import org.distorted.library.effect.VertexEffectScale;
-import org.distorted.library.effect.VertexEffectShear;
-import org.distorted.library.effect.VertexEffectSink;
-import org.distorted.library.effect.VertexEffectSwirl;
-import org.distorted.library.effect.VertexEffectWave;
+import org.distorted.library.effect.*;
+import org.distorted.library.type.*;
 import org.distorted.library.main.DistortedEffects;
-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.Dynamic5D;
-import org.distorted.library.type.Static1D;
-import org.distorted.library.type.Static2D;
-import org.distorted.library.type.Static3D;
-import org.distorted.library.type.Static4D;
-import org.distorted.library.type.Static5D;
-
-import java.lang.ref.WeakReference;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -72,16 +37,16 @@ class GenericEffect implements SeekBar.OnSeekBarChangeListener
   private static final int BACKGROUND_ODD = 0xff555555;
   private static final int BACKGROUND_EVEN= 0xff333333;
 
-  private WeakReference<GenericActivity2> mAct;
+  private final WeakReference<GenericActivity2> mAct;
 
-  private EffectName mName;
+  private final EffectName mName;
   private int[] mInter;
   private int[] mInterRegion;
   private int[] mInterCenter;
   private int[] mSeekID;
   private int[] mSeekRegionID;
   private int[] mSeekCenterID;
-  private int mDimension, mRegionDimension;
+  private final int mDimension, mRegionDimension;
   private TextView mText,mTextRegion,mTextCenter;
 
   private Dynamic1D mDyn1;
@@ -146,13 +111,11 @@ class GenericEffect implements SeekBar.OnSeekBarChangeListener
 
       case BLUR             : effect = new PostprocessEffectBlur   (mDyn2      ); break;
       case GLOW             : effect = new PostprocessEffectGlow   (mDyn2,mDyn4); break;
+      case BORDER           : effect = new PostprocessEffectBorder (mDyn1,mDyn4); break;
       }
 
-    if( effect!=null )
-      {
-      effects.apply(effect);
-      mId = effect.getID();
-      }
+    effects.apply(effect);
+    mId = effect.getID();
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -278,6 +241,12 @@ class GenericEffect implements SeekBar.OnSeekBarChangeListener
                                         mInter[4]/100.0f,
                                         mInter[5]/100.0f );
                               break;
+      case BORDER           : mSta1.set(mInter[0]/2.0f);
+                              mSta4.set(mInter[1]/100.0f,
+                                        mInter[2]/100.0f,
+                                        mInter[3]/100.0f,
+                                        mInter[4]/100.0f );
+                              break;
       }
     }
 
diff --git a/src/main/java/org/distorted/examples/triblur/TriblurRenderer.java b/src/main/java/org/distorted/examples/triblur/TriblurRenderer.java
index 753e5a4..2ba1e8f 100644
--- a/src/main/java/org/distorted/examples/triblur/TriblurRenderer.java
+++ b/src/main/java/org/distorted/examples/triblur/TriblurRenderer.java
@@ -40,6 +40,7 @@ import org.distorted.library.main.DistortedEffects;
 import org.distorted.library.main.DistortedNode;
 import org.distorted.library.main.DistortedScreen;
 import org.distorted.library.main.DistortedTexture;
+import org.distorted.library.mesh.MeshBase;
 import org.distorted.library.mesh.MeshCubes;
 import org.distorted.library.type.Static1D;
 import org.distorted.library.type.Static2D;
@@ -82,6 +83,8 @@ class TriblurRenderer implements GLSurfaceView.Renderer, DistortedLibrary.Except
     int mScreenMin;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
+// MeshBase.setUseCenters() and mesh.setComponentCenter(0,x,y,z) with a vector (x,y,z) that points
+// directly behind the cube to see BORDER work.
 
     TriblurRenderer(GLSurfaceView v)
       {
