rpms/vte/devel vte-0.12.0-real-transparency.patch,NONE,1.1

fedora-cvs-commits at redhat.com fedora-cvs-commits at redhat.com
Thu Apr 13 18:28:26 UTC 2006


Author: krh

Update of /cvs/dist/rpms/vte/devel
In directory cvs.devel.redhat.com:/tmp/cvs-serv2247

Added Files:
	vte-0.12.0-real-transparency.patch 
Log Message:
Add patch.

vte-0.12.0-real-transparency.patch:
 vte-private.h |    1 +
 vte.c         |   17 ++++++++++++++++-
 vte.h         |    1 +
 vteapp.c      |    9 +++++++++
 vtedraw.c     |    6 ++++--
 vtedraw.h     |    6 ++++--
 vteft2.c      |    2 +-
 vtegl.c       |    2 +-
 vtepango.c    |    2 +-
 vtepangox.c   |    2 +-
 vteskel.c     |    4 +++-
 vtexft.c      |   14 +++++++++-----
 12 files changed, 51 insertions(+), 15 deletions(-)

--- NEW FILE vte-0.12.0-real-transparency.patch ---
--- ./src/vte-private.h.real-transparency	2006-03-08 15:31:13.000000000 -0500
+++ ./src/vte-private.h	2006-04-13 14:22:35.000000000 -0400
@@ -338,6 +338,7 @@
 	guint bg_update_tag;
 	GdkColor bg_tint_color;
 	long bg_saturation;	/* out of VTE_SATURATION_MAX */
+	guint16 bg_opacity;
 
 	/* Key modifiers. */
 	GdkModifierType modifiers;
--- ./src/vte.c.real-transparency	2006-03-12 22:29:31.000000000 -0500
+++ ./src/vte.c	2006-04-13 14:23:41.000000000 -0400
@@ -2160,6 +2160,19 @@
 }
 
 /**
+ * vte_terminal_set_opacity
+ * @terminal: a #VteTerminal
+ * @opacity: the new opacity
+ *
+ * CRACK ALERT!
+ */
+void
+vte_terminal_set_opacity(VteTerminal *terminal, guint16 opacity)
+{
+	terminal->pvt->bg_opacity = opacity;
+}
+
+/**
  * vte_terminal_set_default_colors:
  * @terminal: a #VteTerminal
  *
@@ -6808,6 +6821,7 @@
 	pvt->bg_tint_color.green = 0;
 	pvt->bg_tint_color.blue = 0;
 	pvt->bg_saturation = 0.4 * VTE_SATURATION_MAX;
+ 	pvt->bg_opacity = 0xffff;
 
 	/* Assume we're visible unless we're told otherwise. */
 	pvt->visibility_state = GDK_VISIBILITY_UNOBSCURED;
@@ -10212,7 +10226,8 @@
 		gdk_rgb_find_color(colormap, &bgcolor);
 	}
 	gdk_window_set_background(widget->window, &bgcolor);
-	_vte_draw_set_background_color(terminal->pvt->draw, &bgcolor);
+	_vte_draw_set_background_color(terminal->pvt->draw, &bgcolor,
+				       terminal->pvt->bg_opacity);
 
 	/* If we're transparent, and either have no root image or are being
 	 * told to update it, get a new copy of the root window. */
--- ./src/vte.h.real-transparency	2004-05-01 03:12:51.000000000 -0400
+++ ./src/vte.h	2006-04-13 14:22:35.000000000 -0400
@@ -274,6 +274,7 @@
 					    double saturation);
 void vte_terminal_set_background_transparent(VteTerminal *terminal,
 					     gboolean transparent);
+void vte_terminal_set_opacity(VteTerminal *terminal, guint16 opacity);
 
 /* Set whether or not the cursor blinks. */
 void vte_terminal_set_cursor_blinks(VteTerminal *terminal, gboolean blink);
