RGB

Description GdkRGB is a low-level module which renders RGB, grayscale, and indexed colormap images to a GdkDrawable. It does this as efficiently as possible, handling issues such as colormaps, visuals, dithering, temporary buffers, and so on. Most code should use the higher-level GdkPixbuf features in place of this module; for example, gdk_draw_pixbuf() uses GdkRGB in its implementation. GdkRGB allocates a color cube to use when rendering images. 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. If GDK is built with the Sun mediaLib library, the GdkRGB functions are accelerated using mediaLib, which provides hardware acceleration on Intel, AMD, and Sparc chipsets. If desired, mediaLib support can be turned off by setting the GDK_DISABLE_MEDIALIB environment variable.

Members

Static functions

drawGrayImage
void drawGrayImage(Drawable drawable, GC gc, int x, int y, int width, int height, GdkRgbDither dith, char* buf, int rowstride)

Warning gdk_draw_gray_image is deprecated and should not be used in newly-written code. Draws a grayscale image in the drawable.

drawIndexedImage
void drawIndexedImage(Drawable drawable, GC gc, int x, int y, int width, int height, GdkRgbDither dith, char* buf, int rowstride, RgbCmap cmap)

Warning gdk_draw_indexed_image is deprecated and should not be used in newly-written code. Draws an indexed image in the drawable, using a GdkRgbCmap to assign actual colors to the color indices.

drawRgb32_Image
void drawRgb32_Image(Drawable drawable, GC gc, int x, int y, int width, int height, GdkRgbDither dith, char* buf, int rowstride)

Warning gdk_draw_rgb_32_image is deprecated and should not be used in newly-written code. Draws a padded RGB image in the drawable. The image is stored as one pixel per 32-bit word. It is laid out as a red byte, a green byte, a blue byte, and a padding byte. It's unlikely that this function will give significant performance gains in practice. In my experience, the performance gain from having pixels aligned to 32-bit boundaries is cancelled out by the increased memory bandwidth.

drawRgb32_ImageDithalign
void drawRgb32_ImageDithalign(Drawable drawable, GC gc, int x, int y, int width, int height, GdkRgbDither dith, char* buf, int rowstride, int xdith, int ydith)

Warning gdk_draw_rgb_32_image_dithalign has been deprecated since version 2.22 and should not be used in newly-written code. Cairo handles colors automatically. Like gdk_draw_rgb_32_image(), but allows you to specify the dither offsets. See gdk_draw_rgb_image_dithalign() for more details.

drawRgbImage
void drawRgbImage(Drawable drawable, GC gc, int x, int y, int width, int height, GdkRgbDither dith, char* rgbBuf, int rowstride)

Warning gdk_draw_rgb_image is deprecated and should not be used in newly-written code. Draws an RGB image in the drawable. This is the core GdkRGB function, and likely the only one you will need to use. The rowstride parameter allows for lines to be aligned more flexibly. For example, lines may be allocated to begin on 32-bit boundaries, even if the width of the rectangle is odd. Rowstride is also useful when drawing a subrectangle of a larger image in memory. Finally, to replicate the same line a number of times, the trick of setting rowstride to 0 is allowed. In general, for 0 <= i < width and 0 <= j < height, the pixel (x + i, y + j) is colored with red value rgb_buf[j * rowstride + i * 3], green value rgb_buf[j * rowstride + i * 3 + 1], and blue value rgb_buf[j * rowstride + i * 3 + 2].

drawRgbImageDithalign
void drawRgbImageDithalign(Drawable drawable, GC gc, int x, int y, int width, int height, GdkRgbDither dith, char* rgbBuf, int rowstride, int xdith, int ydith)

Warning gdk_draw_rgb_image_dithalign is deprecated and should not be used in newly-written code. Draws an RGB image in the drawable, with an adjustment for dither alignment. This function is useful when drawing dithered images into a window that may be scrolled. Pixel (x, y) will be drawn dithered as if its actual location is (x + xdith, y + ydith). Thus, if you draw an image into a window using zero dither alignment, then scroll up one pixel, subsequent draws to the window should have ydith = 1. Setting the dither alignment correctly allows updating of small parts of the screen while avoiding visible "seams" between the different dither textures.

rgbColormapDitherable
int rgbColormapDitherable(Colormap cmap)

