diff options
Diffstat (limited to 'src/VBox/GuestHost/OpenGL/packer/pack_swap_pixelmap.c')
-rw-r--r-- | src/VBox/GuestHost/OpenGL/packer/pack_swap_pixelmap.c | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/src/VBox/GuestHost/OpenGL/packer/pack_swap_pixelmap.c b/src/VBox/GuestHost/OpenGL/packer/pack_swap_pixelmap.c new file mode 100644 index 00000000..2336e8f8 --- /dev/null +++ b/src/VBox/GuestHost/OpenGL/packer/pack_swap_pixelmap.c @@ -0,0 +1,62 @@ +/* Copyright (c) 2001, Stanford University + * All rights reserved + * + * See the file LICENSE.txt for information on redistributing this software. + */ + +#include "packer.h" + +static unsigned char * __gl_HandlePixelMapData( GLenum map, GLsizei mapsize, int size_of_value, const GLvoid *values ) +{ + int i; + + int packet_length = + sizeof( map ) + + sizeof( mapsize ) + + mapsize*size_of_value; + unsigned char *data_ptr = (unsigned char *) crPackAlloc( packet_length ); + + WRITE_DATA( 0, GLenum, SWAP32(map) ); + WRITE_DATA( 4, GLsizei, SWAP32(mapsize) ); + + for (i = 0 ; i < mapsize ; i++) + { + switch( size_of_value ) + { + case 2: + WRITE_DATA( 8 + i*sizeof(GLshort), GLshort, SWAP16(*((GLshort *)values + i) )); + break; + case 4: + WRITE_DATA( 8 + i*sizeof(GLint), GLint, SWAP32(*((GLint *)values + i) )); + break; + } + } + return data_ptr; +} + +void PACK_APIENTRY crPackPixelMapfvSWAP(GLenum map, GLsizei mapsize, + const GLfloat *values ) +{ + unsigned char *data_ptr = __gl_HandlePixelMapData( map, mapsize, sizeof( *values ), values ); + + crHugePacket( CR_PIXELMAPFV_OPCODE, data_ptr ); + crPackFree( data_ptr ); +} + +void PACK_APIENTRY crPackPixelMapuivSWAP(GLenum map, GLsizei mapsize, + const GLuint *values ) +{ + unsigned char *data_ptr = __gl_HandlePixelMapData( map, mapsize, sizeof( *values ), values ); + + crHugePacket( CR_PIXELMAPUIV_OPCODE, data_ptr ); + crPackFree( data_ptr ); +} + +void PACK_APIENTRY crPackPixelMapusvSWAP(GLenum map, GLsizei mapsize, + const GLushort *values ) +{ + unsigned char *data_ptr = __gl_HandlePixelMapData( map, mapsize, sizeof( *values ), values ); + + crHugePacket( CR_PIXELMAPUSV_OPCODE, data_ptr ); + crPackFree( data_ptr ); +} |