commit 59759251947fc2c9ef730faf9f05cd6242ac5e78
Author: Leszek Koltunski <leszek@distoretedandroid.org>
Date:   Thu Jun 16 14:50:30 2016 +0100

    Major push towards simplifying DistortedObject's public API.
    All Fragment effects are using the new API - the 'DataND' marker interfaces.

diff --git a/src/main/java/org/distorted/examples/check/CheckRenderer.java b/src/main/java/org/distorted/examples/check/CheckRenderer.java
index 87dd72a..97d6630 100644
--- a/src/main/java/org/distorted/examples/check/CheckRenderer.java
+++ b/src/main/java/org/distorted/examples/check/CheckRenderer.java
@@ -153,7 +153,7 @@ class CheckRenderer implements GLSurfaceView.Renderer
       inter.add(new Static1D(0));
       inter.add(new Static1D(1));
 
-      mSuccess.chroma(inter, color, null, new Static2D(0,0) );
+      mSuccess.chroma(inter, color);
 
       try
         {
diff --git a/src/main/java/org/distorted/examples/differenteffects/DifferentEffectsRenderer.java b/src/main/java/org/distorted/examples/differenteffects/DifferentEffectsRenderer.java
index 67d7d3a..d6bbd3c 100644
--- a/src/main/java/org/distorted/examples/differenteffects/DifferentEffectsRenderer.java
+++ b/src/main/java/org/distorted/examples/differenteffects/DifferentEffectsRenderer.java
@@ -30,7 +30,9 @@ import org.distorted.examples.R;
 import org.distorted.library.Distorted;
 import org.distorted.library.DistortedBitmap;
 import org.distorted.library.EffectTypes;
+import org.distorted.library.type.Dynamic1D;
 import org.distorted.library.type.Dynamic3D;
+import org.distorted.library.type.Static1D;
 import org.distorted.library.type.Static2D;
 import org.distorted.library.type.Static3D;
 import org.distorted.library.type.Static4D;
@@ -163,7 +165,14 @@ class DifferentEffectsRenderer implements GLSurfaceView.Renderer
       bmp[0].sink(10.0f, RegionEye, pLeft , 2000, 0.0f);
       bmp[0].sink(10.0f, RegionEye, pRight, 2000, 0.0f);
       bmp[1].distort(mDI, pNose1);
-      bmp[2].macroblock(50, 3000, 0.0f);
+
+      Dynamic1D macroblockDyn = new Dynamic1D();
+      macroblockDyn.setDuration(3000);
+      macroblockDyn.setCount(0);
+      macroblockDyn.add(new Static1D(1));
+      macroblockDyn.add(new Static1D(50));
+
+      bmp[2].macroblock(macroblockDyn);
       
       try
         {
diff --git a/src/main/java/org/distorted/examples/fbo/FBORenderer.java b/src/main/java/org/distorted/examples/fbo/FBORenderer.java
index d5212a1..05b52d0 100644
--- a/src/main/java/org/distorted/examples/fbo/FBORenderer.java
+++ b/src/main/java/org/distorted/examples/fbo/FBORenderer.java
@@ -31,6 +31,8 @@ import org.distorted.library.DistortedNode;
 import org.distorted.library.Distorted;
 import org.distorted.library.DistortedBitmap;
 import org.distorted.library.EffectTypes;
+import org.distorted.library.type.Dynamic1D;
+import org.distorted.library.type.Static1D;
 import org.distorted.library.type.Static2D;
 import org.distorted.library.type.Static3D;
 
@@ -133,7 +135,14 @@ class FBORenderer implements GLSurfaceView.Renderer
       mText.move( new Static3D(lisaWidth/6,lisaHeight/3,0) );
       mText.scale( new Static3D(factor,factor,factor) );
       mText.sink(0.5f, new Static2D( textWidth/2, textHeight/2), 5000, 0.0f);
-      mLisa.macroblock(4, 10000, 0.0f);
+
+      Dynamic1D macroblockDyn = new Dynamic1D();
+      macroblockDyn.setDuration(10000);
+      macroblockDyn.setCount(0);
+      macroblockDyn.add(new Static1D(1));
+      macroblockDyn.add(new Static1D(5));
+
+      mLisa.macroblock(macroblockDyn);
       
       try
         {
diff --git a/src/main/java/org/distorted/examples/macroblock/MacroblockRenderer.java b/src/main/java/org/distorted/examples/macroblock/MacroblockRenderer.java
index cbc9ad7..592bae3 100644
--- a/src/main/java/org/distorted/examples/macroblock/MacroblockRenderer.java
+++ b/src/main/java/org/distorted/examples/macroblock/MacroblockRenderer.java
@@ -47,19 +47,17 @@ class MacroblockRenderer implements GLSurfaceView.Renderer
 {
     private GLSurfaceView mView;
     private DistortedBitmap macroblock;
-    private Static4D Region;
+    private Static4D macRegion, alphaRegion;
     private int bmpHeight, bmpWidth;
-    private Static2D traP, macP;
-    
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
     public MacroblockRenderer(GLSurfaceView v) 
       {   
       mView = v;
       
-      Region = new Static4D(0,0,100,100);
-      macP   = new Static2D(530,200);
-      traP   = new Static2D(230,200);
+        macRegion = new Static4D( 530, 200,100,100);
+      alphaRegion = new Static4D( 230, 200,100,100);
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -95,9 +93,23 @@ class MacroblockRenderer implements GLSurfaceView.Renderer
       bmpHeight = bitmap.getHeight();
       bmpWidth  = bitmap.getWidth();
       
-      macroblock = new DistortedBitmap(bitmap, 30);    
-      macroblock.macroblock(  30, Region, macP, 3000, 0.0f);
-      macroblock.alpha     (0.0f, Region, traP, 3000, 0.0f);
+      macroblock = new DistortedBitmap(bitmap, 30);
+
+      Dynamic1D macroblockDyn = new Dynamic1D();
+      macroblockDyn.setDuration(3000);
+      macroblockDyn.setCount(0);
+      macroblockDyn.add(new Static1D( 1));
+      macroblockDyn.add(new Static1D(30));
+
+      macroblock.macroblock(macroblockDyn, macRegion);
+
+      Dynamic1D alphaDyn = new Dynamic1D();
+      alphaDyn.setDuration(3000);
+      alphaDyn.setCount(0);
+      alphaDyn.add(new Static1D(1));
+      alphaDyn.add(new Static1D(0));
+
+      macroblock.alpha( alphaDyn, alphaRegion, false );
       
       try
         {
diff --git a/src/main/java/org/distorted/examples/movingeffects/MovingEffectsSurfaceView.java b/src/main/java/org/distorted/examples/movingeffects/MovingEffectsSurfaceView.java
index 45a2394..0140688 100644
--- a/src/main/java/org/distorted/examples/movingeffects/MovingEffectsSurfaceView.java
+++ b/src/main/java/org/distorted/examples/movingeffects/MovingEffectsSurfaceView.java
@@ -29,8 +29,11 @@ import android.view.MotionEvent;
 import android.util.AttributeSet;
 
 import org.distorted.library.EffectTypes;
+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.Static1D;
 import org.distorted.library.type.Static2D;
 import org.distorted.library.type.Static3D;
 import org.distorted.library.type.Static4D;
@@ -53,11 +56,14 @@ public class MovingEffectsSurfaceView extends GLSurfaceView
     
     private static int xDown,yDown;
     private static int mScrW, mScrH;
-    
+
+    private static Dynamic1D macroDyn, alphaDyn;
     private static Dynamic2D di2D;
     private static Dynamic3D di3D;
     private static Static4D dr;
-    
+
+    private static Dynamic4D mRegion;
+
     private static Paint mPaint;
     private static int moving;
     private static Object lock = new Object();
@@ -70,7 +76,19 @@ public class MovingEffectsSurfaceView extends GLSurfaceView
     public MovingEffectsSurfaceView(Context c, AttributeSet attrs) 
       {
       super(c, attrs);
-          
+
+      macroDyn = new Dynamic1D();
+      macroDyn.setDuration(0);
+      macroDyn.setCount(0.5f);
+      macroDyn.add(new Static1D(1));
+      macroDyn.add(new Static1D(3));
+
+      alphaDyn = new Dynamic1D();
+      alphaDyn.setDuration(0);
+      alphaDyn.setCount(0.5f);
+      alphaDyn.add(new Static1D(1.0f));
+      alphaDyn.add(new Static1D(0.5f));
+
       mCurrEffect=EFFECT_POINTS;
       mPaint = new Paint();
       mPaint.setStyle(Style.FILL);
@@ -85,7 +103,11 @@ public class MovingEffectsSurfaceView extends GLSurfaceView
       di3D.add(new Static3D(0,0,30));
       
       dr = new Static4D(0,0,60,60);
-      
+
+      mRegion = new Dynamic4D();
+      mRegion.setCount(0);
+      mRegion.setDuration(LOOP_TIME);
+
       if(!isInEditMode())
         {
         setFocusable(true);
@@ -158,7 +180,7 @@ public class MovingEffectsSurfaceView extends GLSurfaceView
         {
         MovingEffectsRenderer.mBackground.abortEffects(EffectTypes.VERTEX);
         MovingEffectsRenderer.mBackground.abortEffects(EffectTypes.FRAGMENT);
-        MovingEffectsRenderer.mBackground.macroblock(3, dr, di2D, 0, 0.5f);  
+        MovingEffectsRenderer.mBackground.macroblock(macroDyn, mRegion);
         mCurrEffect = EFFECT_MACRO;
         }
       }
@@ -173,7 +195,7 @@ public class MovingEffectsSurfaceView extends GLSurfaceView
         {
         MovingEffectsRenderer.mBackground.abortEffects(EffectTypes.VERTEX);
         MovingEffectsRenderer.mBackground.abortEffects(EffectTypes.FRAGMENT);
-        MovingEffectsRenderer.mBackground.smooth_alpha(0.5f, dr, di2D, 0, 0.5f);  
+        MovingEffectsRenderer.mBackground.alpha(alphaDyn, mRegion, true);
         mCurrEffect = EFFECT_TRANS;
         }
       }
@@ -202,6 +224,7 @@ public class MovingEffectsSurfaceView extends GLSurfaceView
         MovingEffectsRenderer.mBackground.abortEffects(EffectTypes.VERTEX);
         MovingEffectsRenderer.mBackground.abortEffects(EffectTypes.FRAGMENT);
         di2D.removeAll();
+        mRegion.removeAll();
         mCurrEffect = EFFECT_POINTS;
         }
       }
@@ -274,6 +297,7 @@ public class MovingEffectsSurfaceView extends GLSurfaceView
                                         synchronized(lock)
                                           {
                                           di2D.add(new Static2D(xDown,yDown));
+                                          mRegion.add(new Static4D(xDown,yDown,60,60));
                                           }
                                         } 
                                       break;
@@ -282,6 +306,7 @@ public class MovingEffectsSurfaceView extends GLSurfaceView
                                         xDown = (int)event.getX()*MovingEffectsRenderer.BWID/mScrW; 
                                         yDown = (int)event.getY()*MovingEffectsRenderer.BHEI/mScrH;
                                         di2D.setPoint(moving, xDown, yDown);
+                                        mRegion.setPoint(moving, xDown, yDown, 60, 60);
                                         }                           
                                       break;
         case MotionEvent.ACTION_UP  : moving = -1;
diff --git a/src/main/java/org/distorted/examples/olimpic/OlimpicRenderer.java b/src/main/java/org/distorted/examples/olimpic/OlimpicRenderer.java
index 37661ae..3cc3e69 100644
--- a/src/main/java/org/distorted/examples/olimpic/OlimpicRenderer.java
+++ b/src/main/java/org/distorted/examples/olimpic/OlimpicRenderer.java
@@ -34,6 +34,7 @@ import org.distorted.library.type.Static3D;
 import org.distorted.library.type.Static1D;
 import org.distorted.library.Distorted;
 import org.distorted.library.DistortedBitmap;
+import org.distorted.library.type.Static4D;
 
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
@@ -104,7 +105,7 @@ class OlimpicRenderer implements GLSurfaceView.Renderer
         tmp = (DistortedBitmap)mCircleNode[i].getObject();
         tmp.move( new Static3D(positions[2*i], positions[2*i+1], 0) );
         tmp.rotate( center, mRot, axis );
-        tmp.chroma(0.8f, new Static3D(colors[3*i],colors[3*i+1], colors[3*i+2]));
+        tmp.chroma( new Static4D(0.8f, colors[3*i],colors[3*i+1], colors[3*i+2]) );
         }
       }
 
