From 33efebae7909a1ac86e6aa9913ae754fa112d0ea Mon Sep 17 00:00:00 2001 From: Jehan Date: Thu, 17 Oct 2024 21:26:55 +0200 Subject: [PATCH] libgimpcolor: GimpColorTransform made final. --- libgimpcolor/gimpcolortransform.c | 197 ++++++++++++++---------------- libgimpcolor/gimpcolortransform.h | 21 +--- 2 files changed, 93 insertions(+), 125 deletions(-) diff --git a/libgimpcolor/gimpcolortransform.c b/libgimpcolor/gimpcolortransform.c index fee1466d11..e1bcb7a5a2 100644 --- a/libgimpcolor/gimpcolortransform.c +++ b/libgimpcolor/gimpcolortransform.c @@ -65,8 +65,10 @@ enum }; -typedef struct _GimpColorTransformPrivate +struct _GimpColorTransform { + GObject parent_instance; + GimpColorProfile *src_profile; const Babl *src_format; @@ -75,15 +77,13 @@ typedef struct _GimpColorTransformPrivate cmsHTRANSFORM transform; const Babl *fish; -} GimpColorTransformPrivate; +}; -#define GET_PRIVATE(obj) (gimp_color_transform_get_instance_private ((GimpColorTransform *) (obj))) static void gimp_color_transform_finalize (GObject *object); -G_DEFINE_TYPE_WITH_PRIVATE (GimpColorTransform, gimp_color_transform, - G_TYPE_OBJECT) +G_DEFINE_TYPE (GimpColorTransform, gimp_color_transform, G_TYPE_OBJECT) #define parent_class gimp_color_transform_parent_class @@ -123,8 +123,7 @@ gimp_color_transform_class_init (GimpColorTransformClass *klass) g_signal_new ("progress", G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (GimpColorTransformClass, - progress), + 0, NULL, NULL, NULL, G_TYPE_NONE, 1, G_TYPE_DOUBLE); @@ -140,12 +139,12 @@ gimp_color_transform_init (GimpColorTransform *transform) static void gimp_color_transform_finalize (GObject *object) { - GimpColorTransformPrivate *priv = GET_PRIVATE (object); + GimpColorTransform *transform = GIMP_COLOR_TRANSFORM (object); - g_clear_object (&priv->src_profile); - g_clear_object (&priv->dest_profile); + g_clear_object (&transform->src_profile); + g_clear_object (&transform->dest_profile); - g_clear_pointer (&priv->transform, cmsDeleteTransform); + g_clear_pointer (&transform->transform, cmsDeleteTransform); G_OBJECT_CLASS (parent_class)->finalize (object); } @@ -187,13 +186,12 @@ gimp_color_transform_new (GimpColorProfile *src_profile, GimpColorRenderingIntent rendering_intent, GimpColorTransformFlags flags) { - GimpColorTransform *transform; - GimpColorTransformPrivate *priv; - cmsHPROFILE src_lcms; - cmsHPROFILE dest_lcms; - cmsUInt32Number lcms_src_format; - cmsUInt32Number lcms_dest_format; - GError *error = NULL; + GimpColorTransform *transform; + cmsHPROFILE src_lcms; + cmsHPROFILE dest_lcms; + cmsUInt32Number lcms_src_format; + cmsUInt32Number lcms_dest_format; + GError *error = NULL; g_return_val_if_fail (GIMP_IS_COLOR_PROFILE (src_profile), NULL); g_return_val_if_fail (src_format != NULL, NULL); @@ -202,30 +200,28 @@ gimp_color_transform_new (GimpColorProfile *src_profile, transform = g_object_new (GIMP_TYPE_COLOR_TRANSFORM, NULL); - priv = GET_PRIVATE (transform); - /* only src_profile and dest_profile must determine the transform's * color spaces, create formats with src_format's and dest_format's * encoding, and the profiles' color spaces; see process_pixels() * and process_buffer(). */ - priv->src_format = gimp_color_profile_get_format (src_profile, - src_format, - GIMP_COLOR_RENDERING_INTENT_RELATIVE_COLORIMETRIC, - &error); - if (! priv->src_format) + transform->src_format = gimp_color_profile_get_format (src_profile, + src_format, + GIMP_COLOR_RENDERING_INTENT_RELATIVE_COLORIMETRIC, + &error); + if (! transform->src_format) { g_printerr ("%s: error making src format: %s\n", G_STRFUNC, error->message); g_clear_error (&error); } - priv->dest_format = gimp_color_profile_get_format (dest_profile, - dest_format, - rendering_intent, - &error); - if (! priv->dest_format) + transform->dest_format = gimp_color_profile_get_format (dest_profile, + dest_format, + rendering_intent, + &error); + if (! transform->dest_format) { g_printerr ("%s: error making dest format: %s\n", G_STRFUNC, error->message); @@ -233,10 +229,10 @@ gimp_color_transform_new (GimpColorProfile *src_profile, } if (! g_getenv ("GIMP_COLOR_TRANSFORM_DISABLE_BABL") && - priv->src_format && priv->dest_format) + transform->src_format && transform->dest_format) { - priv->fish = babl_fish (priv->src_format, - priv->dest_format); + transform->fish = babl_fish (transform->src_format, + transform->dest_format); g_debug ("%s: using babl for '%s' -> '%s'", G_STRFUNC, @@ -253,34 +249,34 @@ gimp_color_transform_new (GimpColorProfile *src_profile, src_format = babl_format_with_space ((const gchar *) src_format, NULL); dest_format = babl_format_with_space ((const gchar *) dest_format, NULL); - priv->src_format = gimp_color_profile_get_lcms_format (src_format, - &lcms_src_format); - priv->dest_format = gimp_color_profile_get_lcms_format (dest_format, - &lcms_dest_format); + transform->src_format = gimp_color_profile_get_lcms_format (src_format, + &lcms_src_format); + transform->dest_format = gimp_color_profile_get_lcms_format (dest_format, + &lcms_dest_format); src_lcms = gimp_color_profile_get_lcms_profile (src_profile); dest_lcms = gimp_color_profile_get_lcms_profile (dest_profile); lcms_error_clear (); - priv->transform = cmsCreateTransform (src_lcms, lcms_src_format, - dest_lcms, lcms_dest_format, - rendering_intent, - flags | - cmsFLAGS_COPY_ALPHA); + transform->transform = cmsCreateTransform (src_lcms, lcms_src_format, + dest_lcms, lcms_dest_format, + rendering_intent, + flags | + cmsFLAGS_COPY_ALPHA); if (lcms_last_error) { - if (priv->transform) + if (transform->transform) { - cmsDeleteTransform (priv->transform); - priv->transform = NULL; + cmsDeleteTransform (transform->transform); + transform->transform = NULL; } g_printerr ("%s: %s\n", G_STRFUNC, lcms_last_error); } - if (! priv->transform) + if (! transform->transform) { g_object_unref (transform); transform = NULL; @@ -319,13 +315,12 @@ gimp_color_transform_new_proofing (GimpColorProfile *src_profile, GimpColorRenderingIntent display_intent, GimpColorTransformFlags flags) { - GimpColorTransform *transform; - GimpColorTransformPrivate *priv; - cmsHPROFILE src_lcms; - cmsHPROFILE dest_lcms; - cmsHPROFILE proof_lcms; - cmsUInt32Number lcms_src_format; - cmsUInt32Number lcms_dest_format; + GimpColorTransform *transform; + cmsHPROFILE src_lcms; + cmsHPROFILE dest_lcms; + cmsHPROFILE proof_lcms; + cmsUInt32Number lcms_src_format; + cmsUInt32Number lcms_dest_format; g_return_val_if_fail (GIMP_IS_COLOR_PROFILE (src_profile), NULL); g_return_val_if_fail (src_format != NULL, NULL); @@ -335,8 +330,6 @@ gimp_color_transform_new_proofing (GimpColorProfile *src_profile, transform = g_object_new (GIMP_TYPE_COLOR_TRANSFORM, NULL); - priv = GET_PRIVATE (transform); - src_lcms = gimp_color_profile_get_lcms_profile (src_profile); dest_lcms = gimp_color_profile_get_lcms_profile (dest_profile); proof_lcms = gimp_color_profile_get_lcms_profile (proof_profile); @@ -347,34 +340,34 @@ gimp_color_transform_new_proofing (GimpColorProfile *src_profile, src_format = babl_format_with_space ((const gchar *) src_format, NULL); dest_format = babl_format_with_space ((const gchar *) dest_format, NULL); - priv->src_format = gimp_color_profile_get_lcms_format (src_format, - &lcms_src_format); - priv->dest_format = gimp_color_profile_get_lcms_format (dest_format, - &lcms_dest_format); + transform->src_format = gimp_color_profile_get_lcms_format (src_format, + &lcms_src_format); + transform->dest_format = gimp_color_profile_get_lcms_format (dest_format, + &lcms_dest_format); lcms_error_clear (); - priv->transform = cmsCreateProofingTransform (src_lcms, lcms_src_format, - dest_lcms, lcms_dest_format, - proof_lcms, - proof_intent, - display_intent, - flags | - cmsFLAGS_SOFTPROOFING | - cmsFLAGS_COPY_ALPHA); + transform->transform = cmsCreateProofingTransform (src_lcms, lcms_src_format, + dest_lcms, lcms_dest_format, + proof_lcms, + proof_intent, + display_intent, + flags | + cmsFLAGS_SOFTPROOFING | + cmsFLAGS_COPY_ALPHA); if (lcms_last_error) { - if (priv->transform) + if (transform->transform) { - cmsDeleteTransform (priv->transform); - priv->transform = NULL; + cmsDeleteTransform (transform->transform); + transform->transform = NULL; } g_printerr ("%s: %s\n", G_STRFUNC, lcms_last_error); } - if (! priv->transform) + if (! transform->transform) { g_object_unref (transform); transform = NULL; @@ -409,9 +402,8 @@ gimp_color_transform_process_pixels (GimpColorTransform *transform, gpointer dest_pixels, gsize length) { - GimpColorTransformPrivate *priv; - gpointer *src; - gpointer *dest; + gpointer *src; + gpointer *dest; g_return_if_fail (GIMP_IS_COLOR_TRANSFORM (transform)); g_return_if_fail (src_format != NULL); @@ -419,8 +411,6 @@ gimp_color_transform_process_pixels (GimpColorTransform *transform, g_return_if_fail (dest_format != NULL); g_return_if_fail (dest_pixels != NULL); - priv = GET_PRIVATE (transform); - /* we must not do any babl color transforms when reading from * src_pixels or writing to dest_pixels, so construct formats with * src_format's and dest_format's encoding, and the transform's @@ -428,17 +418,17 @@ gimp_color_transform_process_pixels (GimpColorTransform *transform, */ src_format = babl_format_with_space ((const gchar *) src_format, - babl_format_get_space (priv->src_format)); + babl_format_get_space (transform->src_format)); dest_format = babl_format_with_space ((const gchar *) dest_format, - babl_format_get_space (priv->dest_format)); + babl_format_get_space (transform->dest_format)); - if (src_format != priv->src_format) + if (src_format != transform->src_format) { - src = g_malloc (length * babl_format_get_bytes_per_pixel (priv->src_format)); + src = g_malloc (length * babl_format_get_bytes_per_pixel (transform->src_format)); babl_process (babl_fish (src_format, - priv->src_format), + transform->src_format), src_pixels, src, length); } else @@ -446,32 +436,32 @@ gimp_color_transform_process_pixels (GimpColorTransform *transform, src = (gpointer) src_pixels; } - if (dest_format != priv->dest_format) + if (dest_format != transform->dest_format) { - dest = g_malloc (length * babl_format_get_bytes_per_pixel (priv->dest_format)); + dest = g_malloc (length * babl_format_get_bytes_per_pixel (transform->dest_format)); } else { dest = dest_pixels; } - if (priv->transform) + if (transform->transform) { - cmsDoTransform (priv->transform, src, dest, length); + cmsDoTransform (transform->transform, src, dest, length); } else { - babl_process (priv->fish, src, dest, length); + babl_process (transform->fish, src, dest, length); } - if (src_format != priv->src_format) + if (src_format != transform->src_format) { g_free (src); } - if (dest_format != priv->dest_format) + if (dest_format != transform->dest_format) { - babl_process (babl_fish (priv->dest_format, + babl_process (babl_fish (transform->dest_format, dest_format), dest, dest_pixels, length); @@ -503,19 +493,16 @@ gimp_color_transform_process_buffer (GimpColorTransform *transform, GeglBuffer *dest_buffer, const GeglRectangle *dest_rect) { - GimpColorTransformPrivate *priv; - const Babl *src_format; - const Babl *dest_format; - GeglBufferIterator *iter; - gint total_pixels; - gint done_pixels = 0; + const Babl *src_format; + const Babl *dest_format; + GeglBufferIterator *iter; + gint total_pixels; + gint done_pixels = 0; g_return_if_fail (GIMP_IS_COLOR_TRANSFORM (transform)); g_return_if_fail (GEGL_IS_BUFFER (src_buffer)); g_return_if_fail (GEGL_IS_BUFFER (dest_buffer)); - priv = GET_PRIVATE (transform); - if (src_rect) { total_pixels = src_rect->width * src_rect->height; @@ -535,10 +522,10 @@ gimp_color_transform_process_buffer (GimpColorTransform *transform, dest_format = gegl_buffer_get_format (dest_buffer); src_format = - babl_format_with_space ((const gchar *) priv->src_format, + babl_format_with_space ((const gchar *) transform->src_format, babl_format_get_space (src_format)); dest_format = - babl_format_with_space ((const gchar *) priv->dest_format, + babl_format_with_space ((const gchar *) transform->dest_format, babl_format_get_space (dest_format)); if (src_buffer != dest_buffer) @@ -555,14 +542,14 @@ gimp_color_transform_process_buffer (GimpColorTransform *transform, while (gegl_buffer_iterator_next (iter)) { - if (priv->transform) + if (transform->transform) { - cmsDoTransform (priv->transform, + cmsDoTransform (transform->transform, iter->items[0].data, iter->items[1].data, iter->length); } else { - babl_process (priv->fish, + babl_process (transform->fish, iter->items[0].data, iter->items[1].data, iter->length); } @@ -582,14 +569,14 @@ gimp_color_transform_process_buffer (GimpColorTransform *transform, while (gegl_buffer_iterator_next (iter)) { - if (priv->transform) + if (transform->transform) { - cmsDoTransform (priv->transform, + cmsDoTransform (transform->transform, iter->items[0].data, iter->items[0].data, iter->length); } else { - babl_process (priv->fish, + babl_process (transform->fish, iter->items[0].data, iter->items[0].data, iter->length); } diff --git a/libgimpcolor/gimpcolortransform.h b/libgimpcolor/gimpcolortransform.h index 6bf755f333..938a1e7f9e 100644 --- a/libgimpcolor/gimpcolortransform.h +++ b/libgimpcolor/gimpcolortransform.h @@ -52,26 +52,7 @@ typedef enum #define GIMP_TYPE_COLOR_TRANSFORM (gimp_color_transform_get_type ()) -G_DECLARE_DERIVABLE_TYPE (GimpColorTransform, gimp_color_transform, GIMP, COLOR_TRANSFORM, GObject) - -struct _GimpColorTransformClass -{ - GObjectClass parent_class; - - /* signals */ - void (* progress) (GimpColorTransform *transform, - gdouble fraction); - - /* Padding for future expansion */ - void (* _gimp_reserved1) (void); - void (* _gimp_reserved2) (void); - void (* _gimp_reserved3) (void); - void (* _gimp_reserved4) (void); - void (* _gimp_reserved5) (void); - void (* _gimp_reserved6) (void); - void (* _gimp_reserved7) (void); - void (* _gimp_reserved8) (void); -}; +G_DECLARE_FINAL_TYPE (GimpColorTransform, gimp_color_transform, GIMP, COLOR_TRANSFORM, GObject) GimpColorTransform *