unpack_drawpixels.c revision ea230ec5b9bf57b741bbb8743ec37b436a9c1245
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync/* Copyright (c) 2001, Stanford University
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync * All rights reserved
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync *
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync * See the file LICENSE.txt for information on redistributing this software.
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync */
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync
9576fc6de57fa406fdcc1600a55480e997b27444vboxsync#include "unpacker.h"
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync#include "cr_error.h"
3f1f30f349c6d9ef74ba8d16ff0c5b0ac47def6cvboxsync
3f1f30f349c6d9ef74ba8d16ff0c5b0ac47def6cvboxsyncvoid crUnpackDrawPixels( void )
3f1f30f349c6d9ef74ba8d16ff0c5b0ac47def6cvboxsync{
3f1f30f349c6d9ef74ba8d16ff0c5b0ac47def6cvboxsync GLsizei width = READ_DATA( sizeof( int ) + 0, GLsizei );
3f1f30f349c6d9ef74ba8d16ff0c5b0ac47def6cvboxsync GLsizei height = READ_DATA( sizeof( int ) + 4, GLsizei );
3f1f30f349c6d9ef74ba8d16ff0c5b0ac47def6cvboxsync GLenum format = READ_DATA( sizeof( int ) + 8, GLenum );
3f1f30f349c6d9ef74ba8d16ff0c5b0ac47def6cvboxsync GLenum type = READ_DATA( sizeof( int ) + 12, GLenum );
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync GLvoid *pixels = DATA_POINTER( sizeof( int ) + 16, GLvoid );
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync cr_unpackDispatch.PixelStorei( GL_UNPACK_ROW_LENGTH, 0 );
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync cr_unpackDispatch.PixelStorei( GL_UNPACK_SKIP_PIXELS, 0 );
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync cr_unpackDispatch.PixelStorei( GL_UNPACK_SKIP_ROWS, 0 );
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync cr_unpackDispatch.PixelStorei( GL_UNPACK_ALIGNMENT, 1 );
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync
87902654924b5893d165c3f31f1d8a50f87205b4vboxsync cr_unpackDispatch.DrawPixels( width, height, format, type, pixels );
87902654924b5893d165c3f31f1d8a50f87205b4vboxsync
87902654924b5893d165c3f31f1d8a50f87205b4vboxsync INCR_VAR_PTR( );
ef18b2695476bf69da3b80e961a45532302ce14fvboxsync}
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync
ef18b2695476bf69da3b80e961a45532302ce14fvboxsyncvoid crUnpackBitmap( void )
ef18b2695476bf69da3b80e961a45532302ce14fvboxsync{
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync GLsizei width = READ_DATA( sizeof( int ) + 0, GLsizei );
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync GLsizei height = READ_DATA( sizeof( int ) + 4, GLsizei );
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync GLfloat xorig = READ_DATA( sizeof( int ) + 8, GLfloat );
43747b1f0bc8302a238fb35e55857a5e9aa1933dvboxsync GLfloat yorig = READ_DATA( sizeof( int ) + 12, GLfloat );
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync GLfloat xmove = READ_DATA( sizeof( int ) + 16, GLfloat );
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync GLfloat ymove = READ_DATA( sizeof( int ) + 20, GLfloat );
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync GLuint is_null = READ_DATA( sizeof( int ) + 24, GLuint );
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync GLubyte *bitmap = NULL;
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync
ef18b2695476bf69da3b80e961a45532302ce14fvboxsync if ( !is_null )
d0e467f88aeb4288b409908dbe1b96d07c7133b2vboxsync {
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync bitmap = DATA_POINTER( sizeof(int) + 28, GLubyte );
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync }
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync cr_unpackDispatch.PixelStorei( GL_UNPACK_ROW_LENGTH, 0 );
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync cr_unpackDispatch.PixelStorei( GL_UNPACK_SKIP_PIXELS, 0 );
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync cr_unpackDispatch.PixelStorei( GL_UNPACK_SKIP_ROWS, 0 );
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync cr_unpackDispatch.PixelStorei( GL_UNPACK_ALIGNMENT, 1 );
ef18b2695476bf69da3b80e961a45532302ce14fvboxsync
ef18b2695476bf69da3b80e961a45532302ce14fvboxsync cr_unpackDispatch.Bitmap( width, height, xorig, yorig, xmove, ymove, bitmap );
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync INCR_VAR_PTR( );
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync}
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync/*
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync * ZPixCR - compressed DrawPixels
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync */
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsyncvoid crUnpackExtendZPixCR( void )
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync{
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync GLsizei width = READ_DATA( 8, GLsizei );
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync GLsizei height = READ_DATA( 12, GLsizei );
ef18b2695476bf69da3b80e961a45532302ce14fvboxsync GLenum format = READ_DATA( 16, GLenum );
ef18b2695476bf69da3b80e961a45532302ce14fvboxsync GLenum type = READ_DATA( 20, GLenum );
ef18b2695476bf69da3b80e961a45532302ce14fvboxsync GLenum ztype = READ_DATA( 24, GLenum );
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync GLint zparm = READ_DATA( 28, GLuint );
ef18b2695476bf69da3b80e961a45532302ce14fvboxsync GLint length = READ_DATA( 32, GLint );
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync GLvoid *pixels = DATA_POINTER( 36, GLvoid );
ef18b2695476bf69da3b80e961a45532302ce14fvboxsync
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync/*XXX JAG
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync crDebug("UnpackZPixCR: w = %d, h = %d, len = %d",
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync width, height, length);
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync*/
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync cr_unpackDispatch.PixelStorei( GL_UNPACK_ROW_LENGTH, 0 );
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync cr_unpackDispatch.PixelStorei( GL_UNPACK_SKIP_PIXELS, 0 );
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync cr_unpackDispatch.PixelStorei( GL_UNPACK_SKIP_ROWS, 0 );
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync cr_unpackDispatch.PixelStorei( GL_UNPACK_ALIGNMENT, 1 );
ef18b2695476bf69da3b80e961a45532302ce14fvboxsync
ef18b2695476bf69da3b80e961a45532302ce14fvboxsync cr_unpackDispatch.ZPixCR( width, height, format, type, ztype, zparm, length, pixels );
dc0a54940789f994c84390cb4a9f03da0b492285vboxsync
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync /* Don't call INCR_VAR_PTR(); - it's done in crUnpackExtend() */
ef18b2695476bf69da3b80e961a45532302ce14fvboxsync}
9de2fa82343af2df7df171b18afbe32b6f37ed84vboxsync