Adopted OS/2 to DC reorganisation (r50348).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@51054 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Stefan Neis
2008-01-06 22:37:10 +00:00
parent b5343e065a
commit 2c24e7adf0
11 changed files with 373 additions and 409 deletions

View File

@@ -21,6 +21,7 @@
#include "wx/wxprec.h"
#include "wx/dcclient.h"
#include "wx/os2/dcclient.h"
#ifndef WX_PRECOMP
#include "wx/string.h"
@@ -38,7 +39,7 @@
struct WXDLLEXPORT wxPaintDCInfo
{
wxPaintDCInfo( wxWindow* pWin
,wxDC* pDC
,wxPaintDCImpl* pDC
)
{
m_hWnd = pWin->GetHWND();
@@ -55,14 +56,6 @@ struct WXDLLEXPORT wxPaintDCInfo
WX_DEFINE_OBJARRAY(wxArrayDCInfo);
// ----------------------------------------------------------------------------
// macros
// ----------------------------------------------------------------------------
IMPLEMENT_DYNAMIC_CLASS(wxWindowDC, wxDC)
IMPLEMENT_DYNAMIC_CLASS(wxClientDC, wxWindowDC)
IMPLEMENT_DYNAMIC_CLASS(wxPaintDC, wxWindowDC)
// ----------------------------------------------------------------------------
// global variables
// ----------------------------------------------------------------------------
@@ -82,19 +75,19 @@ static RECT g_paintStruct;
// ===========================================================================
// ----------------------------------------------------------------------------
// wxWindowDC
// wxWindowDCImpl
// ----------------------------------------------------------------------------
wxWindowDC::wxWindowDC()
{
m_pCanvas = NULL;
m_PageSize.cx = m_PageSize.cy = 0;
IMPLEMENT_ABSTRACT_CLASS(wxWindowDCImpl, wxPMDCImpl)
wxWindowDCImpl::wxWindowDCImpl( wxDC *owner ) :
wxPMDCImpl( owner )
{
m_PageSize.cx = m_PageSize.cy = 0;
}
wxWindowDC::wxWindowDC(
wxWindow* pTheCanvas
)
wxWindowDCImpl::wxWindowDCImpl( wxDC *owner, wxWindow* pTheCanvas) :
wxPMDCImpl( owner )
{
ERRORID vError;
wxString sError;
@@ -152,9 +145,9 @@ wxWindowDC::wxWindowDC(
,&m_vRclPaint
);
InitDC();
} // end of wxWindowDC::wxWindowDC
} // end of wxWindowDCImpl::wxWindowDCImpl
void wxWindowDC::InitDC()
void wxWindowDCImpl::InitDC()
{
//
@@ -170,7 +163,10 @@ void wxWindowDC::InitDC()
m_pen.SetColour(*wxBLACK);
m_brush.SetColour(*wxWHITE);
// since we are a window dc we need to grab the palette from the window
#if wxUSE_PALETTE
InitializePalette();
#endif
wxFont* pFont = new wxFont( 10, wxMODERN, wxNORMAL, wxBOLD );
SetFont(*pFont);
delete pFont;
@@ -179,9 +175,9 @@ void wxWindowDC::InitDC()
//
::GpiSetTextAlignment((HPS)GetHPS(), TA_NORMAL_HORIZ, TA_BOTTOM);
} // end of wxWindowDC::InitDC
} // end of wxWindowDCImpl::InitDC
void wxWindowDC::DoGetSize(
void wxWindowDCImpl::DoGetSize(
int* pnWidth
, int* pnHeight
) const
@@ -190,20 +186,22 @@ void wxWindowDC::DoGetSize(
m_pCanvas->GetSize( pnWidth
,pnHeight
);
} // end of wxWindowDC::DoGetSize
} // end of wxWindowDCImpl::DoGetSize
// ----------------------------------------------------------------------------
// wxClientDC
// ----------------------------------------------------------------------------
wxClientDC::wxClientDC()
IMPLEMENT_ABSTRACT_CLASS(wxClientDCImpl, wxWindowDCImpl)
wxClientDCImpl::wxClientDCImpl( wxDC *owner ) :
wxWindowDCImpl( owner )
{
m_pCanvas = NULL;
}
wxClientDC::wxClientDC(
wxWindow* pTheCanvas
)
wxClientDCImpl::wxClientDCImpl( wxDC *owner, wxWindow *pTheCanvas) :
wxWindowDCImpl( owner )
{
SIZEL vSizl = { 0,0};
ERRORID vError;
@@ -214,13 +212,19 @@ wxClientDC::wxClientDC(
//
// default under PM is that Window and Client DC's are the same
//
m_hDC = (WXHDC) ::WinOpenWindowDC(GetWinHwnd(pTheCanvas));
printf("Got WindowDC %X for window handle %X\n", m_hDC, pTheCanvas);
m_hPS = ::GpiCreatePS( wxGetInstance()
,m_hDC
,&vSizl
,PU_PELS | GPIF_LONG | GPIA_ASSOC
);
::GpiAssociate(m_hPS, NULLHANDLE);
::GpiAssociate(m_hPS, m_hDC);
printf("Got m_hPS %X\n", m_hPS);
// Set the wxWidgets color table
if (!::GpiCreateLogColorTable( m_hPS
,0L
@@ -248,11 +252,11 @@ wxClientDC::wxClientDC(
,&m_vRclPaint
);
InitDC();
} // end of wxClientDC::wxClientDC
} // end of wxClientDCImpl::wxClientDCImpl
void wxClientDC::InitDC()
void wxClientDCImpl::InitDC()
{
wxWindowDC::InitDC();
wxWindowDCImpl::InitDC();
// in wxUniv build we must manually do some DC adjustments usually
// performed by Windows for us
@@ -267,13 +271,13 @@ void wxClientDC::InitDC()
// clip the DC to avoid overwriting the non client area
SetClippingRegion(wxPoint(0, 0), m_pCanvas->GetClientSize());
#endif // __WXUNIVERSAL__
} // end of wxClientDC::InitDC
} // end of wxClientDCImpl::InitDC
wxClientDC::~wxClientDC()
wxClientDCImpl::~wxClientDCImpl()
{
} // end of wxClientDC::~wxClientDC
} // end of wxClientDCImpl::~wxClientDCImpl
void wxClientDC::DoGetSize(
void wxClientDCImpl::DoGetSize(
int* pnWidth
, int* pnHeight
) const
@@ -282,23 +286,25 @@ void wxClientDC::DoGetSize(
m_pCanvas->GetClientSize( pnWidth
,pnHeight
);
} // end of wxClientDC::DoGetSize
} // end of wxClientDCImpl::DoGetSize
// ----------------------------------------------------------------------------
// wxPaintDC
// ----------------------------------------------------------------------------
wxArrayDCInfo wxPaintDC::ms_cache;
IMPLEMENT_ABSTRACT_CLASS(wxPaintDCImpl, wxWindowDCImpl)
wxPaintDC::wxPaintDC()
wxArrayDCInfo wxPaintDCImpl::ms_cache;
wxPaintDCImpl::wxPaintDCImpl( wxDC *owner ) :
wxClientDCImpl( owner )
{
m_pCanvas = NULL;
m_hDC = 0;
}
wxPaintDC::wxPaintDC(
wxWindow* pCanvas
)
wxPaintDCImpl::wxPaintDCImpl( wxDC *owner, wxWindow *pCanvas) :
wxClientDCImpl( owner )
{
wxCHECK_RET(pCanvas, wxT("NULL canvas in wxPaintDC ctor"));
@@ -361,9 +367,9 @@ wxPaintDC::wxPaintDC(
ms_cache.Add(new wxPaintDCInfo(m_pCanvas, this));
}
InitDC();
} // end of wxPaintDC::wxPaintDC
} // end of wxPaintDCImpl::wxPaintDCImpl
wxPaintDC::~wxPaintDC()
wxPaintDCImpl::~wxPaintDCImpl()
{
if ( m_hDC )
{
@@ -388,7 +394,7 @@ wxPaintDC::~wxPaintDC()
}
}
wxPaintDCInfo* wxPaintDC::FindInCache(
wxPaintDCInfo* wxPaintDCImpl::FindInCache(
size_t* pIndex
) const
{
@@ -406,10 +412,10 @@ wxPaintDCInfo* wxPaintDC::FindInCache(
}
}
return pInfo;
} // end of wxPaintDC::FindInCache
} // end of wxPaintDCImpl::FindInCache
// find the entry for this DC in the cache (keyed by the window)
WXHDC wxPaintDC::FindDCInCache(
WXHDC wxPaintDCImpl::FindDCInCache(
wxWindow* pWin
)
{
@@ -425,4 +431,4 @@ WXHDC wxPaintDC::FindDCInCache(
}
}
return 0;
} // end of wxPaintDC::FindInCache
} // end of wxPaintDCImpl::FindInCache