diff options
| author | Brian Paul <brian.paul@tungstengraphics.com> | 2002-03-13 04:34:32 +0000 | 
|---|---|---|
| committer | Brian Paul <brian.paul@tungstengraphics.com> | 2002-03-13 04:34:32 +0000 | 
| commit | d488af5b34e390a9b81dac96053bd45f34ffffff (patch) | |
| tree | 760f31b9c03c4671b8a2179344cfb4420de4f29f /src | |
| parent | 9a888bdc2a40fd329cbc68de1c465228a5c3887c (diff) | |
added _mesa_image_image_stride()
Diffstat (limited to 'src')
| -rw-r--r-- | src/mesa/main/image.c | 46 | ||||
| -rw-r--r-- | src/mesa/main/image.h | 11 | 
2 files changed, 51 insertions, 6 deletions
| diff --git a/src/mesa/main/image.c b/src/mesa/main/image.c index d99d908509..1d779ea82b 100644 --- a/src/mesa/main/image.c +++ b/src/mesa/main/image.c @@ -1,10 +1,10 @@ -/* $Id: image.c,v 1.63 2001/07/14 17:53:04 brianp Exp $ */ +/* $Id: image.c,v 1.64 2002/03/13 04:34:32 brianp Exp $ */  /*   * Mesa 3-D graphics library - * Version:  3.5 + * Version:  4.1   * - * Copyright (C) 1999-2001  Brian Paul   All Rights Reserved. + * Copyright (C) 1999-2002  Brian Paul   All Rights Reserved.   *   * Permission is hereby granted, free of charge, to any person obtaining a   * copy of this software and associated documentation files (the "Software"), @@ -545,6 +545,46 @@ _mesa_image_row_stride( const struct gl_pixelstore_attrib *packing,  /* + * Compute the stride between images in a 3D texture (in bytes) for the given + * pixel packing parameters and image width, format and type. + */ +GLint +_mesa_image_image_stride( const struct gl_pixelstore_attrib *packing, +                          GLint width, GLint height, +                          GLenum format, GLenum type ) +{ +   ASSERT(packing); +   ASSERT(type != GL_BITMAP); + +   { +      const GLint bytesPerPixel = _mesa_bytes_per_pixel(format, type); +      GLint bytesPerRow, bytesPerImage, remainder; + +      if (bytesPerPixel <= 0) +         return -1;  /* error */ +      if (packing->RowLength == 0) { +         bytesPerRow = bytesPerPixel * width; +      } +      else { +         bytesPerRow = bytesPerPixel * packing->RowLength; +      } +      remainder = bytesPerRow % packing->Alignment; +      if (remainder > 0) +         bytesPerRow += (packing->Alignment - remainder); + +      if (packing->ImageHeight == 0) +         bytesPerImage = bytesPerRow * height; +      else +         bytesPerImage = bytesPerRow * packing->ImageHeight; + +      return bytesPerImage; +   } +} + + + + +/*   * Unpack a 32x32 pixel polygon stipple from user memory using the   * current pixel unpack settings.   */ diff --git a/src/mesa/main/image.h b/src/mesa/main/image.h index 12376f1d2f..4b5d7caba0 100644 --- a/src/mesa/main/image.h +++ b/src/mesa/main/image.h @@ -1,10 +1,10 @@ -/* $Id: image.h,v 1.17 2001/03/07 05:06:12 brianp Exp $ */ +/* $Id: image.h,v 1.18 2002/03/13 04:34:32 brianp Exp $ */  /*   * Mesa 3-D graphics library - * Version:  3.5 + * Version:  4.1   * - * Copyright (C) 1999-2001  Brian Paul   All Rights Reserved. + * Copyright (C) 1999-2002  Brian Paul   All Rights Reserved.   *   * Permission is hereby granted, free of charge, to any person obtaining a   * copy of this software and associated documentation files (the "Software"), @@ -69,6 +69,11 @@ _mesa_image_row_stride( const struct gl_pixelstore_attrib *packing,                          GLint width, GLenum format, GLenum type ); +extern GLint +_mesa_image_image_stride( const struct gl_pixelstore_attrib *packing, +                          GLint width, GLint height, +                          GLenum format, GLenum type ); +  extern void  _mesa_unpack_polygon_stipple( const GLubyte *pattern, GLuint dest[32],                                const struct gl_pixelstore_attrib *unpacking ); | 
