Correct logic of BSP back/front tests
[neverball] / share / gui.c
index 68a9b25..6f589d6 100644 (file)
@@ -177,10 +177,10 @@ static GLuint gui_rect(int x, int y, int w, int h, int f, int r)
                 float Ya = y + h + ((f & GUI_NW) ? (s - r) : 0);
                 float Yb = y     + ((f & GUI_SW) ? (r - s) : 0);
 
-                glTexCoord2f((X - x) / w, 1 - (Ya - y) / h);
+                glTexCoord2f((X - x) / w, (Ya - y) / h);
                 glVertex2f(X, Ya);
 
-                glTexCoord2f((X - x) / w, 1 - (Yb - y) / h);
+                glTexCoord2f((X - x) / w, (Yb - y) / h);
                 glVertex2f(X, Yb);
             }
 
@@ -196,10 +196,10 @@ static GLuint gui_rect(int x, int y, int w, int h, int f, int r)
                 float Ya = y + h + ((f & GUI_NE) ? (c - r) : 0);
                 float Yb = y     + ((f & GUI_SE) ? (r - c) : 0);
 
-                glTexCoord2f((X - x) / w, 1 - (Ya - y) / h);
+                glTexCoord2f((X - x) / w, (Ya - y) / h);
                 glVertex2f(X, Ya);
 
-                glTexCoord2f((X - x) / w, 1 - (Yb - y) / h);
+                glTexCoord2f((X - x) / w, (Yb - y) / h);
                 glVertex2f(X, Yb);
             }
         }
@@ -702,13 +702,19 @@ static void gui_button_up(int id)
     if (widget[id].w < widget[id].h && widget[id].w > 0)
         widget[id].w = widget[id].h;
 
-
     /* Padded text elements look a little nicer. */
 
     if (widget[id].w < config_get_d(CONFIG_WIDTH))
         widget[id].w += radius;
     if (widget[id].h < config_get_d(CONFIG_HEIGHT))
         widget[id].h += radius;
+
+    /* A button should be at least wide enough to accomodate the rounding. */
+
+    if (widget[id].w < 2 * radius)
+        widget[id].w = 2 * radius;
+    if (widget[id].h < 2 * radius)
+        widget[id].h = 2 * radius;
 }
 
 static void gui_widget_up(int id)
@@ -1269,6 +1275,8 @@ void gui_paint(int id)
 
                 glEnable(GL_TEXTURE_2D);
                 gui_paint_text(id);
+
+                glColor4fv(gui_wht);
             }
             glEnable(GL_DEPTH_TEST);
             glEnable(GL_LIGHTING);