summaryrefslogtreecommitdiff
path: root/gtk2_ardour/utils.cc
diff options
context:
space:
mode:
authorSampo Savolainen <v2@iki.fi>2009-01-02 15:27:19 +0000
committerSampo Savolainen <v2@iki.fi>2009-01-02 15:27:19 +0000
commit9d6d7f8b815fc975d159c83cfcba4d20047dc166 (patch)
treea2598aeaf3afd897a965ccbd463cfe9e4ed5da67 /gtk2_ardour/utils.cc
parentcdb391d1f137117dc6ee1a8a091beed0a9735734 (diff)
GC from style utility function
git-svn-id: svn://localhost/ardour2/branches/3.0@4378 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/utils.cc')
-rw-r--r--gtk2_ardour/utils.cc55
1 files changed, 55 insertions, 0 deletions
diff --git a/gtk2_ardour/utils.cc b/gtk2_ardour/utils.cc
index f625ae958e..5b83cddbc9 100644
--- a/gtk2_ardour/utils.cc
+++ b/gtk2_ardour/utils.cc
@@ -384,6 +384,61 @@ color_from_style (string widget_style_name, int state, string attr)
return Gdk::Color ("red");
}
+Glib::RefPtr<Gdk::GC>
+gc_from_style (string widget_style_name, int state, string attr)
+{
+ GtkStyle* style;
+
+ style = gtk_rc_get_style_by_paths (gtk_settings_get_default(),
+ widget_style_name.c_str(),
+ 0, G_TYPE_NONE);
+
+ if (!style) {
+ error << string_compose (_("no style found for %1, using red"), style) << endmsg;
+ Glib::RefPtr<Gdk::GC> ret = Gdk::GC::create();
+ ret->set_rgb_fg_color(Gdk::Color("red"));
+ return ret;
+ }
+
+ if (attr == "fg") {
+ return Glib::wrap(style->fg_gc[state]);
+ }
+
+ if (attr == "bg") {
+ return Glib::wrap(style->bg_gc[state]);
+ }
+
+ if (attr == "light") {
+ return Glib::wrap(style->light_gc[state]);
+ }
+
+ if (attr == "dark") {
+ return Glib::wrap(style->dark_gc[state]);
+ }
+
+ if (attr == "mid") {
+ return Glib::wrap(style->mid_gc[state]);
+ }
+
+ if (attr == "text") {
+ return Glib::wrap(style->text_gc[state]);
+ }
+
+ if (attr == "base") {
+ return Glib::wrap(style->base_gc[state]);
+ }
+
+ if (attr == "text_aa") {
+ return Glib::wrap(style->text_aa_gc[state]);
+ }
+
+ error << string_compose (_("unknown style attribute %1 requested for color; using \"red\""), attr) << endmsg;
+ Glib::RefPtr<Gdk::GC> ret = Gdk::GC::create();
+ ret->set_rgb_fg_color(Gdk::Color("red"));
+ return ret;
+}
+
+
bool
canvas_item_visible (ArdourCanvas::Item* item)
{