added _mesa_image_row_stride()

This commit is contained in:
Brian Paul
2000-03-21 00:48:53 +00:00
parent 8a4014c6fb
commit ae40595b69
2 changed files with 45 additions and 2 deletions

View File

@@ -1,4 +1,4 @@
/* $Id: image.c,v 1.20 2000/03/19 01:10:12 brianp Exp $ */
/* $Id: image.c,v 1.21 2000/03/21 00:48:53 brianp Exp $ */
/*
* Mesa 3-D graphics library
@@ -489,6 +489,44 @@ GLvoid *gl_pixel_addr_in_image( const struct gl_pixelstore_attrib *packing,
/*
* Compute the stride between image rows (in bytes) for the given
* pixel packing parameters and image width, format and type.
*/
GLint
_mesa_image_row_stride( const struct gl_pixelstore_attrib *packing,
GLint width, GLenum format, GLenum type )
{
ASSERT(packing);
if (type == GL_BITMAP) {
/* BITMAP data */
if (packing->RowLength == 0) {
GLint bytes = (width + 7) / 8;
return bytes;
}
else {
GLint bytes = (packing->RowLength + 7) / 8;
return bytes;
}
}
else {
/* Non-BITMAP data */
const GLint bytesPerPixel = gl_bytes_per_pixel(format, type);
if (bytesPerPixel <= 0)
return -1; /* error */
if (packing->RowLength == 0) {
GLint bytes = bytesPerPixel * width;
return bytes;
}
else {
GLint bytes = bytesPerPixel * packing->RowLength;
return bytes;
}
}
}
/*
* Unpack a 32x32 pixel polygon stipple from user memory using the
* current pixel unpack settings.

View File

@@ -1,4 +1,4 @@
/* $Id: image.h,v 1.4 2000/03/13 18:31:51 brianp Exp $ */
/* $Id: image.h,v 1.5 2000/03/21 00:48:53 brianp Exp $ */
/*
* Mesa 3-D graphics library
@@ -61,6 +61,11 @@ gl_pixel_addr_in_image( const struct gl_pixelstore_attrib *packing,
GLint img, GLint row, GLint column );
extern GLint
_mesa_image_row_stride( const struct gl_pixelstore_attrib *packing,
GLint width, GLenum format, GLenum type );
extern void
_mesa_unpack_polygon_stipple( const GLubyte *pattern, GLuint dest[32],
const struct gl_pixelstore_attrib *unpacking );