commit 1f19a4d038e607e44a7b87a4fc4fd26ddfaafa2a
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Mon May 20 14:03:34 2019 +0100

    Improve the Dynamic app.

diff --git a/src/main/java/org/distorted/examples/dynamic/DynamicSpeedSurfaceView.java b/src/main/java/org/distorted/examples/dynamic/DynamicSpeedSurfaceView.java
index ec25bcb..bf0937c 100644
--- a/src/main/java/org/distorted/examples/dynamic/DynamicSpeedSurfaceView.java
+++ b/src/main/java/org/distorted/examples/dynamic/DynamicSpeedSurfaceView.java
@@ -34,7 +34,7 @@ import org.distorted.library.type.Dynamic;
 class DynamicSpeedSurfaceView extends SurfaceView implements SurfaceHolder.Callback
 {
     private static final int FRAME_INTERVAL = 70;
-    private static final int NUM_POINTS     = DynamicSurfaceView.NUM_POINTS;
+    private static final int NUM_POINTS     = 400;
 
     private static boolean refreshScreen = true;
     private GraphicsThread mThread;
@@ -42,8 +42,7 @@ class DynamicSpeedSurfaceView extends SurfaceView implements SurfaceHolder.Callb
     private int mMode, mNumRedPoints, mPointSize;
     private float mFontHeight;
     private Paint mPaint;
-    private float[] mPoints = new float[2*NUM_POINTS];
-    private int mPosition;
+    private float[] mPoints = new float[NUM_POINTS];
     private float mMultiplier;
 
 /////////////////////////////////////////////////////////////////////////////////////////
@@ -115,7 +114,6 @@ class DynamicSpeedSurfaceView extends SurfaceView implements SurfaceHolder.Callb
       super(context,attrs);
 
       mNumRedPoints = 0;
-      mPosition     = 0;
 
       mPaint = new Paint();
       mPaint.setAntiAlias(true);
@@ -158,11 +156,11 @@ class DynamicSpeedSurfaceView extends SurfaceView implements SurfaceHolder.Callb
         {
         mPaint.setColor(0xff007d00);
         c.drawRect(0, 0, mWidth, mHeight, mPaint);
-        mPaint.setColor(0xff000000);
-        c.drawText( "Speed", mWidth/2, mMargin, mPaint);
         drawAxis(c);
         drawSpeedGraph(c);
         drawRedPoints(c);
+        mPaint.setColor(0xff000000);
+        c.drawText( "Speed", mWidth*0.5f, mMargin, mPaint);
         }
       }
 
@@ -214,17 +212,18 @@ class DynamicSpeedSurfaceView extends SurfaceView implements SurfaceHolder.Callb
     private void drawSpeedGraph(Canvas c)
       {
       mPaint.setColor(0xffffffff);
-      float y, highiest=0.0f;
+      float x,y, highiest=0.0f;
 
       for(int i=0; i<NUM_POINTS; i++)
         {
-        y = mPoints[2*i+1];
-        c.drawCircle( mMargin+mPoints[2*i]*(mWidth-2*mMargin), mHeight-mMargin-mMultiplier*y , mPointSize*0.3f, mPaint );
+        x = ((float)(i*(mWidth-2*mMargin)))/NUM_POINTS;
+        y = mPoints[i];
+        c.drawCircle( mMargin+x, mHeight-mMargin-mMultiplier*y , mPointSize*0.3f, mPaint );
 
         if( y>highiest ) highiest = y;
         }
 
-      mMultiplier = (mHeight-2*mMargin)/highiest;
+      mMultiplier = (mHeight-3*mMargin)/highiest;
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -239,9 +238,9 @@ class DynamicSpeedSurfaceView extends SurfaceView implements SurfaceHolder.Callb
 
     void clearPoints()
       {
-      for(int i=0; i<2*NUM_POINTS; i++)
+      for(int i=0; i<NUM_POINTS; i++)
          {
-         mPoints[i] = -10.0f;
+         mPoints[i] = -100.0f;
          }
       refreshScreen = true;
       }
@@ -250,12 +249,16 @@ class DynamicSpeedSurfaceView extends SurfaceView implements SurfaceHolder.Callb
 
     void addPoint(float x, float y)
       {
-      mPoints[2*mPosition  ] =x;
-      mPoints[2*mPosition+1] =y;
-
-      if ( ++mPosition >= NUM_POINTS ) mPosition=0;
-
-      refreshScreen = true;
+      if( x>=0.0f && x<=1.0f )
+        {
+        int pos = (int)((NUM_POINTS-1)*x);
+        mPoints[pos] =y;
+        refreshScreen = true;
+        }
+      else
+        {
+        android.util.Log.e("speed", "ERROR adding new Speed Point, x="+x);
+        }
       }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
