📄 zgfx.h
字号:
#ifndef _ZGFX_INCLUDED_
#define _ZGFX_INCLUDED_
#include ".\ddraw.h"
struct GfxRect
{
WORD x;
WORD y;
WORD w;
WORD h;
};
struct GfxKeys
{
short Up;
short Down;
short Left;
short Right;
short A;
short B;
short C;
short S;
};
enum GfxRetval
{
GfxOK=0,
GfxNoSurface,
GfxUnsupportedDevice,
GfxMallocError,
GfxBegindrawFailed,
GfxSurfaceLockFailed,
GfxWindowsVersionError,
GfxParameterError,
GfxError
};
enum GfxSubsys
{
gfxNone=0,
gfxRawFrameBuffer,
gfxGAPI,
gfxDirectDraw
};
enum GfxOrientation
{
gfxPortrait,
gfxLandscape
};
//color conversion macro
#define RGB_TO_565(r,g,b) (WORD) ((r & 0xf8 )<<8) | ((g&0xfc)<<3) | ((b&0xf8)>>3)
//average macro
#define AVERAGE_565(a, b) ( ((((a) ^ (b)) & 0xf7deU) >> 1) + ((a) & (b)) )
//GAPI func prototypes
typedef int (*GXOPENDISPLAY)(HWND, DWORD);
typedef struct GXDisplayProperties (*GXGETDISPLAYPROPERTIES)(void);
typedef void * (*GXBEGINDRAW)(void);
typedef struct GXKeyList (*GXGETDEFAULTKEYS)(int);
//DirectDraw
typedef LONG (*DIRECTDRAWCREATE)(LPGUID, LPUNKNOWN *, LPUNKNOWN *);
class ZGfx
{
public:
GfxRetval GfxCreateSurface(HWND, unsigned short, unsigned short, GfxSubsys *);
GfxRetval GfxUninit();
GfxRetval GfxUpdateScreen();
GfxRetval GfxDrawPixel(int, int, unsigned short);
GfxRetval GfxClearScreen(bool);
GfxRetval GfxClearHWBuffer();
GfxRetval GfxFillHWBuffer(unsigned short);
GfxRetval GfxFillRect(GfxRect rect, unsigned short color);
GfxRetval GfxDrawLine(int, int, int, int, unsigned short);
GfxRetval GfxGetPixelColor(int, int, unsigned short *);
bool GfxIsInitialized();
GfxRetval GfxGetWidth(int *);
GfxRetval GfxGetHeight(int *);
GfxRetval GfxGetPixelAddress(int, int, unsigned short **);
GfxRetval GfxGetBufferYPitch(int *);
GfxRetval GfxGetXCenter(int *);
GfxRetval GfxGetYCenter(int *);
GfxRetval GfxSuspend();
GfxRetval GfxResume();
GfxSubsys GfxGetSubSys();
GfxRetval GfxGetKeys(GfxOrientation, GfxKeys *);
protected:
bool GfxLoadGAPI();
bool GfxInitGAPI();
bool GfxInitRawFrameBufferAccess();
bool GfxLoadDirectDraw();
bool GfxInitDirectDraw();
protected:
GfxSubsys m_usedsubsys;
bool m_gfxinited;
void *m_screenbuf, *m_framebuf;
DWORD m_screenbufsize, m_framebufsize;
unsigned short m_screenbufwidth, m_screenbufheight, m_framebufwidth, m_framebufheight;
unsigned short m_xcenter, m_ycenter;
long m_xpitch, m_ypitch, m_cbpp;
HWND m_hwnd;
HINSTANCE m_hGAPI, m_hDD; //GAPI required for getting key list, if used, DirectDraw is loaded too
//gapi funcs
protected:
GXOPENDISPLAY m_GXOpenDisplay;
FARPROC m_GXCloseDisplay;
GXGETDISPLAYPROPERTIES m_GXGetDisplayProperties;
GXBEGINDRAW m_GXBeginDraw;
FARPROC m_GXEndDraw;
FARPROC m_GXOpenInput;
FARPROC m_GXCloseInput;
FARPROC m_GXSuspend;
FARPROC m_GXResume;
GXGETDEFAULTKEYS m_GXGetDefaultKeys;
//directdraw stuff
DIRECTDRAWCREATE m_DirectDrawCreate;
IDirectDraw *m_pdd;
DDSURFACEDESC m_ddsd;
IDirectDrawSurface *m_psurf;
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -