// 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.*; import java.io.Serializable; import java.util.List; import org.achartengine.model.Point; import org.achartengine.model.SeriesSelection; import org.achartengine.renderer.*; public abstract class AbstractChart implements Serializable { public AbstractChart() { } private String getFitText(String s, float f, Paint paint) { int i = s.length(); int j = 0; String s1; for(s1 = s; paint.measureText(s1) > f && j < i; s1 = (new StringBuilder()).append(s.substring(0, i - j)).append("...").toString()) j++; if(j == i) s1 = "..."; return s1; } public abstract void draw(Canvas canvas, int i, int j, int k, int l, Paint paint); protected void drawBackground(DefaultRenderer defaultrenderer, Canvas canvas, int i, int j, int k, int l, Paint paint, boolean flag, int i1) { if(defaultrenderer.isApplyBackgroundColor() || flag) { if(flag) paint.setColor(i1); else paint.setColor(defaultrenderer.getBackgroundColor()); paint.setStyle(android.graphics.Paint.Style.FILL); canvas.drawRect(i, j, i + k, j + l, paint); } } protected void drawLabel(Canvas canvas, String s, DefaultRenderer defaultrenderer, List list, int i, int j, float f, float f1, float f2, float f3, int k, int l, Paint paint) { if(defaultrenderer.isShowLabels()) { paint.setColor(defaultrenderer.getLabelsColor()); double d = Math.toRadians(90F - (f2 + f3 / 2.0F)); double d1 = Math.sin(d); double d2 = Math.cos(d); int i1 = Math.round((float)i + (float)(d1 * (double)f)); int j1 = Math.round((float)j + (float)(d2 * (double)f)); int k1 = Math.round((float)i + (float)(d1 * (double)f1)); int l1 = Math.round((float)j + (float)(d2 * (double)f1)); float f4 = defaultrenderer.getLabelsTextSize(); float f5 = Math.max(f4 / 2.0F, 10F); paint.setTextAlign(android.graphics.Paint.Align.LEFT); if(i1 > k1) { f5 = -f5; paint.setTextAlign(android.graphics.Paint.Align.RIGHT); } float f6 = f5; float f7 = f6 + (float)k1; float f8 = l1; float f9 = (float)l - f7; if(i1 > k1) f9 = f7 - (float)k; String s1 = getFitText(s, f9, paint); float f10 = paint.measureText(s1); boolean flag = false; while(!flag) { boolean flag1 = false; int j2 = list.size(); int k2 = 0; float f11 = f8; while(k2 < j2 && !flag1) { RectF rectf = (RectF)list.get(k2); int i2; boolean flag2; float f12; if(rectf.intersects(f7, f11, f7 + f10, f11 + f4)) { f12 = Math.max(f11, rectf.bottom); flag2 = true; } else { flag2 = flag1; f12 = f11; } k2++; f11 = f12; flag1 = flag2; } if(!flag1) flag = true; else flag = false; f8 = f11; } i2 = (int)(f8 - f4 / 2.0F); canvas.drawLine(i1, j1, k1, i2, paint); canvas.drawLine(k1, i2, f6 + (float)k1, i2, paint); canvas.drawText(s1, f7, f8, paint); list.add(new RectF(f7, f8, f7 + f10, f8 + f4)); } } protected int drawLegend(Canvas canvas, DefaultRenderer defaultrenderer, String as[], int i, int j, int k, int l, int i1, int j1, Paint paint, boolean flag) { float f = 32F; if(defaultrenderer.isShowLegend()) { float f1 = i; float f2 = f + (float)((k + i1) - j1); paint.setTextAlign(android.graphics.Paint.Align.LEFT); paint.setTextSize(defaultrenderer.getLegendTextSize()); int k1 = Math.min(as.length, defaultrenderer.getSeriesRendererCount()); int l1 = 0; while(l1 < k1) { float f3 = getLegendShapeWidth(l1); String s = as[l1]; float af[]; float f4; int i2; if(as.length == defaultrenderer.getSeriesRendererCount()) paint.setColor(defaultrenderer.getSeriesRendererAt(l1).getColor()); else paint.setColor(0xffcccccc); af = new float[s.length()]; paint.getTextWidths(s, af); f4 = 0.0F; i2 = af.length; for(int j2 = 0; j2 < i2; j2++) f4 += af[j2]; float f5 = f4 + (10F + f3); float f6 = f1 + f5; float f7; String s1; if(l1 > 0 && getExceed(f6, defaultrenderer, j, l)) { f1 = i; f2 += defaultrenderer.getLegendTextSize(); float f9 = f + defaultrenderer.getLegendTextSize(); f6 = f1 + f5; f7 = f9; } else { f7 = f; } if(getExceed(f6, defaultrenderer, j, l)) { float f8 = (float)j - f1 - f3 - 10F; if(isVertical(defaultrenderer)) f8 = (float)l - f1 - f3 - 10F; int k2 = paint.breakText(s, true, f8, af); s1 = (new StringBuilder()).append(s.substring(0, k2)).append("...").toString(); } else { s1 = s; } if(!flag) { drawLegendShape(canvas, defaultrenderer.getSeriesRendererAt(l1), f1, f2, l1, paint); canvas.drawText(s1, 5F + (f1 + f3), 5F + f2, paint); } f1 += f5; l1++; f = f7; } } return Math.round(f + defaultrenderer.getLegendTextSize()); } public abstract void drawLegendShape(Canvas canvas, SimpleSeriesRenderer simpleseriesrenderer, float f, float f1, int i, Paint paint); protected void drawPath(Canvas canvas, float af[], Paint paint, boolean flag) { Path path = new Path(); path.moveTo(af[0], af[1]); for(int i = 2; i < af.length; i += 2) path.lineTo(af[i], af[i + 1]); if(flag) path.lineTo(af[0], af[1]); canvas.drawPath(path, paint); } protected boolean getExceed(float f, DefaultRenderer defaultrenderer, int i, int j) { boolean flag = true; boolean flag1; if(f > (float)i) flag1 = flag; else flag1 = false; if(isVertical(defaultrenderer)) { if(f <= (float)j) flag = false; } else { flag = flag1; } return flag; } public abstract int getLegendShapeWidth(int i); protected int getLegendSize(DefaultRenderer defaultrenderer, int i, float f) { int j = defaultrenderer.getLegendHeight(); if(!defaultrenderer.isShowLegend() || j != 0) i = j; if(!defaultrenderer.isShowLegend() && defaultrenderer.isShowLabels()) i = (int)(f + (4F * defaultrenderer.getLabelsTextSize()) / 3F); return i; } public SeriesSelection getSeriesAndPointForScreenCoordinate(Point point) { return null; } protected boolean isVertical(DefaultRenderer defaultrenderer) { boolean flag; if((defaultrenderer instanceof XYMultipleSeriesRenderer) && ((XYMultipleSeriesRenderer)defaultrenderer).getOrientation() == org.achartengine.renderer.XYMultipleSeriesRenderer.Orientation.VERTICAL) flag = true; else flag = false; return flag; } }