X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?p=xscreensaver;a=blobdiff_plain;f=hacks%2Fglx%2Fgltrackball.h;h=ba9e574691e76f46f1eea03d31db976e71d62d39;hp=966db04a688a8a8f469a2112b416119d76641351;hb=4361b69d3178d7fc98d0388f9a223af6c2651aba;hpb=0d6b320def9180cf907ceaed56b23a972a11b757 diff --git a/hacks/glx/gltrackball.h b/hacks/glx/gltrackball.h index 966db04a..ba9e5746 100644 --- a/hacks/glx/gltrackball.h +++ b/hacks/glx/gltrackball.h @@ -1,4 +1,4 @@ -/* gltrackball, Copyright (c) 2002, 2005 Jamie Zawinski +/* gltrackball, Copyright (c) 2002-2017 Jamie Zawinski * GL-flavored wrapper for trackball.c * * Permission to use, copy, modify, distribute, and sell this software and its @@ -18,7 +18,7 @@ typedef struct trackball_state trackball_state; /* Returns a trackball_state object, which encapsulates the stuff necessary to make dragging the mouse on the window of a GL program do the right thing. */ -extern trackball_state *gltrackball_init (void); +extern trackball_state *gltrackball_init (int ignore_device_rotation_p); /* Begin tracking the mouse: Call this when the mouse button goes down. x and y are the mouse position relative to the window. @@ -32,6 +32,10 @@ extern void gltrackball_start (trackball_state *, int x, int y, int w, int h); */ extern void gltrackball_track (trackball_state *, int x, int y, int w, int h); +/* Stop tracking the mouse: Call this when the mouse button goes up. + */ +extern void gltrackball_stop (trackball_state *); + /* Execute the rotations current encapsulated in the trackball_state: this does something analagous to glRotatef(). */ @@ -40,14 +44,29 @@ extern void gltrackball_rotate (trackball_state *); /* Call this when a mouse-wheel click is detected. Clicks act like horizontal or vertical drags. Percent is the length of the drag as a percentage of the screen size. - Button is 'Button4' or 'Button5'. + Button is 'Button4' or 'Button5' (for the vertical wheel) + or 'Button5' or 'Button6' (for the horizontal wheel). + If `flip_p' is true, swap the horizontal and vertical axes. */ void gltrackball_mousewheel (trackball_state *ts, - int button, int percent, int horizontal_p); + int button, int percent, int flip_p); /* Return the quaternion encapsulated by the trackball state. */ extern void gltrackball_get_quaternion (trackball_state *ts, float q[4]); -#endif /* __GLTRACKBALL_H__ */ +/* Reset the trackball to the default unrotated state, + plus an optional initial rotation. + */ +extern void gltrackball_reset (trackball_state *ts, float x, float y); +/* A utility function for event-handler functions: + Handles the various motion and click events related to trackballs. + Returns True if the event was handled. + */ +extern Bool gltrackball_event_handler (XEvent *, + trackball_state *, + int window_width, int window_height, + Bool *button_down_p); + +#endif /* __GLTRACKBALL_H__ */