[vte] Add RGBA variants to set colors.



commit 1c55bed8025942925f2e9760a9461020bc634e86
Author: Ignacio Casal Quinteiro <icq gnome org>
Date:   Tue Jan 25 12:31:31 2011 +0100

    Add RGBA variants to set colors.

 doc/reference/vte-sections.txt |    7 ++
 src/vte.c                      |  207 ++++++++++++++++++++++++++++++++++++++++
 src/vte.h                      |   21 ++++
 3 files changed, 235 insertions(+), 0 deletions(-)
---
diff --git a/doc/reference/vte-sections.txt b/doc/reference/vte-sections.txt
index 986db5a..47c07dd 100644
--- a/doc/reference/vte-sections.txt
+++ b/doc/reference/vte-sections.txt
@@ -30,12 +30,19 @@ vte_terminal_get_allow_bold
 vte_terminal_set_scroll_on_output
 vte_terminal_set_scroll_on_keystroke
 vte_terminal_set_color_bold
+vte_terminal_set_color_bold_rgba
 vte_terminal_set_color_foreground
+vte_terminal_set_color_foreground_rgba
 vte_terminal_set_color_background
+vte_terminal_set_color_background_rgba
 vte_terminal_set_color_dim
+vte_terminal_set_color_dim_rgba
 vte_terminal_set_color_cursor
+vte_terminal_set_color_cursor_rgba
 vte_terminal_set_color_highlight
+vte_terminal_set_color_highlight_rgba
 vte_terminal_set_colors
+vte_terminal_set_colors_rgba
 vte_terminal_set_default_colors
 vte_terminal_set_opacity
 vte_terminal_set_background_image
diff --git a/src/vte.c b/src/vte.c
index 2297233..5083352 100644
--- a/src/vte.c
+++ b/src/vte.c
@@ -2855,6 +2855,213 @@ vte_terminal_set_colors(VteTerminal *terminal,
 	terminal->pvt->palette_initialized = TRUE;
 }
 
