commit e763f1eed661f8c5842ac9f0bfde5b64d794b2a5
Author: Leszek Koltunski <leszek@distorted.org>
Date:   Tue Jun 21 00:42:13 2016 +0100

    Effects2D almost finished.

diff --git a/src/main/java/org/distorted/examples/effects2d/Effects2DActivity.java b/src/main/java/org/distorted/examples/effects2d/Effects2DActivity.java
index 7191316..b9ff7bb 100644
--- a/src/main/java/org/distorted/examples/effects2d/Effects2DActivity.java
+++ b/src/main/java/org/distorted/examples/effects2d/Effects2DActivity.java
@@ -31,8 +31,12 @@ import android.view.View;
 import android.widget.AdapterView;
 import android.widget.ArrayAdapter;
 import android.widget.Spinner;
+import android.widget.TableLayout;
+import android.widget.TableRow;
+import android.widget.TextView;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -43,6 +47,9 @@ public class Effects2DActivity extends Activity implements AdapterView.OnItemSel
   private static ArrayAdapter<Long> mAdapterID;
 
   private int mPosID, mPosName, mPosType;
+  private TableLayout mLayoutList;
+
+  private HashMap<Long,TableRow> mMap = new HashMap<>();
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -86,6 +93,8 @@ public class Effects2DActivity extends Activity implements AdapterView.OnItemSel
     mAdapterType = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, itemsType);
     mAdapterType.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
     mType.setAdapter(mAdapterType);
+
+    mLayoutList = (TableLayout)findViewById(R.id.effects2dTableList);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -184,7 +193,7 @@ public class Effects2DActivity extends Activity implements AdapterView.OnItemSel
 
   public void removeByID(View view)
     {
-    Long currID   = (Long)  mID.getItemAtPosition(mPosID);
+    Long currID = (Long)mID.getItemAtPosition(mPosID);
 
     Effects2DRenderer.mBackground.abortEffect(currID);
     }
@@ -197,12 +206,12 @@ public class Effects2DActivity extends Activity implements AdapterView.OnItemSel
 
     switch(mPosName)
       {
-      case  0: name = EffectNames.DISTORT   ; break;
-      case  1: name = EffectNames.SINK      ; break;
-      case  2: name = EffectNames.ALPHA     ; break;
-      case  3: name = EffectNames.MACROBLOCK; break;
-      case  4: name = EffectNames.CHROMA    ; break;
-      default: name = EffectNames.CONTRAST  ;
+      case  0: name = EffectNames.DISTORT      ; break;
+      case  1: name = EffectNames.SINK         ; break;
+      case  2: name = EffectNames.SMOOTH_ALPHA ; break;
+      case  3: name = EffectNames.MACROBLOCK   ; break;
+      case  4: name = EffectNames.SMOOTH_CHROMA; break;
+      default: name = EffectNames.CONTRAST     ;
       }
 
     Effects2DRenderer.mBackground.abortEffects(name);
@@ -226,37 +235,80 @@ public class Effects2DActivity extends Activity implements AdapterView.OnItemSel
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public void effectAdded(final long id, final int type)
+  public void effectAdded(final long id, final EffectNames name, final EffectTypes type)
     {
-    android.util.Log.d("EFFECTS2D", "new effect added, id="+id+" type="+type);
-
     mAdapterID.add( new Long(id) );
     mAdapterID.notifyDataSetChanged();
+
+    TableRow tr = new TableRow(this);
+    tr.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.WRAP_CONTENT));
+
+    TextView b1 = new TextView(this);
+    b1.setText("ID: "+id);
+    b1.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.WRAP_CONTENT));
+    tr.addView(b1);
+
+    TextView b2 = new TextView(this);
+    b2.setText(name.name());
+    b2.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.WRAP_CONTENT));
+    tr.addView(b2);
+
+    TextView b3 = new TextView(this);
+    b3.setText(type.name());
+    b3.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.WRAP_CONTENT));
+    tr.addView(b3);
+
+    TextView b4 = new TextView(this);
+    b4.setText("LIVE");
+    b4.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.WRAP_CONTENT));
+    tr.addView(b4);
+
+    mMap.put(id,tr);
+
+    mLayoutList.addView(tr, new TableLayout.LayoutParams(TableLayout.LayoutParams.FILL_PARENT, TableLayout.LayoutParams.WRAP_CONTENT));
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public void effectRemoved(final long id)
     {
-    android.util.Log.d("EFFECTS2D", "new effect removed, id="+id);
-
     runOnUiThread(new Runnable()
+      {
+      public void run()
         {
-        public void run()
-          {
-          mAdapterID.remove( new Long(id) );
-          mAdapterID.notifyDataSetChanged();
-          }
-        });
+        mAdapterID.remove( new Long(id) );
+        mAdapterID.notifyDataSetChanged();
 
+        TableRow row = mMap.remove(id);
 
+        if( row!=null )
+          {
+          mLayoutList.removeView(row);
+          }
+        else
+          {
+          android.util.Log.e("EFFECTS2D", "Impossible: id="+id+" not in the map!");
+          }
+        }
+      });
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public void effectFinished(final long id)
     {
-    android.util.Log.d("EFFECTS2D", "new effect finished, id="+id);
-    }
+    runOnUiThread(new Runnable()
+      {
+      public void run()
+        {
+        TableRow row = mMap.get(id);
 
+        if( row!=null )
+          {
+          TextView v = (TextView)row.getVirtualChildAt(3);
+          v.setText("FINISHED");
+          }
+        }
+      });
+    }
   }
