ILuint readScanline(ILubyte *scan, ILint width, CHANNEL *channel, ILint bytes) { ILint noCol; ILint off[4]; ILuint status=0; while (channel) { noCol = 0; if(channel->Chan & PIC_RED_CHANNEL) { off[noCol] = 0; noCol++; } if(channel->Chan & PIC_GREEN_CHANNEL) { off[noCol] = 1; noCol++; } if(channel->Chan & PIC_BLUE_CHANNEL) { off[noCol] = 2; noCol++; } if(channel->Chan & PIC_ALPHA_CHANNEL) { off[noCol] = 3; noCol++; //@TODO: Find out if this is possible. if (bytes == 3) // Alpha channel in a 24-bit image. Do not know what to do with this. return 0; } switch(channel->Type & 0x0F) { case PIC_UNCOMPRESSED: status = channelReadRaw(scan, width, noCol, off, bytes); break; case PIC_PURE_RUN_LENGTH: status = channelReadPure(scan, width, noCol, off, bytes); break; case PIC_MIXED_RUN_LENGTH: status = channelReadMixed(scan, width, noCol, off, bytes); break; } if (!status) break; channel = (CHANNEL*)channel->Next; } return status; }
ILuint readScanline(ILubyte *scan, ILint width, CHANNEL *channel, ILint bytes) { ILint noCol; ILint off[4]; ILuint status=0; while (channel) { noCol = 0; //#ifndef sgi if(channel->Chan & PIC_RED_CHANNEL) { off[noCol] = 0; noCol++; } if(channel->Chan & PIC_GREEN_CHANNEL) { off[noCol] = 1; noCol++; } if(channel->Chan & PIC_BLUE_CHANNEL) { off[noCol] = 2; noCol++; } if(channel->Chan & PIC_ALPHA_CHANNEL) { off[noCol] = 3; noCol++; } /*#else if(channel->channels & PIC_RED_CHANNEL) { off[noCol] = 3; noCol++; } if(channel->channels & PIC_GREEN_CHANNEL) { off[noCol] = 2; noCol++; } if(channel->channels & PIC_BLUE_CHANNEL) { off[noCol] = 1; noCol++; } if(channel->channels & PIC_ALPHA_CHANNEL) { off[noCol] = 0; noCol++; } #endif*/ switch(channel->Type & 0x0F) { case PIC_UNCOMPRESSED: status = channelReadRaw(scan, width, noCol, off, bytes); break; case PIC_PURE_RUN_LENGTH: status = channelReadPure(scan, width, noCol, off, bytes); break; case PIC_MIXED_RUN_LENGTH: status = channelReadMixed(scan, width, noCol, off, bytes); break; } if (!status) break; channel = channel->Next; } return status; }