commit c658e74232ef1cb073b0705d77f6f60ff609e6a6
Author: Leszek Koltunski <leszek@distoretedandroid.org>
Date:   Fri Jun 30 15:52:24 2017 +0100

    Add quality levels in 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 6c23f48..b72812a 100644
--- a/src/main/java/org/distorted/examples/glow/GlowActivity.java
+++ b/src/main/java/org/distorted/examples/glow/GlowActivity.java
@@ -22,10 +22,12 @@ package org.distorted.examples.glow;
 import android.app.Activity;
 import android.opengl.GLSurfaceView;
 import android.os.Bundle;
+import android.view.View;
 import android.widget.SeekBar;
 import android.widget.TextView;
 
 import org.distorted.examples.R;
+import org.distorted.library.effect.EffectQuality;
 import org.distorted.library.main.Distorted;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -83,7 +85,7 @@ public class GlowActivity extends Activity implements SeekBar.OnSeekBarChangeLis
       super.onDestroy();
       }
 
-///////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////////////////
 
     public void onProgressChanged(SeekBar bar, int progress, boolean fromUser)
       {
@@ -100,12 +102,47 @@ public class GlowActivity extends Activity implements SeekBar.OnSeekBarChangeLis
         }
       }
 
-///////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////////////////
 
     public void onStartTrackingTouch(SeekBar bar) { }
 
-///////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////////////////
 
     public void onStopTrackingTouch(SeekBar bar)  { }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public void quality0(View v)
+    {
+    GlowSurfaceView view = (GlowSurfaceView) this.findViewById(R.id.glowSurfaceView);
+    GlowRenderer renderer = view.getRenderer();
+    renderer.setQuality(EffectQuality.HIGHEST);
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public void quality1(View v)
+    {
+    GlowSurfaceView view = (GlowSurfaceView) this.findViewById(R.id.glowSurfaceView);
+    GlowRenderer renderer = view.getRenderer();
+    renderer.setQuality(EffectQuality.HIGH);
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public void quality2(View v)
+    {
+    GlowSurfaceView view = (GlowSurfaceView) this.findViewById(R.id.glowSurfaceView);
+    GlowRenderer renderer = view.getRenderer();
+    renderer.setQuality(EffectQuality.MEDIUM);
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public void quality3(View v)
+    {
+    GlowSurfaceView view = (GlowSurfaceView) this.findViewById(R.id.glowSurfaceView);
+    GlowRenderer renderer = view.getRenderer();
+    renderer.setQuality(EffectQuality.LOW);
+    }
 }
diff --git a/src/main/java/org/distorted/examples/glow/GlowRenderer.java b/src/main/java/org/distorted/examples/glow/GlowRenderer.java
index 4f22a62..682eb59 100644
--- a/src/main/java/org/distorted/examples/glow/GlowRenderer.java
+++ b/src/main/java/org/distorted/examples/glow/GlowRenderer.java
@@ -52,6 +52,7 @@ class GlowRenderer implements GLSurfaceView.Renderer
    private GLSurfaceView mView;
    private DistortedTexture mLeaf;
    private DistortedScreen mScreen;
+   private PostprocessEffectGlow mGlow;
    private int mRootW, mRootH;
    private Static3D mMove, mScale;
    private Static1D mRadius;
@@ -71,13 +72,12 @@ class GlowRenderer implements GLSurfaceView.Renderer
       mRadius= new Static1D(25);
       mColor = new Static4D(1.0f,0.0f,0.0f,0.5f); // half-transparent red
 
-      PostprocessEffectGlow glow = new PostprocessEffectGlow(mRadius,mColor);
-      glow.setQuality(EffectQuality.HIGHEST);
+      mGlow  = new PostprocessEffectGlow(mRadius,mColor);
 
       DistortedEffects effects = new DistortedEffects();
       effects.apply(new MatrixEffectMove(mMove));
       effects.apply(new MatrixEffectScale(mScale));
-      effects.apply(glow);
+      effects.apply(mGlow);
 
       mScreen = new DistortedScreen();
       mScreen.attach(mLeaf, effects, new MeshFlat(1,1) );
@@ -85,6 +85,13 @@ class GlowRenderer implements GLSurfaceView.Renderer
       mScreen.setDebug(DistortedScreen.DEBUG_FPS);
       }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+   void setQuality(EffectQuality quality)
+      {
+      mGlow.setQuality(quality);
+      }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
    int setGlowRadius(int glow)
diff --git a/src/main/res/layout/glowlayout.xml b/src/main/res/layout/glowlayout.xml
index ead946d..fd8b436 100644
--- a/src/main/res/layout/glowlayout.xml
+++ b/src/main/res/layout/glowlayout.xml
@@ -60,4 +60,61 @@
                 android:paddingRight="10dp" />
     </LinearLayout>
 
+    <LinearLayout
+        android:id="@+id/linearLayout3"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:gravity="center|fill_horizontal"
+        android:orientation="horizontal"
+        android:background="@color/blue"
+        android:paddingBottom="10dp"
+        android:paddingTop="10dp" >
+
+        <RadioGroup
+            android:id="@+id/glowRadioGroup"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal">
+
+            <RadioButton
+                android:id="@+id/glowRadioQuality0"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:checked="true"
+                android:onClick="quality0"
+                android:text="@string/quality0"
+                android:textSize="14sp"/>
+
+            <RadioButton
+                android:id="@+id/glowRadioQuality1"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:onClick="quality1"
+                android:text="@string/quality1"
+                android:textSize="14sp"/>
+
+            <RadioButton
+                android:id="@+id/glowRadioQuality2"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:onClick="quality2"
+                android:text="@string/quality2"
+                android:textSize="14sp"/>
+
+            <RadioButton
+                android:id="@+id/glowRadioQuality3"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:onClick="quality3"
+                android:text="@string/quality3"
+                android:textSize="14sp"/>
+
+        </RadioGroup>
+
+    </LinearLayout>
+
 </LinearLayout>
