commit 20b60ad910213274f179ed11fa3fb9a2898e9db6
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Tue Mar 29 18:11:11 2022 +0200

    Create the bandaged 3x3 icon: should work already, but it doesn't. Debug.

diff --git a/src/main/java/org/distorted/bandaged/BandagedCreatorActivity.java b/src/main/java/org/distorted/bandaged/BandagedCreatorActivity.java
index a5d70ae0..7d85567a 100644
--- a/src/main/java/org/distorted/bandaged/BandagedCreatorActivity.java
+++ b/src/main/java/org/distorted/bandaged/BandagedCreatorActivity.java
@@ -236,7 +236,7 @@ public class BandagedCreatorActivity extends AppCompatActivity
 
     public void iconCreationDone(Bitmap bmp)
       {
-      mScreen.iconCreationDone(bmp);
+      mScreen.iconCreationDone(this,bmp);
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/bandaged/BandagedCreatorRenderer.java b/src/main/java/org/distorted/bandaged/BandagedCreatorRenderer.java
index bb8e9319..13bc25ca 100644
--- a/src/main/java/org/distorted/bandaged/BandagedCreatorRenderer.java
+++ b/src/main/java/org/distorted/bandaged/BandagedCreatorRenderer.java
@@ -35,11 +35,11 @@ import org.distorted.library.main.DistortedLibrary;
 import org.distorted.library.main.DistortedNode;
 import org.distorted.library.main.DistortedScreen;
 
+import org.distorted.library.main.InternalOutputSurface;
 import org.distorted.library.type.Static1D;
 import org.distorted.library.type.Static3D;
 import org.distorted.library.type.Static4D;
 import org.distorted.objectlib.json.JsonWriter;
-import org.distorted.objectlib.main.ObjectControl;
 import org.distorted.objectlib.main.ShapeHexahedron;
 import org.distorted.objectlib.main.TwistyObject;
 import org.distorted.objectlib.objects.TwistyBandagedGeneric;
@@ -57,6 +57,7 @@ public class BandagedCreatorRenderer implements GLSurfaceView.Renderer, Distorte
 {
    public static final float BRIGHTNESS = 0.333f;
    private static final int DURATION = 1000;
+   private static final int FBO_SIZE = 100;
 
    static final int COLOR_DEFAULT = 0xffffff55;
    static final int COLOR_MARKED  = 0xffff0000;
@@ -231,7 +232,7 @@ public class BandagedCreatorRenderer implements GLSurfaceView.Renderer, Distorte
        }
 
      if( mSaveIcon>=0 ) mSaveIcon++;
-     if( mSaveIcon>=2 ) { saveIcon(); mSaveIcon = -1; }
+     if( mSaveIcon>=2 ) { saveIcon(time); mSaveIcon = -1; }
      }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -359,11 +360,11 @@ public class BandagedCreatorRenderer implements GLSurfaceView.Renderer, Distorte
          }
 
      TwistyBandagedGeneric.setPositions(pos);
-     TwistyObject obj = new TwistyBandagedGeneric();
+     TwistyObject obj = new TwistyBandagedGeneric( new Static4D(0,0,0,1), 1.0f, TwistyObject.MODE_NORM);
      BandagedCreatorActivity act = (BandagedCreatorActivity) mView.getContext();
 
      boolean success = createObjectJson(obj,act);