diff --git a/src/main/java/org/distorted/examples/scratchpad/ScratchpadSurfaceView.java b/src/main/java/org/distorted/examples/scratchpad/ScratchpadSurfaceView.java
index cf13a8a..2ba8fc4 100644
--- a/src/main/java/org/distorted/examples/scratchpad/ScratchpadSurfaceView.java
+++ b/src/main/java/org/distorted/examples/scratchpad/ScratchpadSurfaceView.java
@@ -25,6 +25,8 @@ import android.os.Build;
 import android.view.MotionEvent;
 import android.util.AttributeSet;
 
+import org.distorted.library.type.Dynamic1D;
+import org.distorted.library.type.Static1D;
 import org.distorted.library.type.Static2D;
 import org.distorted.library.type.Static3D;
 import org.distorted.library.type.Static4D;
@@ -42,8 +44,11 @@ public class ScratchpadSurfaceView extends GLSurfaceView
     
   private static Static4D region;
   private static Static2D point;
-    
-  private static Dynamic3D di;
+
+  private static Static4D mRegion;
+  private static Dynamic1D mInterA, mInterM, mInterB;
+
+  private static Dynamic3D mInterD;
   private static Static3D v0, v1, v2, v3;
      
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -55,11 +60,41 @@ public class ScratchpadSurfaceView extends GLSurfaceView
     mDuration = 10000;
     mCount    = 1.0f;
       
