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

📄 webimgview.h

📁 快速处理基于 Web 的各种图象文件.zip
💻 H
📖 第 1 页 / 共 2 页
字号:
//*****************************************************************************************


typedef struct 
{
	WORD		ScreenWidth;
	WORD		ScreenHeight;
	BYTE		GlobalColorTableSize;
    BYTE		SortFlag;
    BYTE		ColorResolution;
    BYTE		GlobalColorTableFlag;
	COLORREF	BackGroundColor;
    BYTE		AspectRatio;
} MYHEADER;

//*****************************************************************************************
typedef struct 
{
    WORD Left;
    WORD Top;
    WORD Width;
	WORD Height;
    BYTE LocalColorTableFlag;
    BYTE InterlaceFlag;
    BYTE SortFlag;
    BYTE LocalColorTableSize;
} MYIMAGEDESC;

//*****************************************************************************************
typedef struct 
{
    BYTE BlockSize;
    BYTE DisposalMethod;
    BYTE UserInputFlag;
    BYTE TransparentColorFlag;
    WORD DelayTime;
    BYTE ColorIndex;
} MYGRAPHICALCONTROL;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//END IMAGELIB STUFF
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


class CWebImgView : public CView
{
protected: // create from serialization only
	CWebImgView();
	DECLARE_DYNCREATE(CWebImgView)
// Attributes

public:
	//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	//IMAGELIB STUFF
	//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	LinkedList GifList;
	HINSTANCE hDLLInst;
	TMyGifAnimation *PMyGifAnimation;
	short CancelLoadImage;
	HANDLE BackGroundDib;
	HBITMAP BackGroundDDB;
	HPALETTE BackGroundDibPalette; 
	BOOL LoadingImage;
	BOOL LoadTimerSet;
	BOOL FirstDib;
	BOOL CanAnimate;
	BOOL TimerAnimate;
	BOOL InTimer;
	BOOL ExitingApp;
	int CurrentFrameItem;

	HDC BufferDC;
	RECT PreviousFrameRect;
	int PreviousFrame;
	bool FirstFileDrawing;
	bool SaveCurrentFrame;
	HANDLE PictureDIB;
	bool IsFileSaving;
	char *Stream;
	long *StreamSize;

		//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	//END IMAGELIB STUFF
	//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Operations

public:

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CWebImgView)
	public:
	virtual void OnDraw(CDC* pDC);  // overridden to draw this view
	virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
	//}}AFX_VIRTUAL

