commit c6526577297eb71c8303cd66ee22b9028d59a271
Author: Leszek Koltunski <leszek@distoretedandroid.org>
Date:   Mon Jun 12 12:17:02 2017 +0100

    Further progress with Apps: 18 (out of 30) compile now.

diff --git a/src/main/java/org/distorted/examples/monalisa/MonaLisaRenderer.java b/src/main/java/org/distorted/examples/monalisa/MonaLisaRenderer.java
index 6b1b48a..48ecba6 100644
--- a/src/main/java/org/distorted/examples/monalisa/MonaLisaRenderer.java
+++ b/src/main/java/org/distorted/examples/monalisa/MonaLisaRenderer.java
@@ -26,13 +26,15 @@ import javax.microedition.khronos.egl.EGLConfig;
 import javax.microedition.khronos.opengles.GL10;
 
 import org.distorted.examples.R;
+import org.distorted.library.effect.EffectName;
+import org.distorted.library.effect.MatrixEffectMove;
+import org.distorted.library.effect.MatrixEffectScale;
+import org.distorted.library.effect.VertexEffectDistort;
 import org.distorted.library.main.Distorted;
 import org.distorted.library.main.DistortedEffects;
 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.EffectTypes;
 import org.distorted.library.type.Dynamic3D;
 import org.distorted.library.type.Static3D;
 import org.distorted.library.type.Static4D;
@@ -51,6 +53,7 @@ class MonaLisaRenderer implements GLSurfaceView.Renderer
     private MeshFlat mMesh;
     private DistortedScreen mScreen;
     private int bmpHeight, bmpWidth;
+    private Static3D mMove, mScale;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -71,8 +74,13 @@ class MonaLisaRenderer implements GLSurfaceView.Renderer
       dRight.add( new Static3D( 20,-10,0) );
 
       mEffects = new DistortedEffects();
-      mEffects.distort( dLeft, pLeft , rLeft );
-      mEffects.distort(dRight, pRight, rRight);
+      mEffects.apply( new VertexEffectDistort(dLeft , pLeft , rLeft ) );
+      mEffects.apply( new VertexEffectDistort(dRight, pRight, rRight) );
+
+      mMove = new Static3D(0,0,0);
+      mScale= new Static3D(1,1,1);
+      mEffects.apply(new MatrixEffectMove(mMove));
+      mEffects.apply(new MatrixEffectScale(mScale));
 
       mScreen = new DistortedScreen(mView);
       }
@@ -88,21 +96,21 @@ class MonaLisaRenderer implements GLSurfaceView.Renderer
     
     public void onSurfaceChanged(GL10 glUnused, int width, int height) 
       { 
-      mEffects.abortEffects(EffectTypes.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);
+        mScale.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);
+        mScale.set( factor,factor,factor );
         }
 
       mScreen.resize(width, height);
@@ -148,7 +156,7 @@ class MonaLisaRenderer implements GLSurfaceView.Renderer
       mScreen.detachAll();
       mScreen.attach(mTexture,mEffects,mMesh);
 
