diff options
| author | Samuel Tardieu <sam@rfc1149.net> | 2011-09-16 14:36:28 +0200 |
|---|---|---|
| committer | Samuel Tardieu <sam@rfc1149.net> | 2011-09-16 14:36:28 +0200 |
| commit | 579ef7a535489d4aa632db11667a3b01deb6cafd (patch) | |
| tree | 55810021c02ac7d80d3a9702ef0b59e4af154b9c /src/cgeo/geocaching/cgCompassMini.java | |
| parent | 96ea21fd50334479c262da692038965d0e4d596a (diff) | |
| download | cgeo-579ef7a535489d4aa632db11667a3b01deb6cafd.zip cgeo-579ef7a535489d4aa632db11667a3b01deb6cafd.tar.gz cgeo-579ef7a535489d4aa632db11667a3b01deb6cafd.tar.bz2 | |
Move sources into the main directory
This prepares the inclusion of tests into the same repository.
Diffstat (limited to 'src/cgeo/geocaching/cgCompassMini.java')
| -rw-r--r-- | src/cgeo/geocaching/cgCompassMini.java | 172 |
1 files changed, 0 insertions, 172 deletions
diff --git a/src/cgeo/geocaching/cgCompassMini.java b/src/cgeo/geocaching/cgCompassMini.java deleted file mode 100644 index 2a9f550..0000000 --- a/src/cgeo/geocaching/cgCompassMini.java +++ /dev/null @@ -1,172 +0,0 @@ -package cgeo.geocaching; - -import cgeo.geocaching.geopoint.Geopoint; - -import android.content.Context; -import android.content.res.TypedArray; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.Canvas; -import android.graphics.Paint; -import android.graphics.PaintFlagsDrawFilter; -import android.util.AttributeSet; -import android.view.View; - -public class cgCompassMini extends View { - private int arrowSkin = R.drawable.compass_arrow_mini_white; - private Context context = null; - private Geopoint cacheCoords = null; - private Bitmap compassArrow = null; - private float azimuth = 0; - private float heading = 0; - private PaintFlagsDrawFilter setfil = null; - private PaintFlagsDrawFilter remfil = null; - - public cgCompassMini(Context contextIn) { - super(contextIn); - context = contextIn; - } - - public cgCompassMini(Context contextIn, AttributeSet attrs) { - super(contextIn, attrs); - context = contextIn; - - TypedArray attributes = context.obtainStyledAttributes(attrs, R.styleable.cgCompassMini); - int usedSkin = attributes.getInt(R.styleable.cgCompassMini_skin, 0); - if (usedSkin == 1) { - arrowSkin = R.drawable.compass_arrow_mini_black; - } else { - arrowSkin = R.drawable.compass_arrow_mini_white; - } - } - - @Override - public void onAttachedToWindow() { - compassArrow = BitmapFactory.decodeResource(context.getResources(), arrowSkin); - - setfil = new PaintFlagsDrawFilter(0, Paint.FILTER_BITMAP_FLAG); - remfil = new PaintFlagsDrawFilter(Paint.FILTER_BITMAP_FLAG, 0); - } - - @Override - public void onDetachedFromWindow() { - if (compassArrow != null) { - compassArrow.recycle(); - compassArrow = null; - } - } - - public void setContent(final Geopoint cacheCoordsIn) { - cacheCoords = cacheCoordsIn; - } - - protected void updateAzimuth(float azimuthIn) { - azimuth = azimuthIn; - - updateDirection(); - } - - protected void updateHeading(float headingIn) { - heading = headingIn; - - updateDirection(); - } - - protected void updateCoords(final Geopoint coordsIn) { - if (coordsIn == null || cacheCoords == null) { - return; - } - - heading = coordsIn.bearingTo(cacheCoords); - - updateDirection(); - } - - protected void updateDirection() { - if (compassArrow == null || compassArrow.isRecycled()) { - return; - } - - // compass margins - int compassRoseWidth = compassArrow.getWidth(); - int compassRoseHeight = compassArrow.getWidth(); - int marginLeft = (getWidth() - compassRoseWidth) / 2; - int marginTop = (getHeight() - compassRoseHeight) / 2; - - invalidate(marginLeft, marginTop, (marginLeft + compassRoseWidth), (marginTop + compassRoseHeight)); - } - - @Override - protected void onDraw(Canvas canvas) { - super.onDraw(canvas); - - float azimuthRelative = azimuth - heading; - if (azimuthRelative < 0) { - azimuthRelative = azimuthRelative + 360; - } else if (azimuthRelative >= 360) { - azimuthRelative = azimuthRelative - 360; - } - - // compass margins - canvas.setDrawFilter(setfil); - - int marginLeft = 0; - int marginTop = 0; - - int compassArrowWidth = compassArrow.getWidth(); - int compassArrowHeight = compassArrow.getWidth(); - - int canvasCenterX = (compassArrowWidth / 2) + ((getWidth() - compassArrowWidth) / 2); - int canvasCenterY = (compassArrowHeight / 2) + ((getHeight() - compassArrowHeight) / 2); - - marginLeft = (getWidth() - compassArrowWidth) / 2; - marginTop = (getHeight() - compassArrowHeight) / 2; - - canvas.rotate(-azimuthRelative, canvasCenterX, canvasCenterY); - canvas.drawBitmap(compassArrow, marginLeft, marginTop, null); - canvas.rotate(azimuthRelative, canvasCenterX, canvasCenterY); - - canvas.setDrawFilter(remfil); - } - - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - setMeasuredDimension(measureWidth(widthMeasureSpec), measureHeight(heightMeasureSpec)); - } - - private int measureWidth(int measureSpec) { - int result = 0; - int specMode = MeasureSpec.getMode(measureSpec); - int specSize = MeasureSpec.getSize(measureSpec); - - if (specMode == MeasureSpec.EXACTLY) { - result = specSize; - } else { - result = 21 + getPaddingLeft() + getPaddingRight(); - - if (specMode == MeasureSpec.AT_MOST) { - result = Math.min(result, specSize); - } - } - - return result; - } - - private int measureHeight(int measureSpec) { - int result = 0; - int specMode = MeasureSpec.getMode(measureSpec); - int specSize = MeasureSpec.getSize(measureSpec); - - if (specMode == MeasureSpec.EXACTLY) { - result = specSize; - } else { - result = 21 + getPaddingTop() + getPaddingBottom(); - - if (specMode == MeasureSpec.AT_MOST) { - result = Math.min(result, specSize); - } - } - - return result; - } -}
\ No newline at end of file |