// Implementation
public:
	virtual ~CWebImgView();
	//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	//IMAGELIB STUFF
	//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************
	HANDLE IDDBtoDIB(HBITMAP  hDDB,
		             HPALETTE hPal,
					 UINT     uBPP);
	HANDLE MakeMaskDib(HANDLE hsDIB,
					   long new_width,
                   	   long new_height,
					   UINT TransparentColorIndex);
	UINT GetDIBStorageWidth(HANDLE hsDIB);
	void LoadBackGroundBitMap();
	LPRECT GetFrameRect(int Frame);
	void DrawFrame(int Frame);
	WORD PaletteSize (VOID FAR * pv);
	UINT GetDIBWidth(HANDLE hsDIB);
	UINT GetDIBHeight(HANDLE hsDIB);
	UINT GetDIBBitPerPixel(HANDLE hsDIB);
	BYTE * GetDIBBits(LPBITMAPINFOHEADER lpBI);
	HPALETTE CreateDIBPalette(HANDLE hsDIB);
	BOOL StretchDDB(HDC      hDC,
					HANDLE   hDDB,
                    HPALETTE hPal,
                    int      nX,
                    int      nY,
                    UINT     uWidth,
                    UINT     uHeight);
	BOOL DrawDDB(HDC      hDC,
				 HBITMAP  hDDB,
                 HPALETTE hPal,
                 int      nX,
                 int      nY);
	WORD DibNumColors (VOID FAR * pv);
	HANDLE CreateNewDib(long new_width,
                   	    long new_height,
                      	short image_type);
	BOOL DrawDIB(HDC	  hDC,
			     HANDLE   hsDIB,
				 HPALETTE hPal,
				 int      nX,
				 int      nY);
	BOOL StretchDIB(HDC      hDC,
				 HANDLE   hsDIB,
				 HPALETTE hPal,
				 int      nX,
				 int      nY,
				 UINT     uWidth,
				 UINT     uHeight);
	HANDLE CopyDIB(HANDLE hsDIB);
	HANDLE CopyAndInvert1BitDIB(HANDLE hsDIB);
	void ClearList();
	void ClearListItem(int Item);
	void PumpMessages();
	int GetAnimationDelayTime(int frame);
	int GetAnimationLoops();
	short CallEvent(HANDLE hdib,         // Handle for Dib
                    void   *GifHeader,   // Pointer to GIF Header (Structure)
					void   *ImgDesc,     // Pointer to Image Descreptor (Structure)
					void   *GraphCtrl,   // Pointer to Graphical Control Ext.(Strucure)
					long   NetLoop,      // Number of Netscape loops
					char   *pComment,    // Pointer to comment block
                    short  p);   
	
	short SaveCallEvent (HANDLE* hdib,	//Pass handle to dib to save
					 WORD * cLeft,	//Left of the frame
					 WORD * cTop,	//Top of the frame
					 WORD * cWidth,	//Width of the frame
					 WORD * cHeigth,//Height of the frame
					 BYTE * cLocalColorTableFlag, //Frame has its own palette. If 0 it will use the colortable of frame 1
					 BYTE * cInterlaceFlag, //Save frame interlaced (Only one frame 1)
					 BYTE * cSortFlag,//Not used (Set to 0)
									  //If bitdepth = 1 then cLocalColorTableSize = 1 
									  //If bitdepth = 4 then cLocalColorTableSize = 15 
									  //If bitdepth = 8 then cLocalColorTableSize = 255
					 BYTE * cLocalColorTableSize,
					 BYTE * cBlockSize,//Not used (Set to 0)
					 BYTE * cDisposalMethod,//Disposal method. 
					 BYTE * cUserInputFlag,//Not used (Set to 1)
					 BYTE * cTransparentColorFlag,//Specifiy if frame has a transparant color
					 WORD * cDelayTime,//Delay time in Micro Seconds 
					 BYTE * cTransparentColorIndex,//Index to paletteEntry to show background
					 char * cpComment,//Add a comment to this frame
					 short frame,//This is passed by the dll to let you know which frame to save
					 short p);//Proggress and indicator//
	
	short CWebImgView::ProgressEvent (short Progress);
	short CWebImgView::DibUpdateEvent(HANDLE hdib);

	BOOL StretchDIBMode(HDC      hDC,
						HANDLE   hsDIB,
						HPALETTE hPal,
						int      nX,
						int      nY,
						UINT     uWidth,
						UINT     uHeight,
						const	Mode);


	
	// Progressive showing
	//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	//END IMAGELIB STUFF
	//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#ifdef _DEBUG
	virtual void AssertValid() const;
	virtual void Dump(CDumpContext& dc) const;
#endif

protected:

// Generated message map functions
protected:
	//{{AFX_MSG(CWebImgView)
	afx_msg void OnFileOpen();
	afx_msg void OnTimer(UINT nIDEvent);
	afx_msg void OnStartanimation();
	afx_msg void OnStopanimation();
	afx_msg void OnDestroy();
	afx_msg void OnFileSave();
	afx_msg void OnFileSavecurrentframe();
	afx_msg void OnFileOpenpng();
	afx_msg void OnFileSavepng();
	afx_msg void OnFileSaveasjpg();
	afx_msg void OnFileSaveasbmp();
	afx_msg void OnArhivPackfile();
	afx_msg void OnArhivUnpackfile();
	afx_msg void OnArhivUnpackbuffer();
	afx_msg void OnArhivPackbuffer();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_WEBIMGVIEW_H__6EA55683_AC23_11D2_85BC_00400528ECE2__INCLUDED_)

⌨️ 快捷键说明

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