Add wxGraphicsRenderer::GetName() and GetVersion() methods.

Allow the code to determine which underlying technology is used for
implementing wxGraphics API. This is needed by the unit tests to account for
the known differences between platforms and may be useful in other cases.

Closes #16154.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76380 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2014-04-20 12:45:10 +00:00
parent 25a8a7e745
commit 7ab7ff693b
5 changed files with 86 additions and 0 deletions

View File

@@ -870,6 +870,10 @@ public:
// create a subimage from a native image representation // create a subimage from a native image representation
virtual wxGraphicsBitmap CreateSubBitmap( const wxGraphicsBitmap &bitmap, wxDouble x, wxDouble y, wxDouble w, wxDouble h ) = 0; virtual wxGraphicsBitmap CreateSubBitmap( const wxGraphicsBitmap &bitmap, wxDouble x, wxDouble y, wxDouble w, wxDouble h ) = 0;
virtual wxString GetName() const = 0;
virtual void
GetVersion(int* major, int* minor = NULL, int* micro = NULL) const = 0;
private: private:
wxDECLARE_NO_COPY_CLASS(wxGraphicsRenderer); wxDECLARE_NO_COPY_CLASS(wxGraphicsRenderer);
DECLARE_ABSTRACT_CLASS(wxGraphicsRenderer) DECLARE_ABSTRACT_CLASS(wxGraphicsRenderer)

View File

