Added a new function, gtk_preview_reset(), that can be used (under highly
Sat Mar 7 18:46:57 1998 Owen Taylor <owt1@cornell.edu> * gtk/gtkpreview.[ch]: Added a new function, gtk_preview_reset(), that can be used (under highly controlled circumstances), to change the properties of the preview colormap after a preview has already been created and destroyed.
This commit is contained in:
@ -1,3 +1,10 @@
|
||||
Sat Mar 7 18:46:57 1998 Owen Taylor <owt1@cornell.edu>
|
||||
|
||||
* gtk/gtkpreview.[ch]: Added a new function, gtk_preview_reset(),
|
||||
that can be used (under highly controlled circumstances),
|
||||
to change the properties of the preview colormap after
|
||||
a preview has already been created and destroyed.
|
||||
|
||||
Sun Mar 8 00:18:04 1998 Tim Janik <timj@gimp.org>
|
||||
|
||||
* gtk/gtkobject.c: register living objects in a hashtable.
|
||||
|
||||
@ -1,3 +1,10 @@
|
||||
Sat Mar 7 18:46:57 1998 Owen Taylor <owt1@cornell.edu>
|
||||
|
||||
* gtk/gtkpreview.[ch]: Added a new function, gtk_preview_reset(),
|
||||
that can be used (under highly controlled circumstances),
|
||||
to change the properties of the preview colormap after
|
||||
a preview has already been created and destroyed.
|
||||
|
||||
Sun Mar 8 00:18:04 1998 Tim Janik <timj@gimp.org>
|
||||
|
||||
* gtk/gtkobject.c: register living objects in a hashtable.
|
||||
|
||||
@ -1,3 +1,10 @@
|
||||
Sat Mar 7 18:46:57 1998 Owen Taylor <owt1@cornell.edu>
|
||||
|
||||
* gtk/gtkpreview.[ch]: Added a new function, gtk_preview_reset(),
|
||||
that can be used (under highly controlled circumstances),
|
||||
to change the properties of the preview colormap after
|
||||
a preview has already been created and destroyed.
|
||||
|
||||
Sun Mar 8 00:18:04 1998 Tim Janik <timj@gimp.org>
|
||||
|
||||
* gtk/gtkobject.c: register living objects in a hashtable.
|
||||
|
||||
@ -1,3 +1,10 @@
|
||||
Sat Mar 7 18:46:57 1998 Owen Taylor <owt1@cornell.edu>
|
||||
|
||||
* gtk/gtkpreview.[ch]: Added a new function, gtk_preview_reset(),
|
||||
that can be used (under highly controlled circumstances),
|
||||
to change the properties of the preview colormap after
|
||||
a preview has already been created and destroyed.
|
||||
|
||||
Sun Mar 8 00:18:04 1998 Tim Janik <timj@gimp.org>
|
||||
|
||||
* gtk/gtkobject.c: register living objects in a hashtable.
|
||||
|
||||
@ -1,3 +1,10 @@
|
||||
Sat Mar 7 18:46:57 1998 Owen Taylor <owt1@cornell.edu>
|
||||
|
||||
* gtk/gtkpreview.[ch]: Added a new function, gtk_preview_reset(),
|
||||
that can be used (under highly controlled circumstances),
|
||||
to change the properties of the preview colormap after
|
||||
a preview has already been created and destroyed.
|
||||
|
||||
Sun Mar 8 00:18:04 1998 Tim Janik <timj@gimp.org>
|
||||
|
||||
* gtk/gtkobject.c: register living objects in a hashtable.
|
||||
|
||||
@ -1,3 +1,10 @@
|
||||
Sat Mar 7 18:46:57 1998 Owen Taylor <owt1@cornell.edu>
|
||||
|
||||
* gtk/gtkpreview.[ch]: Added a new function, gtk_preview_reset(),
|
||||
that can be used (under highly controlled circumstances),
|
||||
to change the properties of the preview colormap after
|
||||
a preview has already been created and destroyed.
|
||||
|
||||
Sun Mar 8 00:18:04 1998 Tim Janik <timj@gimp.org>
|
||||
|
||||
* gtk/gtkobject.c: register living objects in a hashtable.
|
||||
|
||||
@ -1,3 +1,10 @@
|
||||
Sat Mar 7 18:46:57 1998 Owen Taylor <owt1@cornell.edu>
|
||||
|
||||
* gtk/gtkpreview.[ch]: Added a new function, gtk_preview_reset(),
|
||||
that can be used (under highly controlled circumstances),
|
||||
to change the properties of the preview colormap after
|
||||
a preview has already been created and destroyed.
|
||||
|
||||
Sun Mar 8 00:18:04 1998 Tim Janik <timj@gimp.org>
|
||||
|
||||
* gtk/gtkobject.c: register living objects in a hashtable.
|
||||
|
||||
@ -205,6 +205,76 @@ gtk_preview_class_init (GtkPreviewClass *klass)
|
||||
gtk_preview_dither_init (klass);
|
||||
}
|
||||
|
||||
void
|
||||
gtk_preview_reset (void)
|
||||
{
|
||||
GtkPreviewInfo *info;
|
||||
|
||||
if (!preview_class || !preview_info)
|
||||
return;
|
||||
|
||||
info = &preview_class->info;
|
||||
|
||||
gtk_preview_uninit();
|
||||
|
||||
if (info->color_pixels)
|
||||
{
|
||||
gdk_colors_free (info->cmap,
|
||||
info->color_pixels,
|
||||
info->nred_shades *
|
||||
info->ngreen_shades *
|
||||
info->nblue_shades,
|
||||
0);
|
||||
|
||||
gdk_colors_free (info->cmap,
|
||||
info->gray_pixels,
|
||||
info->ngray_shades, 0);
|
||||
|
||||
g_free (info->color_pixels);
|
||||
g_free (info->gray_pixels);
|
||||
}
|
||||
|
||||
if (info->reserved_pixels)
|
||||
{
|
||||
gdk_colors_free (info->cmap,
|
||||
info->reserved_pixels,
|
||||
info->nreserved, 0);
|
||||
g_free (info->reserved_pixels);
|
||||
}
|
||||
|
||||
if (info->cmap && info->cmap_alloced)
|
||||
gdk_colormap_unref (info->cmap);
|
||||
|
||||
if (info->lookup_red)
|
||||
{
|
||||
g_free (info->lookup_red);
|
||||
g_free (info->lookup_green);
|
||||
g_free (info->lookup_blue);
|
||||
}
|
||||
|
||||
if (info->dither_matrix)
|
||||
{
|
||||
int i, j;
|
||||
|
||||
for (i= 0 ; i < 8 ; i++)
|
||||
{
|
||||
for (j = 0; j < 8 ; j++)
|
||||
g_free (info->dither_matrix[i][j]);
|
||||
g_free (info->dither_matrix[i]);
|
||||
}
|
||||
g_free (info->dither_matrix);
|
||||
g_free (info->dither_red);
|
||||
g_free (info->dither_green);
|
||||
g_free (info->dither_blue);
|
||||
}
|
||||
|
||||
preview_class->info = *preview_info;
|
||||
|
||||
gtk_preview_get_visuals (preview_class);
|
||||
gtk_preview_get_cmaps (preview_class);
|
||||
gtk_preview_dither_init (preview_class);
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_preview_init (GtkPreview *preview)
|
||||
{
|
||||
@ -222,6 +292,8 @@ gtk_preview_uninit ()
|
||||
GtkPreviewProp *prop;
|
||||
GdkAtom property;
|
||||
|
||||
/* FIXME: need to grab the server here to prevent a race condition */
|
||||
|
||||
if (preview_class && !install_cmap && preview_class->info.visual &&
|
||||
(preview_class->info.visual->type != GDK_VISUAL_TRUE_COLOR) &&
|
||||
(preview_class->info.visual->type != GDK_VISUAL_DIRECT_COLOR))
|
||||
@ -557,8 +629,6 @@ gtk_preview_set_expand (GtkPreview *preview,
|
||||
void
|
||||
gtk_preview_set_gamma (double _gamma)
|
||||
{
|
||||
g_return_if_fail (preview_class == NULL);
|
||||
|
||||
if (!preview_info)
|
||||
{
|
||||
preview_info = g_new0 (GtkPreviewInfo, 1);
|
||||
@ -577,8 +647,6 @@ gtk_preview_set_color_cube (guint nred_shades,
|
||||
guint nblue_shades,
|
||||
guint ngray_shades)
|
||||
{
|
||||
g_return_if_fail (preview_class == NULL);
|
||||
|
||||
if (!preview_info)
|
||||
{
|
||||
preview_info = g_new0 (GtkPreviewInfo, 1);
|
||||
@ -594,8 +662,6 @@ gtk_preview_set_color_cube (guint nred_shades,
|
||||
void
|
||||
gtk_preview_set_install_cmap (gint _install_cmap)
|
||||
{
|
||||
/* g_return_if_fail (preview_class == NULL); */
|
||||
|
||||
install_cmap = _install_cmap;
|
||||
}
|
||||
|
||||
@ -891,8 +957,10 @@ gtk_preview_get_cmaps (GtkPreviewClass *klass)
|
||||
if (klass->info.visual == gdk_visual_get_system ())
|
||||
klass->info.cmap = gdk_colormap_get_system ();
|
||||
else
|
||||
klass->info.cmap = gdk_colormap_new (klass->info.visual, FALSE);
|
||||
klass->info.cmap_alloced = TRUE;
|
||||
{
|
||||
klass->info.cmap = gdk_colormap_new (klass->info.visual, FALSE);
|
||||
klass->info.cmap_alloced = TRUE;
|
||||
}
|
||||
|
||||
klass->info.nred_shades = 0;
|
||||
klass->info.ngreen_shades = 0;
|
||||
@ -1245,6 +1313,7 @@ gtk_create_8_bit (GtkPreviewClass *klass)
|
||||
pixels[i] = color.pixel;
|
||||
}
|
||||
|
||||
|
||||
pixels = klass->info.gray_pixels;
|
||||
|
||||
for (i = 0; i < (int) klass->info.ngray_shades; i++)
|
||||
@ -1431,6 +1500,8 @@ gtk_get_preview_prop (guint *nred,
|
||||
GtkPreviewProp *prop;
|
||||
GdkAtom property;
|
||||
|
||||
/* FIXME: need to grab the server here to prevent a race condition */
|
||||
|
||||
property = gdk_atom_intern ("GTK_PREVIEW_INFO", FALSE);
|
||||
|
||||
if (gdk_property_get (NULL, property, property,
|
||||
|
||||
@ -135,6 +135,13 @@ GdkVisual* gtk_preview_get_visual (void);
|
||||
GdkColormap* gtk_preview_get_cmap (void);
|
||||
GtkPreviewInfo* gtk_preview_get_info (void);
|
||||
|
||||
/* This function reinitializes the preview colormap and visual from
|
||||
* the current gamma/color_cube/install_cmap settings. It must only
|
||||
* be called if there are no previews or users's of the preview
|
||||
* colormap in existence.
|
||||
*/
|
||||
void gtk_preview_reset (void);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user