+ glTranslatef (current.x, current.y, 0);
+ glScalef (current.w, current.h, 1);
+
+ if (!wire)
+ {
+ texw = mi->xgwa.width / (GLfloat) ss->img_w;
+ texh = mi->xgwa.height / (GLfloat) ss->img_h;
+
+ glEnable (GL_TEXTURE_2D);
+ glEnable (GL_BLEND);
+ glBindTexture (GL_TEXTURE_2D, q->texid);
+ glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ glDepthMask (GL_FALSE);
+
+ /* Draw the texture quad
+ */
+ glColor4f (1, 1, 1, opacity);
+ glNormal3f (0, 0, 1);
+ glBegin (GL_QUADS);
+ glTexCoord2f (0, 0); glVertex3f (0, 0, 0);
+ glTexCoord2f (0, texh); glVertex3f (0, 1, 0);
+ glTexCoord2f (texw, texh); glVertex3f (1, 1, 0);
+ glTexCoord2f (texw, 0); glVertex3f (1, 0, 0);
+ glEnd();
+
+ glDisable (GL_TEXTURE_2D);
+ glDisable (GL_BLEND);
+ }
+
+ if (wire)
+ glColor4f ((q->texid == ss->texids[0] ? opacity : 0), 0,
+ (q->texid == ss->texids[0] ? 0 : opacity),
+ opacity);
+ else
+ glColor4f (1, 1, 1, opacity);
+
+
+ /* Draw a grid inside the box
+ */
+ if (wire)
+ {
+ GLfloat d = 0.1;
+ GLfloat x, y;
+ glBegin(GL_LINES);
+ glVertex3f (0, 0, 0); glVertex3f (1, 1, 0);
+ glVertex3f (1, 0, 0); glVertex3f (0, 1, 0);
+
+ for (y = 0; y < 1+d; y += d)
+ for (x = 0; x < 1+d; x += d)
+ {
+ glVertex3f (0, y, 0); glVertex3f (1, y, 0);
+ glVertex3f (x, 0, 0); glVertex3f (x, 1, 0);
+ }
+ glEnd();
+ }
+
+ glPopMatrix();
+
+ if (debug_p)
+ {
+ /* Draw the "from" and "to" boxes
+ */
+ glColor4f ((q->texid == ss->texids[0] ? opacity : 0), 0,
+ (q->texid == ss->texids[0] ? 0 : opacity),
+ opacity);
+
+ glBegin (GL_LINE_LOOP);
+ glVertex3f (q->from.x, q->from.y, 0);
+ glVertex3f (q->from.x + q->from.w, q->from.y, 0);
+ glVertex3f (q->from.x + q->from.w, q->from.y + q->from.h, 0);
+ glVertex3f (q->from.x, q->from.y + q->from.h, 0);
+ glEnd();
+
+ glBegin (GL_LINE_LOOP);
+ glVertex3f (q->to.x, q->to.y, 0);
+ glVertex3f (q->to.x + q->to.w, q->to.y, 0);
+ glVertex3f (q->to.x + q->to.w, q->to.y + q->to.h, 0);
+ glVertex3f (q->to.x, q->to.y + q->to.h, 0);
+ glEnd();
+ }