commit 2e18813f9d18d09d146ed5b77487c385d1c18892
Author: Leszek Koltunski <leszek@distoretedandroid.org>
Date:   Fri Jun 10 16:11:46 2016 +0100

    Beginnings of support for the SavePNG effect.

diff --git a/src/main/java/org/distorted/library/DistortedObject.java b/src/main/java/org/distorted/library/DistortedObject.java
index 81bfe0c..dfee9b4 100644
--- a/src/main/java/org/distorted/library/DistortedObject.java
+++ b/src/main/java/org/distorted/library/DistortedObject.java
@@ -2518,4 +2518,18 @@ public abstract class DistortedObject
 // WAVE
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////   
+///////////////////////////////////////////////////////////////////////////////////////////////////
+// Other-based effects
+///////////////////////////////////////////////////////////////////////////////////////////////////
+// SAVE_PNG
+/**
+ * Save the current state of the Bitmap that's backing up our DistortedObject to a PNG file.
+ *
+ * @param filename Full path to the file.
+ * @return         ID of the effect added, or -1 if we failed to add one.
+ */
+ public long savePNG(String filename)
+   {
+   return mO.add(EffectNames.SAVE_PNG, filename);
+   }
 }
diff --git a/src/main/java/org/distorted/library/EffectQueue.java b/src/main/java/org/distorted/library/EffectQueue.java
index 9adf5d3..e994a94 100644
--- a/src/main/java/org/distorted/library/EffectQueue.java
+++ b/src/main/java/org/distorted/library/EffectQueue.java
@@ -166,7 +166,7 @@ abstract class EffectQueue
   
 ///////////////////////////////////////////////////////////////////////////////////////////////////
   
-  protected synchronized int getEffectIndex(long id)
+  private synchronized int getEffectIndex(long id)
     {
     int index = mIDIndex[(int)(id%mMax[mMaxIndex])];
     return (index<mNumEffects && mID[index]==id ? index : -1);
diff --git a/src/main/java/org/distorted/library/EffectQueueOther.java b/src/main/java/org/distorted/library/EffectQueueOther.java
index f65e7b9..d9a1176 100644
--- a/src/main/java/org/distorted/library/EffectQueueOther.java
+++ b/src/main/java/org/distorted/library/EffectQueueOther.java
@@ -6,33 +6,57 @@ class EffectQueueOther extends EffectQueue
   {
   private static final int NUM_UNIFORMS = 0;
   private static final int INDEX = EffectTypes.OTHER.ordinal();
+  private String[] mFilename;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public EffectQueueOther(DistortedObject obj)
     {
     super(obj,NUM_UNIFORMS, INDEX );
+
+    if( mMax[INDEX]>0 )
+      {
+      mFilename= new String[mMax[INDEX]];
+      }
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
-// There are no Uniforms, nothing to move
 
   protected void moveEffect(int index)
     {
-
+    mFilename[index] = mFilename[index+1];
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   synchronized void send()
     {
-
+    for(int i=0; i<mNumEffects; i++)
+      {
+      if (mType[i] == EffectNames.SAVE_PNG.ordinal() )
+        {
+        // TODO: Implement SAVE_PNG HERE
+        }
+      else if (mType[i] == EffectNames.SAVE_MP4.ordinal() )
+        {
+        // TODO: Implement SAVE_MP4 HERE
+        }
+      }
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   synchronized long add(EffectNames eln, String filename)
     {
-    return 0;
+    if( mMax[INDEX]>mNumEffects )
+      {
+      mFilename[mNumEffects] = filename;
+      mInterI[mNumEffects] = null;
+      mInterP[mNumEffects] = null;
+
+      return addBase(eln);
+      }
+
+    return -1;
     }
   }
