|
|

楼主 |
发表于 2007-12-11 19:56:00
|
显示全部楼层
Re: 封装仅仅是UI用的Surface类库·d3dsurface9没有blt方法
本代码中删除了与本文无关的东西。
用户只要实现ISurf,IFont接口,就可以在任何平台上使用本UI。
因为UI的编程关键是算法,而不是怎样绘图,所以,
我希望我的劳动有价值,因而做成了平台无关的。
//instUI.h
#ifndef INST_UI_H
#define INST_UI_H
#include <instTypes.h> //基本数据类型的typedef
#include <instDefines.h>
#include <instStr.h> //字符串头文件是平台无关的,但是他的cpp文件是平台相关的#include <instList.h>
#include <instEvent.h>
namespace inst
{
namespace ui
{
class ISurf; //由于不知道2D/3D,绘图引擎等,所以让用户去实现它!
class IFont; //由于不知道,绘图引擎,字体处理等,所以让用户去实现它!
//只有让用户去实现,才可保证用户能将其和其他字体对象相互转换,如微软的Font
/**
* 这是为UI而设计的2D绘图接口,所以,功能有限,比如不支持Alpha通道,只支持单一的Alpha值
* 没有显存/系统内存属性!因为Alpha操作封装在方法内部
* 由于接口类没有构造函数,用户应当自己创建绘图表面对象,
* 或在窗体编辑器中输入自己的构造函数格式,然后利用窗体编辑器自动生成加载图片的代码
*/
class ISurf
{
public:
virtual ~ISurf();
virtual COORD getw() const=0;
virtual COORD geth() const=0;
virtual ALPHA GetAlpha() const=0;
virtual void SetAlpha(ALPHA alpha)=0;
virtual COLOR GetColorKey() const=0;
virtual void SetColorKey(COLOR key)=0;
virtual RET Blt()=0;
virtual RET StretchBlt()=0;
virtual Bool IsLost() const=0;
virtual RET Restore()=0;
virtual COLOR GetColor() const=0;
virtual void SetColor(COLOR color)=0;
virtual LINESTYLE GetLineStyle() const=0;
virtual void SetLineStyle(LINESTYLE style)=0;
virtual void SetPixel(COORD x,COORD y,COLOR color)=0;
virtual COLOR GetPixel(COORD x,COORD y) const=0;
virtual RET DrawLine(COORD x1,COORD y1,COORD x2,COORD y2)=0;
virtual RET DrawRect(COORD x1,COORD y1,COORD x2,COORD y2)=0;
virtual RET DrawRoundRect(COORD x1,COORD y1,COORD x2,COORD y2,COORD x3,COORD y3)=0;
virtual RET DrawEllipse(COORD x1,COORD y1,COORD x2,COORD y2)=0;
virtual RET FillRect(COORD x1,COORD y1,COORD x2,COORD y2)=0;
virtual RET FillRoundRect(COORD x1,COORD y1,COORD x2,COORD y2,COORD x3,COORD y3)=0;
virtual RET FillEllipse(COORD x1,COORD y1,COORD x2,COORD y2)=0;
virtual IFont *GetFont() const=0;
virtual void SetFont(const IFont *font)=0;
virtual RET DrawText()=0;
};
class IFont
{
virtual CStr GetName()=0;
virtual void SetName(CStr name)=0;
virtual UByte GetGdiCharSet()=0;
virtual UInt16 GetCharWidth()=0;
virtual UInt16 GetCharHeight()=0;
};
/////////////////////////////////////////////////////////////////////////////
#include "instUIContainerBase.h"
#include "instUIForm.h"
#include "instUIPicBox.h"
#include "instUIBtn.h"
#include "instUIEdit.h"
#endif//INST_UI_H
|
|