mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-12-27 06:00:22 +00:00
107 lines
4.0 KiB
Plaintext
107 lines
4.0 KiB
Plaintext
README for GDK-DirectFB
|
|
------------------------
|
|
|
|
This is the GDK backend that allows GTK to work on top of DirectFB.
|
|
|
|
Important:
|
|
The current code does not pass through directfb passed on the gtk
|
|
apps command line on to directfb you need to set the environment variable
|
|
DFBARGS.
|
|
Example:
|
|
export DFBARGS=system=sdl
|
|
|
|
DirectFB is a hardware abstraction layer on top of the Linux
|
|
frame buffer that provides drawing functions, a window stack and
|
|
support for input devices. The code you find here is a backend for
|
|
GDK, the drawing kit used by GTK+.
|
|
|
|
|
|
As DirectFB provides drawing functions, a windowing stack and manages
|
|
input devices, this is a lightweight GDK port. Some parts of GDK
|
|
require higher level drawing functions that are supported by
|
|
cairo on DirectFB.
|
|
GDK also uses some feature like bitmaps that do not map well to
|
|
modern graphics hardware and are for that reason not yet supported in
|
|
this snapshot. See the file TODO for a list of missing features.
|
|
|
|
|
|
If you want GTK+ to draw window decorations for you, edit the file
|
|
gtk/gtkwindow-decorate.c and uncomment the line that says
|
|
#define DECORATE_WINDOWS.
|
|
|
|
|
|
GTK+ application compiled with this version of GTK+ understand some
|
|
additional command-line options special to the DirectFB GDK backend:
|
|
|
|
--transparent-unfocused Makes unfocused windows translucent.
|
|
|
|
--argb-font Use ARGB surfaces for fonts, needed for some
|
|
broken hardware.
|
|
|
|
--glyph-surface-cache Lets you tune the size of the glyph cache,
|
|
the default is to cache glyphs from 8 faces.
|
|
|
|
--enable-color-keying This option turns on a hack that does the
|
|
following:
|
|
|
|
(1) It overrides the color used to draw the window background to
|
|
gdk_directfb_bg_color as defined in gdkprivate-directfb.h.
|
|
Note that the alpha value only takes effect if the window has
|
|
an alpha channel.
|
|
(2) It also draws all rectangles that are drawn in
|
|
gdk_directfb_bg_color_key in this color (gdk_directfb_bg_color).
|
|
|
|
This feature can be used to create windows with translucent background.
|
|
|
|
Additionally all DirectFB command-line options as described in the
|
|
directfbrc man-page are supported.
|
|
|
|
|
|
This version of GTK+ also introduces two new functions that are special
|
|
to the DirectFB version. You need to include gdk/gdkdirectfb.h to be
|
|
able to use them.
|
|
|
|
gdk_directfb_window_set_opacity (GdkWindow *window, guchar opacity));
|
|
|
|
This function sets the overall opacity for toplevel GDK windows.
|
|
|
|
gdk_directfb_visual_by_format (DFBSurfacePixelFormat pixel_format);
|
|
|
|
This function returns a GdkVisual for a DirectFB pixelformat and
|
|
thus gives you control over the window surface. If for example
|
|
you want to create a window with alpha channel you can use some
|
|
code like the following:
|
|
|
|
visual = gdk_directfb_visual_by_format (DSPF_ARGB);
|
|
cmap = gdk_colormap_new (visual, FALSE);
|
|
gtk_widget_push_colormap (cmap);
|
|
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
|
gtk_widget_pop_colormap ();
|
|
g_object_unref (cmap);
|
|
|
|
Don't use these functions if you want to be able to compile your
|
|
application against GTK+-X11 or other GTK+ versions.
|
|
|
|
|
|
If you are developing a GTK+ application for GTK+-DirectFB make sure
|
|
you use the gtk+-directfb-2.0.pc file when calling pkg-config to get
|
|
the correct compiler and linker flags for GTK+-DirectFB:
|
|
|
|
pkg-config --cflags gtk+-directfb-2.0
|
|
pkg-config --libs gtk+-directfb-2.0
|
|
|
|
|
|
See the file TODO for a list of unimplemented features.
|
|
|
|
|
|
Detailed and up-to-date instructions on how to build a complete
|
|
set of GTK-DFB libraries is avalable in the WIKI of the DirectFB project
|
|
at the address
|
|
http://www.directfb.org/wiki/index.php/Projects:GTK_on_DirectFB
|
|
|
|
|
|
This library is free software; you can redistribute it and/or modify it
|
|
under the terms of the GNU Lesser General Public License as published
|
|
by the Free Software Foundation; either version 2 of the License, or
|
|
(at your option) any later version.
|