--- ./src/vteapp.c.real-transparency	2006-02-10 04:25:56.000000000 -0500
+++ ./src/vteapp.c	2006-04-13 14:22:35.000000000 -0400
@@ -399,6 +399,8 @@
 int
 main(int argc, char **argv)
 {
+	GdkScreen *screen;
+	GdkColormap *colormap;
 	GtkWidget *window, *hbox, *scrollbar, *widget;
 	char *env_add[] = {"FOO=BAR", "BOO=BIZ", NULL};
 	const char *background = NULL;
@@ -574,6 +576,12 @@
 	g_signal_connect(G_OBJECT(window), "delete_event",
 			 GTK_SIGNAL_FUNC(deleted_and_quit), window);
 
+	/* Set ARGB colormap */
+	screen = gtk_widget_get_screen (window);
+	colormap = gdk_screen_get_rgba_colormap (screen);
+	if (colormap)
+	    gtk_widget_set_colormap(GTK_WIDGET (window), colormap);
+
 	/* Create a box to hold everything. */
 	hbox = gtk_hbox_new(0, FALSE);
 	gtk_container_add(GTK_CONTAINER(window), hbox);
@@ -665,6 +673,7 @@
 	}
 	vte_terminal_set_background_tint_color(VTE_TERMINAL(widget), &tint);
 	vte_terminal_set_colors(VTE_TERMINAL(widget), &fore, &back, NULL, 0);
+	vte_terminal_set_opacity(VTE_TERMINAL(widget), 0xcccc);
 	if (highlight_set) {
 		vte_terminal_set_color_highlight(VTE_TERMINAL(widget),
 						 &highlight);
--- ./src/vtedraw.c.real-transparency	2006-02-03 08:27:27.000000000 -0500
+++ ./src/vtedraw.c	2006-04-13 14:22:35.000000000 -0400
@@ -177,11 +177,13 @@
 }
 
 void
-_vte_draw_set_background_color(struct _vte_draw *draw, GdkColor *color)
+_vte_draw_set_background_color(struct _vte_draw *draw,
+			       GdkColor *color,
+			       guint16 opacity)
 {
 	g_return_if_fail(draw->impl != NULL);
 	g_return_if_fail(draw->impl->set_background_color != NULL);
-	draw->impl->set_background_color(draw, color);
+	draw->impl->set_background_color(draw, color, opacity);
 }
 
 void
--- ./src/vtedraw.h.real-transparency	2004-04-20 01:16:56.000000000 -0400
+++ ./src/vtedraw.h	2006-04-13 14:22:35.000000000 -0400
@@ -58,7 +58,7 @@
 	GdkColormap* (*get_colormap)(struct _vte_draw *draw);
 	void (*start)(struct _vte_draw *draw);
 	void (*end)(struct _vte_draw *draw);
-	void (*set_background_color)(struct _vte_draw *, GdkColor *);
+	void (*set_background_color)(struct _vte_draw *, GdkColor *, guint16);
 	void (*set_background_image)(struct _vte_draw *,
 				     enum VteBgSourceType type,
 				     GdkPixbuf *pixbuf,
@@ -116,7 +116,9 @@
 
 /* Set the background color, a background pixbuf (if you want transparency,
    you'll have to do that yourself), and clear an area to the default. */
-void _vte_draw_set_background_color(struct _vte_draw *draw, GdkColor *color);
+void _vte_draw_set_background_color(struct _vte_draw *draw,
+				    GdkColor *color,
+				    guint16 opacity);
 void _vte_draw_set_background_image(struct _vte_draw *draw,
 				    enum VteBgSourceType type,
 				    GdkPixbuf *pixbuf,
--- ./src/vteft2.c.real-transparency	2004-04-20 01:16:56.000000000 -0400
+++ ./src/vteft2.c	2006-04-13 14:22:35.000000000 -0400
@@ -149,7 +149,7 @@
 }
 
 static void
-_vte_ft2_set_background_color(struct _vte_draw *draw, GdkColor *color)
+_vte_ft2_set_background_color(struct _vte_draw *draw, GdkColor *color, guint16 opacity)
 {
 	struct _vte_ft2_data *data;
 	data = (struct _vte_ft2_data*) draw->impl_data;
--- ./src/vtegl.c.real-transparency	2004-04-20 01:16:56.000000000 -0400
+++ ./src/vtegl.c	2006-04-13 14:22:35.000000000 -0400
@@ -261,7 +261,7 @@
 }
 
 static void
-_vte_gl_set_background_color(struct _vte_draw *draw, GdkColor *color)
+_vte_gl_set_background_color(struct _vte_draw *draw, GdkColor *color, guint16 opacity)
 {
 	struct _vte_gl_data *data;
 
--- ./src/vtepango.c.real-transparency	2005-07-25 04:49:42.000000000 -0400
+++ ./src/vtepango.c	2006-04-13 14:22:35.000000000 -0400
@@ -178,7 +178,7 @@
 }
 
 static void
-_vte_pango_set_background_color(struct _vte_draw *draw, GdkColor *color)
+_vte_pango_set_background_color(struct _vte_draw *draw, GdkColor *color, guint16 opacity)
 {
 	struct _vte_pango_data *data;
 	data = (struct _vte_pango_data*) draw->impl_data;
--- ./src/vtepangox.c.real-transparency	2004-04-20 01:16:56.000000000 -0400
+++ ./src/vtepangox.c	2006-04-13 14:22:36.000000000 -0400
@@ -190,7 +190,7 @@
 }
 
 static void
-_vte_pango_x_set_background_color(struct _vte_draw *draw, GdkColor *color)
+_vte_pango_x_set_background_color(struct _vte_draw *draw, GdkColor *color, guint16 opacity)
 {
 	struct _vte_pango_x_data *data;
 	data = (struct _vte_pango_x_data*) draw->impl_data;
--- ./src/vteskel.c.real-transparency	2004-04-20 01:16:56.000000000 -0400
+++ ./src/vteskel.c	2006-04-13 14:22:36.000000000 -0400
@@ -34,6 +34,7 @@
 	GdkPixmap *pixmap;
 	gint pixmapw, pixmaph;
 	gint scrollx, scrolly;
+	guint16 opacity;
 };
 
 static gboolean
@@ -107,11 +108,12 @@
 }
 
 static void
