]>
git.saurik.com Git - wxWidgets.git/blob - src/mgl/dcclient.cpp
e5b507cc92115a1373dff6c1be5e2a167d5b98e6
1 /////////////////////////////////////////////////////////////////////////////
4 // Author: Vaclav Slavik
6 // Copyright: (c) 2001 SciTech Software, Inc. (www.scitechsoft.com)
7 // Licence: wxWindows licence
8 /////////////////////////////////////////////////////////////////////////////
11 #pragma implementation "dcclient.h"
14 // For compilers that support precompilation, includes "wx.h".
15 #include "wx/wxprec.h"
22 #include "wx/dcclient.h"
23 #include "wx/window.h"
28 IMPLEMENT_DYNAMIC_CLASS(wxWindowDC
, wxDC
)
29 IMPLEMENT_DYNAMIC_CLASS(wxClientDC
,wxWindowDC
)
30 IMPLEMENT_DYNAMIC_CLASS(wxPaintDC
, wxClientDC
)
32 wxWindowDC::wxWindowDC(wxWindow
*win
) : m_wnd(win
)
34 MGLDevCtx
*dc
= win
->GetPaintMGLDC();
38 m_inPaintHandler
= TRUE
;
40 m_globalClippingRegion
= win
->GetUpdateRegion();
45 m_inPaintHandler
= FALSE
;
47 // VS: we have to update here so that screen's content is up-to-date
48 // and blitting from wxWindowDC works as expected
51 dc
= new MGLDevCtx(MGL_wmBeginPaint(win
->GetHandle()));
54 dc
->getClipRegion(clip
);
55 m_globalClippingRegion
= wxRegion(clip
);
57 // TRUE means that dtor will delete MGLDevCtx object
58 // but it won't destroy MGLDC returned by MGL_wmBeginPaint because
59 // ~MGLDevCtx() doesn't call destroy()
63 wxWindowDC::~wxWindowDC()
65 if ( !m_inPaintHandler
)
67 GetMGLDC()->setDC(NULL
);
68 MGL_wmEndPaint(m_wnd
->GetHandle());
72 wxClientDC::wxClientDC(wxWindow
*win
) : wxWindowDC(win
)
74 wxRect r
= m_wnd
->GetClientRect();
75 m_globalClippingRegion
.Intersect(r
);
76 SetDeviceOrigin(r
.x
, r
.y
);