📄 webimgview.h
字号:
//*****************************************************************************************
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 + -