-_vte_skel_set_background_color(struct _vte_draw *draw, GdkColor *color)
+_vte_skel_set_background_color(struct _vte_draw *draw, GdkColor *color, guint16 opacity)
 {
 	struct _vte_skel_data *data;
 	data = (struct _vte_skel_data*) draw->impl_data;
 	data->color = *color;
+	data->opacity = opacity;
 }
 
 static void
--- ./src/vtexft.c.real-transparency	2006-02-25 18:20:42.000000000 -0500
+++ ./src/vtexft.c	2006-04-13 14:22:36.000000000 -0400
@@ -69,6 +69,7 @@
 	XftDraw *draw;
 	GC gc;
 	GdkColor color;
+	guint16 opacity;
 	GdkPixmap *pixmap;
 	Pixmap xpixmap;
 	gint pixmapw, pixmaph;
@@ -332,6 +333,7 @@
 	data->draw = NULL;
 	data->gc = NULL;
 	memset(&data->color, 0, sizeof(data->color));
+	data->opacity = 0xffff;
 	data->pixmap = NULL;
 	data->xpixmap = -1;
 	data->pixmapw = data->pixmaph = -1;
@@ -435,11 +437,13 @@
 }
 
 static void
-_vte_xft_set_background_color(struct _vte_draw *draw, GdkColor *color)
+_vte_xft_set_background_color(struct _vte_draw *draw, GdkColor *color,
+			      guint16 opacity)
 {
 	struct _vte_xft_data *data;
 	data = (struct _vte_xft_data*) draw->impl_data;
 	data->color = *color;
+	data->opacity = opacity;
 }
 
 static void
@@ -485,10 +489,10 @@
 	if (!GDK_IS_PIXMAP(data->pixmap) ||
 	    (data->pixmapw <= 0) ||
 	    (data->pixmaph <= 0)) {
-		rcolor.red = data->color.red;
-		rcolor.green = data->color.green;
-		rcolor.blue = data->color.blue;
-		rcolor.alpha = 0xffff;
+		rcolor.red = data->color.red * data->opacity / 0xffff;
+		rcolor.green = data->color.green * data->opacity / 0xffff;
+		rcolor.blue = data->color.blue * data->opacity / 0xffff;
+		rcolor.alpha = data->opacity;
 		if (XftColorAllocValue(data->display, data->visual,
 				       data->colormap, &rcolor, &ftcolor)) {
 			XftDrawRect(data->draw, &ftcolor,




More information about the fedora-cvs-commits mailing list