📄 ew_osadaptor.cpp
字号:
/*--------------------------------------------------------------------------
EW_OSAdaptor.cpp - 操作系统适配器抽象类的实现文件
本程序是FishGUI软件的一部分
版权所有 (C) 2003,2004 王咏武
http://www.contextfree.net/wangyw/
----------------------------------------------------------------------------
作者对 FishGUI 软件及其所有源代码授权如下:
允许任何个人、组织、机构、企业无偿获得、修改、使用、重新发布 FishGUI 软
件及其源代码,或按照有偿或者无偿的方式发行基于 FishGUI 源代码的全部或部
分内容开发的软件产品,——但行使以上权利时,须遵守以下约定:
1、重新发布 FishGUI 软件及其源代码时,不得隐去软件及其源代码中原有的版
权信息和开发者标识。
2、发行基于 FishGUI 源代码的全部或部分内容开发的软件产品时,必须在产品
的显著位置标明以下字样:
【本产品的一部分功能是基于王咏武在 FishGUI 软件中的工作完成的】
3、在正式出版物中引用 FishGUI 的文档、源代码或注释内容的,应注明软件的
原作者为王咏武。
--------------------------------------------------------------------------*/
/*! \addtogroup OSAdaptor
* @{
*/
/*! \file
* \brief 操作系统适配器抽象类的实现文件
*/
/*! @} */
#include "../Utility/EW_Common.h"
#include "EW_OSAdaptor.h"
//*#if defined(WIN32)
// #define EW_OS_WIN32
// #include "EW_Win32Adaptor.h"
//#elif defined(HAVE_LIBX11)
// #define EW_OS_X11
// #include "EW_X11Adaptor.h"
//#elif defined(EW_OS_VXWORKS)
#include "EW_VxWorksAdaptor.h"
//#endif /* WIN32 */
#if defined(WIN32) && defined(_DEBUG)
/* Trace memory allocation in windows debug version */
#include <crtdbg.h>
static char THIS_FILE[] = __FILE__;
#define new new(_NORMAL_BLOCK, __FILE__, __LINE__)
#endif /* _DEBUG */
// Remove the MACRO of windows
#undef DrawText
EW_OSAdaptor * EW_GetAdaptor()
{
return EW_OSAdaptor::GetAdaptor();
}
EW_OSAdaptor * EW_OSAdaptor::m_pAdaptor = NULL;
EW_OSDrawInterface * EW_OSAdaptor::m_pDraw = NULL;
EW_OSAdaptor::EW_OSAdaptor()
{
for (int i = 0; i < EW_MAX_SYS_MSG; i ++)
m_ppObserver[i] = NULL;
}
//##ModelId=3F4E1615027D
EW_OSAdaptor * EW_OSAdaptor::GetAdaptor()
{
if (! m_pAdaptor)
{
// #if defined(EW_OS_WIN32)
// m_pAdaptor = new EW_Win32Adaptor();
// #elif defined(EW_OS_X11)
// m_pAdaptor = new EW_X11Adaptor();
// #elif defined(EW_OS_VXWORKS)
m_pAdaptor = new EW_VxWorksAdaptor();
// #endif /* EW_OS_WIN32 */
}
return m_pAdaptor;
}
//##ModelId=40925CAF0329
void EW_OSAdaptor::Run(void)
{
InitInstance();
Execute();
ExitInstance();
}
//##ModelId=3F4A19760260
EW_OSMsgObserver * EW_OSAdaptor::SetMsgObserver(const WORD type, EW_OSMsgObserver * const pObserver)
{
EW_OSMsgObserver * tmp = m_ppObserver[type];
m_ppObserver[type] = pObserver;
return tmp;
}
//##ModelId=3F521F6D00A8
void EW_OSAdaptor::SendMsg(EW_Message * pMsg)
{
if (pMsg->wType < EW_MAX_SYS_MSG && m_ppObserver[pMsg->wType])
m_ppObserver[pMsg->wType]->OSMessage(pMsg);
}
//##ModelId=3FD88515012E
void EW_OSAdaptor::BeginDraw(const EW_Rect & rect)
{
if (m_pDraw)
m_pDraw->BeginDraw(rect);
}
//##ModelId=3FD885150188
void EW_OSAdaptor::EndDraw()
{
if (m_pDraw)
m_pDraw->EndDraw();
}
//##ModelId=3FD8851501A6
void EW_OSAdaptor::FillRect(const EW_Rect & rect, const COLORREF ForeColor, COLORREF const background)
{
if (m_pDraw)
m_pDraw->FillRect(rect, ForeColor, background);
}
//##ModelId=3FD885150278
void EW_OSAdaptor::Line(const short x1, const short y1, const short x2, const short y2, const COLORREF color)
{
if (m_pDraw)
m_pDraw->Line(x1, y1, x2, y2, color);
}
//##ModelId=3FD8851503CD
void EW_OSAdaptor::DrawText(const char * Text, const short x, const short y, const COLORREF color)
{
if (m_pDraw)
m_pDraw->DrawText(Text, x, y, color);
}
//##ModelId=3FD8851503CD
void EW_OSAdaptor::DrawTextW(const char * Text, const short x, const short y, const COLORREF color)
{
if (m_pDraw)
m_pDraw->DrawTextW(Text, x, y, color);
}
//##ModelId=3FD885160111
WORD EW_OSAdaptor::GetTextWidth(const char * Text)
{
if (m_pDraw)
return m_pDraw->GetTextWidth(Text);
else
return 0;
}
//##ModelId=3FD88516017F
WORD EW_OSAdaptor::GetTextHeight(const char * Text)
{
if (m_pDraw)
return m_pDraw->GetTextHeight(Text);
else
return 0;
}
//##ModelId=3FD8851601ED
void EW_OSAdaptor::DrawBitmap(const char * pBmpName, const short x1, const short y1)
{
if (m_pDraw)
m_pDraw->DrawBitmap(pBmpName, x1, y1);
}
//##ModelId=3FD8851602F2
void EW_OSAdaptor::DrawPolyLine(const short n, const EW_Point * vert, const COLORREF color)
{
if (m_pDraw)
m_pDraw->DrawPolyLine(n, vert, color);
}
//##ModelId=3FD885170018
void EW_OSAdaptor::DrawDotRect(const EW_Rect & rect, const COLORREF color)
{
if (m_pDraw)
m_pDraw->DrawDotRect(rect, color);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -