📄 jzimage.h
字号:
#ifndef __JZIMAGE_H__
#define __JZIMAGE_H__
#include "CImageMemMgr.h"
//#include <windows.h>
#include "xiofile.h"
enum ENUM_CXIMAGE_FORMATS{
CXIMAGE_FORMAT_UNKNOWN,
#if CXIMAGE_SUPPORT_BMP
CXIMAGE_FORMAT_BMP,
#endif
#if CXIMAGE_SUPPORT_GIF
CXIMAGE_FORMAT_GIF,
#endif
#if CXIMAGE_SUPPORT_JPG
CXIMAGE_FORMAT_JPG,
#endif
#if CXIMAGE_SUPPORT_PNG
CXIMAGE_FORMAT_PNG,
#endif
#if CXIMAGE_SUPPORT_MNG
CXIMAGE_FORMAT_MNG,
#endif
#if CXIMAGE_SUPPORT_ICO
CXIMAGE_FORMAT_ICO,
#endif
#if CXIMAGE_SUPPORT_TIF
CXIMAGE_FORMAT_TIF,
#endif
#if CXIMAGE_SUPPORT_TGA
CXIMAGE_FORMAT_TGA,
#endif
#if CXIMAGE_SUPPORT_PCX
CXIMAGE_FORMAT_PCX,
#endif
#if CXIMAGE_SUPPORT_WBMP
CXIMAGE_FORMAT_WBMP,
#endif
#if CXIMAGE_SUPPORT_WMF
CXIMAGE_FORMAT_WMF,
#endif
#if CXIMAGE_SUPPORT_J2K
CXIMAGE_FORMAT_J2K,
#endif
#if CXIMAGE_SUPPORT_JBG
CXIMAGE_FORMAT_JBG,
#endif
#if CXIMAGE_SUPPORT_JP2
CXIMAGE_FORMAT_JP2,
#endif
#if CXIMAGE_SUPPORT_JPC
CXIMAGE_FORMAT_JPC,
#endif
#if CXIMAGE_SUPPORT_PGX
CXIMAGE_FORMAT_PGX,
#endif
#if CXIMAGE_SUPPORT_PNM
CXIMAGE_FORMAT_PNM,
#endif
#if CXIMAGE_SUPPORT_RAS
CXIMAGE_FORMAT_RAS,
#endif
CMAX_IMAGE_FORMATS
};
typedef struct _SCRINFO
{
int reserve;
unsigned short w;
unsigned short h;
unsigned int* buffer;
} SCRINFO,*PSCRINFO;
#define SETRGB(r,g,b) (((unsigned int) r << 16) + ((unsigned int) g << 8) + (unsigned int)b)
struct rgb_color { BYTE r,g,b; };
//unsigned int DecodeImage(char *filename, void *p);
#ifdef __cplusplus
#define MEM_ERROR printf("%s; %d;\n",__FILE__,__LINE__)
class CJzImage :public CImageMemMgr
{
typedef struct tagCxImageInfo {
DWORD dwEffWidth; ///< DWORD aligned scan line width
BYTE* pImage;
DWORD dwType; ///< original image format
char szLastError[256]; ///< debugging
long nProgress; ///< monitor
long nEscape; ///< escape
long nBkgndIndex; ///< used for GIF, PNG, MNG
RGBQUAD nBkgndColor; ///< used for RGB transparency
BYTE nQuality; ///< used for JPEG
BYTE nJpegScale; ///< used for JPEG [ignacio]
long nFrame; ///< used for TIF, GIF, MNG : actual frame
long nNumFrames; ///< used for TIF, GIF, MNG : total number of frames
DWORD dwFrameDelay; ///< used for GIF, MNG
long xDPI; ///< horizontal resolution
long yDPI; ///< vertical resolution
DWORD dwCodecOpt[CMAX_IMAGE_FORMATS]; ///< for GIF, TIF : 0=def.1=unc,2=fax3,3=fax4,4=pack,5=jpg
long nNumLayers;
DWORD dwFlags; ///< 0x??00000 = reserved, 0x00??0000 = blend mode, 0x0000???? = layer id - user flags
DWORD dwimaHeight;
DWORD dwimaWidth;
DWORD dwWidth;
DWORD dwHeight;
WORD wBpp;
} CXIMAGEINFO;
public:
CXIMAGEINFO info;
bool CreatePalette(DWORD nums);
RGBQUAD* CreatePalette(DWORD n, BYTE *r, BYTE *g, BYTE *b);
RGBQUAD * CreateGrayPalette(DWORD wBpp);
CJzImage();
CJzImage(PSCRINFO pscr);
BYTE* GetBits(DWORD row = 0);
~CJzImage();
virtual bool Decode(CxFile *hFile);
CJzImage(DWORD dwWidth, DWORD dwHeight, DWORD wBpp, DWORD imagetype = 0);
DWORD GetPaletteSize();
bool IsInside(long x, long y);
DWORD GetHeight() const;
DWORD GetWidth() const;
DWORD GetEffWidth() const;
WORD GetBpp() const;
void* Create(DWORD dwWidth, DWORD dwHeight, DWORD wBpp, DWORD imagetype = 0);
bool Destroy();
long GetSize();
RGBQUAD* GetPalette() const;
void Clear(BYTE bval=0);
void Copy(const CJzImage &src, bool copypixels = true, bool copyselection = true, bool copyalpha = true);
DWORD GetType() const;
void SetTransIndex(long idx);
bool Transfer(CJzImage &from);
RGBQUAD GetPixelColor(long x,long y, bool bGetAlpha = true);
BYTE GetPixelIndex(long x,long y);
void SetPixelColor(long x,long y,RGBQUAD c, bool bSetAlpha = false);
RGBQUAD GetPaletteColor(BYTE idx);
void SetTransColor(RGBQUAD rgb);
long GetTransIndex() const;
void SetPixelIndex(long x,long y,BYTE i);
PSCRINFO pScr;
protected:
void* pDib;
BITMAPINFOHEADER head;
void CopyInfo(const CJzImage &src);
BYTE* pAlpha; //alpha channel
void Startup(DWORD imagetype = 0);
RGBQUAD *pRgb;
float fxscale,fyscale;
int ivscale;
void* CreateImageInfo(DWORD dwWidth, DWORD dwHeight, DWORD wBPP, DWORD imagetype);
void Bitfield2BPP(unsigned char wBpp, unsigned int *mask, unsigned char *psrc, RGBQUAD *c);
void SetPalette(DWORD n, BYTE *r, BYTE *g, BYTE *b);
void SetPalette(RGBQUAD* pPal,DWORD nColors=256);
void SetPalette(rgb_color *rgb,DWORD nColors=256);
void SetPaletteColor(BYTE idx, BYTE r, BYTE g, BYTE b, BYTE alpha=0);
void SetPaletteColor(BYTE idx, RGBQUAD c);
void SetPaletteColor(BYTE idx, COLORREF cr);
};
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -