// 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;
import android.graphics.RectF;
import android.view.MotionEvent;
import org.achartengine.chart.AbstractChart;
import org.achartengine.chart.RoundChart;
import org.achartengine.chart.XYChart;
import org.achartengine.renderer.DefaultRenderer;
import org.achartengine.tools.Pan;
import org.achartengine.tools.PanListener;
import org.achartengine.tools.Zoom;
import org.achartengine.tools.ZoomListener;
// Referenced classes of package org.achartengine:
// ITouchHandler, GraphicalView
public class TouchHandler
implements ITouchHandler
{
public TouchHandler(GraphicalView graphicalview, AbstractChart abstractchart)
{
zoomR = new RectF();
graphicalView = graphicalview;
zoomR = graphicalView.getZoomRectangle();
if(abstractchart instanceof XYChart)
mRenderer = ((XYChart)abstractchart).getRenderer();
else
mRenderer = ((RoundChart)abstractchart).getRenderer();
if(mRenderer.isPanEnabled())
mPan = new Pan(abstractchart);
if(mRenderer.isZoomEnabled())
mPinchZoom = new Zoom(abstractchart, true, 1.0F);
}
public void addPanListener(PanListener panlistener)
{
if(mPan != null)
mPan.addPanListener(panlistener);
}
public void addZoomListener(ZoomListener zoomlistener)
{
if(mPinchZoom != null)
mPinchZoom.addZoomListener(zoomlistener);
}
public boolean handleTouch(MotionEvent motionevent)
{
boolean flag;
int i;
flag = true;
i = motionevent.getAction();
if(mRenderer == null || i != 2) goto _L2; else goto _L1
_L1:
if(oldX < 0.0F && oldY < 0.0F) goto _L4; else goto _L3
_L3:
float f = motionevent.getX(0);
float f1 = motionevent.getY(0);
if(motionevent.getPointerCount() > flag && (oldX2 >= 0.0F || oldY2 >= 0.0F) && mRenderer.isZoomEnabled())
{
float f2 = motionevent.getX(flag);
float f3 = motionevent.getY(flag);
float f4 = Math.abs(f - f2);
float f5 = Math.abs(f1 - f3);
float f6 = Math.abs(oldX - oldX2);
float f7 = Math.abs(oldY - oldY2);
float f8;
if(Math.abs(f - oldX) >= Math.abs(f1 - oldY))
f8 = f4 / f6;
else
f8 = f5 / f7;
if((double)f8 > 0.90900000000000003D && (double)f8 < 1.1000000000000001D)
{
mPinchZoom.setZoomRate(f8);
mPinchZoom.apply();
}
oldX2 = f2;
oldY2 = f3;
} else
if(mRenderer.isPanEnabled())
{
mPan.apply(oldX, oldY, f, f1);
oldX2 = 0.0F;
oldY2 = 0.0F;
}
oldX = f;
oldY = f1;
graphicalView.repaint();
_L6:
return flag;
_L2:
if(i == 0)
{
oldX = motionevent.getX(0);
oldY = motionevent.getY(0);
if(mRenderer != null && mRenderer.isZoomEnabled() && zoomR.contains(oldX, oldY))
{
if(oldX < zoomR.left + zoomR.width() / 3F)
graphicalView.zoomIn();
else
if(oldX < zoomR.left + (2.0F * zoomR.width()) / 3F)
graphicalView.zoomOut();
else
graphicalView.zoomReset();
continue; /* Loop/switch isn't completed */
}
} else
if(i == flag || i == 6)
{
oldX = 0.0F;
oldY = 0.0F;
oldX2 = 0.0F;
oldY2 = 0.0F;
if(i == 6)
{
oldX = -1F;
oldY = -1F;
}
}
_L4:
if(mRenderer.isClickEnabled())
flag = false;
if(true) goto _L6; else goto _L5
_L5:
}
public void removePanListener(PanListener panlistener)
{
if(mPan != null)
mPan.removePanListener(panlistener);
}
public void removeZoomListener(ZoomListener zoomlistener)
{
if(mPinchZoom != null)
mPinchZoom.removeZoomListener(zoomlistener);
}
private GraphicalView graphicalView;
private Pan mPan;
private Zoom mPinchZoom;
private DefaultRenderer mRenderer;
private float oldX;
private float oldX2;
private float oldY;
private float oldY2;
private RectF zoomR;
}