-    di = new Dynamic3D();
+    mInterD = new Dynamic3D();
+    mInterD.setDuration(mDuration);
+    mInterD.setCount(mCount);
+
+    int h = 30;
+    int r = 20;
+
+    v0 = new Static3D( 0, r, h );
+    v1 = new Static3D(-r, 0, h );
+    v2 = new Static3D( 0,-r, h );
+    v3 = new Static3D( r, 0, h );
+
+    mInterD.add(v0);
+    mInterD.add(v1);
+    mInterD.add(v2);
+    mInterD.add(v3);
+
+    mInterA = new Dynamic1D();
+    mInterA.setDuration(mDuration);
+    mInterA.setCount(mCount);
+    mInterA.add(new Static1D(1));
+    mInterA.add(new Static1D(0));
+
+    mInterB = new Dynamic1D();
+    mInterB.setDuration(mDuration);
+    mInterB.setCount(mCount);
+    mInterB.add(new Static1D(1));
+    mInterB.add(new Static1D(0));
+
+    mInterM = new Dynamic1D();
+    mInterM.setDuration(mDuration);
+    mInterM.setCount(mCount);
+    mInterM.add(new Static1D(1));
+    mInterM.add(new Static1D(10));
 
-    di.setDuration(mDuration);
-    di.setCount(mCount);
-      
     if(!isInEditMode())
       {
       setFocusable(true);
@@ -77,19 +112,7 @@ public class ScratchpadSurfaceView extends GLSurfaceView
         
       point = new Static2D(0,0);
       region= new Static4D(0,0,60,60);
-            
-      int h = 30;
-      int r = 20;
-        
-      v0 = new Static3D( 0, r, h );
-      v1 = new Static3D(-r, 0, h );
-      v2 = new Static3D( 0,-r, h );
-      v3 = new Static3D( r, 0, h );
-        
-      di.add(v0);
-      di.add(v1);
-      di.add(v2);
-      di.add(v3);
+      mRegion = new Static4D(0,0,60,60);
         
       setEffect(0);  
       }
