L_EncodeABIC

#include "ltfil.h"

L_LTFIL_API L_INT L_EncodeABIC(pInputData, nAlign, nWidth, nHeight, ppOutputData, pnLength, bBiLevel)

L_UCHAR* pInputData;

/* input data buffer */

L_INT nAlign;

/* number of bytes aligned for uncompressed input data*/

L_INT nWidth;

/* image width in pixels */

L_INT nHeight;

/* image height in pixels */

L_UCHAR** ppOutputData;

/* output data buffer to receive */

L_SSIZE_T* pnLength;

/* pointer to variable */

L_BOOL bBiLevel;

/* flag */

Compresses the input raw data using the ABIC encoder.

Parameter

Description

pInputData

Pointer to a buffer that contains the uncompressed raw data.

nAlign

Number of bytes used to align the uncompressed raw data pointed to by pInputData.

nWidth

Width of the uncompressed raw data image, in pixels.

nHeight

Height of the uncompressed raw data image, in pixels.

ppOutputData

Pointer to a pointer to an output data buffer to be updated with the resulting compressed ABIC data.

pnLength

Pointer to a variable to be updated with the length of the resulting compressed data pointed to by ppOutputData.

bBiLevel

Flag that indicates whether to encode the uncompressed input data pointed to by pInputData as bi-level or grayscale. Possible values are:

 

Value

Meaning

 

TRUE

Encodes the input buffer as 1-bit Bi-level.

 

FALSE

Encodes the input buffer as 4-bit Grayscale.

Returns

SUCCESS

The function was successful.

< 1

An error occurred. Refer to Return Codes.

Comments

This function compresses the input raw data to 1-bit bi-level or 4-bit grayscale ABIC data.

The output buffer pointed by ppOutputData is allocated automatically by the function. The user is responsible to free this ppOutputData buffer by calling GlobalFreePtr() function.

Required DLLs and Libraries

LTFIL

For a listing of the exact DLLs and Libraries needed, based on the toolkit version, refer to Files To Be Included With Your Application.

Platforms

Win32, x64.

See Also

Functions:

L_DecodeABIC

Topics:

Raster Image Functions: Compression Functions

 

Compressing and Decompressing Buffers

Example

L_INT EncodeABICExample( HWND hWnd, pBITMAPHANDLE  pBitmap)
{
   HGLOBAL   hGlobal=NULL;
   L_UCHAR   *pData=NULL;
   L_SIZE_T  uLength=0;
   L_UCHAR   *pOutData=NULL;
   L_SSIZE_T nOutLength=0;
   L_INT  nRet;
   L_HANDLE  pFile;
   DWORD wWrittenBytes;

   nRet = 0;
   if( pBitmap->Flags.Allocated )
   {
      nOutLength = 0;
      pOutData = NULL;

      nRet = L_SaveBitmapMemory( &hGlobal, pBitmap, FILE_RAW, pBitmap->BitsPerPixel, 0, &uLength, NULL );
      if( SUCCESS == nRet )
      {
         pData = (L_UCHAR *)GlobalLock( hGlobal );

         nRet = L_EncodeABIC( pData, 4, pBitmap->Width, pBitmap->Height, &pOutData, &nOutLength, FALSE );
         if( SUCCESS == nRet )
         {
            pFile = CreateFile(MAKE_IMAGE_PATH(TEXT("output.ica")), GENERIC_ALL, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
            if( pFile )
            {
               if( !WriteFile(pFile, pOutData,(DWORD)(sizeof( L_UCHAR ) * nOutLength), &wWrittenBytes, NULL) )
               {
                  nRet = -1; /* failed to write data */ 
               }
               CloseHandle( pFile );
            }
            else
            {
               nRet = -1; /* failed to open file */
            }

            GlobalFreePtr( pOutData );
           
         }
         else
         {
            return nRet; /* failed to encode data */ 
         }
         GlobalUnlock( hGlobal );
         GlobalFree( hGlobal );
      }
      else
      {
         MessageBox( hWnd, TEXT("Do decode first please!"), TEXT("Information!"), MB_OK | MB_ICONINFORMATION);
         return nRet;
      }
   }
   else
      return FAILURE;

   return nRet ;
}