aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuel Tardieu <sam@rfc1149.net>2014-03-22 10:08:28 +0100
committerSamuel Tardieu <sam@rfc1149.net>2014-03-22 10:44:31 +0100
commit35aac9930fc3441fb2d0d627a077b9e9b7c73f80 (patch)
treeeb59b2afeeaeb78d8b05d967aa198f33d829ac48
parent5d66185b88a29abfee73d84d2a124f00060faf68 (diff)
downloadcgeo-35aac9930fc3441fb2d0d627a077b9e9b7c73f80.zip
cgeo-35aac9930fc3441fb2d0d627a077b9e9b7c73f80.tar.gz
cgeo-35aac9930fc3441fb2d0d627a077b9e9b7c73f80.tar.bz2
Do not try to compute the reverse canvas rotation by hand
save() and restore() are more adequate to restore the initial state and prevent rounding errors.
-rw-r--r--main/src/cgeo/geocaching/ui/CompassView.java6
1 files changed, 4 insertions, 2 deletions
diff --git a/main/src/cgeo/geocaching/ui/CompassView.java b/main/src/cgeo/geocaching/ui/CompassView.java
index 9529a15..eaaf711 100644
--- a/main/src/cgeo/geocaching/ui/CompassView.java
+++ b/main/src/cgeo/geocaching/ui/CompassView.java
@@ -196,16 +196,18 @@ public class CompassView extends View {
marginLeftTemp = (getWidth() - compassRoseWidth) / 2;
marginTopTemp = (getHeight() - compassRoseHeight) / 2;
+ canvas.save();
canvas.rotate(-azimuthTemp, canvasCenterX, canvasCenterY);
canvas.drawBitmap(compassRose, marginLeftTemp, marginTopTemp, null);
- canvas.rotate(azimuthTemp, canvasCenterX, canvasCenterY);
+ canvas.restore();
marginLeftTemp = (getWidth() - compassArrowWidth) / 2;
marginTopTemp = (getHeight() - compassArrowHeight) / 2;
+ canvas.save();
canvas.rotate(-azimuthRelative, canvasCenterX, canvasCenterY);
canvas.drawBitmap(compassArrow, marginLeftTemp, marginTopTemp, null);
- canvas.rotate(azimuthRelative, canvasCenterX, canvasCenterY);
+ canvas.restore();
marginLeftTemp = (getWidth() - compassOverlayWidth) / 2;
marginTopTemp = (getHeight() - compassOverlayHeight) / 2;