int dy = mouse_y - prev_my;
if(dx || dy) {
- if(mouse_bmask & 1) {
+ if(mouse_bmask & MOUSE_LEFT) {
float p = *phi;
*theta += dx * 1.0;
p += dy * 1.0;
if(p > 90) p = 90;
*phi = p;
}
- if(mouse_bmask & 4) {
+ if(mouse_bmask & MOUSE_RIGHT) {
*dist += dy * 0.5;
if(*dist < 0) *dist = 0;
extern int mouse_x, mouse_y;
extern unsigned int mouse_bmask;
+enum {
+ MOUSE_LEFT = 1,
+ MOUSE_RIGHT = 2,
+ MOUSE_MIDDLE = 4
+};
+
extern float sball_matrix[16];
int demo_init(int argc, char **argv);
}
}
+static int bnmask(int sdlbn)
+{
+ switch(sdlbn) {
+ case SDL_BUTTON_LEFT:
+ return MOUSE_LEFT;
+ case SDL_BUTTON_RIGHT:
+ return MOUSE_RIGHT;
+ case SDL_BUTTON_MIDDLE:
+ return MOUSE_MIDDLE;
+ default:
+ break;
+ }
+ return 0;
+}
+
static void handle_event(SDL_Event *ev)
{
switch(ev->type) {
break;
case SDL_MOUSEBUTTONDOWN:
- mouse_bmask |= 1 << (ev->button.button - SDL_BUTTON_LEFT);
+ mouse_bmask |= bnmask(ev->button.button);
if(0) {
case SDL_MOUSEBUTTONUP:
- mouse_bmask &= ~(1 << (ev->button.button - SDL_BUTTON_LEFT));
+ mouse_bmask &= ~bnmask(ev->button.button);
}
mouse_x = ev->button.x / fbscale;
mouse_y = ev->button.y / fbscale;