package com.algobase.share.chart;

import android.content.Context;

import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Color;
import android.graphics.RectF;

import android.util.AttributeSet;

public class PointChartView extends ChartView {

   public float r1;
   public float r2;

   public PointChartView(Context context) 
   { super(context);
     isBarView = false;
    }

   public PointChartView(Context context, AttributeSet attr) 
   { super(context,attr);
     isBarView = false;
    }

   public PointChartView(Context context, AttributeSet attr, int defStyle) 
   { super(context,attr,defStyle);
     isBarView = false;
    }


  private float xpix(double x) { 
    return (float)(marginLeft + chartWidth * (x-xMin)/(xMax-xMin));
  }

  private float ypix(double y) { 
    return (float)(chartHeight + marginTop - chartHeight*(y-yMin)/(yMax-yMin));
  }

  private float float2pix(double d) { 
    return (float)(d*chartWidth/(xMax-xMin));
  }


  public void drawChart(Canvas canvas, int s)
  {
    ChartViewSeries series = chartList.get(s);
    int len = series.values.size();
    if (len == 0) return;

    paint.setStrokeCap(Paint.Cap.ROUND);
    paint.setStrokeWidth(series.line_width); 
    paint.setColor(series.color); 
    paint.setStyle(Paint.Style.FILL);

    float sum_x = 0;
    float sum_y = 0;

    for (int i = 0; i < len; i++) 
    { ChartViewData data = series.values.get(i);
      if (data == null) continue;

       sum_x += data.valueX;
       sum_y += data.valueY;

      if (data.color != 0) 
        paint.setColor(data.color);
      else
        paint.setColor(series.color);

      float r = 10;
      canvas.drawCircle(xpix(data.valueX),ypix(data.valueY),r,paint);
    }

    paint.setColor(0xff000000);
    paint.setStrokeWidth(1);
    paint.setStyle(Paint.Style.STROKE);

    float x1 = xpix(xMin);
    float y1 = ypix(yMin);
    float x2 = xpix(xMax);
    float y2 = ypix(yMax);
    canvas.drawLine(x1,y1,x2,y2,paint);

    double alpha = Math.atan2(y2-y1,x2-x1);
    float deg = (float)Math.toDegrees(alpha);

    float center_x = xpix(sum_x/len);
    float center_y = ypix(sum_y/len);

    canvas.save();

    canvas.translate(center_x,center_y);
    canvas.rotate(deg);

    float rp1 = 2*float2pix(r1); 
    float rp2 = 2*float2pix(r2); 
    RectF rect = new RectF(-rp1,-rp2,rp1,rp2);


    paint.setStyle(Paint.Style.FILL);
    paint.setColor(0x0c000000);
    canvas.drawOval(rect,paint);

    paint.setStrokeWidth(3);
    //paint.setColor(0xffee0000);
    paint.setColor(0xffff0000);
    paint.setStyle(Paint.Style.STROKE);
    canvas.drawOval(rect,paint);

    canvas.restore();
  }

}

