package org.schmivits.airball.display.airball; import org.schmivits.airball.airdata.Aircraft; import org.schmivits.airball.display.DisplayConfiguration; import org.schmivits.airball.widget.Container; import org.schmivits.airball.widget.Rectangle; import org.schmivits.airball.widget.Widget; import android.graphics.Paint; public class TotemPole extends Container { private static final float UNIT_SIZE_PROPORTION = 0.025f; private final DisplayConfiguration mConfig; private final Aircraft mAircraft; private final Paint mPaint = new Paint(); private final Widget mTopLine; private final Widget mBottomLine; private final Widget mAlphaBarrier; private final TotemPoleDecoration mLandingReference; private final TotemPoleDecoration mAlphaX; private final TotemPoleDecoration mAlphaY; public TotemPole(DisplayConfiguration config, Aircraft aircraft) { mConfig = config; mAircraft = aircraft; mPaint.setAntiAlias(true); mPaint.setStrokeCap(Paint.Cap.ROUND); mPaint.setColor(config.mPointerColor); mPaint.setStrokeWidth(mConfig.mThickLineThickness); mChildren.add(mTopLine = new Rectangle(mConfig.mPointerColor)); mChildren.add(mBottomLine = new Rectangle(mConfig.mPointerColor)); mChildren.add(mAlphaX = new AlphaX(config)); mChildren.add(mAlphaY = new AlphaY(config)); mChildren.add(mLandingReference = new LandingReference(config)); mChildren.add(mAlphaBarrier = new AlphaBarrier(config)); } @Override protected void onResize() { float unit = getHeight() * UNIT_SIZE_PROPORTION; mAlphaX.setUnitSize(unit); mAlphaX.setY( Scaling.computeY(mAircraft.getAx(), mAircraft, getHeight()) - mAlphaX.getHeight()); centerX(mAlphaX); mAlphaY.setUnitSize(unit); mAlphaY.setY( Scaling.computeY(mAircraft.getAy(), mAircraft, getHeight()) - mAlphaY.getHeight()); centerX(mAlphaY); mLandingReference.setUnitSize(unit); mLandingReference.setY( Scaling.computeY(mAircraft.getAref(), mAircraft, getHeight()) - mLandingReference.getHeight() / 2f); centerX(mLandingReference); float yAlphaCrit = Scaling.computeY(mAircraft.getAs(), mAircraft, getHeight()); mAlphaBarrier.setHeight(getHeight() - yAlphaCrit); mAlphaBarrier.setY(yAlphaCrit); centerX(mAlphaBarrier); mTopLine.setY(0f); mTopLine.setHeight(mLandingReference.getY()); mTopLine.setWidth(mConfig.mThickLineThickness); centerX(mTopLine); mBottomLine.setY(mLandingReference.getY() + mLandingReference.getHeight()); mBottomLine.setHeight(mAlphaBarrier.getY() - mBottomLine.getY()); mBottomLine.setWidth(mConfig.mThickLineThickness); centerX(mBottomLine); } }