#endif
#ifndef WX_PRECOMP
+ #include "wx/image.h"
#include "wx/window.h"
#include "wx/dc.h"
#include "wx/utils.h"
m_colFgOld = ::GetTextColor(hdc);
m_colBgOld = ::GetBkColor(hdc);
- // note that Windows convention is opposite to wxWindows one, this is
+ // note that Windows convention is opposite to wxWidgets one, this is
// why text colour becomes the background one and vice versa
const wxColour& colFg = dc.GetTextForeground();
if ( colFg.Ok() )
m_clipY2 = (wxCoord) YDEV2LOG(rect.bottom);
}
+void
+wxDC::DoGetClippingBox(wxCoord *x, wxCoord *y, wxCoord *w, wxCoord *h) const
+{
+ // check if we should try to retrieve the clipping region possibly not set
+ // by our SetClippingRegion() but preset by Windows:this can only happen
+ // when we're associated with an existing HDC usign SetHDC(), see there
+ if ( m_clipping && !m_clipX1 && !m_clipX2 )
+ {
+ wxDC *self = wxConstCast(this, wxDC);
+ self->UpdateClipBox();
+
+ if ( !m_clipX1 && !m_clipX2 )
+ self->m_clipping = false;
+ }
+
+ wxDCBase::DoGetClippingBox(x, y, w, h);
+}
+
// common part of DoSetClippingRegion() and DoSetClippingRegionAsRegion()
void wxDC::SetClippingHrgn(WXHRGN hrgn)
{
::DeleteObject(rgn);
}
- m_clipping = false;
+ wxDCBase::DestroyClippingRegion();
}
// ---------------------------------------------------------------------------
// use MaskBlt() with ROP which doesn't do anything to dst in the mask
// points
// On some systems, MaskBlt succeeds yet is much much slower
- // than the wxWindows fall-back implementation. So we need
+ // than the wxWidgets fall-back implementation. So we need
// to be able to switch this on and off at runtime.
bool ok = false;
#if wxUSE_SYSTEM_OPTIONS
// "upper left" and "upper right"
CalcBoundingBox(x, y);
- CalcBoundingBox(x + wxCoord(w*cos(rad)), y - wxCoord(h*sin(rad)));
+ CalcBoundingBox(x + wxCoord(w*cos(rad)), y - wxCoord(w*sin(rad)));
// "bottom left" and "bottom right"
x += (wxCoord)(h*sin(rad));
y += (wxCoord)(h*cos(rad));
CalcBoundingBox(x, y);
- CalcBoundingBox(x + wxCoord(h*sin(rad)), y + wxCoord(h*cos(rad)));
+ CalcBoundingBox(x + wxCoord(w*cos(rad)), y - wxCoord(w*sin(rad)));
}
#endif
}
{
WXMICROWIN_CHECK_HDC
-#ifndef __WXWINCE__
if ( x == m_userScaleX && y == m_userScaleY )
return;
m_userScaleX = x;
m_userScaleY = y;
- SetMapMode(m_mappingMode);
-#endif
+ this->SetMapMode(m_mappingMode);
}
void wxDC::SetAxisOrientation(bool xLeftRight, bool yBottomUp)
// of the mask which is also contrary to the Windows one)
// On some systems, MaskBlt succeeds yet is much much slower
- // than the wxWindows fall-back implementation. So we need
+ // than the wxWidgets fall-back implementation. So we need
// to be able to switch this on and off at runtime.
#if wxUSE_SYSTEM_OPTIONS
if (wxSystemOptions::GetOptionInt(wxT("no-maskblt")) == 0)
return wxSize(x, y);
}
-// For use by wxWindows only, unless custom units are required.
+// For use by wxWidgets only, unless custom units are required.
void wxDC::SetLogicalScale(double x, double y)
{
WXMICROWIN_CHECK_HDC