+#if GTK_CHECK_VERSION (2, 99, 0)
+
+static GdkColor *
+gdk_color_from_rgba (GdkColor *color,
+                     const GdkRGBA *rgba)
+{
+        if (rgba == NULL)
+                return NULL;
+
+        color->red = rgba->red * 65535.;
+        color->green = rgba->green * 65535.;
+        color->blue = rgba->blue * 65535.;
+        color->pixel = 0;
+
+	return color;
+}
+
+/**
+ * vte_terminal_set_color_bold_rgba:
+ * @terminal: a #VteTerminal
+ * @bold: (allow-none): the new bold color or %NULL
+ *
+ * Sets the color used to draw bold text in the default foreground color.
+ * If @bold is %NULL then the default color is used.
+ */
+void
+vte_terminal_set_color_bold_rgba(VteTerminal *terminal,
+                                 const GdkRGBA *bold)
+{
+	GdkColor color;
+
+	if (bold == NULL)
+	{
+		vte_terminal_generate_bold(&terminal->pvt->palette[VTE_DEF_FG],
+					   &terminal->pvt->palette[VTE_DEF_BG],
+					   1.8,
+					   &color);
+	}
+	else
+	{
+		gdk_color_from_rgba(&color, bold);
+	}
+
+	vte_terminal_set_color_bold(terminal, &color);
+}
+
+/**
+ * vte_terminal_set_color_dim_rgba:
+ * @terminal: a #VteTerminal
+ * @dim: (allow-none): the new dim color or %NULL
+ *
+ * Sets the color used to draw dim text in the default foreground color.
+ * If @dim is %NULL then the default color is used.
+ *
+ * Since: 0.28
+ */
+void
+vte_terminal_set_color_dim_rgba(VteTerminal *terminal,
+                                const GdkRGBA *dim)
+{
+	GdkColor color;
+
+	if (dim == NULL)
+	{
+		vte_terminal_generate_bold(&terminal->pvt->palette[VTE_DEF_FG],
+					   &terminal->pvt->palette[VTE_DEF_BG],
+					   0.5,
+					   &color);
+	}
+	else
+	{
+		gdk_color_from_rgba(&color, dim);
+	}
+
+	vte_terminal_set_color_dim(terminal, &color);
+}
+
+/**
+ * vte_terminal_set_color_foreground_rgba:
+ * @terminal: a #VteTerminal
+ * @foreground: the new foreground color
+ *
+ * Sets the foreground color used to draw normal text.
+ *
+ * Since: 0.28
+ */
+void
+vte_terminal_set_color_foreground_rgba(VteTerminal *terminal,
+				       const GdkRGBA *foreground)
+{
+	GdkColor color;
+
+	vte_terminal_set_color_foreground(terminal,
+                                          gdk_color_from_rgba(&color, foreground));
+}
+
+/**
+ * vte_terminal_set_color_background_rgba:
+ * @terminal: a #VteTerminal
+ * @background: the new background color
+ *
+ * Sets the background color for text which does not have a specific background
+ * color assigned.  Only has effect when no background image is set and when
+ * the terminal is not transparent.
+ *
+ * Since: 0.28
+ */
+void
+vte_terminal_set_color_background_rgba(VteTerminal *terminal,
+				       const GdkRGBA *background)
+{
+	GdkColor color;
+
+	vte_terminal_set_color_background(terminal,
+                                          gdk_color_from_rgba (&color, background));
+}
+
+/**
+ * vte_terminal_set_color_cursor_rgba:
+ * @terminal: a #VteTerminal
+ * @cursor_background: (allow-none): the new color to use for the text cursor, or %NULL
+ *
+ * Sets the background color for text which is under the cursor.  If %NULL, text
+ * under the cursor will be drawn with foreground and background colors
+ * reversed.
+ *
+ * Since: 0.28
+ */
+void
+vte_terminal_set_color_cursor_rgba(VteTerminal *terminal,
+				   const GdkRGBA *cursor_background)
+{
+        GdkColor color;
+
+	vte_terminal_set_color_cursor(terminal,
+                                      gdk_color_from_rgba(&color, cursor_background));
+}
+
+/**
+ * vte_terminal_set_color_highlight_rgba:
+ * @terminal: a #VteTerminal
+ * @highlight_background: (allow-none): the new color to use for highlighted text, or %NULL
+ *
+ * Sets the background color for text which is highlighted.  If %NULL,
+ * highlighted text (which is usually highlighted because it is selected) will
+ * be drawn with foreground and background colors reversed.
+ *
+ * Since: 0.28
+ */
+void
+vte_terminal_set_color_highlight_rgba(VteTerminal *terminal,
+				      const GdkRGBA *highlight_background)
+{
+	GdkColor color;
+
+	vte_terminal_set_color_highlight(terminal,
+                                         gdk_color_from_rgba(&color, highlight_background));
+}
+
+/**
+ * vte_terminal_set_colors_rgba:
+ * @terminal: a #VteTerminal
+ * @foreground: (allow-none): the new foreground color, or %NULL
+ * @background: (allow-none): the new background color, or %NULL
+ * @palette: (array length=palette_size zero-terminated=0) (element-type Gdk.RGBA): the color palette
+ * @palette_size: the number of entries in @palette
+ *
+ * The terminal widget uses a 28-color model comprised of the default foreground
+ * and background colors, the bold foreground color, the dim foreground
+ * color, an eight color palette, bold versions of the eight color palette,
+ * and a dim version of the the eight color palette.
+ *
+ * @palette_size must be either 0, 8, 16, or 24, or between 25 and 255 inclusive.
+ * If @foreground is %NULL and
+ * @palette_size is greater than 0, the new foreground color is taken from
+ * @palette[7].  If @background is %NULL and @palette_size is greater than 0,
+ * the new background color is taken from @palette[0].  If
+ * @palette_size is 8 or 16, the third (dim) and possibly the second (bold)
+ * 8-color palettes are extrapolated from the new background color and the items
+ * in @palette.
+ *
+ * Since: 0.28
+ */
+void
+vte_terminal_set_colors_rgba(VteTerminal *terminal,
+			     const GdkRGBA *foreground,
+			     const GdkRGBA *background,
+			     const GdkRGBA *palette,
+			     gsize palette_size)
+{
+	GdkColor fg, bg, *pal;
+	gsize i;
+
+	pal = g_new (GdkColor, palette_size);
+	for (i = 0; i < palette_size; ++i)
+                gdk_color_from_rgba(&pal[i], &palette[i]);
+
+	vte_terminal_set_colors(terminal,
+                                gdk_color_from_rgba(&fg, foreground),
+                                gdk_color_from_rgba(&bg, background),
+	                        pal, palette_size);
+
+	g_free (pal);
+}
+
+#endif /* GTK 3.0 */
+
 /**
  * vte_terminal_set_opacity:
  * @terminal: a #VteTerminal
diff --git a/src/vte.h b/src/vte.h
index aa7b57b..879870a 100644
--- a/src/vte.h
+++ b/src/vte.h
@@ -329,6 +329,27 @@ void vte_terminal_set_colors(VteTerminal *terminal,
 			     const GdkColor *background,
 			     const GdkColor *palette,
 			     glong palette_size);
+
+#if GTK_CHECK_VERSION (2, 99, 0)
+void vte_terminal_set_color_bold_rgba(VteTerminal *terminal,
+                                      const GdkRGBA *bold);
+void vte_terminal_set_color_dim_rgba(VteTerminal *terminal,
+	                             const GdkRGBA *dim);
+void vte_terminal_set_color_foreground_rgba(VteTerminal *terminal,
+					    const GdkRGBA *foreground);
+void vte_terminal_set_color_background_rgba(VteTerminal *terminal,
+					    const GdkRGBA *background);
+void vte_terminal_set_color_cursor_rgba(VteTerminal *terminal,
+					const GdkRGBA *cursor_background);
+void vte_terminal_set_color_highlight_rgba(VteTerminal *terminal,
+					   const GdkRGBA *highlight_background);
+void vte_terminal_set_colors_rgba(VteTerminal *terminal,
+				  const GdkRGBA *foreground,
+				  const GdkRGBA *background,
+				  const GdkRGBA *palette,
+				  gsize palette_size);
+#endif
+
 void vte_terminal_set_default_colors(VteTerminal *terminal);
 
 /* Background effects. */



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]