commit 3a4f3ae2ffbebe9e16c978d083767fe5f2142bdb
Author: Leszek Koltunski <leszek@distoretedandroid.org>
Date:   Wed Jun 28 14:46:01 2017 +0100

    Improve 'Glow' app.

diff --git a/src/main/java/org/distorted/examples/glow/GlowActivity.java b/src/main/java/org/distorted/examples/glow/GlowActivity.java
index 1370f13..6c23f48 100644
--- a/src/main/java/org/distorted/examples/glow/GlowActivity.java
+++ b/src/main/java/org/distorted/examples/glow/GlowActivity.java
@@ -32,7 +32,7 @@ import org.distorted.library.main.Distorted;
 
 public class GlowActivity extends Activity implements SeekBar.OnSeekBarChangeListener
 {
-    private TextView textGlow;
+    private TextView textRadius, textAlpha;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -41,8 +41,14 @@ public class GlowActivity extends Activity implements SeekBar.OnSeekBarChangeLis
       {
       super.onCreate(savedState);
       setContentView(R.layout.glowlayout);
-      textGlow = (TextView)findViewById(R.id.glowText);
-      SeekBar bar = (SeekBar)findViewById(R.id.glowSeek);
+
+      textRadius = (TextView)findViewById(R.id.glowTextRadius);
+      SeekBar bar = (SeekBar)findViewById(R.id.glowSeekRadius);
+      bar.setOnSeekBarChangeListener(this);
+      bar.setProgress(50);
+
+      textAlpha = (TextView)findViewById(R.id.glowTextAlpha);
+      bar = (SeekBar)findViewById(R.id.glowSeekAlpha);
       bar.setOnSeekBarChangeListener(this);
       bar.setProgress(50);
       }
@@ -85,9 +91,12 @@ public class GlowActivity extends Activity implements SeekBar.OnSeekBarChangeLis
 
       switch (bar.getId())
         {
-        case R.id.glowSeek: int level = view.getRenderer().setGlow(progress);
-                            textGlow.setText(getString(R.string.glow_placeholder,level));
-                            break;
+        case R.id.glowSeekRadius: int radius = view.getRenderer().setGlowRadius(progress);
+                                  textRadius.setText(getString(R.string.glow_radius_placeholder,radius));
+                                  break;
+        case R.id.glowSeekAlpha : float alpha = view.getRenderer().setGlowAlpha(progress);
+                                  textAlpha.setText(getString(R.string.glow_alpha_placeholder, alpha));
+                                  break;
         }
       }
 
diff --git a/src/main/java/org/distorted/examples/glow/GlowRenderer.java b/src/main/java/org/distorted/examples/glow/GlowRenderer.java
index 238cf54..4bffdae 100644
--- a/src/main/java/org/distorted/examples/glow/GlowRenderer.java
+++ b/src/main/java/org/distorted/examples/glow/GlowRenderer.java
@@ -54,6 +54,7 @@ class GlowRenderer implements GLSurfaceView.Renderer
    private int mRootW, mRootH;
    private Static3D mMove, mScale;
    private Static1D mRadius;
+   private Static4D mColor;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -68,12 +69,12 @@ class GlowRenderer implements GLSurfaceView.Renderer
       mScale = new Static3D(1,1,1);
       mRadius= new Static1D(25);
 
-      Static4D color = new Static4D(1.0f,1.0f,0.0f,0.5f); // half-transparent yellow
+      mColor = new Static4D(1.0f,1.0f,0.0f,0.5f); // half-transparent yellow
 
       DistortedEffects effects = new DistortedEffects();
       effects.apply(new MatrixEffectMove(mMove));
       effects.apply(new MatrixEffectScale(mScale));
-      effects.apply(new PostprocessEffectGlow(mRadius,color));
+      effects.apply(new PostprocessEffectGlow(mRadius,mColor));
 
       mScreen = new DistortedScreen();
       mScreen.attach(mLeaf, effects, new MeshFlat(1,1) );
@@ -81,13 +82,22 @@ class GlowRenderer implements GLSurfaceView.Renderer
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-   int setGlow(int glow)
+   int setGlowRadius(int glow)
      {
      int radius = glow/2;
      mRadius.set(radius);
      return radius;
      }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+   float setGlowAlpha(float glow)
+     {
+     float alpha = glow/100.0f;
+     mColor.set4(alpha);
+     return alpha;
+     }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
    public void onDrawFrame(GL10 glUnused)
diff --git a/src/main/res/layout/glowlayout.xml b/src/main/res/layout/glowlayout.xml
index a1e9e52..ead946d 100644
--- a/src/main/res/layout/glowlayout.xml
+++ b/src/main/res/layout/glowlayout.xml
@@ -18,22 +18,46 @@
         android:orientation="horizontal" >
 
         <TextView
-                android:id="@+id/glowText"
+                android:id="@+id/glowTextRadius"
                 android:layout_width="150dp"
                 android:layout_height="wrap_content"
                 android:layout_weight="0.5"
                 android:gravity="center_vertical|center"
-                android:text="@string/glow"
+                android:text="@string/glow_radius"
                 android:textAppearance="?android:attr/textAppearanceMedium" />
 
         <SeekBar
-                android:id="@+id/glowSeek"
+                android:id="@+id/glowSeekRadius"
                 android:layout_width="fill_parent"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
                 android:paddingLeft="15dp"
                 android:paddingRight="10dp" />
+    </LinearLayout>
+
+    <LinearLayout
+        android:id="@+id/linearLayout2"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:gravity="center|fill_horizontal"
+        android:orientation="horizontal" >
+
+        <TextView
+                android:id="@+id/glowTextAlpha"
+                android:layout_width="150dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="0.5"
+                android:gravity="center_vertical|center"
+                android:text="@string/glow_alpha"
+                android:textAppearance="?android:attr/textAppearanceMedium" />
 
+        <SeekBar
+                android:id="@+id/glowSeekAlpha"
+                android:layout_width="fill_parent"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:paddingLeft="15dp"
+                android:paddingRight="10dp" />
     </LinearLayout>
 
 </LinearLayout>
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index c337e58..8dfad7c 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -14,7 +14,8 @@
     <string name="contrast">Contrast</string>
     <string name="swirl">Swirl</string>
     <string name="blur">Blur</string>
-    <string name="glow">Glow</string>
+    <string name="glow_radius">Radius</string>
+    <string name="glow_alpha">Alpha</string>
 
     <string name="continu">Continue</string>
     <string name="rows">Rows</string>
@@ -85,7 +86,8 @@
     <string name="near_placeholder">Near: %1$.2f</string>
     <string name="wind_placeholder">Wind: %1$d</string>
     <string name="blur_placeholder">Blur: %1$d</string>
-    <string name="glow_placeholder">Glow: %1$d</string>
+    <string name="glow_radius_placeholder">Radius: %1$d</string>
+    <string name="glow_alpha_placeholder">Alpha: %1$.2f</string>
 
     <string name="example_monalisa">Mona Lisa</string>  
     <string name="example_monalisa_subtitle">The basics of Distortions.</string>
