]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/graphics.cpp
Cleanup of wxSocket::_Wait():
[wxWidgets.git] / src / msw / graphics.cpp
index 7ffc36e55c08a0b4f1f2eef0ddf533066e6e9ea1..e794e833482acae73bea07bfe8bacc174e5fdf58 100644 (file)
@@ -279,7 +279,7 @@ private :
 class wxGDIPlusContext : public wxGraphicsContext
 {
 public:
-    wxGDIPlusContext( wxGraphicsRenderer* renderer, HDC hdc );
+    wxGDIPlusContext( wxGraphicsRenderer* renderer, HDC hdc , wxDouble width, wxDouble height );
     wxGDIPlusContext( wxGraphicsRenderer* renderer, HWND hwnd );
     wxGDIPlusContext( wxGraphicsRenderer* renderer, Graphics* gr);
     wxGDIPlusContext();
@@ -328,6 +328,7 @@ public:
         wxDouble *descent, wxDouble *externalLeading ) const;
     virtual void GetPartialTextExtents(const wxString& text, wxArrayDouble& widths) const;
     virtual bool ShouldOffset() const;
+    virtual void GetSize( wxDouble* width, wxDouble *height );
 
 private:
     void    Init();
@@ -338,13 +339,16 @@ private:
     GraphicsState m_state1;
     GraphicsState m_state2;
 
+    wxDouble m_width;
+    wxDouble m_height;
+
     DECLARE_DYNAMIC_CLASS_NO_COPY(wxGDIPlusContext)
 };
 
 class WXDLLIMPEXP_CORE wxGDIPlusMeasuringContext : public wxGDIPlusContext
 {
 public:
-    wxGDIPlusMeasuringContext( wxGraphicsRenderer* renderer ) : wxGDIPlusContext( renderer , m_hdc = GetDC(NULL) )
+    wxGDIPlusMeasuringContext( wxGraphicsRenderer* renderer ) : wxGDIPlusContext( renderer , m_hdc = GetDC(NULL), 1000, 1000 )
     {
     }
     wxGDIPlusMeasuringContext()
@@ -1021,11 +1025,13 @@ public :
     bool m_offset;
 } ;
 
-wxGDIPlusContext::wxGDIPlusContext( wxGraphicsRenderer* renderer, HDC hdc  )
+wxGDIPlusContext::wxGDIPlusContext( wxGraphicsRenderer* renderer, HDC hdc, wxDouble width, wxDouble height   )
     : wxGraphicsContext(renderer)
 {
     Init();
     m_context = new Graphics( hdc);
+    m_width = width;
+    m_height = height;
     SetDefaults();
 }
 
@@ -1034,6 +1040,9 @@ wxGDIPlusContext::wxGDIPlusContext( wxGraphicsRenderer* renderer, HWND hwnd  )
 {
     Init();
     m_context = new Graphics( hwnd);
+    RECT rect = wxGetWindowRect(hwnd);
+    m_width = rect.right - rect.left;
+    m_height = rect.bottom - rect.top;
     SetDefaults();
 }
 
@@ -1055,6 +1064,8 @@ void wxGDIPlusContext::Init()
     m_context = NULL;
     m_state1 = 0;
     m_state2= 0;
+    m_height = 0;
+    m_width = 0;
 }
 
 void wxGDIPlusContext::SetDefaults()
@@ -1389,6 +1400,12 @@ wxGraphicsMatrix wxGDIPlusContext::GetTransform() const
     m_context->GetTransform((Matrix*) matrix.GetNativeMatrix());
     return matrix;
 }
+
+void wxGDIPlusContext::GetSize( wxDouble* width, wxDouble *height )
+{
+    *width = m_width;
+    *height = m_height;
+}
 //-----------------------------------------------------------------------------
 // wxGDIPlusRenderer declaration
 //-----------------------------------------------------------------------------
@@ -1534,21 +1551,24 @@ wxGraphicsContext * wxGDIPlusRenderer::CreateContext( const wxWindowDC& dc)
 {
     ENSURE_LOADED_OR_RETURN(NULL);
     wxMSWDCImpl *msw = wxDynamicCast( dc.GetImpl() , wxMSWDCImpl );
-    return new wxGDIPlusContext(this,(HDC) msw->GetHDC());
+    wxSize sz = dc.GetSize();
+    return new wxGDIPlusContext(this,(HDC) msw->GetHDC(), sz.x, sz.y);
 }
 
 wxGraphicsContext * wxGDIPlusRenderer::CreateContext( const wxPrinterDC& dc)
 {
     ENSURE_LOADED_OR_RETURN(NULL);
     wxMSWDCImpl *msw = wxDynamicCast( dc.GetImpl() , wxMSWDCImpl );
-    return new wxGDIPlusContext(this,(HDC) msw->GetHDC());
+    wxSize sz = dc.GetSize();
+    return new wxGDIPlusContext(this,(HDC) msw->GetHDC(), sz.x, sz.y);
 }
 
 wxGraphicsContext * wxGDIPlusRenderer::CreateContext( const wxMemoryDC& dc)
 {
     ENSURE_LOADED_OR_RETURN(NULL);
     wxMSWDCImpl *msw = wxDynamicCast( dc.GetImpl() , wxMSWDCImpl );
-    return new wxGDIPlusContext(this,(HDC) msw->GetHDC());
+    wxSize sz = dc.GetSize();
+    return new wxGDIPlusContext(this,(HDC) msw->GetHDC(), sz.x, sz.y);
 }
 
 wxGraphicsContext * wxGDIPlusRenderer::CreateMeasuringContext()