- cximagemng_src.zip
- CxImage
- cximamng.htm
- CxImgLib.dsw
- demo
- flake.mng
- jpeg
- change.log
- filelist.txt
- Jcapimin.c
- JCAPISTD.C
- JCCOEFCT.C
- JCCOLOR.C
- JCDCTMGR.C
- JCHUFF.C
- JCHUFF.H
- JCINIT.C
- JCMAINCT.C
- JCMARKER.C
- JCMASTER.C
- JCOMAPI.C
- Jconfig.h
- JCPARAM.C
- JCPHUFF.C
- JCPREPCT.C
- JCSAMPLE.C
- JCTRANS.C
- Jdapimin.c
- JDAPISTD.C
- JDATADST.C
- JDATASRC.C
- JDCOEFCT.C
- JDCOLOR.C
- JDCT.H
- JDDCTMGR.C
- JDHUFF.C
- JDHUFF.H
- JDINPUT.C
- JDMAINCT.C
- JDMARKER.C
- JDMASTER.C
- JDMERGE.C
- JDPHUFF.C
- JDPOSTCT.C
- JDSAMPLE.C
- JDTRANS.C
- JERROR.C
- JERROR.H
- JFDCTFLT.C
- JFDCTFST.C
- JFDCTINT.C
- JIDCTFLT.C
- JIDCTFST.C
- JIDCTINT.C
- JIDCTRED.C
- JINCLUDE.H
- JMEMMGR.C
- JMEMNOBS.C
- JMEMSYS.H
- Jmorecfg.h
- Jpeg.dsp
- Jpeg.dsw
- JPEGINT.H
- JPEGLIB.H
- JQUANT1.C
- JQUANT2.C
- JUTILS.C
- JVERSION.H
- Readme.txt
- mng
- text1.mng
- text2.mng
- zlib
|
/*
* File: ximabmp.h
* Purpose: BMP Image Class Loader and Writer
*/
/* === C R E D I T S & D I S C L A I M E R S ==============
* CxImageBMP (c) 07/Aug/2001 <ing.davide.pizzolato@libero.it>
* Permission is given by the author to freely redistribute and include
* this code in any program as long as this credit is given where due.
*
* version 1.20 15/Oct/2001
* See the file history.htm for the complete bugfix and news report.
*
* Special thanks to Troels Knakkergaard for new features, enhancements and bugfixes
*
* original CImageBMP and CImageIterator implementation are:
* Copyright: (c) 1995, Alejandro Aguilar Sierra <asierra@servidor.unam.mx>
*
* COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY
* OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES
* THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE
* OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED
* CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT
* THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY
* SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL
* PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER
* THIS DISCLAIMER.
*
* Use at your own risk!
* ==========================================================
*/
#if !defined(__ximaBMP_h)
#define __ximaBMP_h
#include "ximage.h"
#include <stdio.h>
#if CXIMAGE_SUPPORT_BMP
typedef LPBITMAPINFOHEADER PDIB;
class CxImageBMP: public CxImage
{
public:
CxImageBMP::CxImageBMP() : CxImage(CXIMAGE_FORMAT_BMP) {};
// bool ReadFile(const char * imageFileName){ return CxImage::ReadFile(imageFileName,CXIMAGE_FORMAT_BMP);}
// bool SaveFile(const char * imageFileName){ return CxImage::SaveFile(imageFileName,CXIMAGE_FORMAT_BMP);}
bool Decode(FILE * hFile);
bool Encode(FILE * hFile);
protected:
bool DibReadBitmapInfo(FILE* fh,PDIB pdib);
};
#define BFT_ICON 0x4349 /* 'IC' */
#define BFT_BITMAP 0x4d42 /* 'BM' */
#define BFT_CURSOR 0x5450 /* 'PT' */
#define WIDTHBYTES(i) ((unsigned)((i+31)&(~31))/8) /* ULONG aligned ! */
#define DibWidth(lpbi) (UINT)(((LPBITMAPINFOHEADER)(lpbi))->biWidth)
#define DibHeight(lpbi) (UINT)(((LPBITMAPINFOHEADER)(lpbi))->biHeight)
#define DibBitCount(lpbi) (UINT)(((LPBITMAPINFOHEADER)(lpbi))->biBitCount)
#define DibCompression(lpbi) (DWORD)(((LPBITMAPINFOHEADER)(lpbi))->biCompression)
#define DibWidthBytesN(lpbi, n) (UINT)WIDTHBYTES((UINT)(lpbi)->biWidth * (UINT)(n))
#define DibWidthBytes(lpbi) DibWidthBytesN(lpbi, (lpbi)->biBitCount)
#define DibSizeImage(lpbi) ((lpbi)->biSizeImage == 0 \
? ((DWORD)(UINT)DibWidthBytes(lpbi) * (DWORD)(UINT)(lpbi)->biHeight) \
: (lpbi)->biSizeImage)
#define DibSize(lpbi) ((lpbi)->biSize + (lpbi)->biSizeImage + (int)(lpbi)->biClrUsed * sizeof(RGBQUAD))
//#define DibPaletteSize(lpbi) (DibNumColors(lpbi) * sizeof(RGBQUAD))
#define DibFlipY(lpbi, y) ((int)(lpbi)->biHeight-1-(y))
#define DibColors(lpbi) ((RGBQUAD FAR *)((LPBYTE)(lpbi) + (int)(lpbi)->biSize))
#define DibNumColors(lpbi) ((lpbi)->biClrUsed == 0 && (lpbi)->biBitCount <= 8 \
? (int)(1 << (int)(lpbi)->biBitCount) \
: (int)(lpbi)->biClrUsed)
#define FixBitmapInfo(lpbi) if ((lpbi)->biSizeImage == 0) \
(lpbi)->biSizeImage = DibSizeImage(lpbi); \
if ((lpbi)->biClrUsed == 0) \
(lpbi)->biClrUsed = DibNumColors(lpbi); \
//HACK for NT BI_BITFIELDS DIBs
#ifdef WIN32
#define DibPtr(lpbi) ((lpbi)->biCompression == BI_BITFIELDS \
? (LPVOID)(DibColors(lpbi) + 3) \
: (LPVOID)(DibColors(lpbi) + (UINT)(lpbi)->biClrUsed))
#else
#define DibPtr(lpbi) (LPVOID)(DibColors(lpbi) + (UINT)(lpbi)->biClrUsed)
#endif
#endif
#endif
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.