-      DistortedEffects.enableEffect(EffectNames.DISTORT);
+      DistortedEffects.enableEffect(EffectName.DISTORT);
 
       try
         {
diff --git a/src/main/java/org/distorted/examples/quaternion/QuaternionRenderer.java b/src/main/java/org/distorted/examples/quaternion/QuaternionRenderer.java
index 956e4ed..ad96774 100644
--- a/src/main/java/org/distorted/examples/quaternion/QuaternionRenderer.java
+++ b/src/main/java/org/distorted/examples/quaternion/QuaternionRenderer.java
@@ -28,9 +28,11 @@ import javax.microedition.khronos.opengles.GL10;
 
 import org.distorted.examples.R;
 
+import org.distorted.library.effect.MatrixEffectMove;
+import org.distorted.library.effect.MatrixEffectQuaternion;
+import org.distorted.library.effect.MatrixEffectScale;
 import org.distorted.library.main.DistortedEffects;
 import org.distorted.library.main.DistortedScreen;
-import org.distorted.library.EffectTypes;
 import org.distorted.library.main.MeshObject;
 import org.distorted.library.type.Dynamic;
 import org.distorted.library.type.DynamicQuat;
@@ -52,20 +54,20 @@ class QuaternionRenderer implements GLSurfaceView.Renderer
 
   private GLSurfaceView mView;
   private DistortedTexture mTexture;
-  private DistortedEffects mEffects;
   private MeshObject mMesh;
   private DistortedScreen mScreen;
-  private DynamicQuat mRot;
-    
+  private Static3D mMove, mScale, mCenter;
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   QuaternionRenderer(GLSurfaceView v)
     {
     mView    = v;
     mTexture = new DistortedTexture(1,1);
-    mEffects = new DistortedEffects();
     mMesh    = new MeshCubes(1,1,1);
-    mRot     = new DynamicQuat();
+
+    DistortedEffects effects = new DistortedEffects();
+    DynamicQuat rot = new DynamicQuat();
 
     Random rnd = new Random(System.currentTimeMillis());
     float x,y,z,w, len;
@@ -79,15 +81,23 @@ class QuaternionRenderer implements GLSurfaceView.Renderer
     	 
       len = (float)Math.sqrt( x*x+y*y+z*z+w*w );
     		
-      mRot.add(new Static4D(x/len,y/len,z/len,w/len));
+      rot.add(new Static4D(x/len,y/len,z/len,w/len));
       }
     
-    mRot.setCount(0);
-    mRot.setDuration(8000);
-    mRot.setMode(Dynamic.MODE_LOOP);
+    rot.setCount(0);
+    rot.setDuration(8000);
+    rot.setMode(Dynamic.MODE_LOOP);
+
+    mMove   = new Static3D(0,0,0);
+    mScale  = new Static3D(1,1,1);
+    mCenter = new Static3D(0,0,0);
+
+    effects.apply( new MatrixEffectMove(mMove));
+    effects.apply(new MatrixEffectScale(mScale));
+    effects.apply( new MatrixEffectQuaternion(rot,mCenter) );
 
     mScreen = new DistortedScreen(mView);
-    mScreen.attach(mTexture,mEffects,mMesh);
+    mScreen.attach(mTexture,effects,mMesh);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -105,14 +115,12 @@ class QuaternionRenderer implements GLSurfaceView.Renderer
     float h = mTexture.getHeight();
     float d = mTexture.getDepth(mMesh);
 
-    float scaleFactor = 0.5f*(width>height ? height/h:width/w);
-    Static3D center = new Static3D(w/2,h/2,-d/2);
+    float factor = 0.5f*(width>height ? height/h:width/w);
+
+    mCenter.set(w/2,h/2,-d/2);
+    mMove.set( (width-factor*w)/2 , (height-factor*h)/2 , 0 );
+    mScale.set(factor,factor,factor);
 
-    mEffects.abortEffects(EffectTypes.MATRIX);
-    mEffects.move( new Static3D( (width-scaleFactor*w)/2 , (height-scaleFactor*h)/2 , 0) );
-    mEffects.scale(scaleFactor);
-    mEffects.quaternion( mRot,center );
-       
     mScreen.resize(width, height);
     }
 
diff --git a/src/main/java/org/distorted/examples/stencil/StencilRenderer.java b/src/main/java/org/distorted/examples/stencil/StencilRenderer.java
index 1ddcd90..bd0b244 100644
--- a/src/main/java/org/distorted/examples/stencil/StencilRenderer.java
+++ b/src/main/java/org/distorted/examples/stencil/StencilRenderer.java
@@ -25,6 +25,7 @@ import android.opengl.GLES30;
 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;
@@ -237,7 +238,7 @@ class StencilRenderer implements GLSurfaceView.Renderer
       mCubeTex.setTexture(bitmap);
       mFloorTex.setColor(0xff000000);  // ARGB
 
-      DistortedEffects.enableEffect(EffectNames.BRIGHTNESS);
+      DistortedEffects.enableEffect(EffectName.BRIGHTNESS);
 
       try
         {
