// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.kpdus.com/jad.html
// Decompiler options: packimports(3)
package org.achartengine.chart;
import android.graphics.Canvas;
import android.graphics.Paint;
import org.achartengine.model.CategorySeries;
import org.achartengine.renderer.DialRenderer;
import org.achartengine.renderer.SimpleSeriesRenderer;
// Referenced classes of package org.achartengine.chart:
// RoundChart
public class DialChart extends RoundChart
{
public DialChart(CategorySeries categoryseries, DialRenderer dialrenderer)
{
super(categoryseries, dialrenderer);
mRenderer = dialrenderer;
}
private void drawNeedle(Canvas canvas, double d, int i, int j, double d1,
boolean flag, Paint paint)
{
double d2 = Math.toRadians(90D);
int k = (int)(10D * Math.sin(d - d2));
int l = (int)(10D * Math.cos(d - d2));
int i1 = (int)(d1 * Math.sin(d));
int j1 = (int)(d1 * Math.cos(d));
int k1 = i + i1;
int l1 = j + j1;
float af[];
if(flag)
{
int i2 = i + (int)(0.84999999999999998D * d1 * Math.sin(d));
int j2 = j + (int)(0.84999999999999998D * d1 * Math.cos(d));
float af1[] = new float[6];
af1[0] = i2 - k;
af1[1] = j2 - l;
af1[2] = k1;
af1[3] = l1;
af1[4] = i2 + k;
af1[5] = l + j2;
float f = paint.getStrokeWidth();
paint.setStrokeWidth(5F);
canvas.drawLine(i, j, k1, l1, paint);
paint.setStrokeWidth(f);
af = af1;
} else
{
af = new float[6];
af[0] = i - k;
af[1] = j - l;
af[2] = k1;
af[3] = l1;
af[4] = k + i;
af[5] = l + j;
}
drawPath(canvas, af, paint, true);
}
private void drawTicks(Canvas canvas, double d, double d1, double d2,
double d3, int i, int j, double d4, double d5, double d6, Paint paint, boolean flag)
{
for(double d7 = d; d7 <= d1; d7 += d6)
{
double d8 = getAngleForValue(d7, d2, d3, d, d1);
double d9 = Math.sin(d8);
double d10 = Math.cos(d8);
int k = Math.round((float)i + (float)(d5 * d9));
int l = Math.round((float)j + (float)(d5 * d10));
int i1 = Math.round((float)i + (float)(d9 * d4));
int j1 = Math.round((float)j + (float)(d10 * d4));
canvas.drawLine(k, l, i1, j1, paint);
if(!flag)
continue;
paint.setTextAlign(android.graphics.Paint.Align.LEFT);
if(k <= i1)
paint.setTextAlign(android.graphics.Paint.Align.RIGHT);
String s = (new StringBuilder()).append(d7).append("").toString();
if(Math.round(d7) == (long)d7)
s = (new StringBuilder()).append((long)d7).append("").toString();
canvas.drawText(s, k, l, paint);
}
}
private double getAngleForValue(double d, double d1, double d2, double d3, double d4)
{
double d5 = d2 - d1;
double d6 = d4 - d3;
return Math.toRadians(d1 + (d5 * (d - d3)) / d6);
}
public void draw(Canvas canvas, int i, int j, int k, int l, Paint paint)
{
paint.setAntiAlias(mRenderer.isAntialiasing());
paint.setStyle(android.graphics.Paint.Style.FILL);
paint.setTextSize(mRenderer.getLabelsTextSize());
int i1 = getLegendSize(mRenderer, l / 5, 0.0F);
int j1 = i + k;
int k1 = mDataset.getItemCount();
String as[] = new String[k1];
for(int l1 = 0; l1 < k1; l1++)
as[l1] = mDataset.getCategory(l1);
int i2;
int j2;
int k2;
float f;
float f1;
double d;
double d1;
double d2;
double d3;
double d6;
double d7;
int j3;
int k3;
if(mRenderer.isFitLegend())
i2 = drawLegend(canvas, mRenderer, as, i, j1, j, k, l, i1, paint, true);
else
i2 = i1;
j2 = (j + l) - i2;
drawBackground(mRenderer, canvas, i, j, k, l, paint, false, 0);
k2 = (int)(0.34999999999999998D * (double)Math.min(Math.abs(j1 - i), Math.abs(j2 - j)) * (double)mRenderer.getScale());
if(mCenterX == 0x7fffffff)
mCenterX = (i + j1) / 2;
if(mCenterY == 0x7fffffff)
mCenterY = (j2 + j) / 2;
f = 0.9F * (float)k2;
f1 = 1.1F * (float)k2;
d = mRenderer.getMinValue();
d1 = mRenderer.getMaxValue();
d2 = mRenderer.getAngleMin();
d3 = mRenderer.getAngleMax();
if(!mRenderer.isMinValueSet() || !mRenderer.isMaxValueSet())
{
int l2 = mRenderer.getSeriesRendererCount();
int i3 = 0;
double d4 = d1;
double d5 = d;
for(; i3 < l2; i3++)
{
double d9 = mDataset.getValue(i3);
if(!mRenderer.isMinValueSet())
d5 = Math.min(d5, d9);
if(!mRenderer.isMaxValueSet())
d4 = Math.max(d4, d9);
}
d1 = d4;
d = d5;
}
if(d == d1)
{
d *= 0.5D;
d1 *= 1.5D;
}
paint.setColor(mRenderer.getLabelsColor());
d6 = mRenderer.getMinorTicksSpacing();
d7 = mRenderer.getMajorTicksSpacing();
if(d6 == 1.7976931348623157E+308D)
d6 = (d1 - d) / 30D;
if(d7 == 1.7976931348623157E+308D)
d7 = (d1 - d) / 10D;
drawTicks(canvas, d, d1, d2, d3, mCenterX, mCenterY, f1, k2, d6, paint, false);
drawTicks(canvas, d, d1, d2, d3, mCenterX, mCenterY, f1, f, d7, paint, true);
j3 = mRenderer.getSeriesRendererCount();
k3 = 0;
while(k3 < j3)
{
double d8 = getAngleForValue(mDataset.getValue(k3), d2, d3, d, d1);
paint.setColor(mRenderer.getSeriesRendererAt(k3).getColor());
boolean flag;
if(mRenderer.getVisualTypeForIndex(k3) == org.achartengine.renderer.DialRenderer.Type.ARROW)
flag = true;
else
flag = false;
drawNeedle(canvas, d8, mCenterX, mCenterY, f, flag, paint);
k3++;
}
drawLegend(canvas, mRenderer, as, i, j1, j, k, l, i2, paint, false);
drawTitle(canvas, i, j, k, paint);
}
private static final int NEEDLE_RADIUS = 10;
private DialRenderer mRenderer;
}