Listing 4: The expansion routines used by function Expand
void LP::Expand3x3 (
unsigned char val, unsigned char *block, unsigned width)
{
*block += val / 4; // First row
*++block += val / 2;
*++block += val / 4;
block += width - 2;
*block += val / 2; // Second row
*++block += val;
*++block += val / 2;
block += width - 2;
*block += val / 4; // Third row
*++block += val / 2;
*++block += val / 4;
}
void LP::Expand2x3 (
unsigned char val, unsigned char *block, unsigned width)
{
*block += val / 4; // First row
*++block += val / 2;
block += width - 1;
*block += val / 2; // Second row
*++block += val;
block += width - 1;
*block += val / 4; // Third row
*++block += val / 2;
}
void LP::Expand3x2 (
unsigned char val, unsigned char *block, unsigned width)
{
*block += val / 4; // First row
*++block += val / 2;
*++block += val / 4;
block += width - 2;
*block += val / 2; // Second row
*++block += val;
*++block += val / 2;
}
void LP::Expand2x2 (
unsigned char val, unsigned char *block, unsigned width)
{
*block += val / 16; // First row
*++block += val / 8;
block += width - 1;
*block += val / 8; // Second row
*++block += val / 4;
}
//End of File