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

📄 idrawplugin.h

📁 VIGASOCO (VIdeo GAmes SOurce COde) Windows port (v0.01)
💻 H
字号:
// IDrawPlugin.h
//
//	Abstract class that defines the interface to handle all drawing
//
//	This is preliminary and more methods will be added when more complex 
//	games are added. For now it's enough.
//
/////////////////////////////////////////////////////////////////////////////

#ifndef _IDRAW_PLUGIN_H_
#define _IDRAW_PLUGIN_H_


#include <string>
#include "Types.h"

class IPalette;		// defined in IPalette.h
struct GfxElement;	// defined in GfxData.h

class IDrawPlugin
{
// abstract methods
public:
	IDrawPlugin(){}
	virtual ~IDrawPlugin(){}
	virtual bool init(const VideoInfo *vi, IPalette *pal) = 0;
	virtual void end() = 0;

	// getters
	virtual bool isInitialized() const = 0;
	virtual bool isFullScreen() const = 0;

	// bitmap creation/destruction
	virtual int createBitmap(int width, int height) = 0;
	virtual void destroyBitmap(int bitmap) = 0;

	// bitmap methods
	virtual void setActiveBitmap(int bitmap) = 0;
	virtual void compose(int bitmap, int mode, int attr) = 0;

	// drawing methods
	virtual void render(bool throttle) = 0;

	virtual void setPixel(int x, int y, int color) = 0;

	virtual void drawLine(int x0, int y0, int x1, int y1, int color) = 0;
	virtual void drawRect(Rect *rect, int color) = 0;
	virtual void drawRect(int x0, int y0, int width, int height, int color) = 0;
	virtual void drawCircle(int x, int y, int radius, int color) = 0;
	virtual void drawEllipse(int x, int y, int a, int b, int color) = 0;

	virtual void fillRect(Rect *rect, int color) = 0;
	virtual void fillRect(int x0, int y0, int width, int height, int color) = 0;
	virtual void fillCircle(int x, int y, int radius, int color) = 0;
	virtual void fillEllipse(int x, int y, int a, int b, int color) = 0;

	virtual void drawGfx(GfxElement *gfx, int code, int color, int x, int y, int attr) = 0;
	virtual void drawGfxClip(GfxElement *gfx, int code, int color, int x, int y, int attr, Rect *clip) = 0;
	virtual void drawGfxTrans(GfxElement *gfx, int code, int color, int x, int y, int attr, int transData) = 0;
	virtual void drawGfxClipTrans(GfxElement *gfx, int code, int color, int x, int y, int attr, Rect *clip, int transData) = 0;

	// access to custom plugin properties
	virtual const std::string *getProperties(int *num) const = 0;
	virtual const int *getPropertiesType() const = 0;
	virtual void setProperty(std::string prop, int data) = 0;
	virtual void setProperty(std::string prop, int index, int data) = 0;
	virtual int getProperty(std::string prop) const = 0;
	virtual int getProperty(std::string prop, int index) const = 0;
};

#endif // _IDRAW_PLUGIN_H_

⌨️ 快捷键说明

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