From 461ca7ead68c77f2745e747f89e29b242a192f4a Mon Sep 17 00:00:00 2001 From: Andy Spencer Date: Sun, 29 Apr 2012 04:13:51 +0000 Subject: [PATCH] Limit rotation to -180 .. 180 --- src/grits-viewer.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/grits-viewer.c b/src/grits-viewer.c index 92f6e86..79765e1 100644 --- a/src/grits-viewer.c +++ b/src/grits-viewer.c @@ -61,6 +61,16 @@ static void _grits_viewer_fix_location(GritsViewer *viewer) viewer->location[2] = ABS(viewer->location[2]); } +static void _grits_viewer_fix_rotation(GritsViewer *viewer) +{ + while (viewer->rotation[0] < -180) viewer->rotation[0] += 360; + while (viewer->rotation[0] > 180) viewer->rotation[0] -= 360; + while (viewer->rotation[1] < -180) viewer->rotation[1] += 360; + while (viewer->rotation[1] > 180) viewer->rotation[1] -= 360; + while (viewer->rotation[2] < -180) viewer->rotation[2] += 360; + while (viewer->rotation[2] > 180) viewer->rotation[2] -= 360; +} + /* Signal helpers */ static void _grits_viewer_emit_location_changed(GritsViewer *viewer) { @@ -327,6 +337,7 @@ void grits_viewer_set_rotation(GritsViewer *viewer, gdouble x, gdouble y, gdoubl viewer->rotation[0] = x; viewer->rotation[1] = y; viewer->rotation[2] = z; + _grits_viewer_fix_rotation(viewer); _grits_viewer_emit_rotation_changed(viewer); } @@ -364,6 +375,7 @@ void grits_viewer_rotate(GritsViewer *viewer, gdouble x, gdouble y, gdouble z) viewer->rotation[0] += x; viewer->rotation[1] += y; viewer->rotation[2] += z; + _grits_viewer_fix_rotation(viewer); _grits_viewer_emit_rotation_changed(viewer); } -- 2.43.2