-     setupIconCreation(obj,act);
+     setupIconCreation(act);
 
      if( success )
        {
@@ -429,19 +430,21 @@ public class BandagedCreatorRenderer implements GLSurfaceView.Renderer, Distorte
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-   private void setupIconCreation(TwistyObject object, Activity act)
+   private void setupIconCreation(Activity act)
      {
-/*
-     // create framebuffer, attach object's node to it
+     if( mFramebuffer==null )
+       {
+       mFramebuffer = new DistortedFramebuffer(FBO_SIZE,FBO_SIZE,1, InternalOutputSurface.DEPTH_NO_STENCIL);
+       }
 
-     ObjectControl control = getControl();
+     TwistyObject object = new TwistyBandagedGeneric(ShapeHexahedron.DEFAULT_ROT, 1.15f, TwistyObject.MODE_ICON);
      DistortedEffects effects = object.getObjectEffects();
+     DistortedNode node = object.getNode();
+
+     mFramebuffer.detachAll();
+     mFramebuffer.attach(node);
 
-     Static4D defRot = ShapeHexahedron.DEFAULT_ROT;
      Static1D halo = new Static1D(5);
-     control.rotateNow(defRot);
-     float scale = 1.15f;
-     control.scaleNow(scale);
      Static4D color = new Static4D(0,0,0,1);
      PostprocessEffectBorder border = new PostprocessEffectBorder(halo,color);
      border.setHaloDepth(false);
@@ -453,13 +456,13 @@ public class BandagedCreatorRenderer implements GLSurfaceView.Renderer, Distorte
 
      mSaveIcon = 0;
      mPath = filename;
- */
      }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-    private void saveIcon()
+    private void saveIcon(long time)
       {
+      mFramebuffer.render(time);
       int fW = mFramebuffer.getWidth();
       int fH = mFramebuffer.getHeight();
       ByteBuffer buf = ByteBuffer.allocateDirect(fW*fH*4);
diff --git a/src/main/java/org/distorted/bandaged/BandagedCreatorScreen.java b/src/main/java/org/distorted/bandaged/BandagedCreatorScreen.java
index bff1f309..278cfe6a 100644
--- a/src/main/java/org/distorted/bandaged/BandagedCreatorScreen.java
+++ b/src/main/java/org/distorted/bandaged/BandagedCreatorScreen.java
@@ -19,6 +19,7 @@
 
 package org.distorted.bandaged;
 
+import android.app.Activity;
 import android.graphics.Bitmap;
 import android.view.View;
 import android.widget.ImageView;
@@ -144,7 +145,7 @@ public class BandagedCreatorScreen
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  void iconCreationDone(Bitmap bmp)
+  void iconCreationDone(Activity act, Bitmap bmp)
     {
     int numChildren = mObjectView.getChildCount();
     LinearLayout pane = (LinearLayout)mObjectView.getChildAt(numChildren-1);
@@ -152,7 +153,14 @@ public class BandagedCreatorScreen
 
     if( view!=null )
       {
-      view.setImageBitmap(bmp);
+      act.runOnUiThread(new Runnable()
+        {
+        @Override
+        public void run()
+          {
+          view.setImageBitmap(bmp);
+          }
+        });
       }
     else
       {
diff --git a/src/main/java/org/distorted/bandaged/BandagedCreatorWorkerThread.java b/src/main/java/org/distorted/bandaged/BandagedCreatorWorkerThread.java
index 8af52219..eb6ec5df 100644
--- a/src/main/java/org/distorted/bandaged/BandagedCreatorWorkerThread.java
+++ b/src/main/java/org/distorted/bandaged/BandagedCreatorWorkerThread.java
@@ -140,7 +140,7 @@ class BandagedCreatorWorkerThread extends Thread
       if( containsBlackness(tmp,width) ) return i;
       }
 
-    return -1;
+    return 0;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -157,7 +157,7 @@ class BandagedCreatorWorkerThread extends Thread
       if( containsBlackness(tmp,width) ) return i;
       }
 
-    return -1;
+    return width-1;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -176,7 +176,6 @@ class BandagedCreatorWorkerThread extends Thread
 
     int firstRow = computeFirstRow(input,tmp,width,height);
     int lastRow  = computeLastRow(input,tmp,width,height);
-
     int startRow = (firstRow+lastRow+width)/2;
 
     for(int i=0; i<width; i++)
diff --git a/src/main/res/layout/bandaged_pane.xml b/src/main/res/layout/bandaged_pane.xml
index e5018518..e1d4194f 100644
--- a/src/main/res/layout/bandaged_pane.xml
+++ b/src/main/res/layout/bandaged_pane.xml
@@ -10,8 +10,7 @@
         android:id="@+id/bandagedCreatorObjectIcon"
         android:layout_width="match_parent"
         android:layout_height="0dp"
-        android:layout_weight="3.0"
-        android:src="@drawable/ui_difficulty_unchecked"/>
+        android:layout_weight="3.0"/>
 
     <LinearLayout
         android:id="@+id/bandagedCreatorObjectLayout"
