Try to better revert to the original string value in wxBitmapComboBox::RecreateControl()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66497 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -140,7 +140,7 @@ void wxBitmapComboBox::RecreateControl()
|
|||||||
DissociateHandle();
|
DissociateHandle();
|
||||||
::DestroyWindow(hwnd);
|
::DestroyWindow(hwnd);
|
||||||
|
|
||||||
if ( !MSWCreateControl(wxT("COMBOBOX"), value, pos, size) )
|
if ( !MSWCreateControl(wxT("COMBOBOX"), wxEmptyString, pos, size) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// initialize the controls contents
|
// initialize the controls contents
|
||||||
@@ -179,6 +179,9 @@ void wxBitmapComboBox::RecreateControl()
|
|||||||
}
|
}
|
||||||
|
|
||||||
::SendMessage(GetHwnd(), CB_SETITEMHEIGHT, 0, MeasureItem(0));
|
::SendMessage(GetHwnd(), CB_SETITEMHEIGHT, 0, MeasureItem(0));
|
||||||
|
|
||||||
|
// Revert the old string value
|
||||||
|
ChangeValue(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
wxBitmapComboBox::~wxBitmapComboBox()
|
wxBitmapComboBox::~wxBitmapComboBox()
|
||||||
|
@@ -40,10 +40,10 @@
|
|||||||
#include "wx/private/graphics.h"
|
#include "wx/private/graphics.h"
|
||||||
#include "wx/msw/wrapgdip.h"
|
#include "wx/msw/wrapgdip.h"
|
||||||
#include "wx/msw/dc.h"
|
#include "wx/msw/dc.h"
|
||||||
|
#include "wx/dcgraph.h"
|
||||||
#if wxUSE_ENH_METAFILE
|
#if wxUSE_ENH_METAFILE
|
||||||
#include "wx/msw/enhmeta.h"
|
#include "wx/msw/enhmeta.h"
|
||||||
#endif
|
#endif
|
||||||
#include "wx/dcgraph.h"
|
|
||||||
|
|
||||||
#include "wx/msw/private.h" // needs to be before #include <commdlg.h>
|
#include "wx/msw/private.h" // needs to be before #include <commdlg.h>
|
||||||
|
|
||||||
@@ -98,6 +98,8 @@ inline Color wxColourToColor(const wxColour& col)
|
|||||||
// wxGraphicsPath implementation
|
// wxGraphicsPath implementation
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
class wxGDIPlusContext;
|
||||||
|
|
||||||
class wxGDIPlusPathData : public wxGraphicsPathData
|
class wxGDIPlusPathData : public wxGraphicsPathData
|
||||||
{
|
{
|
||||||
public :
|
public :
|
||||||
@@ -289,7 +291,10 @@ private :
|
|||||||
class wxGDIPlusFontData : public wxGraphicsObjectRefData
|
class wxGDIPlusFontData : public wxGraphicsObjectRefData
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
wxGDIPlusFontData( wxGraphicsRenderer* renderer, const wxFont &font, const wxColour& col );
|
wxGDIPlusFontData( wxGraphicsRenderer* renderer,
|
||||||
|
const wxGDIPlusContext* gc,
|
||||||
|
const wxFont &font,
|
||||||
|
const wxColour& col );
|
||||||
~wxGDIPlusFontData();
|
~wxGDIPlusFontData();
|
||||||
|
|
||||||
virtual Brush* GetGDIPlusBrush() { return m_textBrush; }
|
virtual Brush* GetGDIPlusBrush() { return m_textBrush; }
|
||||||
@@ -302,6 +307,7 @@ private :
|
|||||||
class wxGDIPlusContext : public wxGraphicsContext
|
class wxGDIPlusContext : public wxGraphicsContext
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
wxGDIPlusContext( wxGraphicsRenderer* renderer, const wxDC& dc );
|
||||||
wxGDIPlusContext( wxGraphicsRenderer* renderer, HDC hdc, wxDouble width, wxDouble height );
|
wxGDIPlusContext( wxGraphicsRenderer* renderer, HDC hdc, wxDouble width, wxDouble height );
|
||||||
wxGDIPlusContext( wxGraphicsRenderer* renderer, HWND hwnd );
|
wxGDIPlusContext( wxGraphicsRenderer* renderer, HWND hwnd );
|
||||||
wxGDIPlusContext( wxGraphicsRenderer* renderer, Graphics* gr);
|
wxGDIPlusContext( wxGraphicsRenderer* renderer, Graphics* gr);
|
||||||
@@ -354,12 +360,21 @@ public:
|
|||||||
virtual void PushState();
|
virtual void PushState();
|
||||||
virtual void PopState();
|
virtual void PopState();
|
||||||
|
|
||||||
|
// sets the font of this context
|
||||||
|
virtual wxGraphicsFont CreateFont( const wxFont &font , const wxColour &col = *wxBLACK ) const;
|
||||||
|
|
||||||
virtual void GetTextExtent( const wxString &str, wxDouble *width, wxDouble *height,
|
virtual void GetTextExtent( const wxString &str, wxDouble *width, wxDouble *height,
|
||||||
wxDouble *descent, wxDouble *externalLeading ) const;
|
wxDouble *descent, wxDouble *externalLeading ) const;
|
||||||
virtual void GetPartialTextExtents(const wxString& text, wxArrayDouble& widths) const;
|
virtual void GetPartialTextExtents(const wxString& text, wxArrayDouble& widths) const;
|
||||||
virtual bool ShouldOffset() const;
|
virtual bool ShouldOffset() const;
|
||||||
virtual void GetSize( wxDouble* width, wxDouble *height );
|
virtual void GetSize( wxDouble* width, wxDouble *height );
|
||||||
|
|
||||||
|
Graphics* GetGraphics() const { return m_context; }
|
||||||
|
bool IsPrinting() const { return m_isPrinting; }
|
||||||
|
|
||||||
|
// utility to setup page scale etc for printing
|
||||||
|
void SetupForPrinting();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void Init();
|
void Init();
|
||||||
void SetDefaults();
|
void SetDefaults();
|
||||||
@@ -370,6 +385,7 @@ private:
|
|||||||
const wxGraphicsBrush& backgroundBrush);
|
const wxGraphicsBrush& backgroundBrush);
|
||||||
|
|
||||||
Graphics* m_context;
|
Graphics* m_context;
|
||||||
|
|
||||||
GraphicsStates m_stateStack;
|
GraphicsStates m_stateStack;
|
||||||
GraphicsState m_state1;
|
GraphicsState m_state1;
|
||||||
GraphicsState m_state2;
|
GraphicsState m_state2;
|
||||||
@@ -377,6 +393,8 @@ private:
|
|||||||
wxDouble m_width;
|
wxDouble m_width;
|
||||||
wxDouble m_height;
|
wxDouble m_height;
|
||||||
|
|
||||||
|
bool m_isPrinting;
|
||||||
|
|
||||||
DECLARE_DYNAMIC_CLASS_NO_COPY(wxGDIPlusContext)
|
DECLARE_DYNAMIC_CLASS_NO_COPY(wxGDIPlusContext)
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -400,6 +418,106 @@ private:
|
|||||||
DECLARE_DYNAMIC_CLASS_NO_COPY(wxGDIPlusMeasuringContext)
|
DECLARE_DYNAMIC_CLASS_NO_COPY(wxGDIPlusMeasuringContext)
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// wxGDIPlusRenderer declaration
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
class wxGDIPlusRenderer : public wxGraphicsRenderer
|
||||||
|
{
|
||||||
|
public :
|
||||||
|
wxGDIPlusRenderer()
|
||||||
|
{
|
||||||
|
m_loaded = -1;
|
||||||
|
m_gditoken = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual ~wxGDIPlusRenderer()
|
||||||
|
{
|
||||||
|
if ( m_loaded == 1 )
|
||||||
|
{
|
||||||
|
Unload();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Context
|
||||||
|
|
||||||
|
virtual wxGraphicsContext * CreateContext( const wxWindowDC& dc);
|
||||||
|
|
||||||
|
virtual wxGraphicsContext * CreateContext( const wxMemoryDC& dc);
|
||||||
|
|
||||||
|
#if wxUSE_PRINTING_ARCHITECTURE
|
||||||
|
virtual wxGraphicsContext * CreateContext( const wxPrinterDC& dc);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if wxUSE_ENH_METAFILE
|
||||||
|
virtual wxGraphicsContext * CreateContext( const wxEnhMetaFileDC& dc);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
virtual wxGraphicsContext * CreateContextFromNativeContext( void * context );
|
||||||
|
|
||||||
|
virtual wxGraphicsContext * CreateContextFromNativeWindow( void * window );
|
||||||
|
|
||||||
|
virtual wxGraphicsContext * CreateContext( wxWindow* window );
|
||||||
|
|
||||||
|
virtual wxGraphicsContext * CreateMeasuringContext();
|
||||||
|
|
||||||
|
// Path
|
||||||
|
|
||||||
|
virtual wxGraphicsPath CreatePath();
|
||||||
|
|
||||||
|
// Matrix
|
||||||
|
|
||||||
|
virtual wxGraphicsMatrix CreateMatrix( wxDouble a=1.0, wxDouble b=0.0, wxDouble c=0.0, wxDouble d=1.0,
|
||||||
|
wxDouble tx=0.0, wxDouble ty=0.0);
|
||||||
|
|
||||||
|
|
||||||
|
virtual wxGraphicsPen CreatePen(const wxPen& pen) ;
|
||||||
|
|
||||||
|
virtual wxGraphicsBrush CreateBrush(const wxBrush& brush ) ;
|
||||||
|
|
||||||
|
virtual wxGraphicsBrush
|
||||||
|
CreateLinearGradientBrush(wxDouble x1, wxDouble y1,
|
||||||
|
wxDouble x2, wxDouble y2,
|
||||||
|
const wxGraphicsGradientStops& stops);
|
||||||
|
|
||||||
|
virtual wxGraphicsBrush
|
||||||
|
CreateRadialGradientBrush(wxDouble xo, wxDouble yo,
|
||||||
|
wxDouble xc, wxDouble yc,
|
||||||
|
wxDouble radius,
|
||||||
|
const wxGraphicsGradientStops& stops);
|
||||||
|
|
||||||
|
// create a native bitmap representation
|
||||||
|
virtual wxGraphicsBitmap CreateBitmap( const wxBitmap &bitmap );
|
||||||
|
|
||||||
|
// stub: should not be called directly
|
||||||
|
virtual wxGraphicsFont CreateFont( const wxFont& WXUNUSED(font),
|
||||||
|
const wxColour& WXUNUSED(col) )
|
||||||
|
{ wxFAIL; return wxNullGraphicsFont; }
|
||||||
|
|
||||||
|
// this is used to really create the font
|
||||||
|
wxGraphicsFont CreateGDIPlusFont( const wxGDIPlusContext* gc,
|
||||||
|
const wxFont &font,
|
||||||
|
const wxColour &col );
|
||||||
|
|
||||||
|
// create a graphics bitmap from a native bitmap
|
||||||
|
virtual wxGraphicsBitmap CreateBitmapFromNativeBitmap( void* bitmap );
|
||||||
|
|
||||||
|
// create a subimage from a native image representation
|
||||||
|
virtual wxGraphicsBitmap CreateSubBitmap( const wxGraphicsBitmap &bitmap, wxDouble x, wxDouble y, wxDouble w, wxDouble h );
|
||||||
|
|
||||||
|
protected :
|
||||||
|
bool EnsureIsLoaded();
|
||||||
|
void Load();
|
||||||
|
void Unload();
|
||||||
|
friend class wxGDIPlusRendererModule;
|
||||||
|
|
||||||
|
private :
|
||||||
|
int m_loaded;
|
||||||
|
ULONG_PTR m_gditoken;
|
||||||
|
|
||||||
|
DECLARE_DYNAMIC_CLASS_NO_COPY(wxGDIPlusRenderer)
|
||||||
|
} ;
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// wxGDIPlusPen implementation
|
// wxGDIPlusPen implementation
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@@ -706,14 +824,13 @@ wxGDIPlusBrushData::CreateRadialGradientBrush(wxDouble xo, wxDouble yo,
|
|||||||
// wxGDIPlusFont implementation
|
// wxGDIPlusFont implementation
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
wxGDIPlusFontData::wxGDIPlusFontData( wxGraphicsRenderer* renderer, const wxFont &font,
|
wxGDIPlusFontData::wxGDIPlusFontData( wxGraphicsRenderer* renderer,
|
||||||
const wxColour& col ) : wxGraphicsObjectRefData( renderer )
|
const wxGDIPlusContext* gc,
|
||||||
|
const wxFont &font,
|
||||||
|
const wxColour& col )
|
||||||
|
: wxGraphicsObjectRefData( renderer )
|
||||||
{
|
{
|
||||||
m_textBrush = NULL;
|
|
||||||
m_font = NULL;
|
|
||||||
|
|
||||||
wxWCharBuffer s = font.GetFaceName().wc_str( *wxConvUI );
|
wxWCharBuffer s = font.GetFaceName().wc_str( *wxConvUI );
|
||||||
int size = font.GetPointSize();
|
|
||||||
int style = FontStyleRegular;
|
int style = FontStyleRegular;
|
||||||
if ( font.GetStyle() == wxFONTSTYLE_ITALIC )
|
if ( font.GetStyle() == wxFONTSTYLE_ITALIC )
|
||||||
style |= FontStyleItalic;
|
style |= FontStyleItalic;
|
||||||
@@ -721,7 +838,29 @@ wxGDIPlusFontData::wxGDIPlusFontData( wxGraphicsRenderer* renderer, const wxFont
|
|||||||
style |= FontStyleUnderline;
|
style |= FontStyleUnderline;
|
||||||
if ( font.GetWeight() == wxFONTWEIGHT_BOLD )
|
if ( font.GetWeight() == wxFONTWEIGHT_BOLD )
|
||||||
style |= FontStyleBold;
|
style |= FontStyleBold;
|
||||||
m_font = new Font( s , size , style );
|
|
||||||
|
if ( gc->IsPrinting() )
|
||||||
|
{
|
||||||
|
Graphics* context = gc->GetGraphics();
|
||||||
|
|
||||||
|
Unit fontUnit = context->GetPageUnit();
|
||||||
|
// if fontUnit is UnitDisplay, then specify UnitPixel, otherwise
|
||||||
|
// you'll get a "InvalidParameter" from GDI+
|
||||||
|
if ( fontUnit == UnitDisplay )
|
||||||
|
fontUnit = UnitPixel;
|
||||||
|
|
||||||
|
REAL points = font.GetPointSize();
|
||||||
|
REAL size = points * (100.0 / 72.0);
|
||||||
|
|
||||||
|
// NB: font unit should match context's unit. We can use UnitPixel,
|
||||||
|
// as that is what the print context should use.
|
||||||
|
m_font = new Font( s, size, style, fontUnit );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_font = new Font( s, font.GetPointSize(), style );
|
||||||
|
}
|
||||||
|
|
||||||
m_textBrush = new SolidBrush(wxColourToColor(col));
|
m_textBrush = new SolidBrush(wxColourToColor(col));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1108,9 +1247,27 @@ wxGDIPlusContext::wxGDIPlusContext( wxGraphicsRenderer* renderer, HDC hdc, wxDou
|
|||||||
: wxGraphicsContext(renderer)
|
: wxGraphicsContext(renderer)
|
||||||
{
|
{
|
||||||
Init();
|
Init();
|
||||||
|
|
||||||
m_context = new Graphics(hdc);
|
m_context = new Graphics(hdc);
|
||||||
m_width = width;
|
m_width = width;
|
||||||
m_height = height;
|
m_height = height;
|
||||||
|
|
||||||
|
SetDefaults();
|
||||||
|
}
|
||||||
|
|
||||||
|
wxGDIPlusContext::wxGDIPlusContext( wxGraphicsRenderer* renderer, const wxDC& dc )
|
||||||
|
: wxGraphicsContext(renderer)
|
||||||
|
{
|
||||||
|
Init();
|
||||||
|
|
||||||
|
wxMSWDCImpl *msw = wxDynamicCast( dc.GetImpl() , wxMSWDCImpl );
|
||||||
|
HDC hdc = (HDC) msw->GetHDC();
|
||||||
|
|
||||||
|
m_context = new Graphics(hdc);
|
||||||
|
wxSize sz = dc.GetSize();
|
||||||
|
m_width = sz.x;
|
||||||
|
m_height = sz.y;
|
||||||
|
|
||||||
SetDefaults();
|
SetDefaults();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1145,6 +1302,7 @@ void wxGDIPlusContext::Init()
|
|||||||
m_state2= 0;
|
m_state2= 0;
|
||||||
m_height = 0;
|
m_height = 0;
|
||||||
m_width = 0;
|
m_width = 0;
|
||||||
|
m_isPrinting = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxGDIPlusContext::SetDefaults()
|
void wxGDIPlusContext::SetDefaults()
|
||||||
@@ -1154,6 +1312,11 @@ void wxGDIPlusContext::SetDefaults()
|
|||||||
m_context->SetSmoothingMode(SmoothingModeHighQuality);
|
m_context->SetSmoothingMode(SmoothingModeHighQuality);
|
||||||
m_state1 = m_context->Save();
|
m_state1 = m_context->Save();
|
||||||
m_state2 = m_context->Save();
|
m_state2 = m_context->Save();
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxGDIPlusContext::SetupForPrinting()
|
||||||
|
{
|
||||||
|
//m_context->SetPageUnit(UnitDocument);
|
||||||
|
|
||||||
// Setup page scale, based on DPI ratio.
|
// Setup page scale, based on DPI ratio.
|
||||||
// Antecedent should be 100dpi when the default page unit (UnitDisplay)
|
// Antecedent should be 100dpi when the default page unit (UnitDisplay)
|
||||||
@@ -1162,6 +1325,8 @@ void wxGDIPlusContext::SetDefaults()
|
|||||||
// DCs (that is, any other than wxPrinterDC or wxEnhMetaFileDC).
|
// DCs (that is, any other than wxPrinterDC or wxEnhMetaFileDC).
|
||||||
REAL dpiRatio = 100.0 / m_context->GetDpiY();
|
REAL dpiRatio = 100.0 / m_context->GetDpiY();
|
||||||
m_context->SetPageScale(dpiRatio);
|
m_context->SetPageScale(dpiRatio);
|
||||||
|
|
||||||
|
m_isPrinting = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxGDIPlusContext::~wxGDIPlusContext()
|
wxGDIPlusContext::~wxGDIPlusContext()
|
||||||
@@ -1435,6 +1600,15 @@ void wxGDIPlusContext::DrawIcon( const wxIcon &icon, wxDouble x, wxDouble y, wxD
|
|||||||
DeleteObject(iconInfo.hbmMask);
|
DeleteObject(iconInfo.hbmMask);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wxGraphicsFont wxGDIPlusContext::CreateFont( const wxFont &font,
|
||||||
|
const wxColour &col ) const
|
||||||
|
{
|
||||||
|
wxGDIPlusRenderer* renderer =
|
||||||
|
static_cast<wxGDIPlusRenderer*>(GetRenderer());
|
||||||
|
return renderer->CreateGDIPlusFont(this, font, col);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void wxGDIPlusContext::DoDrawFilledText(const wxString& str,
|
void wxGDIPlusContext::DoDrawFilledText(const wxString& str,
|
||||||
wxDouble x, wxDouble y,
|
wxDouble x, wxDouble y,
|
||||||
const wxGraphicsBrush& brush)
|
const wxGraphicsBrush& brush)
|
||||||
@@ -1476,7 +1650,12 @@ void wxGDIPlusContext::GetTextExtent( const wxString &str, wxDouble *width, wxDo
|
|||||||
|
|
||||||
f->GetFamily(&ffamily) ;
|
f->GetFamily(&ffamily) ;
|
||||||
|
|
||||||
REAL factorY = m_context->GetDpiY() / 72.0 ;
|
REAL factorY;
|
||||||
|
if ( !IsPrinting() )
|
||||||
|
factorY = m_context->GetDpiY() / 72.0;
|
||||||
|
else
|
||||||
|
// when printing the page scaling already does the trick
|
||||||
|
factorY = 1.0;
|
||||||
|
|
||||||
REAL rDescent = ffamily.GetCellDescent(FontStyleRegular) *
|
REAL rDescent = ffamily.GetCellDescent(FontStyleRegular) *
|
||||||
f->GetSize() / ffamily.GetEmHeight(FontStyleRegular);
|
f->GetSize() / ffamily.GetEmHeight(FontStyleRegular);
|
||||||
@@ -1605,97 +1784,6 @@ void wxGDIPlusContext::GetSize( wxDouble* width, wxDouble *height )
|
|||||||
*width = m_width;
|
*width = m_width;
|
||||||
*height = m_height;
|
*height = m_height;
|
||||||
}
|
}
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
// wxGDIPlusRenderer declaration
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
class wxGDIPlusRenderer : public wxGraphicsRenderer
|
|
||||||
{
|
|
||||||
public :
|
|
||||||
wxGDIPlusRenderer()
|
|
||||||
{
|
|
||||||
m_loaded = -1;
|
|
||||||
m_gditoken = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual ~wxGDIPlusRenderer()
|
|
||||||
{
|
|
||||||
if ( m_loaded == 1 )
|
|
||||||
{
|
|
||||||
Unload();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Context
|
|
||||||
|
|
||||||
virtual wxGraphicsContext * CreateContext( const wxWindowDC& dc);
|
|
||||||
|
|
||||||
virtual wxGraphicsContext * CreateContext( const wxMemoryDC& dc);
|
|
||||||
|
|
||||||
#if wxUSE_PRINTING_ARCHITECTURE
|
|
||||||
virtual wxGraphicsContext * CreateContext( const wxPrinterDC& dc);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if wxUSE_ENH_METAFILE
|
|
||||||
virtual wxGraphicsContext * CreateContext( const wxEnhMetaFileDC& dc);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
virtual wxGraphicsContext * CreateContextFromNativeContext( void * context );
|
|
||||||
|
|
||||||
virtual wxGraphicsContext * CreateContextFromNativeWindow( void * window );
|
|
||||||
|
|
||||||
virtual wxGraphicsContext * CreateContext( wxWindow* window );
|
|
||||||
|
|
||||||
virtual wxGraphicsContext * CreateMeasuringContext();
|
|
||||||
|
|
||||||
// Path
|
|
||||||
|
|
||||||
virtual wxGraphicsPath CreatePath();
|
|
||||||
|
|
||||||
// Matrix
|
|
||||||
|
|
||||||
virtual wxGraphicsMatrix CreateMatrix( wxDouble a=1.0, wxDouble b=0.0, wxDouble c=0.0, wxDouble d=1.0,
|
|
||||||
wxDouble tx=0.0, wxDouble ty=0.0);
|
|
||||||
|
|
||||||
|
|
||||||
virtual wxGraphicsPen CreatePen(const wxPen& pen) ;
|
|
||||||
|
|
||||||
virtual wxGraphicsBrush CreateBrush(const wxBrush& brush ) ;
|
|
||||||
|
|
||||||
virtual wxGraphicsBrush
|
|
||||||
CreateLinearGradientBrush(wxDouble x1, wxDouble y1,
|
|
||||||
wxDouble x2, wxDouble y2,
|
|
||||||
const wxGraphicsGradientStops& stops);
|
|
||||||
|
|
||||||
virtual wxGraphicsBrush
|
|
||||||
CreateRadialGradientBrush(wxDouble xo, wxDouble yo,
|
|
||||||
wxDouble xc, wxDouble yc,
|
|
||||||
wxDouble radius,
|
|
||||||
const wxGraphicsGradientStops& stops);
|
|
||||||
// sets the font
|
|
||||||
virtual wxGraphicsFont CreateFont( const wxFont &font , const wxColour &col = *wxBLACK ) ;
|
|
||||||
|
|
||||||
// create a native bitmap representation
|
|
||||||
virtual wxGraphicsBitmap CreateBitmap( const wxBitmap &bitmap );
|
|
||||||
|
|
||||||
// create a graphics bitmap from a native bitmap
|
|
||||||
virtual wxGraphicsBitmap CreateBitmapFromNativeBitmap( void* bitmap );
|
|
||||||
|
|
||||||
// create a subimage from a native image representation
|
|
||||||
virtual wxGraphicsBitmap CreateSubBitmap( const wxGraphicsBitmap &bitmap, wxDouble x, wxDouble y, wxDouble w, wxDouble h );
|
|
||||||
|
|
||||||
protected :
|
|
||||||
bool EnsureIsLoaded();
|
|
||||||
void Load();
|
|
||||||
void Unload();
|
|
||||||
friend class wxGDIPlusRendererModule;
|
|
||||||
|
|
||||||
private :
|
|
||||||
int m_loaded;
|
|
||||||
ULONG_PTR m_gditoken;
|
|
||||||
|
|
||||||
DECLARE_DYNAMIC_CLASS_NO_COPY(wxGDIPlusRenderer)
|
|
||||||
} ;
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// wxGDIPlusRenderer implementation
|
// wxGDIPlusRenderer implementation
|
||||||
@@ -1759,18 +1847,16 @@ void wxGDIPlusRenderer::Unload()
|
|||||||
wxGraphicsContext * wxGDIPlusRenderer::CreateContext( const wxWindowDC& dc)
|
wxGraphicsContext * wxGDIPlusRenderer::CreateContext( const wxWindowDC& dc)
|
||||||
{
|
{
|
||||||
ENSURE_LOADED_OR_RETURN(NULL);
|
ENSURE_LOADED_OR_RETURN(NULL);
|
||||||
wxMSWDCImpl *msw = wxDynamicCast( dc.GetImpl() , wxMSWDCImpl );
|
return new wxGDIPlusContext(this, dc);
|
||||||
wxSize sz = dc.GetSize();
|
|
||||||
return new wxGDIPlusContext(this,(HDC) msw->GetHDC(), sz.x, sz.y);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#if wxUSE_PRINTING_ARCHITECTURE
|
#if wxUSE_PRINTING_ARCHITECTURE
|
||||||
wxGraphicsContext * wxGDIPlusRenderer::CreateContext( const wxPrinterDC& dc)
|
wxGraphicsContext * wxGDIPlusRenderer::CreateContext( const wxPrinterDC& dc)
|
||||||
{
|
{
|
||||||
ENSURE_LOADED_OR_RETURN(NULL);
|
ENSURE_LOADED_OR_RETURN(NULL);
|
||||||
wxMSWDCImpl *msw = wxDynamicCast( dc.GetImpl() , wxMSWDCImpl );
|
wxGDIPlusContext* context = new wxGDIPlusContext(this, dc);
|
||||||
wxSize sz = dc.GetSize();
|
context->SetupForPrinting();
|
||||||
return new wxGDIPlusContext(this,(HDC) msw->GetHDC(), sz.x, sz.y);
|
return context;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -1778,18 +1864,16 @@ wxGraphicsContext * wxGDIPlusRenderer::CreateContext( const wxPrinterDC& dc)
|
|||||||
wxGraphicsContext * wxGDIPlusRenderer::CreateContext( const wxEnhMetaFileDC& dc)
|
wxGraphicsContext * wxGDIPlusRenderer::CreateContext( const wxEnhMetaFileDC& dc)
|
||||||
{
|
{
|
||||||
ENSURE_LOADED_OR_RETURN(NULL);
|
ENSURE_LOADED_OR_RETURN(NULL);
|
||||||
wxMSWDCImpl *msw = wxDynamicCast( dc.GetImpl() , wxMSWDCImpl );
|
wxGDIPlusContext* context = new wxGDIPlusContext(this, dc);
|
||||||
wxSize sz = dc.GetSize();
|
context->SetupForPrinting();
|
||||||
return new wxGDIPlusContext(this,(HDC) msw->GetHDC(), sz.x, sz.y);
|
return context;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
wxGraphicsContext * wxGDIPlusRenderer::CreateContext( const wxMemoryDC& dc)
|
wxGraphicsContext * wxGDIPlusRenderer::CreateContext( const wxMemoryDC& dc)
|
||||||
{
|
{
|
||||||
ENSURE_LOADED_OR_RETURN(NULL);
|
ENSURE_LOADED_OR_RETURN(NULL);
|
||||||
wxMSWDCImpl *msw = wxDynamicCast( dc.GetImpl() , wxMSWDCImpl );
|
return new wxGDIPlusContext(this, dc);
|
||||||
wxSize sz = dc.GetSize();
|
|
||||||
return new wxGDIPlusContext(this,(HDC) msw->GetHDC(), sz.x, sz.y);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
wxGraphicsContext * wxGDIPlusRenderer::CreateMeasuringContext()
|
wxGraphicsContext * wxGDIPlusRenderer::CreateMeasuringContext()
|
||||||
@@ -1895,14 +1979,16 @@ wxGDIPlusRenderer::CreateRadialGradientBrush(wxDouble xo, wxDouble yo,
|
|||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
// sets the font
|
wxGraphicsFont
|
||||||
wxGraphicsFont wxGDIPlusRenderer::CreateFont( const wxFont &font , const wxColour &col )
|
wxGDIPlusRenderer::CreateGDIPlusFont( const wxGDIPlusContext* gc,
|
||||||
|
const wxFont &font,
|
||||||
|
const wxColour &col )
|
||||||
{
|
{
|
||||||
ENSURE_LOADED_OR_RETURN(wxNullGraphicsFont);
|
ENSURE_LOADED_OR_RETURN(wxNullGraphicsFont);
|
||||||
if ( font.Ok() )
|
if ( font.Ok() )
|
||||||
{
|
{
|
||||||
wxGraphicsFont p;
|
wxGraphicsFont p;
|
||||||
p.SetRefData(new wxGDIPlusFontData( this , font, col ));
|
p.SetRefData(new wxGDIPlusFontData( this, gc, font, col ));
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
Reference in New Issue
Block a user