From: Robin Dunn Date: Tue, 31 May 2011 19:16:55 +0000 (+0000) Subject: Build fixes for using Cairo on MSW. X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/9f2b6b31b7020e0ca3c82c4ef57dabbdda89f690?ds=inline Build fixes for using Cairo on MSW. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67816 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/build/tools/build-wxwidgets.py b/build/tools/build-wxwidgets.py index 9764ad50c3..548bb10456 100755 --- a/build/tools/build-wxwidgets.py +++ b/build/tools/build-wxwidgets.py @@ -396,6 +396,11 @@ def main(scriptName, args): args.append("BUILD=release") else: args.append("BUILD=debug") + + if options.shared: + args.append("SHARED=1") + if options.cairo: + args.append("USE_CAIRO=1") wxBuilder = builder.MSVCBuilder() @@ -416,11 +421,7 @@ def main(scriptName, args): if options.clean: print "Performing cleanup." - wxBuilder.clean() - - if options.wxpython: - exitIfError(wxBuilder.clean(os.path.join(contribDir, "gizmos")), "Error building gizmos") - exitIfError(wxBuilder.clean(os.path.join(contribDir, "stc")), "Error building stc") + wxBuilder.clean(dir=buildDir, options=args) sys.exit(0) @@ -430,21 +431,12 @@ def main(scriptName, args): if not sys.platform.startswith("win"): args.append("--jobs=" + options.jobs) exitIfError(wxBuilder.build(dir=buildDir, options=args), "Error building") - - if options.wxpython and os.path.exists(contribDir): - exitIfError(wxBuilder.build(os.path.join(contribDir, "gizmos"), options=args), "Error building gizmos") - exitIfError(wxBuilder.build(os.path.join(contribDir, "stc"),options=args), "Error building stc") if options.install: extra=None if installDir: extra = ['DESTDIR='+installDir] - wxBuilder.install(dir=buildDir, options=extra) - - if options.wxpython and os.path.exists(contribDir): - exitIfError(wxBuilder.install(os.path.join(contribDir, "gizmos"), options=extra), "Error building gizmos") - exitIfError(wxBuilder.install(os.path.join(contribDir, "stc"), options=extra), "Error building stc") - + wxBuilder.install(dir=buildDir, options=extra) if options.install and options.mac_framework: diff --git a/build/tools/builder.py b/build/tools/builder.py index 1097162652..484e274f57 100755 --- a/build/tools/builder.py +++ b/build/tools/builder.py @@ -89,17 +89,21 @@ class Builder: return self.name - def clean(self, dir=None, projectFile=None): + def clean(self, dir=None, projectFile=None, options=None): """ dir = the directory containing the project file projectFile = Some formats need to explicitly specify the project file's name """ - - args = [self.getProgramPath(), "clean"] - if dir: - args.append(dir) if self.isAvailable(): - result = runInDir(args) + if options: + optionList = list(options) + else: + optionList = [] + + optionList.insert(0, self.getProgramPath()) + optionList.append("clean") + + result = runInDir(optionList, dir) return result return False diff --git a/include/wx/cairo.h b/include/wx/cairo.h index 60e06534a0..88d570586b 100644 --- a/include/wx/cairo.h +++ b/include/wx/cairo.h @@ -132,11 +132,12 @@ public: wxDL_VOIDMETHOD_DEFINE( cairo_translate, (cairo_t *cr, double tx, double ty), (cr, tx, ty) ) +#if wxUSE_PANGO wxDL_VOIDMETHOD_DEFINE( pango_cairo_update_layout, (cairo_t *cr, PangoLayout *layout), (cr, layout) ) wxDL_VOIDMETHOD_DEFINE( pango_cairo_show_layout, (cairo_t *cr, PangoLayout *layout), (cr, layout) ) - +#endif wxDECLARE_NO_COPY_CLASS(wxCairoLibrary); }; diff --git a/src/common/cairo.cpp b/src/common/cairo.cpp index a42a22900d..ad2ae52e1a 100644 --- a/src/common/cairo.cpp +++ b/src/common/cairo.cpp @@ -41,6 +41,7 @@ wxCairoLibrary::wxCairoLibrary() if ( !m_ok ) return; +#if wxUSE_PANGO m_libPangoCairo.Load("libpangocairo-1.0.so.0"); m_ok = m_libPangoCairo.IsLoaded(); if ( !m_ok ) @@ -48,6 +49,7 @@ wxCairoLibrary::wxCairoLibrary() m_libCairo.Unload(); return; } +#endif m_ok = InitializeMethods(); } @@ -129,8 +131,10 @@ bool wxCairoLibrary::InitializeMethods() wxDL_METHOD_LOAD(m_libCairo, cairo_surface_destroy); wxDL_METHOD_LOAD(m_libCairo, cairo_translate); +#if wxUSE_PANGO wxDL_METHOD_LOAD(m_libPangoCairo, pango_cairo_update_layout); wxDL_METHOD_LOAD(m_libPangoCairo, pango_cairo_show_layout); +#endif return true; } diff --git a/src/generic/graphicc.cpp b/src/generic/graphicc.cpp index 280c56ad02..ba43f26648 100644 --- a/src/generic/graphicc.cpp +++ b/src/generic/graphicc.cpp @@ -301,9 +301,6 @@ private : cairo_font_slant_t m_slant; cairo_font_weight_t m_weight; #endif -#ifdef __WXMSW__ - wxCairoContext( wxGraphicsRenderer* renderer, HDC context ); -#endif }; class wxCairoBitmapData : public wxGraphicsObjectRefData @@ -332,6 +329,9 @@ public: wxCairoContext( wxGraphicsRenderer* renderer, const wxPrinterDC& dc ); #ifdef __WXGTK__ wxCairoContext( wxGraphicsRenderer* renderer, GdkDrawable *drawable ); +#endif +#ifdef __WXMSW__ + wxCairoContext( wxGraphicsRenderer* renderer, HDC context ); #endif wxCairoContext( wxGraphicsRenderer* renderer, cairo_t *context ); wxCairoContext( wxGraphicsRenderer* renderer, wxWindow *window); @@ -1342,6 +1342,12 @@ wxCairoContext::wxCairoContext( wxGraphicsRenderer* renderer, wxWindow *window) m_width = sz.x; m_height = sz.y; #endif + +#ifdef __WXMSW__ + m_mswSurface = cairo_win32_surface_create((HDC)window->GetHandle()); + Init(cairo_create(m_mswSurface)); +#endif + } wxCairoContext::~wxCairoContext() @@ -1349,10 +1355,6 @@ wxCairoContext::~wxCairoContext() if ( m_context ) { PopState(); -#ifdef __WXMSW__ - m_mswSurface = cairo_win32_surface_create((HDC)window->GetHandle()); - m_context = cairo_create(m_mswSurface); -#endif PopState(); cairo_destroy(m_context); } @@ -1785,7 +1787,11 @@ public : virtual wxGraphicsContext * CreateContext( wxWindow* window ); virtual wxGraphicsContext * CreateMeasuringContext(); - +#ifdef __WXMSW__ +#if wxUSE_ENH_METAFILE + virtual wxGraphicsContext * CreateContext( const wxEnhMetaFileDC& dc); +#endif +#endif // Path virtual wxGraphicsPath CreatePath(); @@ -1860,6 +1866,15 @@ wxGraphicsContext * wxCairoRenderer::CreateContext( const wxPrinterDC& dc) return NULL; } +#ifdef __WXMSW__ +#if wxUSE_ENH_METAFILE +wxGraphicsContext * wxCairoRenderer::CreateContext( const wxEnhMetaFileDC& dc) +{ + return NULL; +} +#endif +#endif + wxGraphicsContext * wxCairoRenderer::CreateContextFromNativeContext( void * context ) { #ifdef __WXMSW__