void gimp_histogram_unref (GimpHistogram *histogram) { g_return_if_fail (histogram != NULL); histogram->ref_count--; if (histogram->ref_count == 0) { gimp_histogram_clear_values (histogram); g_slice_free (GimpHistogram, histogram); } }
static gboolean gimp_histogram_editor_validate (GimpHistogramEditor *editor) { if (! editor->valid && editor->histogram) { if (editor->drawable) gimp_drawable_calculate_histogram (editor->drawable, editor->histogram); else gimp_histogram_clear_values (editor->histogram); gimp_histogram_editor_info_update (editor); editor->valid = TRUE; } return editor->valid; }
static void gimp_histogram_alloc_values (GimpHistogram *histogram, gint bytes) { if (bytes + 1 != histogram->n_channels) { gimp_histogram_clear_values (histogram); histogram->n_channels = bytes + 1; histogram->values = g_new0 (gdouble, histogram->n_channels * 256); } else { memset (histogram->values, 0, histogram->n_channels * 256 * sizeof (gdouble)); } }