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

📄 ximage.h

📁 It s a tool designed to extract as much information as possible from Bluetooth devices without the r
💻 H
📖 第 1 页 / 共 2 页
字号:
/* * File:	ximage.h * Purpose:	General Purpose Image Class  *//*  --------------------------------------------------------------------------------	COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:	CxImage version 5.99c 17/Oct/2004	CxImage : Copyright (C) 2001 - 2004, Davide Pizzolato	Original CImage and CImageIterator implementation are:	Copyright (C) 1995, Alejandro Aguilar Sierra (asierra(at)servidor(dot)unam(dot)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.	Permission is hereby granted to use, copy, modify, and distribute this	source code, or portions hereof, for any purpose, including commercial applications,	freely and without fee, subject to the following restrictions: 	1. The origin of this software must not be misrepresented; you must not	claim that you wrote the original software. If you use this software	in a product, an acknowledgment in the product documentation would be	appreciated but is not required.	2. Altered source versions must be plainly marked as such, and must not be	misrepresented as being the original software.	3. This notice may not be removed or altered from any source distribution.  --------------------------------------------------------------------------------	Other information: about CxImage, and the latest version, can be found at the	CxImage home page: http://www.xdp.it  -------------------------------------------------------------------------------- */#if !defined(__CXIMAGE_H)#define __CXIMAGE_H#if _MSC_VER > 1000#pragma once#endif /////////////////////////////////////////////////////////////////////////////#include "xfile.h"#include "xiofile.h"#include "xmemfile.h"#include "ximadef.h"	//<vho> adjust some #define/* see "ximacfg.h" for CxImage configuration options *//////////////////////////////////////////////////////////////////////////////// CxImage formats enumeratorenum ENUM_CXIMAGE_FORMATS{CXIMAGE_FORMAT_UNKNOWN,#if CXIMAGE_SUPPORT_BMPCXIMAGE_FORMAT_BMP,#endif#if CXIMAGE_SUPPORT_GIFCXIMAGE_FORMAT_GIF,#endif#if CXIMAGE_SUPPORT_JPGCXIMAGE_FORMAT_JPG,#endif#if CXIMAGE_SUPPORT_PNGCXIMAGE_FORMAT_PNG,#endif#if CXIMAGE_SUPPORT_MNGCXIMAGE_FORMAT_MNG,#endif#if CXIMAGE_SUPPORT_ICOCXIMAGE_FORMAT_ICO,#endif#if CXIMAGE_SUPPORT_TIFCXIMAGE_FORMAT_TIF,#endif#if CXIMAGE_SUPPORT_TGACXIMAGE_FORMAT_TGA,#endif#if CXIMAGE_SUPPORT_PCXCXIMAGE_FORMAT_PCX,#endif#if CXIMAGE_SUPPORT_WBMPCXIMAGE_FORMAT_WBMP,#endif#if CXIMAGE_SUPPORT_WMFCXIMAGE_FORMAT_WMF,#endif#if CXIMAGE_SUPPORT_J2KCXIMAGE_FORMAT_J2K,#endif#if CXIMAGE_SUPPORT_JBGCXIMAGE_FORMAT_JBG,#endif#if CXIMAGE_SUPPORT_JP2CXIMAGE_FORMAT_JP2,#endif#if CXIMAGE_SUPPORT_JPCCXIMAGE_FORMAT_JPC,#endif#if CXIMAGE_SUPPORT_PGXCXIMAGE_FORMAT_PGX,#endif#if CXIMAGE_SUPPORT_PNMCXIMAGE_FORMAT_PNM,#endif#if CXIMAGE_SUPPORT_RASCXIMAGE_FORMAT_RAS,#endifCMAX_IMAGE_FORMATS};struct basic_image_information {	ENUM_CXIMAGE_FORMATS format;	long width,height;};void inline create_basic_image_information(ENUM_CXIMAGE_FORMATS format, long width, long height,basic_image_information *basic_info){	basic_info->format=format;	basic_info->width=width;	basic_info->height=height;}/////////////////////////////////////////////////////////////////////////////// CxImage class/////////////////////////////////////////////////////////////////////////////class DLL_EXP CxImage{//extensible information collectortypedef struct tagCxImageInfo {	DWORD	dwEffWidth;			///< DWORD aligned scan line width	BYTE*	pImage;				///< THE IMAGE BITS	CxImage* pGhost;			///< if this is a ghost, pGhost points to the body	CxImage* pParent;			///< if this is a layer, pParent points to the body	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	int 	m_dispmeth;		///< used for GIF	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	RECT	rSelectionBox;		///< bounding rectangle	BYTE	nAlphaMax;			///< max opacity (fade)	bool	bAlphaPaletteEnabled; ///< true if alpha values in the palette are enabled.	bool	bEnabled;			///< enables the painting functions	long	xOffset;	long	yOffset;	DWORD	dwCodecOpt[CMAX_IMAGE_FORMATS];	///< for GIF, TIF : 0=def.1=unc,2=fax3,3=fax4,4=pack,5=jpg	RGBQUAD last_c;				///< for GetNearestIndex optimization	BYTE	last_c_index;	bool	last_c_isvalid;	long	nNumLayers;	DWORD	dwFlags;			///< 0x??00000 = reserved, 0x00??0000 = blend mode, 0x0000???? = layer id - user flags	bool	bGetAllFrames;	CxImage ** GifFrames;} CXIMAGEINFO;public:	//public structuresstruct rgb_color { BYTE r,g,b; };#if CXIMAGE_SUPPORT_WINDOWS// <VATI> text placement data// members must be initialized with the InitTextInfo(&this) function.typedef struct tagCxTextInfo{	TCHAR    text[4096]; ///< text (char -> TCHAR for UNICODE [Cesar M])	LOGFONT  lfont;      ///< font and codepage data    COLORREF fcolor;     ///< foreground color    long     align;      ///< DT_CENTER, DT_RIGHT, DT_LEFT aligment for multiline text    BYTE     opaque;     ///< text has background or hasn't. Default is true.						 ///< data for background (ignored if .opaque==FALSE)     COLORREF bcolor;     ///< background color    float    b_opacity;  ///< opacity value for background between 0.0-1.0 Default is 0. (opaque)    BYTE     b_outline;  ///< outline width for background (zero: no outline)    BYTE     b_round;    ///< rounding radius for background rectangle. % of the height, between 0-50. Default is 10.                         ///< (backgr. always has a frame: width = 3 pixel + 10% of height by default.)} CXTEXTINFO;#endifpublic:/** \addtogroup Constructors */ //@{	CxImage(DWORD imagetype = 0);	CxImage(DWORD dwWidth, DWORD dwHeight, DWORD wBpp, DWORD imagetype = 0);	CxImage(const CxImage &src, bool copypixels = true, bool copyselection = true, bool copyalpha = true);	CxImage(const TCHAR * filename, DWORD imagetype);	// For UNICODE support: char -> TCHAR	CxImage(FILE * stream, DWORD imagetype);	CxImage(CxFile * stream, DWORD imagetype);	CxImage(BYTE * buffer, DWORD size, DWORD imagetype);	virtual ~CxImage() { Destroy(); DestroyGifFrames();};	CxImage& operator = (const CxImage&);//@}/** \addtogroup Initialization */ //@{	void*	Create(DWORD dwWidth, DWORD dwHeight, DWORD wBpp, DWORD imagetype = 0);	bool	Destroy();	bool	DestroyGifFrames();	void	Clear(BYTE bval=0);	void	Copy(const CxImage &src, bool copypixels = true, bool copyselection = true, bool copyalpha = true);	bool	Transfer(CxImage &from);	bool	CreateFromArray(BYTE* pArray,DWORD dwWidth,DWORD dwHeight,DWORD dwBitsperpixel, DWORD dwBytesperline, bool bFlipImage);	bool	CreateFromMatrix(BYTE** ppMatrix,DWORD dwWidth,DWORD dwHeight,DWORD dwBitsperpixel, DWORD dwBytesperline, bool bFlipImage);	void	FreeMemory(void* memblock);//@}/** \addtogroup Attributes */ //@{	long	GetSize();	BYTE*	GetBits(DWORD row = 0);	BYTE	GetColorType();	void*	GetDIB() const;	DWORD	GetHeight() const;	DWORD	GetWidth() const;	DWORD	GetEffWidth() const;	DWORD	GetNumColors() const;	WORD	GetBpp() const;	DWORD	GetType() const;	const char*	GetLastError();	const TCHAR* GetVersion();	const float GetVersionNumber();	DWORD	GetFrameDelay() const;	void	SetFrameDelay(DWORD d);	void	GetOffset(long *x,long *y);	void	SetOffset(long x,long y);	BYTE	GetJpegQuality() const;	void	SetJpegQuality(BYTE q);	BYTE	GetJpegScale() const;	void	SetJpegScale(BYTE q);	long	GetXDPI() const;	long	GetYDPI() const;	void	SetXDPI(long dpi);	void	SetYDPI(long dpi);	DWORD	GetClrImportant() const;	void	SetClrImportant(DWORD ncolors = 0);	long	GetProgress() const;	long	GetEscape() const;	void	SetProgress(long p);	void	SetEscape(long i);	long	GetTransIndex() const;	RGBQUAD	GetTransColor();	void	SetTransIndex(long idx);	void	SetTransColor(RGBQUAD rgb);	bool	IsTransparent() const;	void	SetDisposalMethod(int dm);	long	GetDisposalMethod();	DWORD	GetCodecOption(DWORD imagetype = 0);	bool	SetCodecOption(DWORD opt, DWORD imagetype = 0);	DWORD	GetFlags() const;	void	SetFlags(DWORD flags, bool bLockReservedFlags = true);	//void*	GetUserData() const {return info.pUserData;}	//void	SetUserData(void* pUserData) {info.pUserData = pUserData;}//@}/** \addtogroup Palette * These functions have no effects on RGB images and in this case the returned value is always 0. * @{ */	bool	IsGrayScale();	bool	IsIndexed() const;	bool	IsSamePalette(CxImage &img, bool bCheckAlpha = true);	DWORD	GetPaletteSize();	RGBQUAD* GetPalette() const;	RGBQUAD GetPaletteColor(BYTE idx);	bool	GetPaletteColor(BYTE i, BYTE* r, BYTE* g, BYTE* b);	BYTE	GetNearestIndex(RGBQUAD c);	void	BlendPalette(COLORREF cr,long perc);	void	SetGrayPalette();	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);	void	SwapIndex(BYTE idx1, BYTE idx2);	void	SetStdPalette();//@}/** \addtogroup Pixel */ //@{	bool	IsInside(long x, long y);	bool	IsTransparent(long x,long y);	RGBQUAD GetPixelColor(long x,long y, bool bGetAlpha = true);	BYTE	GetPixelIndex(long x,long y);	BYTE	GetPixelGray(long x, long y);	void	SetPixelColor(long x,long y,RGBQUAD c, bool bSetAlpha = false);	void	SetPixelColor(long x,long y,COLORREF cr);	void	SetPixelIndex(long x,long y,BYTE i);	void	DrawLine(int StartX, int EndX, int StartY, int EndY, RGBQUAD color, bool bSetAlpha=false);	void	DrawLine(int StartX, int EndX, int StartY, int EndY, COLORREF cr);	void	BlendPixelColor(long x,long y,RGBQUAD c, float blend, bool bSetAlpha = false);//@}protected:/** \addtogroup Protected */ //@{	BYTE BlindGetPixelIndex(const long x,const long y);	RGBQUAD BlindGetPixelColor(const long x,const long y);	void *BlindGetPixelPointer(const long x,const  long y);//@}public:#if CXIMAGE_SUPPORT_INTERPOLATION/** \addtogroup Interpolation */ //@{	//overflow methods:	enum OverflowMethod {		OM_COLOR=1,		OM_BACKGROUND=2,		OM_TRANSPARENT=3,		OM_WRAP=4,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -