/* Copyright (c) 2001, Stanford University
* All rights reserved
*
* See the file LICENSE.txt for information on redistributing this software.
*/
#include "packer.h"
#include "cr_opcodes.h"
#include "cr_error.h"
/* Note -- for these packets, the ustride and vstride are implicit,
* and are computed into the packet instead of copied.
*/
{
switch( target )
{
case GL_MAP2_VERTEX_3:
case GL_MAP2_NORMAL:
case GL_MAP2_TEXTURE_COORD_3:
return 3;
case GL_MAP2_VERTEX_4:
case GL_MAP2_COLOR_4:
case GL_MAP2_TEXTURE_COORD_4:
return 4;
case GL_MAP2_INDEX:
case GL_MAP2_TEXTURE_COORD_1:
return 1;
case GL_MAP2_TEXTURE_COORD_2:
return 2;
default:
return -1;
}
}
{
switch( target )
{
case GL_MAP1_VERTEX_3:
case GL_MAP1_NORMAL:
case GL_MAP1_TEXTURE_COORD_3:
return 3;
case GL_MAP1_VERTEX_4:
case GL_MAP1_COLOR_4:
case GL_MAP1_TEXTURE_COORD_4:
return 4;
case GL_MAP1_INDEX:
case GL_MAP1_TEXTURE_COORD_1:
return 1;
case GL_MAP1_TEXTURE_COORD_2:
return 2;
default:
return -1;
}
}
{
unsigned char *data_ptr;
int u,v;
int comp;
int packet_length =
sizeof( target ) +
sizeof( u1 ) +
sizeof( u2 ) +
sizeof( uorder ) +
sizeof( ustride ) +
sizeof( v1 ) +
sizeof( v2 ) +
sizeof( vorder ) +
sizeof( vstride );
if (num_components < 0)
{
"crPackMap2d(bad target)" );
return;
}
for (v = 0 ; v < vorder ; v++)
{
for (u = 0 ; u < uorder ; u++)
{
{
WRITE_SWAPPED_DOUBLE( ((unsigned char *) dest_data + comp*sizeof(*points)) - data_ptr, *(src_data + comp) );
}
}
}
crPackFree( data_ptr );
}
{
unsigned char *data_ptr;
int u,v;
int comp;
int packet_length =
sizeof( target ) +
sizeof( u1 ) +
sizeof( u2 ) +
sizeof( uorder ) +
sizeof( ustride ) +
sizeof( v1 ) +
sizeof( v2 ) +
sizeof( vorder ) +
sizeof( vstride );
if (num_components < 0)
{
"crPackMap2f(bad target)" );
return;
}
for (v = 0 ; v < vorder ; v++)
{
for (u = 0 ; u < uorder ; u++)
{
{
WRITE_DATA( (unsigned char *) dest_data + comp*sizeof(*points) - data_ptr, GLuint, SWAPFLOAT( *(src_data + comp) ) );
}
}
}
crPackFree( data_ptr );
}
{
unsigned char *data_ptr;
int packet_length =
sizeof( target ) +
sizeof( u1 ) +
sizeof( u2 ) +
sizeof( stride ) +
sizeof( order );
int u;
int comp;
if (num_components < 0)
{
"crPackMap1d(bad target)" );
return;
}
for (u = 0 ; u < order ; u++)
{
{
WRITE_SWAPPED_DOUBLE( (unsigned char *) dest_data + comp*sizeof(*points) - data_ptr, *(src_data + comp) );
}
}
crPackFree( data_ptr );
}
{
unsigned char *data_ptr;
int packet_length =
sizeof( target ) +
sizeof( u1 ) +
sizeof( u2 ) +
sizeof( stride ) +
sizeof( order );
int u;
int comp;
if (num_components < 0)
{
"crPackMap1f(bad target)" );
return;
}
for (u = 0 ; u < order ; u++)
{
{
WRITE_DATA( (unsigned char *) dest_data + comp*sizeof(*points) - data_ptr, GLuint, SWAPFLOAT( *(src_data + comp) ) );
}
}
crPackFree( data_ptr );
}