@@ -122,7 +145,10 @@ public class ScratchpadSurfaceView extends GLSurfaceView
   public static void setDuration(int duration)
     {
     mDuration = duration;
-    di.setDuration(duration);
+    mInterD.setDuration(duration);
+    mInterA.setDuration(duration);
+    mInterB.setDuration(duration);
+    mInterM.setDuration(duration);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -130,7 +156,10 @@ public class ScratchpadSurfaceView extends GLSurfaceView
   public static void setCount(float count)
     {
     mCount = count;
-    di.setCount(count);
+    mInterD.setCount(count);
+    mInterA.setCount(count);
+    mInterB.setCount(count);
+    mInterM.setCount(count);
     }
   
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -145,18 +174,19 @@ public class ScratchpadSurfaceView extends GLSurfaceView
       case MotionEvent.ACTION_DOWN: x = (int)event.getX()*ScratchpadRenderer.BWID/mScrW;
                                     y = (int)event.getY()*ScratchpadRenderer.BHEI/mScrH;
                                     point.set(x,y);
-                                              
+                                    mRegion.set(x,y,60,60);
+
                                     switch(mCurrentEffect)
                                       {
-                                      case 0: ScratchpadRenderer.mBackground.distort(di, region, point); 
+                                      case 0: ScratchpadRenderer.mBackground.distort(mInterD, region, point);
                                            break;
                                       case 1: ScratchpadRenderer.mBackground.sink(0.3f, region, point, mDuration, mCount); 
                                            break;
-                                      case 2: ScratchpadRenderer.mBackground.alpha(0.0f, region, point, mDuration, mCount); 
+                                      case 2: ScratchpadRenderer.mBackground.alpha(mInterA, mRegion, false);
                                            break;  
-                                      case 3: ScratchpadRenderer.mBackground.macroblock(10, region, point, mDuration, mCount); 
+                                      case 3: ScratchpadRenderer.mBackground.macroblock(mInterM, mRegion);
                                            break;
-                                      case 4: ScratchpadRenderer.mBackground.brightness(0.0f, region, point, mDuration, mCount); 
+                                      case 4: ScratchpadRenderer.mBackground.brightness(mInterB, mRegion, false);
                                            break;      
                                       }
                                     break;
diff --git a/src/main/java/org/distorted/examples/starwars/StarWarsRenderer.java b/src/main/java/org/distorted/examples/starwars/StarWarsRenderer.java
index c2dc4d3..538423e 100644
--- a/src/main/java/org/distorted/examples/starwars/StarWarsRenderer.java
+++ b/src/main/java/org/distorted/examples/starwars/StarWarsRenderer.java
@@ -182,11 +182,11 @@ class StarWarsRenderer implements GLSurfaceView.Renderer, EffectListener
       Dynamic1D di = new Dynamic1D();
       di.setDuration(randomTime);
       di.setCount(0.0f);
-      di.setNoise(0.3f);
+      di.setNoise(0.5f);
       di.add(new Static1D(randomAlpha1));
       di.add(new Static1D(randomAlpha2));
       
-      mStars[i].alpha(di, null, new Static2D(0,0));
+      mStars[i].alpha(di);
       
       mRoot.attach(mStars[i]);
       }
