From ce7d19d224a8f5885856f909e4edaa5a14d33b78 Mon Sep 17 00:00:00 2001 From: bryce Date: Tue, 20 Feb 2007 08:08:25 +0000 Subject: [PATCH] Moving cache management code from .h to .cpp. Making the marker dropdowns static so they can be updated. --- src/dialogs/stroke-style.cpp | 38 +++++++++++++----------- src/ui/cache/svg_preview_cache.cpp | 47 ++++++++++++++++++++++++++++++ src/ui/cache/svg_preview_cache.h | 40 ++++--------------------- 3 files changed, 74 insertions(+), 51 deletions(-) diff --git a/src/dialogs/stroke-style.cpp b/src/dialogs/stroke-style.cpp index 0dedcfe4c..a488c1533 100644 --- a/src/dialogs/stroke-style.cpp +++ b/src/dialogs/stroke-style.cpp @@ -74,6 +74,12 @@ static void sp_stroke_style_paint_changed(SPPaintSelector *psel, SPWidget *spw); static void sp_stroke_style_widget_change_subselection ( Inkscape::Application *inkscape, SPDesktop *desktop, SPWidget *spw ); +/** Marker selection option menus */ +static GtkWidget * marker_start_menu = NULL; +static GtkWidget * marker_mid_menu = NULL; +static GtkWidget * marker_end_menu = NULL; + + /** * Create the stroke style widget, and hook up all the signals. */ @@ -1153,35 +1159,33 @@ sp_stroke_style_line_widget_new(void) // TRANSLATORS: Path markers are an SVG feature that allows you to attach arbitrary shapes // (arrowheads, bullets, faces, whatever) to the start, end, or middle nodes of a path. spw_label(t, _("Start Markers:"), 0, i); - GtkWidget *mnu = ink_marker_menu( spw ,"marker-start", sandbox); - gtk_signal_connect( GTK_OBJECT(mnu), "changed", GTK_SIGNAL_FUNC(sp_marker_select), spw ); - gtk_widget_show(mnu); - gtk_table_attach( GTK_TABLE(t), mnu, 1, 4, i, i+1, + marker_start_menu = ink_marker_menu( spw ,"marker-start", sandbox); + gtk_signal_connect( GTK_OBJECT(marker_start_menu), "changed", GTK_SIGNAL_FUNC(sp_marker_select), spw ); + gtk_widget_show(marker_start_menu); + gtk_table_attach( GTK_TABLE(t), marker_start_menu, 1, 4, i, i+1, (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ), (GtkAttachOptions)0, 0, 0 ); - gtk_object_set_data(GTK_OBJECT(spw), "start_mark_menu", mnu); + gtk_object_set_data(GTK_OBJECT(spw), "start_mark_menu", marker_start_menu); i++; spw_label(t, _("Mid Markers:"), 0, i); - mnu = NULL; - mnu = ink_marker_menu( spw ,"marker-mid", sandbox); - gtk_signal_connect( GTK_OBJECT(mnu), "changed", GTK_SIGNAL_FUNC(sp_marker_select), spw ); - gtk_widget_show(mnu); - gtk_table_attach( GTK_TABLE(t), mnu, 1, 4, i, i+1, + marker_mid_menu = ink_marker_menu( spw ,"marker-mid", sandbox); + gtk_signal_connect( GTK_OBJECT(marker_mid_menu), "changed", GTK_SIGNAL_FUNC(sp_marker_select), spw ); + gtk_widget_show(marker_mid_menu); + gtk_table_attach( GTK_TABLE(t), marker_mid_menu, 1, 4, i, i+1, (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ), (GtkAttachOptions)0, 0, 0 ); - gtk_object_set_data(GTK_OBJECT(spw), "mid_mark_menu", mnu); + gtk_object_set_data(GTK_OBJECT(spw), "mid_mark_menu", marker_mid_menu); i++; spw_label(t, _("End Markers:"), 0, i); - mnu = NULL; - mnu = ink_marker_menu( spw ,"marker-end", sandbox); - gtk_signal_connect( GTK_OBJECT(mnu), "changed", GTK_SIGNAL_FUNC(sp_marker_select), spw ); - gtk_widget_show(mnu); - gtk_table_attach( GTK_TABLE(t), mnu, 1, 4, i, i+1, + marker_end_menu = ink_marker_menu( spw ,"marker-end", sandbox); + gtk_signal_connect( GTK_OBJECT(marker_end_menu), "changed", GTK_SIGNAL_FUNC(sp_marker_select), spw ); + gtk_widget_show(marker_end_menu); + gtk_table_attach( GTK_TABLE(t), marker_end_menu, 1, 4, i, i+1, (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ), (GtkAttachOptions)0, 0, 0 ); - gtk_object_set_data(GTK_OBJECT(spw), "end_mark_menu", mnu); + gtk_object_set_data(GTK_OBJECT(spw), "end_mark_menu", marker_end_menu); i++; diff --git a/src/ui/cache/svg_preview_cache.cpp b/src/ui/cache/svg_preview_cache.cpp index 6b3bc3930..4aa46af2b 100644 --- a/src/ui/cache/svg_preview_cache.cpp +++ b/src/ui/cache/svg_preview_cache.cpp @@ -97,4 +97,51 @@ GdkPixbuf* render_pixbuf(NRArenaItem* root, double scale_factor, const NR::Rect& return pixbuf; } +namespace Inkscape { +namespace UI { +namespace Cache { +SvgPreview::SvgPreview() +{ +} + +SvgPreview::~SvgPreview() +{ +} + +Glib::ustring SvgPreview::cache_key(gchar const *name, unsigned psize) const { + Glib::ustring key = name; + key += ":"; + key += psize; + return key; +} + +GdkPixbuf* SvgPreview::get_preview_from_cache(const Glib::ustring& key) { + std::map::iterator found = _pixmap_cache.find(key); + if ( found != _pixmap_cache.end() ) { + return found->second; + } + return NULL; +} + +void SvgPreview::set_preview_in_cache(const Glib::ustring& key, GdkPixbuf* px) { + _pixmap_cache[key] = px; +} + +GdkPixbuf* SvgPreview::get_preview(const gchar* id, NRArenaItem *root, + double scale_factor, unsigned int psize) { + // First try looking up the cached preview in the cache map + Glib::ustring key = cache_key(id, psize); + GdkPixbuf* px = get_preview_from_cache(key); + + if (px == NULL) { + /* + px = render_pixbuf(root, scale_factor, dbox, psize); + set_preview_in_cache(key, px); + */ + } +} + +}; +}; +}; diff --git a/src/ui/cache/svg_preview_cache.h b/src/ui/cache/svg_preview_cache.h index 2d84b7273..14e05d2f8 100644 --- a/src/ui/cache/svg_preview_cache.h +++ b/src/ui/cache/svg_preview_cache.h @@ -22,41 +22,13 @@ class SvgPreview { std::map _pixmap_cache; public: - SvgPreview() {} - ~SvgPreview() {} + SvgPreview(); + ~SvgPreview(); - Glib::ustring cache_key(gchar const *name, unsigned psize) const { - Glib::ustring key = name; - key += ":"; - key += psize; - return key; - } - - GdkPixbuf* get_preview_from_cache(const Glib::ustring& key) { - std::map::iterator found = _pixmap_cache.find(key); - if ( found != _pixmap_cache.end() ) { - return found->second; - } - return NULL; - } - - void set_preview_in_cache(const Glib::ustring& key, GdkPixbuf* px) { - _pixmap_cache[key] = px; - } - - GdkPixbuf* get_preview(const gchar* id, NRArenaItem *root, double scale_factor, unsigned int psize) { - // First try looking up the cached preview in the cache map - Glib::ustring key = cache_key(id, psize); - GdkPixbuf* px = get_preview_from_cache(key); - - if (px == NULL) { -/* - px = render_pixbuf(root, scale_factor, dbox, psize); - set_preview_in_cache(key, px); -*/ - } - - } + Glib::ustring cache_key(gchar const *name, unsigned psize) const; + GdkPixbuf* get_preview_from_cache(const Glib::ustring& key); + void set_preview_in_cache(const Glib::ustring& key, GdkPixbuf* px); + GdkPixbuf* get_preview(const gchar* id, NRArenaItem *root, double scale_factor, unsigned int psize); }; }; // namespace Cache -- 2.30.2