aboutsummaryrefslogtreecommitdiffstats
path: root/src/cgeo/geocaching/cgCompassMini.java
diff options
context:
space:
mode:
authorSamuel Tardieu <sam@rfc1149.net>2011-09-16 14:36:28 +0200
committerSamuel Tardieu <sam@rfc1149.net>2011-09-16 14:36:28 +0200
commit579ef7a535489d4aa632db11667a3b01deb6cafd (patch)
tree55810021c02ac7d80d3a9702ef0b59e4af154b9c /src/cgeo/geocaching/cgCompassMini.java
parent96ea21fd50334479c262da692038965d0e4d596a (diff)
downloadcgeo-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.java172
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