@@ -202,7 +202,7 @@ class StarWarsRenderer implements GLSurfaceView.Renderer, EffectListener
     
     mGFFA.move( new Static3D(w/5,h/3,0) );
     mGFFA.scale( new Static3D(scale,scale,scale) );
-    mGFFA.alpha(di, null, new Static2D(0,0));
+    mGFFA.alpha(di);
       
     mRoot.attach(mGFFA);
     mGFFA.addEventListener(this); 
@@ -384,8 +384,9 @@ class StarWarsRenderer implements GLSurfaceView.Renderer, EffectListener
         mCrawlBackground.move( new Static3D(0,screenH-backH,0) );
         mCrawlBackground.rotate(new Static3D(screenW/2,backH,0), new Static1D(CRAWL_ANGLE), new Static3D(1,0,0) );
         
-        final int transpDistance = 5;
-        mCrawlBackground.smooth_alpha((1-transpDistance/2)*1.0f, new Static4D(0,0,transpDistance*backH,transpDistance*backH), new Static2D(screenW/2,(1-transpDistance)*backH));
+        final int transpDist = 5;
+        Static4D region = new Static4D(screenW/2,(1-transpDist)*backH,transpDist*backH,transpDist*backH);
+        mCrawlBackground.alpha(new Static1D(1-transpDist/2), region, true);
         
         mCrawl.move(di);
         mCrawl.scale( new Static3D(scale,scale,scale) );
