commit 06cd94ba9d2727ea419e9f16fc2a1af6ca229c39
Author: Leszek Koltunski <leszek@distoretedandroid.org>
Date:   Mon Jun 12 13:56:11 2017 +0100

    Further progress with Apps: 25 (out of 31) compile now.

diff --git a/src/main/java/org/distorted/examples/mirror/MirrorRenderer.java b/src/main/java/org/distorted/examples/mirror/MirrorRenderer.java
index 4388b41..b8d8dee 100644
--- a/src/main/java/org/distorted/examples/mirror/MirrorRenderer.java
+++ b/src/main/java/org/distorted/examples/mirror/MirrorRenderer.java
@@ -24,12 +24,12 @@ import android.graphics.BitmapFactory;
 import android.opengl.GLSurfaceView;
 
 import org.distorted.examples.R;
+import org.distorted.library.effect.EffectName;
 import org.distorted.library.main.Distorted;
 import org.distorted.library.main.DistortedEffects;
 import org.distorted.library.main.DistortedFramebuffer;
 import org.distorted.library.main.DistortedScreen;
 import org.distorted.library.main.DistortedTexture;
-import org.distorted.library.EffectNames;
 import org.distorted.library.main.MeshFlat;
 import org.distorted.library.type.Dynamic3D;
 import org.distorted.library.type.Static1D;
@@ -194,7 +194,7 @@ class MirrorRenderer implements GLSurfaceView.Renderer
       mTextureMirror.setTexture(bitmapM);
       mTextureHead.setTexture(bitmapH);
 
-      DistortedEffects.enableEffect(EffectNames.BRIGHTNESS);
+      DistortedEffects.enableEffect(EffectName.BRIGHTNESS);
 
       try
         {
diff --git a/src/main/java/org/distorted/examples/save/SaveRenderer.java b/src/main/java/org/distorted/examples/save/SaveRenderer.java
index d1a4870..075f473 100644
--- a/src/main/java/org/distorted/examples/save/SaveRenderer.java
+++ b/src/main/java/org/distorted/examples/save/SaveRenderer.java
@@ -30,7 +30,9 @@ import javax.microedition.khronos.opengles.GL10;
 
 import org.distorted.examples.R;
 
-import org.distorted.library.effect.Effect;
+import org.distorted.library.effect.EffectName;
+import org.distorted.library.effect.MatrixEffectMove;
+import org.distorted.library.effect.MatrixEffectScale;
 import org.distorted.library.effect.VertexEffectSink;
 import org.distorted.library.main.Distorted;
 import org.distorted.library.main.DistortedEffects;
@@ -39,7 +41,6 @@ import org.distorted.library.main.DistortedTexture;
 import org.distorted.library.main.MeshFlat;
 import org.distorted.library.main.DistortedFramebuffer;
 import org.distorted.library.type.Dynamic1D;
-import org.distorted.library.type.Dynamic3D;
 import org.distorted.library.type.Static1D;
 import org.distorted.library.type.Static3D;
 import org.distorted.library.type.Static4D;
@@ -61,8 +62,7 @@ class SaveRenderer implements GLSurfaceView.Renderer
   private MeshFlat mMesh;
   private DistortedScreen mScreen;
   private Static1D s0;
-  private Dynamic3D mScaleDyn;
-  private Static3D mScaleFactor;
+  private Static3D mScaleFactor, mScaleMain, mMove;
 
   private float mScale;
   private int bmpHeight, bmpWidth;
@@ -90,13 +90,16 @@ class SaveRenderer implements GLSurfaceView.Renderer
     diSink.add(s0);
 
     mScale = 1.0f;
-    mScaleDyn = new Dynamic3D();
     mScaleFactor = new Static3D(mScale,mScale,1.0f);
-    mScaleDyn.add(mScaleFactor);
+    mMove = new Static3D(0,0,0);
+    mScaleMain = new Static3D(1,1,1);
 
     mEffects = new DistortedEffects();
-    mEffects.sink( diSink, pLeft , sinkRegion);
-    mEffects.sink( diSink, pRight, sinkRegion);
+    mEffects.apply( new VertexEffectSink(diSink, pLeft , sinkRegion) );
+    mEffects.apply( new VertexEffectSink(diSink, pRight, sinkRegion) );
+    mEffects.apply( new MatrixEffectMove(mMove));
+    mEffects.apply( new MatrixEffectScale(mScaleMain));
+    mEffects.apply( new MatrixEffectScale(mScaleFactor));
 
     mScreen = new DistortedScreen(mView);
     }
@@ -155,8 +158,8 @@ class SaveRenderer implements GLSurfaceView.Renderer
 
     if( isSaving )  // render to an offscreen buffer and read pixels
       {
-      mEffects.abortByType(Effect.MATRIX);
-      mEffects.scale(mScaleFactor);
+      mMove.set(0,0,0);
+      mScaleMain.set(1,1,1);
       mOffscreen.render(time);
       applyMatrixEffects(scrWidth,scrHeight);
 
@@ -188,26 +191,22 @@ class SaveRenderer implements GLSurfaceView.Renderer
 
   private void applyMatrixEffects(int width, int height)
     {
-    mEffects.abortByType(Effect.MATRIX);
-
     if( (float)bmpHeight/bmpWidth > (float)height/width )
       {
       int w = (height*bmpWidth)/bmpHeight;
       float factor = (float)height/bmpHeight;
 
-      mEffects.move( new Static3D((width-w)/2,0,0) );
-      mEffects.scale(factor);
+      mMove.set((width-w)/2,0,0);
+      mScaleMain.set(factor,factor,factor);
       }
     else
       {
       int h = (width*bmpHeight)/bmpWidth;
       float factor = (float)width/bmpWidth;
 
-      mEffects.move( new Static3D(0,(height-h)/2,0) );
-      mEffects.scale(factor);
+      mMove.set(0,(height-h)/2,0);
+      mScaleMain.set(factor,factor,factor);
       }
-
-    mEffects.scale(mScaleDyn);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -254,7 +253,7 @@ class SaveRenderer implements GLSurfaceView.Renderer
     mScreen.detachAll();
     mScreen.attach(mTexture,mEffects,mMesh);
 
-    DistortedEffects.enableEffect(org.distorted.library.effect.VertexEffectSink.class);
+    DistortedEffects.enableEffect(EffectName.SINK);
 
     try
       {
