package org.schmivits.airball.display.climbrate; import android.content.res.AssetManager; import android.content.res.Resources; import android.graphics.BitmapFactory; import android.graphics.Canvas; import org.schmivits.airball.base.R; import org.schmivits.airball.display.DisplayConfiguration; import org.schmivits.airball.util.ValueModel; import org.schmivits.airball.widget.Container; import org.schmivits.airball.widget.TiledImage; import org.schmivits.airball.widget.Widget; public class ClimbRateTape extends Container { public interface Model { ValueModel<Float> getClimbRate(); } private final Model mModel; private final Widget mInvalidImage; private final Widget mClimbRateTapeCore; public ClimbRateTape(DisplayConfiguration config, Resources res, AssetManager assets, float x, float y, float w, float h, final Model model) { moveTo(x, y); sizeTo(w, h); float invalidWidth = (float) Math.floor(w / 8); mModel = model; mInvalidImage = new TiledImage(BitmapFactory.decodeResource(res, R.drawable.error_texture)); mInvalidImage.moveTo(0f, 0f); mInvalidImage.sizeTo(invalidWidth, getHeight()); mClimbRateTapeCore = new ClimbRateTapeCore(config, res, assets, 0, 0, w, h, new ClimbRateTapeCore.Model() { @Override public float getClimbRate() { return model.getClimbRate().isValid() ? model.getClimbRate().getValue() : 0f; } }); mChildren.add(mInvalidImage); mChildren.add(mClimbRateTapeCore); } @Override protected void drawContents(Canvas canvas) { if (!mModel.getClimbRate().isValid()) { mInvalidImage.setVisible(true); mClimbRateTapeCore.setVisible(false); } else { mInvalidImage.setVisible(false); mClimbRateTapeCore.setVisible(true); } super.drawContents(canvas); } }