From 7e36b2a0fc2180d8d319b54159a6680801247ba4 Mon Sep 17 00:00:00 2001 From: Thomas White Date: Sat, 27 Oct 2018 23:29:14 +0200 Subject: Allow alpha values for stylesheet colours Get rid of GRAD_NOBG, because it's now handled by transparency --- data/stylesheeteditor.ui | 10 ++++++++-- src/frame.h | 3 +-- src/render.c | 5 ----- src/sc_interp.c | 2 +- src/stylesheet_editor.c | 34 ++++++++++++++-------------------- 5 files changed, 24 insertions(+), 30 deletions(-) diff --git a/data/stylesheeteditor.ui b/data/stylesheeteditor.ui index 3e64d3d..19723bb 100644 --- a/data/stylesheeteditor.ui +++ b/data/stylesheeteditor.ui @@ -210,6 +210,7 @@ True True True + True @@ -251,7 +252,6 @@ Flat colour Horizontal gradient Vertical gradient - None @@ -266,6 +266,7 @@ True True True + True @@ -279,6 +280,7 @@ True True True + True @@ -717,6 +719,7 @@ True True True + True @@ -730,6 +733,7 @@ True True True + True @@ -822,6 +826,7 @@ True True True + True @@ -863,7 +868,6 @@ Flat colour Horizontal gradient Vertical gradient - None @@ -878,6 +882,7 @@ True True True + True @@ -891,6 +896,7 @@ True True True + True diff --git a/src/frame.h b/src/frame.h index b786065..f52c6e6 100644 --- a/src/frame.h +++ b/src/frame.h @@ -42,8 +42,7 @@ typedef enum { GRAD_NONE, GRAD_HORIZ, - GRAD_VERT, - GRAD_NOBG + GRAD_VERT } GradientType; enum para_type diff --git a/src/render.c b/src/render.c index 8aa7dbe..f9f4cca 100644 --- a/src/render.c +++ b/src/render.c @@ -48,8 +48,6 @@ static void do_background(cairo_t *cr, struct frame *fr) { cairo_pattern_t *patt = NULL; - if ( fr->grad == GRAD_NOBG ) return; /* Should not end up here */ - cairo_new_path(cr); cairo_rectangle(cr, 0.0, 0.0, fr->w, fr->h); @@ -86,9 +84,6 @@ static void do_background(cairo_t *cr, struct frame *fr) cairo_set_source(cr, patt); break; - case GRAD_NOBG: - break; - } cairo_fill(cr); diff --git a/src/sc_interp.c b/src/sc_interp.c index 91775f5..7bbfeeb 100644 --- a/src/sc_interp.c +++ b/src/sc_interp.c @@ -584,7 +584,7 @@ SCInterpreter *sc_interp_new(PangoContext *pc, PangoLanguage *lang, st->bgcol2[1] = 1.0; st->bgcol2[2] = 1.0; st->bgcol2[3] = 1.0; - st->bggrad = GRAD_NOBG; + st->bggrad = GRAD_NONE; scin->lang = lang; /* The "ultimate" default font */ diff --git a/src/stylesheet_editor.c b/src/stylesheet_editor.c index bab784a..753918a 100644 --- a/src/stylesheet_editor.c +++ b/src/stylesheet_editor.c @@ -117,16 +117,10 @@ static void set_bg_from_ss(Stylesheet *ss, const char *path, GtkWidget *wcol, GdkRGBA rgba; found = 1; if ( gdk_rgba_parse(&rgba, result) == TRUE ) { - if ( rgba.alpha == 0.0 ) { - gtk_combo_box_set_active_id(GTK_COMBO_BOX(wgrad), "none"); - gtk_widget_set_sensitive(wcol, FALSE); - gtk_widget_set_sensitive(wcol2, FALSE); - } else { - gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(wcol), &rgba); - gtk_combo_box_set_active_id(GTK_COMBO_BOX(wgrad), "flat"); - gtk_widget_set_sensitive(wcol, TRUE); - gtk_widget_set_sensitive(wcol2, FALSE); - } + gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(wcol), &rgba); + gtk_combo_box_set_active_id(GTK_COMBO_BOX(wgrad), "flat"); + gtk_widget_set_sensitive(wcol, TRUE); + gtk_widget_set_sensitive(wcol2, FALSE); } else { fprintf(stderr, _("Failed to parse colour: %s\n"), result); } @@ -159,8 +153,14 @@ static void set_bg_from_ss(Stylesheet *ss, const char *path, GtkWidget *wcol, } if ( !found ) { - gtk_combo_box_set_active_id(GTK_COMBO_BOX(wgrad), "none"); - gtk_widget_set_sensitive(wcol, FALSE); + GdkRGBA rgba; + rgba.red = 1.0; + rgba.green = 1.0; + rgba.blue = 1.0; + rgba.alpha = 0.0; + gtk_combo_box_set_active_id(GTK_COMBO_BOX(wgrad), "flat"); + gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(wcol), &rgba); + gtk_widget_set_sensitive(wcol, TRUE); gtk_widget_set_sensitive(wcol2, FALSE); } } @@ -215,7 +215,6 @@ static GradientType id_to_gradtype(const gchar *id) if ( strcmp(id, "flat") == 0 ) return GRAD_NONE; if ( strcmp(id, "horiz") == 0 ) return GRAD_HORIZ; if ( strcmp(id, "vert") == 0 ) return GRAD_VERT; - if ( strcmp(id, "none") == 0 ) return GRAD_NOBG; return GRAD_NONE; } @@ -234,7 +233,9 @@ static void update_bg(struct presentation *p, const char *style_name, g = id_to_gradtype(id); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(col1w), &rgba); + if ( rgba.alpha < 0.000001 ) rgba.alpha = 0.0; col1 = gdk_rgba_to_string(&rgba); + printf("got colour %s\n", col1); gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(col2w), &rgba); col2 = gdk_rgba_to_string(&rgba); @@ -243,13 +244,6 @@ static void update_bg(struct presentation *p, const char *style_name, switch ( g ) { - case GRAD_NOBG : - stylesheet_set(p->stylesheet, style_name, "bgcol", - "rgba(0,0,0,0)"); - stylesheet_delete(p->stylesheet, style_name, "bggradv"); - stylesheet_delete(p->stylesheet, style_name, "bggradh"); - break; - case GRAD_NONE : stylesheet_set(p->stylesheet, style_name, "bgcol", col1); -- cgit v1.2.3