@@ -1211,6 +1211,34 @@ public:
wxDouble x, wxDouble y, wxDouble x, wxDouble y,
wxDouble w, wxDouble h) = 0; wxDouble w, wxDouble h) = 0;
/**
Returns the name of the technology used by the renderer.
Currently this function returns "gdiplus" for Windows GDI+ implementation,
"cairo" for Cairo implementation and "cg" for OS X CoreGraphics
implementation.
Note: the string returned by this method is not user-readable and is
expected to be used internally by the program only.
@since 3.1.0
*/
virtual wxString GetName() const = 0;
/**
Returns the version major, minor and micro/build of the technology used
by the renderer.
Currently this function returns the OS major and minor versions in
the parameters with the matching names and sets @a micro to 0 for
the GDI+ and CoreGraphics engines which are considered to be parts of
their respective OS.
For Cairo, this is the major,minor,micro version of the Cairo library
which is returned.
*/
virtual void GetVersion(int* major, int* minor = NULL, int* micro=NULL) const = 0;
/** /**
Returns the default renderer on this platform. On OS X this is the Core Returns the default renderer on this platform. On OS X this is the Core
Graphics (a.k.a. Quartz 2D) renderer, on MSW the GDIPlus renderer, and Graphics (a.k.a. Quartz 2D) renderer, on MSW the GDIPlus renderer, and

View File

@@ -2398,6 +2398,9 @@ public :
// create a subimage from a native image representation // create a subimage from a native image representation
virtual wxGraphicsBitmap CreateSubBitmap( const wxGraphicsBitmap &bitmap, wxDouble x, wxDouble y, wxDouble w, wxDouble h ); virtual wxGraphicsBitmap CreateSubBitmap( const wxGraphicsBitmap &bitmap, wxDouble x, wxDouble y, wxDouble w, wxDouble h );
virtual wxString GetName() const wxOVERRIDE;
virtual void GetVersion(int *major, int *minor, int *micro) const wxOVERRIDE;
DECLARE_DYNAMIC_CLASS_NO_COPY(wxCairoRenderer) DECLARE_DYNAMIC_CLASS_NO_COPY(wxCairoRenderer)
} ; } ;
@@ -2651,6 +2654,20 @@ wxCairoRenderer::CreateSubBitmap(const wxGraphicsBitmap& WXUNUSED(bitmap),
return p; return p;
} }
wxString wxCairoRenderer::GetName() const
{
return "cairo";
}
void wxCairoRenderer::GetVersion(int *major, int *minor, int *micro) const
{
int dummy;
sscanf(cairo_version_string(), "%d.%d.%d",
major ? major : &dummy,
minor ? minor : &dummy,
micro ? micro : &dummy);
}
wxGraphicsRenderer* wxGraphicsRenderer::GetCairoRenderer() wxGraphicsRenderer* wxGraphicsRenderer::GetCairoRenderer()
{ {
return &gs_cairoGraphicsRenderer; return &gs_cairoGraphicsRenderer;

View File

@@ -587,6 +587,9 @@ public :
// create a subimage from a native image representation // create a subimage from a native image representation
virtual wxGraphicsBitmap CreateSubBitmap( const wxGraphicsBitmap &bitmap, wxDouble x, wxDouble y, wxDouble w, wxDouble h ); virtual wxGraphicsBitmap CreateSubBitmap( const wxGraphicsBitmap &bitmap, wxDouble x, wxDouble y, wxDouble w, wxDouble h );
virtual wxString GetName() const wxOVERRIDE;
virtual void GetVersion(int *major, int *minor, int *micro) const wxOVERRIDE;
protected : protected :
bool EnsureIsLoaded(); bool EnsureIsLoaded();
void Load(); void Load();
@@ -2295,6 +2298,21 @@ wxGraphicsBitmap wxGDIPlusRenderer::CreateSubBitmap( const wxGraphicsBitmap &bit
return wxNullGraphicsBitmap; return wxNullGraphicsBitmap;
} }
wxString wxGDIPlusRenderer::GetName() const
{
return "gdiplus";
}
void wxGDIPlusRenderer::GetVersion(int *major, int *minor, int *micro) const
{
if ( major )
*major = wxPlatformInfo::Get().GetOSMajorVersion();
if ( minor )
*minor = wxPlatformInfo::Get().GetOSMinorVersion();
if ( micro )
*micro = 0;
}
// Shutdown GDI+ at app exit, before possible dll unload // Shutdown GDI+ at app exit, before possible dll unload
class wxGDIPlusRendererModule : public wxModule class wxGDIPlusRendererModule : public wxModule
{ {

View File

@@ -2654,6 +2654,10 @@ public :
// create a native bitmap representation // create a native bitmap representation
virtual wxGraphicsBitmap CreateSubBitmap( const wxGraphicsBitmap &bitmap, wxDouble x, wxDouble y, wxDouble w, wxDouble h ) wxOVERRIDE ; virtual wxGraphicsBitmap CreateSubBitmap( const wxGraphicsBitmap &bitmap, wxDouble x, wxDouble y, wxDouble w, wxDouble h ) wxOVERRIDE ;
virtual wxString GetName() const wxOVERRIDE;
virtual void GetVersion(int *major, int *minor, int *micro) const wxOVERRIDE;
private : private :
DECLARE_DYNAMIC_CLASS_NO_COPY(wxMacCoreGraphicsRenderer) DECLARE_DYNAMIC_CLASS_NO_COPY(wxMacCoreGraphicsRenderer)
} ; } ;
@@ -2875,6 +2879,21 @@ wxGraphicsBitmap wxMacCoreGraphicsRenderer::CreateSubBitmap( const wxGraphicsBit
return wxNullGraphicsBitmap; return wxNullGraphicsBitmap;
} }
wxString wxMacCoreGraphicsRenderer::GetName() const
{
return "cg";
}
void wxMacCoreGraphicsRenderer::GetVersion(int *major, int *minor, int *micro) const
{
if ( major )
*major = wxPlatformInfo::Get().GetOSMajorVersion();
if ( minor )
*minor = wxPlatformInfo::Get().GetOSMinorVersion();
if ( micro )
*micro = 0;
}
wxGraphicsBrush wxGraphicsBrush
wxMacCoreGraphicsRenderer::CreateLinearGradientBrush(wxDouble x1, wxDouble y1, wxMacCoreGraphicsRenderer::CreateLinearGradientBrush(wxDouble x1, wxDouble y1,
wxDouble x2, wxDouble y2, wxDouble x2, wxDouble y2,