GDK Reference Manual |
Description
GdkRgb converts RGB, grayscale, and colormapped images into the native window pixel format and displays them. It takes care of colormaps, visuals, dithering, and management of the temporary buffers.
You must call gdk_rgb_init() before using any GdkRgb functionality. If you fail to do so, expect coredumps. All Gtk+ widgets that use GdkRgb (including GtkPreview) call gdk_rgb_init() in their class_init method. Thus, if you use GdkRgb only indirectly, you don't need to worry about it.
GdkRgb tries to use the system default visual and colormap, but doesn't always succeed. Thus, you have to be prepared to install the visual and colormap generated by GdkRgb. The following code sequence (before any widgets are created) should work in most applications:
|
You can also push the colormap and visual, but in general it doesn't work unless the push wraps the window creation call. If you wrap the push around a widget which is embedded in a window without the GdkRgb colormap and visual, it probably won't work, and is likely to cause colormap flashing, as well.
On 8-bit systems, the colormaps used by Imlib and GdkRgb may conflict. There is no good general solution to this other than phasing out the dependence on Imlib.
You can set the threshold for installing colormaps with gdk_rgb_set_min_colors(). The default is 5x5x5 (125). If a colorcube of this size or larger can be allocated in the default colormap, then that's done. Otherwise, GdkRgb creates its own private colormap. Setting it to 0 means that it always tries to use the default colormap, and setting it to 216 means that it always creates a private one if it cannot allocate the 6x6x6 colormap in the default. If you always want a private colormap (to avoid consuming too many colormap entries for other apps, say), you can use gdk_rgb_set_install(TRUE). Setting the value greater than 216 exercises a bug in older versions of GdkRgb. Note, however, that setting it to 0 doesn't let you get away with ignoring the colormap and visual - a colormap is always created in grayscale and direct color modes, and the visual is changed in cases where a "better" visual than the default is available.
Example 1. A simple example program using GdkRGB.
上一篇:GTK v1.2 Tutorial(英文) 下一篇:Java入门(12) 事件与错误处理 更多相关文章
|
推荐文章
精彩文章
|