package com.google.airball.glass; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.view.SurfaceHolder; import com.google.airball.airdata.FlightData; import com.google.airball.display.AirballPFD; import com.google.airball.widget.Widget; public class AirballPainter implements SurfaceHolder.Callback { private SurfaceHolder mHolder; private final FlightData mFlightData; private final Widget mWidget; private final Runnable mUpdateListener = new Runnable() { @Override public void run() { draw(); } }; public AirballPainter(Context context, FlightData flightData) { mFlightData = flightData; mWidget = new AirballPFD(context.getResources(), context.getAssets(), mFlightData, 640f, 480f); } private void draw() { Canvas canvas; try { canvas = mHolder.lockCanvas(); } catch (Exception e) { return; } if (canvas != null) { canvas.drawColor(Color.BLACK); mWidget.draw(canvas); mHolder.unlockCanvasAndPost(canvas); } } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { } @Override public void surfaceCreated(SurfaceHolder holder) { mHolder = holder; mFlightData.addUpdateListener(mUpdateListener); draw(); } @Override public void surfaceDestroyed(SurfaceHolder holder) { mFlightData.removeUpdateListener(mUpdateListener); mHolder = null; draw(); } }