Warning gdk_rgb_colormap_ditherable is deprecated and should not be used in newly-written code. Determines whether the visual associated with cmap is ditherable. This function may be useful for presenting a user interface choice to the user about which dither mode is desired; if the display is not ditherable, it may make sense to gray out or hide the corresponding UI widget.

rgbDitherable
int rgbDitherable()

Warning gdk_rgb_ditherable is deprecated and should not be used in newly-written code. Determines whether the preferred visual is ditherable. This function may be useful for presenting a user interface choice to the user about which dither mode is desired; if the display is not ditherable, it may make sense to gray out or hide the corresponding UI widget.

rgbFindColor
void rgbFindColor(Colormap colormap, Color color)

Warning gdk_rgb_find_color has been deprecated since version 2.22 and should not be used in newly-written code. Cairo handles colors automatically. colormap should be the colormap for the graphics context and drawable you're using to draw. If you're drawing to a GtkWidget, call gtk_widget_get_colormap(). color should have its red, green, and blue fields initialized; gdk_rgb_find_color() will fill in the pixel field with the best matching pixel from a color cube. The color is then ready to be used for drawing, e.g. you can call gdk_gc_set_foreground() which expects pixel to be initialized. In many cases, you can avoid this whole issue by calling gdk_gc_set_rgb_fg_color() or gdk_gc_set_rgb_bg_color(), which do not expect pixel to be initialized in advance. If you use those functions, there's no need for gdk_rgb_find_color().

rgbGcSetBackground
void rgbGcSetBackground(GC gc, uint rgb)

Warning gdk_rgb_gc_set_background is deprecated and should not be used in newly-written code. Sets the background color in gc to the specified color (or the closest approximation, in the case of limited visuals).

rgbGcSetForeground
void rgbGcSetForeground(GC gc, uint rgb)

Warning gdk_rgb_gc_set_foreground is deprecated and should not be used in newly-written code. Sets the foreground color in gc to the specified color (or the closest approximation, in the case of limited visuals).

rgbGetColormap
Colormap rgbGetColormap()

Warning gdk_rgb_get_colormap has been deprecated since version 2.22 and should not be used in newly-written code. Use gdk_screen_get_system_colormap (gdk_screen_get_default()) instead. Get the preferred colormap for rendering image data. Not a very useful function; historically, GDK could only render RGB image data to one colormap and visual, but in the current version it can render to any colormap and visual. So there's no need to call this function.

rgbGetVisual
Visual rgbGetVisual()

Warning gdk_rgb_get_visual has been deprecated since version 2.22 and should not be used in newly-written code. Use gdk_visual_get_system_visual (gdk_screen_get_default()) instead. Gets a "preferred visual" chosen by GdkRGB for rendering image data on the default screen. In previous versions of GDK, this was the only visual GdkRGB could use for rendering. In current versions, it's simply the visual GdkRGB would have chosen as the optimal one in those previous versions. GdkRGB can now render to drawables with any visual.

rgbInit
void rgbInit()

Warning gdk_rgb_init is deprecated and should not be used in newly-written code. This function no longer does anything at all. It's completely useless (and harmless).

rgbSetInstall
void rgbSetInstall(int install)

Warning gdk_rgb_set_install is deprecated and should not be used in newly-written code. If install is TRUE, directs GdkRGB to always install a new "private" colormap rather than trying to find a best fit with the colors already allocated. Ordinarily, GdkRGB will install a colormap only if a sufficient cube cannot be allocated. A private colormap has more colors, leading to better quality display, but also leads to the dreaded "colormap flashing" effect.

rgbSetMinColors
void rgbSetMinColors(int minColors)

Warning gdk_rgb_set_min_colors is deprecated and should not be used in newly-written code. Sets the minimum number of colors for the color cube. Generally, GdkRGB tries to allocate the largest color cube it can. If it can't allocate a color cube at least as large as min_colors, it installs a private colormap.

rgbSetVerbose
void rgbSetVerbose(int verbose)

Warning gdk_rgb_set_verbose is deprecated and should not be used in newly-written code. Sets the "verbose" flag. This is generally only useful for debugging.

rgbXpixelFromRgb
gulong rgbXpixelFromRgb(uint rgb)

Warning gdk_rgb_xpixel_from_rgb is deprecated and should not be used in newly-written code. Finds the X pixel closest in color to the rgb color specified. This value may be used to set the pixel field of a GdkColor struct.

Meta