X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/50fae378f2cad3ba80dcdc024ee8fbb620e79045..b53aea81d2e102224b452ef5bf7aee1132f37c6f:/src/common/cairo.cpp diff --git a/src/common/cairo.cpp b/src/common/cairo.cpp index c6bb12b3fb..474a05899b 100644 --- a/src/common/cairo.cpp +++ b/src/common/cairo.cpp @@ -26,7 +26,7 @@ #endif -wxCairoLibrary *wxCairoLibrary::s_lib = NULL; +wxCairoLibrary *wxCairoLibrary::ms_lib = NULL; //---------------------------------------------------------------------------- // wxCairoLibrary @@ -34,43 +34,49 @@ wxCairoLibrary *wxCairoLibrary::s_lib = NULL; wxCairoLibrary::wxCairoLibrary() { - m_cairo_lib = NULL; - wxLogNull log; - m_cairo_lib = new wxDynamicLibrary( wxT("libcairo.so") ); - m_ok = m_cairo_lib->IsLoaded(); - if (!m_ok) return; + + m_libCairo.Load("libcairo.so.2"); + m_ok = m_libCairo.IsLoaded(); + if ( !m_ok ) + return; + + m_libPangoCairo.Load("libpangocairo-1.0.so.0"); + m_ok = m_libPangoCairo.IsLoaded(); + if ( !m_ok ) + { + m_libCairo.Unload(); + return; + } - InitializeMethods(); + m_ok = InitializeMethods(); } wxCairoLibrary::~wxCairoLibrary() { - if (m_cairo_lib) - delete m_cairo_lib; } /* static */ wxCairoLibrary* wxCairoLibrary::Get() { - if (s_lib) - return s_lib; - - s_lib = new wxCairoLibrary(); - if (s_lib->IsOk()) - return s_lib; - - delete s_lib; - s_lib = NULL; + if ( !ms_lib ) + { + ms_lib = new wxCairoLibrary(); + if ( !ms_lib->IsOk() ) + { + delete ms_lib; + ms_lib = NULL; + } + } - return NULL; + return ms_lib; } /* static */ void wxCairoLibrary::CleanUp() { - if (s_lib) + if (ms_lib) { - delete s_lib; - s_lib = NULL; + delete ms_lib; + ms_lib = NULL; } } @@ -79,69 +85,69 @@ bool wxCairoLibrary::IsOk() return m_ok; } -void wxCairoLibrary::InitializeMethods() +bool wxCairoLibrary::InitializeMethods() { - m_ok = false; - bool success; - - wxDL_METHOD_LOAD( m_cairo_lib, cairo_arc, success ) - wxDL_METHOD_LOAD( m_cairo_lib, cairo_arc_negative, success ) - wxDL_METHOD_LOAD( m_cairo_lib, cairo_clip, success ) - wxDL_METHOD_LOAD( m_cairo_lib, cairo_close_path, success ) - wxDL_METHOD_LOAD( m_cairo_lib, cairo_create, success ) - wxDL_METHOD_LOAD( m_cairo_lib, cairo_curve_to, success ) - wxDL_METHOD_LOAD( m_cairo_lib, cairo_destroy, success ) - wxDL_METHOD_LOAD( m_cairo_lib, cairo_fill, success ) - wxDL_METHOD_LOAD( m_cairo_lib, cairo_fill_preserve, success ) - wxDL_METHOD_LOAD( m_cairo_lib, cairo_get_target, success ) - wxDL_METHOD_LOAD( m_cairo_lib, cairo_image_surface_create_for_data, success ) - wxDL_METHOD_LOAD( m_cairo_lib, cairo_line_to, success ) - wxDL_METHOD_LOAD( m_cairo_lib, cairo_move_to, success ) - wxDL_METHOD_LOAD( m_cairo_lib, cairo_new_path, success ) - wxDL_METHOD_LOAD( m_cairo_lib, cairo_paint, success ) - wxDL_METHOD_LOAD( m_cairo_lib, cairo_pattern_add_color_stop_rgba, success ) - wxDL_METHOD_LOAD( m_cairo_lib, cairo_pattern_create_for_surface, success ) - wxDL_METHOD_LOAD( m_cairo_lib, cairo_pattern_create_linear, success ) - wxDL_METHOD_LOAD( m_cairo_lib, cairo_pattern_create_radial, success ) - wxDL_METHOD_LOAD( m_cairo_lib, cairo_pattern_destroy, success ) - wxDL_METHOD_LOAD( m_cairo_lib, cairo_pattern_set_extend, success ) - wxDL_METHOD_LOAD( m_cairo_lib, cairo_pattern_set_filter, success ) - wxDL_METHOD_LOAD( m_cairo_lib, cairo_rectangle, success ) - wxDL_METHOD_LOAD( m_cairo_lib, cairo_reset_clip, success ) - wxDL_METHOD_LOAD( m_cairo_lib, cairo_restore, success ) - wxDL_METHOD_LOAD( m_cairo_lib, cairo_rotate, success ) - wxDL_METHOD_LOAD( m_cairo_lib, cairo_save, success ) - wxDL_METHOD_LOAD( m_cairo_lib, cairo_scale, success ) - wxDL_METHOD_LOAD( m_cairo_lib, cairo_set_dash, success ) - wxDL_METHOD_LOAD( m_cairo_lib, cairo_set_fill_rule, success ) - wxDL_METHOD_LOAD( m_cairo_lib, cairo_set_line_cap, success ) - wxDL_METHOD_LOAD( m_cairo_lib, cairo_set_line_join, success ) - wxDL_METHOD_LOAD( m_cairo_lib, cairo_set_line_width, success ) - wxDL_METHOD_LOAD( m_cairo_lib, cairo_set_operator, success ) - wxDL_METHOD_LOAD( m_cairo_lib, cairo_set_source, success ) - wxDL_METHOD_LOAD( m_cairo_lib, cairo_set_source_rgba, success ) - wxDL_METHOD_LOAD( m_cairo_lib, cairo_stroke, success ) - wxDL_METHOD_LOAD( m_cairo_lib, cairo_stroke_preserve, success ) - wxDL_METHOD_LOAD( m_cairo_lib, cairo_surface_create_similar, success ) - wxDL_METHOD_LOAD( m_cairo_lib, cairo_surface_destroy, success ) - wxDL_METHOD_LOAD( m_cairo_lib, cairo_translate, success ) - - m_ok = true; + wxDL_METHOD_LOAD(m_libCairo, cairo_arc); + wxDL_METHOD_LOAD(m_libCairo, cairo_arc_negative); + wxDL_METHOD_LOAD(m_libCairo, cairo_clip); + wxDL_METHOD_LOAD(m_libCairo, cairo_close_path); + wxDL_METHOD_LOAD(m_libCairo, cairo_create); + wxDL_METHOD_LOAD(m_libCairo, cairo_curve_to); + wxDL_METHOD_LOAD(m_libCairo, cairo_destroy); + wxDL_METHOD_LOAD(m_libCairo, cairo_fill); + wxDL_METHOD_LOAD(m_libCairo, cairo_fill_preserve); + wxDL_METHOD_LOAD(m_libCairo, cairo_get_target); + wxDL_METHOD_LOAD(m_libCairo, cairo_image_surface_create_for_data); + wxDL_METHOD_LOAD(m_libCairo, cairo_line_to); + wxDL_METHOD_LOAD(m_libCairo, cairo_move_to); + wxDL_METHOD_LOAD(m_libCairo, cairo_new_path); + wxDL_METHOD_LOAD(m_libCairo, cairo_paint); + wxDL_METHOD_LOAD(m_libCairo, cairo_pattern_add_color_stop_rgba); + wxDL_METHOD_LOAD(m_libCairo, cairo_pattern_create_for_surface); + wxDL_METHOD_LOAD(m_libCairo, cairo_pattern_create_linear); + wxDL_METHOD_LOAD(m_libCairo, cairo_pattern_create_radial); + wxDL_METHOD_LOAD(m_libCairo, cairo_pattern_destroy); + wxDL_METHOD_LOAD(m_libCairo, cairo_pattern_set_extend); + wxDL_METHOD_LOAD(m_libCairo, cairo_pattern_set_filter); + wxDL_METHOD_LOAD(m_libCairo, cairo_rectangle); + wxDL_METHOD_LOAD(m_libCairo, cairo_reset_clip); + wxDL_METHOD_LOAD(m_libCairo, cairo_restore); + wxDL_METHOD_LOAD(m_libCairo, cairo_rotate); + wxDL_METHOD_LOAD(m_libCairo, cairo_save); + wxDL_METHOD_LOAD(m_libCairo, cairo_scale); + wxDL_METHOD_LOAD(m_libCairo, cairo_set_dash); + wxDL_METHOD_LOAD(m_libCairo, cairo_set_fill_rule); + wxDL_METHOD_LOAD(m_libCairo, cairo_set_line_cap); + wxDL_METHOD_LOAD(m_libCairo, cairo_set_line_join); + wxDL_METHOD_LOAD(m_libCairo, cairo_set_line_width); + wxDL_METHOD_LOAD(m_libCairo, cairo_set_operator); + wxDL_METHOD_LOAD(m_libCairo, cairo_set_source); + wxDL_METHOD_LOAD(m_libCairo, cairo_set_source_rgba); + wxDL_METHOD_LOAD(m_libCairo, cairo_stroke); + wxDL_METHOD_LOAD(m_libCairo, cairo_stroke_preserve); + wxDL_METHOD_LOAD(m_libCairo, cairo_surface_create_similar); + wxDL_METHOD_LOAD(m_libCairo, cairo_surface_destroy); + wxDL_METHOD_LOAD(m_libCairo, cairo_translate); + + wxDL_METHOD_LOAD(m_libPangoCairo, pango_cairo_update_layout); + wxDL_METHOD_LOAD(m_libPangoCairo, pango_cairo_show_layout); + + return true; } //---------------------------------------------------------------------------- // wxCairoModule //---------------------------------------------------------------------------- -class wxCairoModule: public wxModule +class wxCairoModule : public wxModule { public: wxCairoModule() { } - bool OnInit(); - void OnExit(); + virtual bool OnInit(); + virtual void OnExit(); private: - DECLARE_DYNAMIC_CLASS(wxGtkPrintModule) + DECLARE_DYNAMIC_CLASS(wxCairotModule) }; bool wxCairoModule::OnInit() @@ -156,5 +162,4 @@ void wxCairoModule::OnExit() IMPLEMENT_DYNAMIC_CLASS(wxCairoModule, wxModule) -#endif - // wxUSE_CAIRO +#endif // wxUSE_CAIRO