From e47f60d702eafc2dd9e01912a19d80b50ccdfe55 Mon Sep 17 00:00:00 2001 From: Marius Vollmer Date: Sun, 7 Jun 1998 12:00:55 +0000 Subject: [PATCH] New prototypes. New functions. * gdk/gdk.h (gdk_color_copy, gdk_color_free): New prototypes. * gdk/gdk.c (gdk_color_copy, gdk_color_free): New functions. --- gdk/gdk.h | 4 +++ gdk/gdkcolor.c | 56 ++++++++++++++++++++++++++++++++++++++++++ gdk/x11/gdkcolor-x11.c | 56 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 116 insertions(+) diff --git a/gdk/gdk.h b/gdk/gdk.h index 1d487e466d..72ff69822b 100644 --- a/gdk/gdk.h +++ b/gdk/gdk.h @@ -456,6 +456,10 @@ void gdk_colormap_change (GdkColormap *colormap, void gdk_colors_store (GdkColormap *colormap, GdkColor *colors, gint ncolors); + +GdkColor *gdk_color_copy (GdkColor *color); +void gdk_color_free (GdkColor *color); + gint gdk_colors_alloc (GdkColormap *colormap, gint contiguous, gulong *planes, diff --git a/gdk/gdkcolor.c b/gdk/gdkcolor.c index f55869b719..03c79327c4 100644 --- a/gdk/gdkcolor.c +++ b/gdk/gdkcolor.c @@ -365,6 +365,62 @@ gdk_colors_free (GdkColormap *colormap, pixels, npixels, planes); } +/* + *-------------------------------------------------------------- + * gdk_color_copy + * + * Copy a color structure into new storage. + * + * Arguments: + * "color" is the color struct to copy. + * + * Results: + * A new color structure. Free it with gdk_color_free. + * + *-------------------------------------------------------------- + */ + +static GMemChunk *color_chunk; + +GdkColor* +gdk_color_copy (GdkColor *color) +{ + GdkColor *new_color; + + g_return_val_if_fail (color != NULL, NULL); + + if (color_chunk == NULL) + color_chunk = g_mem_chunk_new ("colors", + sizeof (GdkColor), + 4096, + G_ALLOC_AND_FREE); + + new_color = g_chunk_new (GdkColor, color_chunk); + *new_color = *color; + return new_color; +} + +/* + *-------------------------------------------------------------- + * gdk_color_free + * + * Free a color structure obtained from gdk_color_copy. Do not use + * with other color structures. + * + * Arguments: + * "color" is the color struct to free. + * + *-------------------------------------------------------------- */ + +void +gdk_color_free (GdkColor *color) +{ + g_assert (color_chunk != NULL); + g_return_if_fail (color != NULL); + + g_mem_chunk_free (color_chunk, color); +} + gint gdk_color_white (GdkColormap *colormap, GdkColor *color) diff --git a/gdk/x11/gdkcolor-x11.c b/gdk/x11/gdkcolor-x11.c index f55869b719..03c79327c4 100644 --- a/gdk/x11/gdkcolor-x11.c +++ b/gdk/x11/gdkcolor-x11.c @@ -365,6 +365,62 @@ gdk_colors_free (GdkColormap *colormap, pixels, npixels, planes); } +/* + *-------------------------------------------------------------- + * gdk_color_copy + * + * Copy a color structure into new storage. + * + * Arguments: + * "color" is the color struct to copy. + * + * Results: + * A new color structure. Free it with gdk_color_free. + * + *-------------------------------------------------------------- + */ + +static GMemChunk *color_chunk; + +GdkColor* +gdk_color_copy (GdkColor *color) +{ + GdkColor *new_color; + + g_return_val_if_fail (color != NULL, NULL); + + if (color_chunk == NULL) + color_chunk = g_mem_chunk_new ("colors", + sizeof (GdkColor), + 4096, + G_ALLOC_AND_FREE); + + new_color = g_chunk_new (GdkColor, color_chunk); + *new_color = *color; + return new_color; +} + +/* + *-------------------------------------------------------------- + * gdk_color_free + * + * Free a color structure obtained from gdk_color_copy. Do not use + * with other color structures. + * + * Arguments: + * "color" is the color struct to free. + * + *-------------------------------------------------------------- */ + +void +gdk_color_free (GdkColor *color) +{ + g_assert (color_chunk != NULL); + g_return_if_fail (color != NULL); + + g_mem_chunk_free (color_chunk, color); +} + gint gdk_color_white (GdkColormap *colormap, GdkColor *color)