I crosscompile xorg-server-1.3.0.0on Powerpc environment.
TinyX is working on SDL layer.
It use 32bit color depth but alpha color bit do not working..
When Crosscompile in tinyX, libxcomposite library include in tinyX.
Maybe libXcomposite is not working correctly.
Below code is sample code for transparent Window.
This code is do not woring on TinyX server (Kdrive)
/*
* transparent window test
*/
#include <gtk/gtk.h>
#include <gdk-pixbuf/gdk-pixbuf.h>
static void
make_desktop_window (GtkWidget *window)
{
gtk_window_set_type_hint (GTK_WINDOW (window), GDK_WINDOW_TYPE_HINT_DOCK);
gtk_window_set_keep_below (GTK_WINDOW (window), TRUE);
gtk_window_set_decorated (GTK_WINDOW (window), FALSE);
gtk_window_stick (GTK_WINDOW (window));
}
static gboolean
window_exposed (GtkWidget *widget,
GdkEventExpose *event,
gpointer user_data)
{
cairo_t *cr;
g_debug ("rectangle: %dx%d+%d+%d",
event->area.width,
event->area.height,
event->area.x,
event->area.y);
cr = gdk_cairo_create (widget->window);
/* Make it transparent */
cairo_set_operator (cr, CAIRO_OPERATOR_CLEAR);
gdk_cairo_region (cr, event->region);
cairo_fill_preserve (cr);
/* Make it semi-transparent */
cairo_set_source_rgba (cr, 0.0, 0.0, 0.0, 0.5);
cairo_set_operator (cr, CAIRO_OPERATOR_OVER);
cairo_fill (cr);
cairo_destroy (cr);
return FALSE;
}
static void
make_transparent_window (GtkWidget *window)
{
GdkScreen *screen;
GdkColormap *colormap;
screen = gtk_widget_get_screen(window);
if (!screen)
{
g_warning ("failed to get window's screen");
return;
}
colormap = gdk_screen_get_rgba_colormap(screen);
if (!colormap)
{
g_warning ("failed to get RGBA colormap========");
return;
}
gtk_widget_set_colormap (window, colormap);
gtk_widget_set_app_paintable (window, TRUE);
g_signal_connect (window, "expose-event", G_CALLBACK (window_exposed), NULL);
}
static void
button_clicked (GtkButton *button,
gpointer user_data)
{
static gint counter = 0;
GtkWidget *label = user_data;
gchar *str;
str = g_strdup_printf ("<span size='larger' weight='bold' color='white'>?덈뀞?섏떊媛? %d</span>", ++counter);
gtk_label_set_markup (GTK_LABEL (label), str);
g_free (str);
}
int
main (int argc, char **argv)
{
GtkWidget *window;
GtkWidget *vbox;
GtkWidget *label;
GtkWidget *button;
gtk_init (&argc, &argv);
gdk_pixbuf_render_to_drawable_alpha(GDK_PIXBUF_ALPHA_FULL);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
make_transparent_window (window);
if (0) make_desktop_window (window);
gtk_widget_show (window);
vbox = gtk_vbox_new (TRUE, 10);
gtk_widget_show (vbox);
gtk_container_add (GTK_CONTAINER (window), vbox);
label = gtk_label_new ("");
gtk_label_set_markup (GTK_LABEL (label), "<span size='larger' weight='bold' color='white'>?덈뀞?섏떊媛?</span>");
gtk_widget_show (label);
gtk_box_pack_start (GTK_BOX (vbox), label, TRUE, TRUE, 10);
button = gtk_button_new_with_label ("Click Here!");
gtk_widget_show (button);
gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 10);
g_signal_connect (button, "clicked", G_CALLBACK (button_clicked), label);
gtk_main ();
return 0;
}
/*
Local Variables:
mode:c
c-file-style:"gnu"
indent-tabs-mode:nil
End:
vim:autoindent:filetype=c:expandtab:shiftwidth=2:softtabstop=2:tabstop=8
*/
How to solve this problem ????
How to work alpha Window on tinyX?
_______________________________________________ xorg mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/xorg
