LBase::EncodeABIC

Summary

Compresses the input raw data using the ABIC encoder.

Syntax

#include "ltwrappr.h"

static L_INT LBase::EncodeABIC(pInputData, nAlign, nWidth, nHeight, ppOutputData, pnLength, bBiLevel)

Parameters

L_UCHAR * pInputData

Pointer to a buffer that contains the uncompressed raw data.

L_INT nAlign

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

L_INT nWidth

Width of the uncompressed raw data image, in pixels.

L_INT nHeight

Height of the uncompressed raw data image, in pixels.

L_UCHAR ** ppOutputData

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

L_SSIZE_T * pnLength

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

L_BOOL 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

Value Meaning
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

Platforms

Win32, x64.

See Also

Functions

Topics

Example

L_INT LBase__EncodeABICExample( LBitmapBase&  Bitmap )  
{ 
   L_UCHAR  *pData;  
   L_UCHAR  *pOutData;  
   L_SSIZE_T  nOutLength;  
   L_INT  nRet;  
   L_HANDLE pFile = NULL; /* File handle */ 
    
   LMemoryFile Memfile;  
   LBuffer     Buffer;  
   DWORD       wWrittenBytes; 
 
   nRet = 0;  
   if( Bitmap.IsAllocated() )  
   { 
      nOutLength = 0;  
      pOutData = NULL;  
      Memfile.SetBitmap(&Bitmap);  
      nRet = Memfile.Save( &Buffer, FILE_RAW, Bitmap.GetBitsPerPixel(), 0, NULL );  
      if( SUCCESS == nRet )  
      { 
         pData = (L_UCHAR *)GlobalLock( Buffer.GetHandle() );  
         nRet = LBase::EncodeABIC( pData, 4, Bitmap.GetWidth(), Bitmap.GetHeight(), &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 );  
            nRet = SUCCESS;  
         } 
         else 
         { 
            nRet = -1; /* failed to encode data */  
         } 
          
         GlobalUnlock( Buffer.GetHandle() );  
 
         GlobalFree( Buffer.GetHandle() );  
 
      } 
 
   } 
 
   else 
 
   { 
 
      MessageBox( AfxGetApp()->m_pMainWnd->GetSafeHwnd(), TEXT("Do decode first please!"), TEXT("Information!"), MB_OK | MB_ICONINFORMATION);  
 
      nRet = 0;  
 
   } 
 
    
 
   return nRet;  
 
} 
Help Version 22.0.2023.2.2
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.

LEADTOOLS Raster Imaging C++ Class Library Help
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.