image.h revision c1f859d4
17117f1b4Smrg/* 27117f1b4Smrg * Mesa 3-D graphics library 3c1f859d4Smrg * Version: 7.1 47117f1b4Smrg * 5c1f859d4Smrg * Copyright (C) 1999-2008 Brian Paul All Rights Reserved. 67117f1b4Smrg * 77117f1b4Smrg * Permission is hereby granted, free of charge, to any person obtaining a 87117f1b4Smrg * copy of this software and associated documentation files (the "Software"), 97117f1b4Smrg * to deal in the Software without restriction, including without limitation 107117f1b4Smrg * the rights to use, copy, modify, merge, publish, distribute, sublicense, 117117f1b4Smrg * and/or sell copies of the Software, and to permit persons to whom the 127117f1b4Smrg * Software is furnished to do so, subject to the following conditions: 137117f1b4Smrg * 147117f1b4Smrg * The above copyright notice and this permission notice shall be included 157117f1b4Smrg * in all copies or substantial portions of the Software. 167117f1b4Smrg * 177117f1b4Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 187117f1b4Smrg * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 197117f1b4Smrg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 207117f1b4Smrg * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 217117f1b4Smrg * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 227117f1b4Smrg * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 237117f1b4Smrg */ 247117f1b4Smrg 257117f1b4Smrg 267117f1b4Smrg#ifndef IMAGE_H 277117f1b4Smrg#define IMAGE_H 287117f1b4Smrg 297117f1b4Smrg 307117f1b4Smrg#include "mtypes.h" 317117f1b4Smrg 327117f1b4Smrg 337117f1b4Smrgextern void 347117f1b4Smrg_mesa_swap2( GLushort *p, GLuint n ); 357117f1b4Smrg 367117f1b4Smrgextern void 377117f1b4Smrg_mesa_swap4( GLuint *p, GLuint n ); 387117f1b4Smrg 39c1f859d4Smrgextern GLboolean 40c1f859d4Smrg_mesa_type_is_packed(GLenum type); 41c1f859d4Smrg 427117f1b4Smrgextern GLint 437117f1b4Smrg_mesa_sizeof_type( GLenum type ); 447117f1b4Smrg 457117f1b4Smrgextern GLint 467117f1b4Smrg_mesa_sizeof_packed_type( GLenum type ); 477117f1b4Smrg 487117f1b4Smrgextern GLint 497117f1b4Smrg_mesa_components_in_format( GLenum format ); 507117f1b4Smrg 517117f1b4Smrgextern GLint 527117f1b4Smrg_mesa_bytes_per_pixel( GLenum format, GLenum type ); 537117f1b4Smrg 547117f1b4Smrgextern GLboolean 557117f1b4Smrg_mesa_is_legal_format_and_type( GLcontext *ctx, GLenum format, GLenum type ); 567117f1b4Smrg 577117f1b4Smrg 587117f1b4Smrgextern GLvoid * 597117f1b4Smrg_mesa_image_address( GLuint dimensions, 607117f1b4Smrg const struct gl_pixelstore_attrib *packing, 617117f1b4Smrg const GLvoid *image, 627117f1b4Smrg GLsizei width, GLsizei height, 637117f1b4Smrg GLenum format, GLenum type, 647117f1b4Smrg GLint img, GLint row, GLint column ); 657117f1b4Smrg 667117f1b4Smrgextern GLvoid * 677117f1b4Smrg_mesa_image_address1d( const struct gl_pixelstore_attrib *packing, 687117f1b4Smrg const GLvoid *image, 697117f1b4Smrg GLsizei width, 707117f1b4Smrg GLenum format, GLenum type, 717117f1b4Smrg GLint column ); 727117f1b4Smrg 737117f1b4Smrgextern GLvoid * 747117f1b4Smrg_mesa_image_address2d( const struct gl_pixelstore_attrib *packing, 757117f1b4Smrg const GLvoid *image, 767117f1b4Smrg GLsizei width, GLsizei height, 777117f1b4Smrg GLenum format, GLenum type, 787117f1b4Smrg GLint row, GLint column ); 797117f1b4Smrg 807117f1b4Smrgextern GLvoid * 817117f1b4Smrg_mesa_image_address3d( const struct gl_pixelstore_attrib *packing, 827117f1b4Smrg const GLvoid *image, 837117f1b4Smrg GLsizei width, GLsizei height, 847117f1b4Smrg GLenum format, GLenum type, 857117f1b4Smrg GLint img, GLint row, GLint column ); 867117f1b4Smrg 877117f1b4Smrg 887117f1b4Smrgextern GLint 897117f1b4Smrg_mesa_image_row_stride( const struct gl_pixelstore_attrib *packing, 907117f1b4Smrg GLint width, GLenum format, GLenum type ); 917117f1b4Smrg 927117f1b4Smrg 937117f1b4Smrgextern GLint 947117f1b4Smrg_mesa_image_image_stride( const struct gl_pixelstore_attrib *packing, 957117f1b4Smrg GLint width, GLint height, 967117f1b4Smrg GLenum format, GLenum type ); 977117f1b4Smrg 987117f1b4Smrgextern void 997117f1b4Smrg_mesa_unpack_polygon_stipple( const GLubyte *pattern, GLuint dest[32], 1007117f1b4Smrg const struct gl_pixelstore_attrib *unpacking ); 1017117f1b4Smrg 1027117f1b4Smrg 1037117f1b4Smrgextern void 1047117f1b4Smrg_mesa_pack_polygon_stipple( const GLuint pattern[32], GLubyte *dest, 1057117f1b4Smrg const struct gl_pixelstore_attrib *packing ); 1067117f1b4Smrg 1077117f1b4Smrg 1087117f1b4Smrgextern GLvoid * 1097117f1b4Smrg_mesa_unpack_bitmap( GLint width, GLint height, const GLubyte *pixels, 1107117f1b4Smrg const struct gl_pixelstore_attrib *packing ); 1117117f1b4Smrg 1127117f1b4Smrgextern void 1137117f1b4Smrg_mesa_pack_bitmap( GLint width, GLint height, const GLubyte *source, 1147117f1b4Smrg GLubyte *dest, const struct gl_pixelstore_attrib *packing ); 1157117f1b4Smrg 1167117f1b4Smrg 117c1f859d4Smrg/** \name Pixel processing functions */ 118c1f859d4Smrg/*@{*/ 119c1f859d4Smrg 120c1f859d4Smrgextern void 121c1f859d4Smrg_mesa_scale_and_bias_rgba(GLuint n, GLfloat rgba[][4], 122c1f859d4Smrg GLfloat rScale, GLfloat gScale, 123c1f859d4Smrg GLfloat bScale, GLfloat aScale, 124c1f859d4Smrg GLfloat rBias, GLfloat gBias, 125c1f859d4Smrg GLfloat bBias, GLfloat aBias); 126c1f859d4Smrg 127c1f859d4Smrgextern void 128c1f859d4Smrg_mesa_map_rgba(const GLcontext *ctx, GLuint n, GLfloat rgba[][4]); 129c1f859d4Smrg 130c1f859d4Smrg 131c1f859d4Smrgextern void 132c1f859d4Smrg_mesa_transform_rgba(const GLcontext *ctx, GLuint n, GLfloat rgba[][4]); 133c1f859d4Smrg 134c1f859d4Smrg 135c1f859d4Smrgextern void 136c1f859d4Smrg_mesa_lookup_rgba_float(const struct gl_color_table *table, 137c1f859d4Smrg GLuint n, GLfloat rgba[][4]); 138c1f859d4Smrg 139c1f859d4Smrgextern void 140c1f859d4Smrg_mesa_lookup_rgba_ubyte(const struct gl_color_table *table, 141c1f859d4Smrg GLuint n, GLubyte rgba[][4]); 142c1f859d4Smrg 143c1f859d4Smrg 144c1f859d4Smrgextern void 145c1f859d4Smrg_mesa_map_ci_to_rgba(const GLcontext *ctx, 146c1f859d4Smrg GLuint n, const GLuint index[], GLfloat rgba[][4]); 147c1f859d4Smrg 148c1f859d4Smrg 149c1f859d4Smrgextern void 150c1f859d4Smrg_mesa_map_ci8_to_rgba8(const GLcontext *ctx, GLuint n, const GLubyte index[], 151c1f859d4Smrg GLubyte rgba[][4]); 152c1f859d4Smrg 153c1f859d4Smrg 154c1f859d4Smrgextern void 155c1f859d4Smrg_mesa_scale_and_bias_depth(const GLcontext *ctx, GLuint n, 156c1f859d4Smrg GLfloat depthValues[]); 157c1f859d4Smrg 158c1f859d4Smrgextern void 159c1f859d4Smrg_mesa_scale_and_bias_depth_uint(const GLcontext *ctx, GLuint n, 160c1f859d4Smrg GLuint depthValues[]); 161c1f859d4Smrg 1627117f1b4Smrgextern void 1637117f1b4Smrg_mesa_apply_rgba_transfer_ops(GLcontext *ctx, GLbitfield transferOps, 1647117f1b4Smrg GLuint n, GLfloat rgba[][4]); 1657117f1b4Smrg 1667117f1b4Smrg 1677117f1b4Smrgextern void 1687117f1b4Smrg_mesa_apply_ci_transfer_ops(const GLcontext *ctx, GLbitfield transferOps, 1697117f1b4Smrg GLuint n, GLuint indexes[]); 1707117f1b4Smrg 1717117f1b4Smrg 1727117f1b4Smrgextern void 1737117f1b4Smrg_mesa_apply_stencil_transfer_ops(const GLcontext *ctx, GLuint n, 1747117f1b4Smrg GLstencil stencil[]); 1757117f1b4Smrg 1767117f1b4Smrg 1777117f1b4Smrgextern void 1787117f1b4Smrg_mesa_pack_rgba_span_float( GLcontext *ctx, GLuint n, GLfloat rgba[][4], 1797117f1b4Smrg GLenum dstFormat, GLenum dstType, GLvoid *dstAddr, 1807117f1b4Smrg const struct gl_pixelstore_attrib *dstPacking, 1817117f1b4Smrg GLbitfield transferOps ); 1827117f1b4Smrg 1837117f1b4Smrg 1847117f1b4Smrgextern void 1857117f1b4Smrg_mesa_unpack_color_span_chan( GLcontext *ctx, 1867117f1b4Smrg GLuint n, GLenum dstFormat, GLchan dest[], 1877117f1b4Smrg GLenum srcFormat, GLenum srcType, 1887117f1b4Smrg const GLvoid *source, 1897117f1b4Smrg const struct gl_pixelstore_attrib *srcPacking, 1907117f1b4Smrg GLbitfield transferOps ); 1917117f1b4Smrg 1927117f1b4Smrg 1937117f1b4Smrgextern void 1947117f1b4Smrg_mesa_unpack_color_span_float( GLcontext *ctx, 1957117f1b4Smrg GLuint n, GLenum dstFormat, GLfloat dest[], 1967117f1b4Smrg GLenum srcFormat, GLenum srcType, 1977117f1b4Smrg const GLvoid *source, 1987117f1b4Smrg const struct gl_pixelstore_attrib *srcPacking, 1997117f1b4Smrg GLbitfield transferOps ); 2007117f1b4Smrg 2017117f1b4Smrg 2027117f1b4Smrgextern void 2037117f1b4Smrg_mesa_unpack_index_span( const GLcontext *ctx, GLuint n, 2047117f1b4Smrg GLenum dstType, GLvoid *dest, 2057117f1b4Smrg GLenum srcType, const GLvoid *source, 2067117f1b4Smrg const struct gl_pixelstore_attrib *srcPacking, 2077117f1b4Smrg GLbitfield transferOps ); 2087117f1b4Smrg 2097117f1b4Smrg 2107117f1b4Smrgextern void 2117117f1b4Smrg_mesa_pack_index_span( const GLcontext *ctx, GLuint n, 2127117f1b4Smrg GLenum dstType, GLvoid *dest, const GLuint *source, 2137117f1b4Smrg const struct gl_pixelstore_attrib *dstPacking, 2147117f1b4Smrg GLbitfield transferOps ); 2157117f1b4Smrg 2167117f1b4Smrg 2177117f1b4Smrgextern void 2187117f1b4Smrg_mesa_unpack_stencil_span( const GLcontext *ctx, GLuint n, 2197117f1b4Smrg GLenum dstType, GLvoid *dest, 2207117f1b4Smrg GLenum srcType, const GLvoid *source, 2217117f1b4Smrg const struct gl_pixelstore_attrib *srcPacking, 2227117f1b4Smrg GLbitfield transferOps ); 2237117f1b4Smrg 2247117f1b4Smrgextern void 2257117f1b4Smrg_mesa_pack_stencil_span( const GLcontext *ctx, GLuint n, 2267117f1b4Smrg GLenum dstType, GLvoid *dest, const GLstencil *source, 2277117f1b4Smrg const struct gl_pixelstore_attrib *dstPacking ); 2287117f1b4Smrg 2297117f1b4Smrg 2307117f1b4Smrgextern void 2317117f1b4Smrg_mesa_unpack_depth_span( const GLcontext *ctx, GLuint n, 232c1f859d4Smrg GLenum dstType, GLvoid *dest, GLuint depthMax, 2337117f1b4Smrg GLenum srcType, const GLvoid *source, 2347117f1b4Smrg const struct gl_pixelstore_attrib *srcPacking ); 2357117f1b4Smrg 2367117f1b4Smrgextern void 2377117f1b4Smrg_mesa_pack_depth_span( const GLcontext *ctx, GLuint n, GLvoid *dest, 2387117f1b4Smrg GLenum dstType, const GLfloat *depthSpan, 2397117f1b4Smrg const struct gl_pixelstore_attrib *dstPacking ); 2407117f1b4Smrg 2417117f1b4Smrg 2427117f1b4Smrgextern void 2437117f1b4Smrg_mesa_pack_depth_stencil_span(const GLcontext *ctx, GLuint n, GLuint *dest, 2447117f1b4Smrg const GLfloat *depthVals, 2457117f1b4Smrg const GLstencil *stencilVals, 2467117f1b4Smrg const struct gl_pixelstore_attrib *dstPacking); 2477117f1b4Smrg 2487117f1b4Smrg 2497117f1b4Smrgextern void * 2507117f1b4Smrg_mesa_unpack_image( GLuint dimensions, 2517117f1b4Smrg GLsizei width, GLsizei height, GLsizei depth, 2527117f1b4Smrg GLenum format, GLenum type, const GLvoid *pixels, 2537117f1b4Smrg const struct gl_pixelstore_attrib *unpack ); 2547117f1b4Smrg 2557117f1b4Smrg 2567117f1b4Smrgextern void 2577117f1b4Smrg_mesa_convert_colors(GLenum srcType, const GLvoid *src, 2587117f1b4Smrg GLenum dstType, GLvoid *dst, 2597117f1b4Smrg GLuint count, const GLubyte mask[]); 2607117f1b4Smrg 2617117f1b4Smrg 2627117f1b4Smrgextern GLboolean 2637117f1b4Smrg_mesa_clip_drawpixels(const GLcontext *ctx, 2647117f1b4Smrg GLint *destX, GLint *destY, 2657117f1b4Smrg GLsizei *width, GLsizei *height, 2667117f1b4Smrg struct gl_pixelstore_attrib *unpack); 2677117f1b4Smrg 2687117f1b4Smrg 2697117f1b4Smrgextern GLboolean 2707117f1b4Smrg_mesa_clip_readpixels(const GLcontext *ctx, 2717117f1b4Smrg GLint *destX, GLint *destY, 2727117f1b4Smrg GLsizei *width, GLsizei *height, 2737117f1b4Smrg struct gl_pixelstore_attrib *pack); 2747117f1b4Smrg 275c1f859d4Smrgextern GLboolean 276c1f859d4Smrg_mesa_clip_copytexsubimage(const GLcontext *ctx, 277c1f859d4Smrg GLint *destX, GLint *destY, 278c1f859d4Smrg GLint *srcX, GLint *srcY, 279c1f859d4Smrg GLsizei *width, GLsizei *height); 280c1f859d4Smrg 2817117f1b4Smrgextern GLboolean 2827117f1b4Smrg_mesa_clip_to_region(GLint xmin, GLint ymin, 2837117f1b4Smrg GLint xmax, GLint ymax, 2847117f1b4Smrg GLint *x, GLint *y, 2857117f1b4Smrg GLsizei *width, GLsizei *height ); 2867117f1b4Smrg 2877117f1b4Smrg#endif 288