⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jzimage.h

📁 君正早期ucos系统(只有早期的才不没有打包成库),MPLAYER,文件系统,图片解码,浏览,电子书,录音,想学ucos,识货的人就下吧 russblock fmradio explore set
💻 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 + -