diff --git a/src/main/java/org/distorted/examples/effects2d/Effects2DRenderer.java b/src/main/java/org/distorted/examples/effects2d/Effects2DRenderer.java
index bb955a1..8fe39ae 100644
--- a/src/main/java/org/distorted/examples/effects2d/Effects2DRenderer.java
+++ b/src/main/java/org/distorted/examples/effects2d/Effects2DRenderer.java
@@ -120,6 +120,8 @@ public class Effects2DRenderer implements GLSurfaceView.Renderer, EffectListener
     {
     Effects2DActivity act = (Effects2DActivity)mView.getContext();
 
+    android.util.Log.e("EFFECT2D", "message came! "+effectID);
+
     switch(em)
       {
       case EFFECT_REMOVED : act.effectRemoved(effectID) ; break;
diff --git a/src/main/java/org/distorted/examples/effects2d/Effects2DSurfaceView.java b/src/main/java/org/distorted/examples/effects2d/Effects2DSurfaceView.java
index 3bc1fd0..f853057 100644
--- a/src/main/java/org/distorted/examples/effects2d/Effects2DSurfaceView.java
+++ b/src/main/java/org/distorted/examples/effects2d/Effects2DSurfaceView.java
@@ -25,6 +25,8 @@ import android.os.Build;
 import android.view.MotionEvent;
 import android.util.AttributeSet;
 
+import org.distorted.library.EffectNames;
+import org.distorted.library.EffectTypes;
 import org.distorted.library.type.Dynamic1D;
 import org.distorted.library.type.Static1D;
 import org.distorted.library.type.Static2D;
@@ -145,24 +147,27 @@ public class Effects2DSurfaceView extends GLSurfaceView
                                     y = (int)event.getY()* Effects2DRenderer.BHEI/mScrH;
                                     point.set(x,y);
                                     mRegion.set(x,y,60,60);
+                                    Effects2DActivity act = (Effects2DActivity)getContext();
 
                                     switch(mCurrentEffect)
                                       {
                                       case 0: id = Effects2DRenderer.mBackground.distort(mInterD, point, region);
-                                           break;
+                                              act.effectAdded(id, EffectNames.DISTORT, EffectTypes.VERTEX);
+                                              break;
                                       case 1: id = Effects2DRenderer.mBackground.sink(mInterS, point, region);
-                                           break;
-                                      case 2: id = Effects2DRenderer.mBackground.alpha(mInterA, mRegion, false);
-                                           break;  
+                                              act.effectAdded(id, EffectNames.SINK, EffectTypes.VERTEX);
+                                              break;
+                                      case 2: id = Effects2DRenderer.mBackground.alpha(mInterA, mRegion, true);
+                                              act.effectAdded(id, EffectNames.ALPHA, EffectTypes.FRAGMENT);
+                                              break;
                                       case 3: id = Effects2DRenderer.mBackground.macroblock(mInterM, mRegion);
-                                           break;
-                                      case 4: id = Effects2DRenderer.mBackground.chroma(mInterC, mRED, mRegion, false);
-                                           break;      
+                                              act.effectAdded(id, EffectNames.MACROBLOCK, EffectTypes.FRAGMENT);
+                                              break;
+                                      case 4: id = Effects2DRenderer.mBackground.chroma(mInterC, mRED, mRegion, true);
+                                              act.effectAdded(id, EffectNames.CHROMA, EffectTypes.FRAGMENT);
+                                              break;
                                       }
 
-                                    Effects2DActivity act = (Effects2DActivity)getContext();
-                                    act.effectAdded(id, mCurrentEffect);
-
                                     break;
       }
 
diff --git a/src/main/res/layout/effects2dlayout.xml b/src/main/res/layout/effects2dlayout.xml
index 0913f2c..8ec5384 100644
--- a/src/main/res/layout/effects2dlayout.xml
+++ b/src/main/res/layout/effects2dlayout.xml
@@ -193,6 +193,19 @@
             android:text="@string/list"
             android:id="@+id/textView6"
             android:layout_gravity="center_horizontal"/>
+
+        <TableLayout
+            android:id="@+id/effects2dTableList"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:paddingTop="2dp"
+            android:paddingBottom="2dp"
+            android:stretchColumns="0,1,2,3"
+            android:paddingLeft="10dp"
+            android:paddingRight="10dp">
+        </TableLayout>
+
     </LinearLayout>
+
     </ScrollView>
 </LinearLayout>
