gimpimagecolorprofile.c 4.4 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
/* LIBGIMP - The GIMP Library
 * Copyright (C) 1995-2003 Peter Mattis and Spencer Kimball
 *
 * gimpimagecolorprofile.c
 *
 * This library is free software: you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library.  If not, see
 * <http://www.gnu.org/licenses/>.
 */

#include "config.h"

#include "gimp.h"


/**
 * gimp_image_get_color_profile:
 * @image_ID: The image.
 *
 * Returns the image's color profile
 *
32 33
 * This procedure returns the image's color profile, or NULL if the
 * image has no color profile assigned.
34 35
 *
 * Returns: The image's color profile. The returned value
36
 *          must be freed with g_object_unref().
37 38 39
 *
 * Since: 2.10
 **/
40
GimpColorProfile *
41 42 43 44 45 46 47 48 49
gimp_image_get_color_profile (gint32 image_ID)
{
  guint8 *data;
  gint    length;

  data = _gimp_image_get_color_profile (image_ID, &length);

  if (data)
    {
50
      GimpColorProfile *profile;
51

52
      profile = gimp_color_profile_new_from_icc_profile (data, length, NULL);
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
      g_free (data);

      return profile;
    }

  return NULL;
}

/**
 * gimp_image_set_color_profile:
 * @image_ID: The image.
 * @profile:  A #GimpColorProfile, or %NULL.
 *
 * Sets the image's color profile
 *
 * This procedure sets the image's color profile.
 *
 * Returns: %TRUE on success.
 *
 * Since: 2.10
 **/
gboolean
75 76
gimp_image_set_color_profile (gint32            image_ID,
                              GimpColorProfile *profile)
77
{
78 79 80 81
  const guint8 *data   = NULL;
  gint          length = 0;

  g_return_val_if_fail (profile == NULL || GIMP_IS_COLOR_PROFILE (profile),
82
                        FALSE);
83 84 85 86 87

  if (profile)
    {
      gsize l;

88
      data = gimp_color_profile_get_icc_profile (profile, &l);
89 90 91
      length = l;
    }

92
  return _gimp_image_set_color_profile (image_ID, length, data);
93
}
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108

/**
 * gimp_image_get_effective_color_profile:
 * @image_ID: The image.
 *
 * Returns the color profile that is used for the image.
 *
 * This procedure returns the color profile that is actually used for
 * this image, which is the profile returned by
 * gimp_image_get_color_profile() if the image has a profile assigned,
 * or the default RGB profile from preferences if no profile is
 * assigned to the image. If there is no default RGB profile configured
 * in preferences either, a generated default RGB profile is returned.
 *
 * Returns: The color profile. The returned value
109
 *          must be freed with g_object_unref().
110 111 112
 *
 * Since: 2.10
 **/
113
GimpColorProfile *
114 115 116 117 118 119 120 121 122
gimp_image_get_effective_color_profile (gint32 image_ID)
{
  guint8 *data;
  gint    length;

  data = _gimp_image_get_effective_color_profile (image_ID, &length);

  if (data)
    {
123
      GimpColorProfile *profile;
124

125
      profile = gimp_color_profile_new_from_icc_profile (data, length, NULL);
126 127 128 129 130 131 132
      g_free (data);

      return profile;
    }

  return NULL;
}
133 134 135 136

/**
 * gimp_image_convert_color_profile:
 * @image_ID: The image.
137 138 139
 * @profile:  The color profile to convert to.
 * @intent:   Rendering intent.
 * @bpc:      Black point compensation.
140 141 142 143 144 145 146 147 148 149 150 151
 *
 * Convert the image's layers to a color profile
 *
 * This procedure converts from the image's color profile (or the
 * default RGB profile if none is set) to the given color profile. Only
 * RGB color profiles are accepted.
 *
 * Returns: TRUE on success.
 *
 * Since: 2.10
 **/
gboolean
152 153 154 155
gimp_image_convert_color_profile (gint32                     image_ID,
                                  GimpColorProfile          *profile,
                                  GimpColorRenderingIntent   intent,
                                  gboolean                   bpc)
156
{
157 158 159 160
  const guint8 *data   = NULL;
  gint          length = 0;

  g_return_val_if_fail (profile == NULL || GIMP_IS_COLOR_PROFILE (profile),
161
                        FALSE);
162 163 164 165 166

  if (profile)
    {
      gsize l;

167
      data = gimp_color_profile_get_icc_profile (profile, &l);
168 169 170
      length = l;
    }

171 172
  return _gimp_image_convert_color_profile (image_ID, length, data,
                                            intent, bpc);
173
}