#include "wx/msw/wrapcdlg.h"
#include "wx/image.h"
#include "wx/window.h"
- #include "wx/dc.h"
#include "wx/utils.h"
#include "wx/dialog.h"
#include "wx/app.h"
#include "wx/bitmap.h"
- #include "wx/dcmemory.h"
#include "wx/log.h"
#include "wx/icon.h"
- #include "wx/dcprint.h"
#include "wx/module.h"
+ // include all dc types that are used as a param
+ #include "wx/dc.h"
+ #include "wx/dcclient.h"
+ #include "wx/dcmemory.h"
+ #include "wx/dcprint.h"
#endif
#include "wx/private/graphics.h"
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();
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();
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()
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();
}
{
Init();
m_context = new Graphics( hwnd);
+ RECT rect = wxGetWindowRect(hwnd);
+ m_width = rect.right - rect.left;
+ m_height = rect.bottom - rect.top;
SetDefaults();
}
m_context = NULL;
m_state1 = 0;
m_state2= 0;
+ m_height = 0;
+ m_width = 0;
}
void wxGDIPlusContext::SetDefaults()
void wxGDIPlusContext::DrawText( const wxString &str, wxDouble x, wxDouble y )
{
- if ( m_font.IsNull() || str.IsEmpty())
+ wxCHECK_RET( !m_font.IsNull(), wxT("wxGDIPlusContext::DrawText - no valid font set") );
+
+ if ( str.IsEmpty())
return ;
wxWCharBuffer s = str.wc_str( *wxConvUI );
void wxGDIPlusContext::GetTextExtent( const wxString &str, wxDouble *width, wxDouble *height,
wxDouble *descent, wxDouble *externalLeading ) const
{
+ wxCHECK_RET( !m_font.IsNull(), wxT("wxGDIPlusContext::GetTextExtent - no valid font set") );
+
wxWCharBuffer s = str.wc_str( *wxConvUI );
FontFamily ffamily ;
Font* f = ((wxGDIPlusFontData*)m_font.GetRefData())->GetGDIPlusFont();
widths.Empty();
widths.Add(0, text.length());
+ wxCHECK_RET( !m_font.IsNull(), wxT("wxGDIPlusContext::GetPartialTextExtents - no valid font set") );
+
if (text.empty())
return;
m_context->GetTransform((Matrix*) matrix.GetNativeMatrix());
return matrix;
}
+
+void wxGDIPlusContext::GetSize( wxDouble* width, wxDouble *height )
+{
+ *width = m_width;
+ *height = m_height;
+}
//-----------------------------------------------------------------------------
// wxGDIPlusRenderer declaration
//-----------------------------------------------------------------------------
{
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()