propose-patch
[org.ibex.core.git] / src / org / xwt / plat / OpenGL.cc
index 14884ef..3c8cf6a 100644 (file)
@@ -25,7 +25,8 @@
 
 #include <stdio.h>
 
-#define min(a,b) (a<b?a:b) 
+#define min(a,b) ((a)<(b)?(a):(b)) 
+#define max(a,b) ((a)>(b)?(a):(b)) 
 
 namespace org { namespace xwt { namespace plat {
 
@@ -179,8 +180,10 @@ void OpenGL$RectGLPicture::natInit(Object *data_, jboolean alphaOnly) {
 }
 
 void OpenGL$RectGLPicture::draw(jint dx, jint dy, jint cx1, jint cy1, jint cx2, jint cy2) { 
+    cx1 = max(dx, cx1);
+    cy1 = max(dy, cy1);
     cx2 = min(cx2, dx + width);
-    cy2 = min(cx2, dy + height);
+    cy2 = min(cy2, dy + height);
     if (cy2 <= cy1 || cx2 <= cx1) return;
     glEnable(GL_TEXTURE_RECTANGLE_EXT);
     glBindTexture(GL_TEXTURE_RECTANGLE_EXT, textureName);    
@@ -273,8 +276,10 @@ void OpenGL$SquareGLPicture::natInit(Object *data_, jboolean alphaOnly) {
 }
 
 void OpenGL$SquareGLPicture::draw(jint dx, jint dy, jint cx1, jint cy1, jint cx2, jint cy2) {
+    cx1 = max(dx, cx1);
+    cy1 = max(dy, cy1);
     cx2 = min(cx2, dx + width);
-    cy2 = min(cx2, dy + height);
+    cy2 = min(cy2, dy + height);
     if (cy2 <= cy1 || cx2 <= cx1) return;
     float tx1 = (float) (cx1 - dx) / (float) texWidth;
     float ty1 = (float) (cy1 - dy) / (float) texHeight;