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

Reply via email to