2003/10/28 10:10:18
[org.ibex.core.git] / src / org / xwt / plat / OpenGL.cc
index 5540c2d..b7b0eeb 100644 (file)
@@ -88,12 +88,12 @@ void OpenGL$GLPixelBuffer::setColor(jint argb) {
 void OpenGL$GLPixelBuffer::fillTrapezoid(jint x1, jint x2, jint y1, jint x3, jint x4, jint y2, jint color) {
     activateContext();
     setColor(color);
-    glBegin(GL_QUADS); 
+    glBegin(GL_QUADS); {
         glVertex3f(x1,y1,0.0f );   
         glVertex3f(x3,y2,0.0f );  
         glVertex3f(x4,y2,0.0f ); 
         glVertex3f(x2,y1,0.0f ); 
-    glEnd();
+    } glEnd();
 }
 
 void OpenGL$GLPixelBuffer::setClip(jint x1, jint y1, jint x2, jint y2) {
@@ -176,21 +176,21 @@ void OpenGL$RectGLPicture::natInit(Object *data_, jboolean alphaOnly) {
     textureName = (jint)tex;
 }
 
-void OpenGL$RectGLPicture::draw(jint dx1, jint dy1, jint dx2, jint dy2,jint sx1, jint sy1, jint sx2, jint sy2) { 
-       glEnable(GL_TEXTURE_RECTANGLE_EXT);
-       glBindTexture(GL_TEXTURE_RECTANGLE_EXT, textureName);    
-       glBegin(GL_QUADS); 
-       glTexCoord2i (sx1, sy1   );
-        glVertex3i   (dx1, dy1, 0);   
-        glTexCoord2i (sx2, sy1   ); 
-        glVertex3i   (dx2, dy1, 0);
-        glTexCoord2i (sx2, sy2   ); 
-        glVertex3i   (dx2, dy2, 0);
-        glTexCoord2i (sx1, sy2   );
-        glVertex3i   (dx1, dy2, 0);
-       glEnd();
-       glDisable(GL_TEXTURE_RECTANGLE_EXT);
-       checkGLError();
+void OpenGL$RectGLPicture::draw(jint dx, jint dy, jint cx1, jint cy1, jint cx2, jint cy2) { 
+    glEnable(GL_TEXTURE_RECTANGLE_EXT);
+    glBindTexture(GL_TEXTURE_RECTANGLE_EXT, textureName);    
+    glBegin(GL_QUADS); {
+      glTexCoord2i (cx1 - dx, cy1 - dy   );
+      glVertex3i   (dx1,      dy1,      0);
+      glTexCoord2i (cx2 - dx, cy1 - dy   );
+      glVertex3i   (dx2,      dy1,      0);
+      glTexCoord2i (cx2 - dx, cy2 - dy   );
+      glVertex3i   (dx2,      dy2,      0);
+      glTexCoord2i (cx1 - dx, cy2 - dy   );
+      glVertex3i   (dx1,      dy2,      0);
+    } glEnd();
+    glDisable(GL_TEXTURE_RECTANGLE_EXT);
+    checkGLError();
 }
 
 void OpenGL::natDeleteTexture(jint tex_) {
@@ -267,26 +267,20 @@ void OpenGL$SquareGLPicture::natInit(Object *data_, jboolean alphaOnly) {
     textureName = (jint)tex;
 }
 
-void OpenGL$SquareGLPicture::draw(jint dx1, jint dy1, jint dx2, jint dy2,jint sx1, jint sy1, jint sx2, jint sy2) {
-    float tx1,ty1,tx2,ty2; // normalized texture coords
-    tx1 = (float) sx1 / (float) texWidth;
-    ty1 = (float) sy1 / (float) texHeight;
-    tx2 = (float) sx2 / (float) texWidth;
-    ty2 = (float) sy2 / (float) texHeight;
-
+void OpenGL$SquareGLPicture::draw(jint dx, jint dy, jint cx1, jint cy1, jint cx2, jint cy2) {
     glEnable(GL_TEXTURE_2D);
     glBindTexture(GL_TEXTURE_2D, textureName);    
     checkGLError();
-    glBegin(GL_QUADS); 
-        glTexCoord2f (tx1, ty1   );
-        glVertex3i   (dx1, dy1, 0);
-        glTexCoord2f (tx2, ty1   ); 
-        glVertex3i   (dx2, dy1, 0);
-        glTexCoord2f (tx2, ty2   ); 
-        glVertex3i   (dx2, dy2, 0);
-        glTexCoord2f (tx1, ty2   );
-        glVertex3i   (dx1, dy2, 0);
-    glEnd();
+    glBegin(GL_QUADS); {
+        glTexCoord2f (cx1 - dx, cy1 - dy   );
+        glVertex3i   (dx1,      dy1,      0);
+        glTexCoord2f (cx2 - dx, cy1 - dy   );
+        glVertex3i   (dx2,      dy1,      0);
+        glTexCoord2f (cx2 - dx, cy2 - dy   );
+        glVertex3i   (dx2,      dy2,      0);
+        glTexCoord2f (cx1 - dx, cy2 - dy   );
+        glVertex3i   (dx1,      dy2,      0);
+    } glEnd();
     glDisable(GL_TEXTURE_2D);
     checkGLError();
 }