70 lines
2.8 KiB
C
70 lines
2.8 KiB
C
/*********************************************************************
|
|
Interlace.h
|
|
|
|
Header file for interlace module.
|
|
*********************************************************************/
|
|
#ifndef _INTERLACE_H
|
|
#define _INTERLACE_H
|
|
|
|
#include "Image.h"
|
|
|
|
#define NUM_PASSES 7
|
|
|
|
#pragma pack(2) /* Apparently, this is reasonably important */
|
|
|
|
/* The primary state data structure. */
|
|
typedef struct
|
|
{
|
|
IFLCLASS Class;
|
|
long iImageHeight;
|
|
long iImageWidth;
|
|
long cbPixelSize;
|
|
|
|
long cScanBlocks;
|
|
long cPassScanLines[NUM_PASSES];
|
|
long cTotalScanLines;
|
|
long iPass;
|
|
long iPassLine;
|
|
long iScanLine;
|
|
long iImageLine;
|
|
|
|
} ADAM7_STRUCT, *pADAM7_STRUCT;
|
|
|
|
|
|
//************************************************************************************
|
|
// Given an image described by the parameters of the ADAM7_STRUCT, calculate the
|
|
// number of scan lines in the image file which has been interlaced using the Adam7
|
|
// scheme.
|
|
//************************************************************************************
|
|
int iADAM7CalculateNumberOfScanLines(pADAM7_STRUCT ptAdam7);
|
|
|
|
//************************************************************************************
|
|
// Generate a deinterlaced DIB; i.e., each pixel is in BGR in the case
|
|
// of RGB/RGBA image classes, and raster line data is stored in a contiguous block.
|
|
//************************************************************************************
|
|
// The CALLING application is responsible for deallocating the structure created by
|
|
// this function.
|
|
LPBYTE *ppbADAM7InitDIBPointers(LPBYTE pbDIB, pADAM7_STRUCT ptAdam7, DWORD cbImageLine);
|
|
|
|
// The following returns TRUE if the scan line was an empty scan line.
|
|
BOOL ADAM7AddRowToDIB(LPBYTE *ppbDIBPtrs, LPBYTE pbScanLine, pADAM7_STRUCT ptAdam7);
|
|
|
|
//************************************************************************************
|
|
|
|
//************************************************************************************
|
|
// Generate a deinterlaced image; i.e., each pixel is in RGB in the case
|
|
// of RGB/RGBA image classes, and raster line data may not necessarily be stored
|
|
// in one contiguous block of memory.
|
|
//************************************************************************************
|
|
|
|
// The following returns TRUE if the scan line was an empty scan line.
|
|
BOOL ADAM7AddRowToImageBuffer(LPBYTE ppbInmageBuffer[], LPBYTE pbScanLine, pADAM7_STRUCT ptAdam7);
|
|
//************************************************************************************
|
|
|
|
//************************************************************************************
|
|
// Generate a deinterlaced alpha channel data block.
|
|
//************************************************************************************
|
|
BOOL ADAM7RMFDeinterlaceAlpha(LPWORD *ppwInterlaced, LPWORD *ppwDeinterlaced,
|
|
IFL_ALPHA_CHANNEL_INFO *ptIFLAlphaInfo);
|
|
|
|
#endif // _INTERLACE_H
|