wxFLOOD_BORDER
};
-// Mapping modes (same values as used by Windows, don't change)
+// Mapping modes
enum wxMappingMode
{
wxMM_TEXT = 1,
+ wxMM_METRIC,
wxMM_LOMETRIC,
- wxMM_HIMETRIC,
- wxMM_LOENGLISH,
- wxMM_HIENGLISH,
wxMM_TWIPS,
- wxMM_ISOTROPIC,
- wxMM_ANISOTROPIC,
- wxMM_POINTS,
- wxMM_METRIC
+ wxMM_POINTS
};
#if WXWIN_COMPATIBILITY_2_8
// logical functions
virtual void SetLogicalFunction(wxRasterOperationMode function) = 0;
- virtual wxRasterOperationMode GetLogicalFunction() const
+ virtual wxRasterOperationMode GetLogicalFunction() const
{ return m_logicalFunction; }
// text measurement
class WXDLLIMPEXP_CORE wxDC : public wxObject
{
public:
+ // copy attributes (font, colours and writing direction) from another DC
+ void CopyAttributes(const wxDC& dc);
+
virtual ~wxDC() { delete m_pimpl; }
wxDCImpl *GetImpl()
bool Blit(wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height,
wxDC *source, wxCoord xsrc, wxCoord ysrc,
- wxRasterOperationMode rop = wxCOPY, bool useMask = false,
+ wxRasterOperationMode rop = wxCOPY, bool useMask = false,
wxCoord xsrcMask = wxDefaultCoord, wxCoord ysrcMask = wxDefaultCoord)
{
return m_pimpl->DoBlit(xdest, ydest, width, height,
}
bool Blit(const wxPoint& destPt, const wxSize& sz,
wxDC *source, const wxPoint& srcPt,
- wxRasterOperationMode rop = wxCOPY, bool useMask = false,
+ wxRasterOperationMode rop = wxCOPY, bool useMask = false,
const wxPoint& srcPtMask = wxDefaultPosition)
{
return m_pimpl->DoBlit(destPt.x, destPt.y, sz.x, sz.y,
}
bool StretchBlit(const wxPoint& dstPt, const wxSize& dstSize,
wxDC *source, const wxPoint& srcPt, const wxSize& srcSize,
- wxRasterOperationMode rop = wxCOPY, bool useMask = false,
+ wxRasterOperationMode rop = wxCOPY, bool useMask = false,
const wxPoint& srcMaskPt = wxDefaultPosition)
{
return m_pimpl->DoStretchBlit(dstPt.x, dstPt.y, dstSize.x, dstSize.y,
#endif // WXWIN_COMPATIBILITY_2_8
#ifdef __WXMSW__
+ // GetHDC() is the simplest way to retrieve an HDC From a wxDC but only
+ // works if this wxDC is GDI-based and fails for GDI+ contexts (and
+ // anything else without HDC, e.g. wxPostScriptDC)
WXHDC GetHDC() const;
+
+ // don't use these methods manually, use GetTempHDC() instead
+ virtual WXHDC AcquireHDC() { return GetHDC(); }
+ virtual void ReleaseHDC(WXHDC WXUNUSED(hdc)) { }
+
+ // helper class holding the result of GetTempHDC() with std::auto_ptr<>-like
+ // semantics, i.e. it is moved when copied
+ class TempHDC
+ {
+ public:
+ TempHDC(wxDC& dc)
+ : m_dc(dc),
+ m_hdc(dc.AcquireHDC())
+ {
+ }
+
+ TempHDC(const TempHDC& thdc)
+ : m_dc(thdc.m_dc),
+ m_hdc(thdc.m_hdc)
+ {
+ const_cast<TempHDC&>(thdc).m_hdc = 0;
+ }
+
+ ~TempHDC()
+ {
+ if ( m_hdc )
+ m_dc.ReleaseHDC(m_hdc);
+ }
+
+ WXHDC GetHDC() const { return m_hdc; }
+
+ private:
+ wxDC& m_dc;
+ WXHDC m_hdc;
+
+ wxDECLARE_NO_ASSIGN_CLASS(TempHDC);
+ };
+
+ // GetTempHDC() also works for wxGCDC (but still not for wxPostScriptDC &c)
+ TempHDC GetTempHDC() { return TempHDC(*this); }
#endif // __WXMSW__
protected:
private:
DECLARE_ABSTRACT_CLASS(wxDC)
- DECLARE_NO_COPY_CLASS(wxDC)
+ wxDECLARE_NO_COPY_CLASS(wxDC);
};
// ----------------------------------------------------------------------------
wxColour m_colFgOld;
- DECLARE_NO_COPY_CLASS(wxDCTextColourChanger)
+ wxDECLARE_NO_COPY_CLASS(wxDCTextColourChanger);
};
// ----------------------------------------------------------------------------
wxPen m_penOld;
- DECLARE_NO_COPY_CLASS(wxDCPenChanger)
+ wxDECLARE_NO_COPY_CLASS(wxDCPenChanger);
};
// ----------------------------------------------------------------------------
wxBrush m_brushOld;
- DECLARE_NO_COPY_CLASS(wxDCBrushChanger)
+ wxDECLARE_NO_COPY_CLASS(wxDCBrushChanger);
};
// ----------------------------------------------------------------------------
private:
wxDC& m_dc;
- DECLARE_NO_COPY_CLASS(wxDCClipper)
+ wxDECLARE_NO_COPY_CLASS(wxDCClipper);
};
// ----------------------------------------------------------------------------
class WXDLLIMPEXP_CORE wxDCFontChanger
{
public:
- wxDCFontChanger(wxDC& dc, const wxFont& font) : m_dc(dc), m_fontOld(dc.GetFont())
+ wxDCFontChanger(wxDC& dc)
+ : m_dc(dc), m_fontOld()
+ {
+ }
+
+ wxDCFontChanger(wxDC& dc, const wxFont& font)
+ : m_dc(dc), m_fontOld(dc.GetFont())
+ {
+ m_dc.SetFont(font);
+ }
+
+ void Set(const wxFont& font)
{
+ if ( !m_fontOld.Ok() )
+ m_fontOld = m_dc.GetFont();
m_dc.SetFont(font);
}
wxFont m_fontOld;
- DECLARE_NO_COPY_CLASS(wxDCFontChanger)
+ wxDECLARE_NO_COPY_CLASS(wxDCFontChanger);
};