]> git.saurik.com Git - wxWidgets.git/commitdiff
Build fixes for using Cairo on MSW.
authorRobin Dunn <robin@alldunn.com>
Tue, 31 May 2011 19:16:55 +0000 (19:16 +0000)
committerRobin Dunn <robin@alldunn.com>
Tue, 31 May 2011 19:16:55 +0000 (19:16 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67816 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

build/tools/build-wxwidgets.py
build/tools/builder.py
include/wx/cairo.h
src/common/cairo.cpp
src/generic/graphicc.cpp

index 9764ad50c34d985ad9bf8b10529ae79fdf16d3fd..548bb104566c2570e66165c1ea85f9abbf19a7e8 100755 (executable)
@@ -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:
     
index 10971626522ffca690796d803509e12f817fa8a3..484e274f573b566d19ef9a1d448ef409cda69673 100755 (executable)
@@ -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
index 60e06534a0000010c391963dafa6000afbbde630..88d570586bdb05ecdc0c8acdc394f2127ba6449b 100644 (file)
@@ -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);
 };
 
index a42a22900dd4db05bad7b37530c3698fc4033ec7..ad2ae52e1af5a252ff4eaeaada97e650cbfed371 100644 (file)
@@ -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;
 }
index 280c56ad0254c69138cd3f8972d5ba29c6144293..ba43f2664869a9a7e2156854b1406a31d46efdcf 100644 (file)
@@ -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__