add driClipRectToFramebuffer helper function
authorKeith Whitwell <keith@tungstengraphics.com>
Thu, 11 Dec 2003 19:06:32 +0000 (19:06 +0000)
committerKeith Whitwell <keith@tungstengraphics.com>
Thu, 11 Dec 2003 19:06:32 +0000 (19:06 +0000)
src/mesa/drivers/dri/common/utils.c
src/mesa/drivers/dri/common/utils.h

index 0d21ceda562c585386b25200b1e84abbfb3ffe0f..4276854224d5c5cdd1853113386918331ee61e4b 100644 (file)
@@ -184,3 +184,36 @@ driCheckDriDdxDrmVersions(__DRIscreenPrivate *sPriv,
 
    return GL_TRUE;
 }
+
+GLboolean driClipRectToFramebuffer( const GLframebuffer *buffer,
+                                   GLint *x, GLint *y,
+                                   GLsizei *width, GLsizei *height )
+{
+   /* left clipping */
+   if (*x < buffer->_Xmin) {
+      *width -= (buffer->_Xmin - *x);
+      *x = buffer->_Xmin;
+   }
+
+   /* right clipping */
+   if (*x + *width > buffer->_Xmax)
+      *width -= (*x + *width - buffer->_Xmax - 1);
+
+   if (*width <= 0)
+      return GL_FALSE;
+
+   /* bottom clipping */
+   if (*y < buffer->_Ymin) {
+      *height -= (buffer->_Ymin - *y);
+      *y = buffer->_Ymin;
+   }
+
+   /* top clipping */
+   if (*y + *height > buffer->_Ymax)
+      *height -= (*y + *height - buffer->_Ymax - 1);
+
+   if (*height <= 0)
+      return GL_FALSE;
+
+   return GL_TRUE;
+}
index d6506c5b88ca981342520c56241edb614c52765b..401a1b882f5f733dfdacece648810bb651f9fce5 100644 (file)
@@ -51,4 +51,8 @@ extern GLboolean driCheckDriDdxDrmVersions( __DRIscreenPrivate *sPriv,
     const char * driver_name, int dri_major, int dri_minor,
     int ddx_major, int ddx_minor, int drm_major, int drm_minor );
 
+extern GLboolean driClipRectToFramebuffer( const GLframebuffer *buffer,
+                                          GLint *x, GLint *y,
+                                          GLsizei *width, GLsizei *height );
+
 #endif /* DRI_DEBUG_H */