commit dea555b94d83046902b3ceb989cdb58dedd8bb66
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Tue Jul 16 22:42:54 2019 +0100

    Add the 'convexity' param to Dynamics and the Dynamic app.

diff --git a/src/main/java/org/distorted/examples/dynamic/DynamicActivity.java b/src/main/java/org/distorted/examples/dynamic/DynamicActivity.java
index 667dd00..a96583b 100644
--- a/src/main/java/org/distorted/examples/dynamic/DynamicActivity.java
+++ b/src/main/java/org/distorted/examples/dynamic/DynamicActivity.java
@@ -41,7 +41,7 @@ import android.widget.Toast;
 
 public class DynamicActivity extends Activity implements OnSeekBarChangeListener, AdapterView.OnItemSelectedListener
     {
-    private TextView textD, textC, textN;
+    private TextView textD, textC, textN, textX;
     private int p0,p1,p2;
     private int mDim, mMode;
 
@@ -55,6 +55,7 @@ public class DynamicActivity extends Activity implements OnSeekBarChangeListener
 
       textD = findViewById(R.id.dynamicTextDuration);
       textC = findViewById(R.id.dynamicTextCount);
+      textX = findViewById(R.id.dynamicTextConvexity);
       textN = findViewById(R.id.dynamicTextNoise);
 
       p0=p1=p2=0;
@@ -65,6 +66,8 @@ public class DynamicActivity extends Activity implements OnSeekBarChangeListener
       barD.setOnSeekBarChangeListener(this);
       SeekBar barC = findViewById(R.id.dynamicSeekCount);
       barC.setOnSeekBarChangeListener(this);
+      SeekBar barX = findViewById(R.id.dynamicSeekConvexity);
+      barX.setOnSeekBarChangeListener(this);
       SeekBar bar0 = findViewById(R.id.dynamicSeekNoise0);
       bar0.setOnSeekBarChangeListener(this);
       SeekBar bar1 = findViewById(R.id.dynamicSeekNoise1);
@@ -94,6 +97,7 @@ public class DynamicActivity extends Activity implements OnSeekBarChangeListener
         {
         barD.setProgress(50);
         barC.setProgress(20);
+        barX.setProgress(50);
         bar0.setProgress(0);
         bar1.setProgress(0);
         bar2.setProgress(0);
@@ -285,6 +289,12 @@ public class DynamicActivity extends Activity implements OnSeekBarChangeListener
         view.setCount(count);
         textC.setText(getString(R.string.count_placeholder, count ));
         }
+      else if( id == R.id.dynamicSeekConvexity )
+        {
+        float convexity = progress/25.0f - 1.0f;
+        view.setConvexity(convexity);
+        textX.setText(getString(R.string.convexity_placeholder, convexity ));
+        }
       else
         {
         switch(id)
diff --git a/src/main/java/org/distorted/examples/dynamic/DynamicSurfaceView.java b/src/main/java/org/distorted/examples/dynamic/DynamicSurfaceView.java
index e010e61..12bd0c1 100644
--- a/src/main/java/org/distorted/examples/dynamic/DynamicSurfaceView.java
+++ b/src/main/java/org/distorted/examples/dynamic/DynamicSurfaceView.java
@@ -202,6 +202,15 @@ public class DynamicSurfaceView extends GLSurfaceView
       di3D.setCount(count);
       }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+    public void setConvexity(float convexity)
+      {
+      di1D.setConvexity(convexity);
+      di2D.setConvexity(convexity);
+      di3D.setConvexity(convexity);
+      }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
     public void setNoise(float noise0, float noise1, float noise2)
@@ -436,11 +445,11 @@ public class DynamicSurfaceView extends GLSurfaceView
       {
       float gx,gy,gz;
       int len;
-      
+
       switch(currentDim)
         {
         case DIM_1D: len = di1D.getNumPoints();
-                
+
                      for(int g=0; g<len; g++)
                        {
                        p1D = di1D.getPoint(g);  
diff --git a/src/main/res/layout/dynamicslayout.xml b/src/main/res/layout/dynamicslayout.xml
index 401945a..2917555 100644
--- a/src/main/res/layout/dynamicslayout.xml
+++ b/src/main/res/layout/dynamicslayout.xml
@@ -41,7 +41,7 @@
             <LinearLayout
                 android:layout_width="wrap_content"
                 android:layout_height="fill_parent"
-                android:layout_weight="0.5"
+                android:layout_weight="1"
                 android:layout_gravity="center_vertical"
                 android:gravity="center|fill_horizontal"
                 android:orientation="vertical">
@@ -54,20 +54,12 @@
                     android:text="@string/duration"
                     android:textAppearance="?android:attr/textAppearanceMedium"
                     android:textSize="12sp" />
-
-                <SeekBar
-                    android:id="@+id/dynamicSeekDuration"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:paddingStart="10dp"
-                    android:paddingEnd="10dp" />
-
             </LinearLayout>
 
             <LinearLayout
                 android:layout_width="wrap_content"
                 android:layout_height="fill_parent"
-                android:layout_weight="0.5"
+                android:layout_weight="1"
                 android:layout_gravity="center_vertical"
                 android:gravity="center|fill_horizontal"
                 android:orientation="vertical">
@@ -80,16 +72,57 @@
                     android:text="@string/count"
                     android:textAppearance="?android:attr/textAppearanceMedium"
                     android:textSize="12sp" />
+            </LinearLayout>
 
-                <SeekBar
-                    android:id="@+id/dynamicSeekCount"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:paddingStart="5dp"
-                    android:paddingEnd="10dp" />
+            <LinearLayout
+                android:layout_width="wrap_content"
+                android:layout_height="fill_parent"
+                android:layout_weight="1"
+                android:layout_gravity="center_vertical"
+                android:gravity="center|fill_horizontal"
+                android:orientation="vertical">
 
+                <TextView
+                    android:id="@+id/dynamicTextConvexity"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center_horizontal"
+                    android:text="@string/convexity"
+                    android:textAppearance="?android:attr/textAppearanceMedium"
+                    android:textSize="12sp" />
             </LinearLayout>
+        </LinearLayout>
+
+        <LinearLayout
+            android:orientation="horizontal"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_weight="15"
+            android:paddingBottom="5dp">
+
+            <SeekBar
+                android:id="@+id/dynamicSeekDuration"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:paddingLeft="10dp"
+                android:paddingRight="5dp" />
+
+            <SeekBar
+                android:id="@+id/dynamicSeekCount"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:paddingLeft="5dp"
+                android:paddingRight="5dp" />
 
+            <SeekBar
+                android:id="@+id/dynamicSeekConvexity"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:paddingLeft="5dp"
+                android:paddingRight="10dp" />
         </LinearLayout>
 
         <TextView
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index f520cf5..aa08fd4 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -42,6 +42,7 @@
     <string name="print">Print</string>
     <string name="abort">Abort</string>
     <string name="count">Count</string>
+    <string name="convexity">Convex</string>
     <string name="maxv">vertex:</string>
     <string name="maxf">fragment:</string>
     <string name="introduction">Set maximum number of vertex and fragment effects and press \'Check\' to see if shaders compile:</string>
@@ -117,6 +118,7 @@
     <string name="rubik_placeholder">Cube: %1$d Available Memory: %2$d MB</string>
     <string name="duration_placeholder">Duration: %1$d s</string>
     <string name="count_placeholder">Count: %1$.2f</string>
+    <string name="convexity_placeholder">Convexity: %1$.2f</string>
     <string name="noise2_placeholder">Noise: %1$.2f %2$.2f %3$.2f</string>
 
     <string name="example_monalisa">Mona Lisa</string>
