//============================================================================== // // LTIMGOPT : Header file. // // Copyright (C) 1990, 2005 LEAD Technologies, Inc. // All rights reserved. // //============================================================================== #ifndef LTIMGOPT_H #define LTIMGOPT_H //============= INCLUDES ======================================================= #if !defined(FOR_DOTNET) #include "ltkrn.h" #include "ltdis.h" #include "ltimg.h" #include "ltfil.h" #include "ltefx.h" #endif // #if !defined(FOR_DOTNET) #define _HEADER_ENTRY_ #include "ltpck.h" //============= CONSTANTS ====================================================== // L_OptimizeImageDir Status defines #define OPTIMIZE_DIR_PRE_OPTIMIZINGIMAGE 2 // The Image optimizer is going to optimize the image. #define OPTIMIZE_DIR_OPTIMIZINGIMAGE 3 // The Image Optimizer optimizing the image. //============= ENUMS ====================================================== // JPEG Color Space enum typedef enum tagJPEGCOLORSPACE { JPEG_COLORSPACE_411 = 0, // Saving with YUV 4:1:1 color space. JPEG_COLORSPACE_422 = 1 // Saving with YUV 4:2:2 color space. } JPEGCOLORSPACE, L_FAR *pJPEGCOLORSPACE; //============= STRUCTRUES ====================================================== // Optimized Image options structure, if the user wants to save with custom options typedef struct _tagOPTIMIZEIMAGEOPTIONS { L_UINT uStructSize; /* Size of the structure */ L_UINT uJPEGQFactor; /* QFactor value to optimize with JPEG images (2-55) */ L_UINT uPNGQFactor; /* QFactor value to optimize with PNG images (0-9) */ JPEGCOLORSPACE JPEGColorSpace;/* Color space to optimize the JPEG images with */ L_INT nPercent; /* percent of redundancy value (0-100) */ L_UINT uDistance; /* 0 means no additional reduction 1 to 255 further reduction based on the color distance */ L_BOOL bPickSamePalette; /* If the user wants to generate same palette for all image frames*/ } OPTIMIZEIMAGEOPTIONS, L_FAR *pOPTIMIZEIMAGEOPTIONS; /* A data to be passed to the callback user function to inform him about the image being processed*/ L_START_PRIVATE_CLASS(OPTIMIZEIMAGEDIRINFO) L_UINT uStructSize; /* Size of the structure */ L_STRING_SIZE(szOrgFileName, MAX_PATH); /* always holds the input filename */ L_STRING_SIZE(szOptFileName, MAX_PATH); /* always holds the output filename */ L_INT nStatusCode; /* holds SUCCESS /error code/ Or Current Status */ L_INT nFilePercent; /* The Completion percentage of the operation for the currect processed file (1-100) */ L_INT nTotalPercent; /* The Completion percentage of the operation for the whole directory images (1-100) */ L_INT nTotalFolderFilesCount; /* The Total Number of files to be process */ pFILEINFO pFileInfo; /* Always has the fileinfo structure data */ pOPTIMIZEIMAGEOPTIONS pOptImgOptions; /* Copy of the original options passed */ #if defined(FOR_DOTNET) L_VOID ZeroOut() { uStructSize = 0; szOrgFileName = S""; szOptFileName = S""; nStatusCode = 0; nFilePercent = 0; nTotalPercent = 0; nTotalFolderFilesCount = 0; pFileInfo = NULL; pOptImgOptions = NULL; } #endif // #if defined(FOR_DOTNET) L_END_CLASS(OPTIMIZEIMAGEDIRINFO); //============= CALLBACKs ====================================================== L_DEFINE_PUBLIC_DELEGATE(L_INT, OPTIMIZEBUFFERCALLBACK)(L_INT nPercent, // Optimization Completion Percentage (0..100). L_OBJECT pUserData);// pointer to additional parameters. L_DEFINE_PUBLIC_DELEGATE(L_INT, OPTIMIZEIMAGEDIRCALLBACK)(pOPTIMIZEIMAGEDIRINFO pOptImgDirCBInfo, // Pointer to IMAGEEVENTDATA. L_OBJECT pUserData); // pointer to additional parameters. //============= FUNCTIONS ====================================================== /* Get the default optimization options The default options are: pOptimizeImageOptions->uStructSize = sizeof(OPTIMIZEIMAGEOPTIONS) pOptimizeImageOptions->uJPEGQFactor = 35; pOptimizeImageOptions->uPNGQFactor = 9; pOptimizeImageOptions->JPEGColorSpace = JPEG_COLORSPACE_411; pOptimizeImageOptions->nPercent = 10; pOptimizeImageOptions->uDistance = 8; pOptimizeImageOptions->bPickSamePalette = FALSE; */ L_INT EXT_FUNCTION L_OptGetDefaultOptions(pOPTIMIZEIMAGEOPTIONS pOptImgOptions, L_UINT32 uStructSize); /* Optimize the image buffer (pOrgImgData) and update the phOptImgData and puOptImgDataSize parameters by the optimized image buffer and buffer size. */ L_INT EXT_FUNCTION L_OptOptimizeBuffer( L_KERNEL_CODECS_PARAM L_UCHAR L_FAR * pOrgImgBuffer, // Original Image Data. L_UINT32 uOrgImgBufferSize, // Original Image Data size in mem in bytes. HGLOBAL L_FAR * phOptImgBuffer, // Optimized Image Data. L_UINT32 L_FAR * puOptImgBufferSize, // Optimized Image Data size in mem in bytes. pOPTIMIZEIMAGEOPTIONS pOptImgOptions,// Pointer to OPTIMIZEIMAGEOPTIONS structure. L_DELEGATE_PTR(OPTIMIZEBUFFERCALLBACK) pfnOptBufferCB, // Optional Callback. L_OBJECT pUserData); // Optional Callback User data. /* Optimize a directory full of the supported images and saves the optimized images to antoher output directory. */ L_INT EXT_FUNCTION L_OptOptimizeDir( L_KERNEL_CODECS_PARAM L_TCHAR L_FAR * pszOrgDirPath, // Original Images Dir Path. L_TCHAR L_FAR * pszOptDirPath, // Optimized Images Dir Path. pOPTIMIZEIMAGEOPTIONS pOptImgOptions, // Pointer to OPTIMIZEIMAGEOPTIONS structure. L_TCHAR L_FAR * pszFilesExt, // Indicates the files extensions to be optimized. L_BOOL bIncludeSubDirs, // True/False to recurse sub directories. L_DELEGATE_PTR(OPTIMIZEIMAGEDIRCALLBACK) pfnOptImgDirCB, // Optional Callback. L_OBJECT pUserData); // Optional Callback user data. #undef _HEADER_ENTRY_ #include "ltpck.h" #endif // LTIMGOPT_H /*.End.Of.File.........................................................................*/