2015-06-05 18:51:46 +08:00
/* GIMP - The GNU Image Manipulation Program
* Copyright ( C ) 1995 - 2003 Spencer Kimball and Peter Mattis
*
* This program is free software : you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; either version 3 of the License , or
* ( at your option ) any later version .
*
* This program 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 General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program . If not , see < http : //www.gnu.org/licenses/>.
*/
/* NOTE: This file is auto-generated by pdbgen.pl. */
# include "config.h"
# include <cairo.h>
# include <gegl.h>
# include <gdk-pixbuf/gdk-pixbuf.h>
# include "libgimpcolor/gimpcolor.h"
# include "libgimpbase/gimpbase.h"
# include "pdb-types.h"
2015-08-03 04:18:43 +08:00
# include "core/gimpimage-color-profile.h"
2015-06-05 18:51:46 +08:00
# include "core/gimpimage.h"
# include "core/gimpparamspecs.h"
# include "gimppdb.h"
# include "gimpprocedure.h"
# include "internal-procs.h"
# include "gimp-intl.h"
static GimpValueArray *
image_get_color_profile_invoker ( GimpProcedure * procedure ,
Gimp * gimp ,
GimpContext * context ,
GimpProgress * progress ,
const GimpValueArray * args ,
GError * * error )
{
gboolean success = TRUE ;
GimpValueArray * return_vals ;
GimpImage * image ;
gint32 num_bytes = 0 ;
guint8 * profile_data = NULL ;
image = gimp_value_get_image ( gimp_value_array_index ( args , 0 ) , gimp ) ;
if ( success )
{
2015-07-11 04:43:53 +08:00
GimpColorProfile * profile ;
2015-06-05 18:51:46 +08:00
2015-06-17 06:45:43 +08:00
profile = gimp_image_get_color_profile ( image ) ;
2015-06-05 18:51:46 +08:00
if ( profile )
{
2015-07-11 04:43:53 +08:00
const guint8 * data ;
gsize length ;
2015-06-05 18:51:46 +08:00
2015-07-11 04:43:53 +08:00
data = gimp_color_profile_get_icc_profile ( profile , & length ) ;
profile_data = g_memdup ( data , length ) ;
2015-06-05 18:51:46 +08:00
num_bytes = length ;
}
}
return_vals = gimp_procedure_get_return_values ( procedure , success ,
error ? * error : NULL ) ;
if ( success )
{
g_value_set_int ( gimp_value_array_index ( return_vals , 1 ) , num_bytes ) ;
gimp_value_take_int8array ( gimp_value_array_index ( return_vals , 2 ) , profile_data , num_bytes ) ;
}
return return_vals ;
}
2015-07-28 05:44:45 +08:00
static GimpValueArray *
image_get_effective_color_profile_invoker ( GimpProcedure * procedure ,
Gimp * gimp ,
GimpContext * context ,
GimpProgress * progress ,
const GimpValueArray * args ,
GError * * error )
{
gboolean success = TRUE ;
GimpValueArray * return_vals ;
GimpImage * image ;
gint32 num_bytes = 0 ;
guint8 * profile_data = NULL ;
image = gimp_value_get_image ( gimp_value_array_index ( args , 0 ) , gimp ) ;
if ( success )
{
GimpColorProfile * profile ;
profile = gimp_color_managed_get_color_profile ( GIMP_COLOR_MANAGED ( image ) ) ;
2015-09-03 07:36:02 +08:00
if ( profile )
{
const guint8 * data ;
gsize length ;
2015-07-28 05:44:45 +08:00
2015-09-03 07:36:02 +08:00
data = gimp_color_profile_get_icc_profile ( profile , & length ) ;
2015-07-28 05:44:45 +08:00
2015-09-03 07:36:02 +08:00
profile_data = g_memdup ( data , length ) ;
num_bytes = length ;
}
2015-07-28 05:44:45 +08:00
}
return_vals = gimp_procedure_get_return_values ( procedure , success ,
error ? * error : NULL ) ;
if ( success )
{
g_value_set_int ( gimp_value_array_index ( return_vals , 1 ) , num_bytes ) ;
gimp_value_take_int8array ( gimp_value_array_index ( return_vals , 2 ) , profile_data , num_bytes ) ;
}
return return_vals ;
}
2015-06-05 18:51:46 +08:00
static GimpValueArray *
image_set_color_profile_invoker ( GimpProcedure * procedure ,
Gimp * gimp ,
GimpContext * context ,
GimpProgress * progress ,
const GimpValueArray * args ,
GError * * error )
{
gboolean success = TRUE ;
GimpImage * image ;
gint32 num_bytes ;
const guint8 * color_profile ;
image = gimp_value_get_image ( gimp_value_array_index ( args , 0 ) , gimp ) ;
num_bytes = g_value_get_int ( gimp_value_array_index ( args , 1 ) ) ;
color_profile = gimp_value_get_int8array ( gimp_value_array_index ( args , 2 ) ) ;
if ( success )
{
2015-06-07 07:38:50 +08:00
if ( color_profile )
{
2015-07-11 04:43:53 +08:00
GimpColorProfile * profile ;
2015-06-05 18:51:46 +08:00
2015-07-11 04:43:53 +08:00
profile = gimp_color_profile_new_from_icc_profile ( color_profile ,
num_bytes ,
error ) ;
2015-06-05 18:51:46 +08:00
2015-06-07 07:38:50 +08:00
if ( profile )
{
success = gimp_image_set_color_profile ( image , profile , error ) ;
2015-07-11 04:43:53 +08:00
g_object_unref ( profile ) ;
2015-06-07 07:38:50 +08:00
}
else
success = FALSE ;
2015-06-05 18:51:46 +08:00
}
else
2015-06-07 07:38:50 +08:00
{
success = gimp_image_set_color_profile ( image , NULL , error ) ;
}
2015-06-05 18:51:46 +08:00
}
return gimp_procedure_get_return_values ( procedure , success ,
error ? * error : NULL ) ;
}
2015-07-29 05:01:18 +08:00
static GimpValueArray *
image_set_color_profile_from_file_invoker ( GimpProcedure * procedure ,
Gimp * gimp ,
GimpContext * context ,
GimpProgress * progress ,
const GimpValueArray * args ,
GError * * error )
{
gboolean success = TRUE ;
GimpImage * image ;
const gchar * uri ;
image = gimp_value_get_image ( gimp_value_array_index ( args , 0 ) , gimp ) ;
uri = g_value_get_string ( gimp_value_array_index ( args , 1 ) ) ;
if ( success )
{
if ( uri )
{
GFile * file = g_file_new_for_uri ( uri ) ;
GimpColorProfile * profile ;
profile = gimp_color_profile_new_from_file ( file , error ) ;
if ( profile )
{
success = gimp_image_set_color_profile ( image , profile , error ) ;
g_object_unref ( profile ) ;
}
else
success = FALSE ;
g_object_unref ( file ) ;
}
else
{
success = gimp_image_set_color_profile ( image , NULL , error ) ;
}
}
return gimp_procedure_get_return_values ( procedure , success ,
error ? * error : NULL ) ;
}
2015-06-10 07:38:20 +08:00
static GimpValueArray *
image_convert_color_profile_invoker ( GimpProcedure * procedure ,
Gimp * gimp ,
GimpContext * context ,
GimpProgress * progress ,
const GimpValueArray * args ,
GError * * error )
{
gboolean success = TRUE ;
GimpImage * image ;
gint32 num_bytes ;
const guint8 * color_profile ;
gint32 intent ;
gboolean bpc ;
image = gimp_value_get_image ( gimp_value_array_index ( args , 0 ) , gimp ) ;
num_bytes = g_value_get_int ( gimp_value_array_index ( args , 1 ) ) ;
color_profile = gimp_value_get_int8array ( gimp_value_array_index ( args , 2 ) ) ;
intent = g_value_get_enum ( gimp_value_array_index ( args , 3 ) ) ;
bpc = g_value_get_boolean ( gimp_value_array_index ( args , 4 ) ) ;
if ( success )
{
if ( color_profile )
{
2015-07-11 04:43:53 +08:00
GimpColorProfile * profile ;
2015-06-10 07:38:20 +08:00
2015-07-11 04:43:53 +08:00
profile = gimp_color_profile_new_from_icc_profile ( color_profile ,
num_bytes ,
error ) ;
2015-06-10 07:38:20 +08:00
if ( profile )
{
success = gimp_image_convert_color_profile ( image , profile ,
intent , bpc ,
progress , error ) ;
2015-07-11 04:43:53 +08:00
g_object_unref ( profile ) ;
2015-06-10 07:38:20 +08:00
}
else
success = FALSE ;
}
else
success = FALSE ;
}
return gimp_procedure_get_return_values ( procedure , success ,
error ? * error : NULL ) ;
}
2015-07-29 05:11:54 +08:00
static GimpValueArray *
image_convert_color_profile_from_file_invoker ( GimpProcedure * procedure ,
Gimp * gimp ,
GimpContext * context ,
GimpProgress * progress ,
const GimpValueArray * args ,
GError * * error )
{
gboolean success = TRUE ;
GimpImage * image ;
const gchar * uri ;
gint32 intent ;
gboolean bpc ;
image = gimp_value_get_image ( gimp_value_array_index ( args , 0 ) , gimp ) ;
uri = g_value_get_string ( gimp_value_array_index ( args , 1 ) ) ;
intent = g_value_get_enum ( gimp_value_array_index ( args , 2 ) ) ;
bpc = g_value_get_boolean ( gimp_value_array_index ( args , 3 ) ) ;
if ( success )
{
if ( uri )
{
GFile * file = g_file_new_for_uri ( uri ) ;
GimpColorProfile * profile ;
profile = gimp_color_profile_new_from_file ( file , error ) ;
if ( profile )
{
success = gimp_image_convert_color_profile ( image , profile ,
intent , bpc ,
progress , error ) ;
g_object_unref ( profile ) ;
}
else
success = FALSE ;
g_object_unref ( file ) ;
}
else
success = FALSE ;
}
return gimp_procedure_get_return_values ( procedure , success ,
error ? * error : NULL ) ;
}
2015-06-05 18:51:46 +08:00
void
register_image_color_profile_procs ( GimpPDB * pdb )
{
GimpProcedure * procedure ;
/*
* gimp - image - get - color - profile
*/
procedure = gimp_procedure_new ( image_get_color_profile_invoker ) ;
gimp_object_set_static_name ( GIMP_OBJECT ( procedure ) ,
" gimp-image-get-color-profile " ) ;
gimp_procedure_set_static_strings ( procedure ,
" gimp-image-get-color-profile " ,
" Returns the image's color profile " ,
2015-06-07 07:38:50 +08:00
" This procedure returns the image's color profile, or NULL if the image has no color profile assigned. " ,
2015-06-05 18:51:46 +08:00
" Michael Natterer <mitch@gimp.org> " ,
" Michael Natterer " ,
" 2015 " ,
NULL ) ;
gimp_procedure_add_argument ( procedure ,
gimp_param_spec_image_id ( " image " ,
" image " ,
" The image " ,
pdb - > gimp , FALSE ,
GIMP_PARAM_READWRITE ) ) ;
gimp_procedure_add_return_value ( procedure ,
gimp_param_spec_int32 ( " num-bytes " ,
" num bytes " ,
" Number of bytes in the color_profile array " ,
0 , G_MAXINT32 , 0 ,
GIMP_PARAM_READWRITE ) ) ;
gimp_procedure_add_return_value ( procedure ,
gimp_param_spec_int8_array ( " profile-data " ,
" profile data " ,
" The image's serialized color profile. The returned value must be freed with g_free() " ,
GIMP_PARAM_READWRITE ) ) ;
gimp_pdb_register_procedure ( pdb , procedure ) ;
g_object_unref ( procedure ) ;
2015-06-07 07:38:50 +08:00
/*
* gimp - image - get - effective - color - profile
*/
procedure = gimp_procedure_new ( image_get_effective_color_profile_invoker ) ;
gimp_object_set_static_name ( GIMP_OBJECT ( procedure ) ,
" gimp-image-get-effective-color-profile " ) ;
gimp_procedure_set_static_strings ( procedure ,
" gimp-image-get-effective-color-profile " ,
" Returns the color profile that is used for the image " ,
2015-09-03 07:36:02 +08:00
" 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 a generated default RGB profile. If the image is not RGB or INDEXED, NULL is returned. " ,
2015-06-07 07:38:50 +08:00
" Michael Natterer <mitch@gimp.org> " ,
" Michael Natterer " ,
" 2015 " ,
NULL ) ;
gimp_procedure_add_argument ( procedure ,
gimp_param_spec_image_id ( " image " ,
" image " ,
" The image " ,
pdb - > gimp , FALSE ,
GIMP_PARAM_READWRITE ) ) ;
gimp_procedure_add_return_value ( procedure ,
gimp_param_spec_int32 ( " num-bytes " ,
" num bytes " ,
" Number of bytes in the color_profile array " ,
0 , G_MAXINT32 , 0 ,
GIMP_PARAM_READWRITE ) ) ;
gimp_procedure_add_return_value ( procedure ,
gimp_param_spec_int8_array ( " profile-data " ,
" profile data " ,
" The image's serialized color profile. The returned value must be freed with g_free() " ,
GIMP_PARAM_READWRITE ) ) ;
gimp_pdb_register_procedure ( pdb , procedure ) ;
2015-07-28 05:44:45 +08:00
g_object_unref ( procedure ) ;
/*
* gimp - image - set - color - profile
*/
procedure = gimp_procedure_new ( image_set_color_profile_invoker ) ;
gimp_object_set_static_name ( GIMP_OBJECT ( procedure ) ,
" gimp-image-set-color-profile " ) ;
gimp_procedure_set_static_strings ( procedure ,
" gimp-image-set-color-profile " ,
" Sets the image's color profile " ,
2015-07-29 05:01:18 +08:00
" This procedure sets the image's color profile, or unsets it if NULL is passed as 'color_profile'. This procedure does no color conversion. " ,
2015-07-28 05:44:45 +08:00
" Michael Natterer <mitch@gimp.org> " ,
" Michael Natterer " ,
" 2015 " ,
NULL ) ;
gimp_procedure_add_argument ( procedure ,
gimp_param_spec_image_id ( " image " ,
" image " ,
" The image " ,
pdb - > gimp , FALSE ,
GIMP_PARAM_READWRITE ) ) ;
gimp_procedure_add_argument ( procedure ,
gimp_param_spec_int32 ( " num-bytes " ,
" num bytes " ,
" Number of bytes in the color_profile array " ,
0 , G_MAXINT32 , 0 ,
GIMP_PARAM_READWRITE ) ) ;
gimp_procedure_add_argument ( procedure ,
gimp_param_spec_int8_array ( " color-profile " ,
" color profile " ,
" The new serialized color profile " ,
GIMP_PARAM_READWRITE ) ) ;
gimp_pdb_register_procedure ( pdb , procedure ) ;
2015-07-29 05:01:18 +08:00
g_object_unref ( procedure ) ;
/*
* gimp - image - set - color - profile - from - file
*/
procedure = gimp_procedure_new ( image_set_color_profile_from_file_invoker ) ;
gimp_object_set_static_name ( GIMP_OBJECT ( procedure ) ,
" gimp-image-set-color-profile-from-file " ) ;
gimp_procedure_set_static_strings ( procedure ,
" gimp-image-set-color-profile-from-file " ,
" Sets the image's color profile from an ICC file " ,
" This procedure sets the image's color profile from a file containing an ICC profile, or unsets it if NULL is passed as 'uri'. This procedure does no color conversion. " ,
" Michael Natterer <mitch@gimp.org> " ,
" Michael Natterer " ,
" 2015 " ,
NULL ) ;
gimp_procedure_add_argument ( procedure ,
gimp_param_spec_image_id ( " image " ,
" image " ,
" The image " ,
pdb - > gimp , FALSE ,
GIMP_PARAM_READWRITE ) ) ;
gimp_procedure_add_argument ( procedure ,
gimp_param_spec_string ( " uri " ,
" uri " ,
" The URI of the file containing the new color profile " ,
FALSE , FALSE , FALSE ,
NULL ,
GIMP_PARAM_READWRITE ) ) ;
gimp_pdb_register_procedure ( pdb , procedure ) ;
2015-06-07 07:38:50 +08:00
g_object_unref ( procedure ) ;
2015-06-10 07:38:20 +08:00
/*
* gimp - image - convert - color - profile
*/
procedure = gimp_procedure_new ( image_convert_color_profile_invoker ) ;
gimp_object_set_static_name ( GIMP_OBJECT ( procedure ) ,
" gimp-image-convert-color-profile " ) ;
gimp_procedure_set_static_strings ( procedure ,
" gimp-image-convert-color-profile " ,
" 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. " ,
" Michael Natterer <mitch@gimp.org> " ,
" Michael Natterer " ,
" 2015 " ,
NULL ) ;
gimp_procedure_add_argument ( procedure ,
gimp_param_spec_image_id ( " image " ,
" image " ,
" The image " ,
pdb - > gimp , FALSE ,
GIMP_PARAM_READWRITE ) ) ;
gimp_procedure_add_argument ( procedure ,
gimp_param_spec_int32 ( " num-bytes " ,
" num bytes " ,
" Number of bytes in the color_profile array " ,
0 , G_MAXINT32 , 0 ,
GIMP_PARAM_READWRITE ) ) ;
gimp_procedure_add_argument ( procedure ,
gimp_param_spec_int8_array ( " color-profile " ,
" color profile " ,
" The serialized color profile " ,
GIMP_PARAM_READWRITE ) ) ;
gimp_procedure_add_argument ( procedure ,
g_param_spec_enum ( " intent " ,
" intent " ,
" Rendering intent " ,
GIMP_TYPE_COLOR_RENDERING_INTENT ,
GIMP_COLOR_RENDERING_INTENT_PERCEPTUAL ,
GIMP_PARAM_READWRITE ) ) ;
gimp_procedure_add_argument ( procedure ,
g_param_spec_boolean ( " bpc " ,
" bpc " ,
" Black point compensation " ,
FALSE ,
GIMP_PARAM_READWRITE ) ) ;
gimp_pdb_register_procedure ( pdb , procedure ) ;
g_object_unref ( procedure ) ;
2015-07-29 05:11:54 +08:00
/*
* gimp - image - convert - color - profile - from - file
*/
procedure = gimp_procedure_new ( image_convert_color_profile_from_file_invoker ) ;
gimp_object_set_static_name ( GIMP_OBJECT ( procedure ) ,
" gimp-image-convert-color-profile-from-file " ) ;
gimp_procedure_set_static_strings ( procedure ,
" gimp-image-convert-color-profile-from-file " ,
" 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 an ICC profile precified by 'uri'. Only RGB color profiles are accepted. " ,
" Michael Natterer <mitch@gimp.org> " ,
" Michael Natterer " ,
" 2015 " ,
NULL ) ;
gimp_procedure_add_argument ( procedure ,
gimp_param_spec_image_id ( " image " ,
" image " ,
" The image " ,
pdb - > gimp , FALSE ,
GIMP_PARAM_READWRITE ) ) ;
gimp_procedure_add_argument ( procedure ,
gimp_param_spec_string ( " uri " ,
" uri " ,
" The URI of the file containing the new color profile " ,
FALSE , FALSE , FALSE ,
NULL ,
GIMP_PARAM_READWRITE ) ) ;
gimp_procedure_add_argument ( procedure ,
g_param_spec_enum ( " intent " ,
" intent " ,
" Rendering intent " ,
GIMP_TYPE_COLOR_RENDERING_INTENT ,
GIMP_COLOR_RENDERING_INTENT_PERCEPTUAL ,
GIMP_PARAM_READWRITE ) ) ;
gimp_procedure_add_argument ( procedure ,
g_param_spec_boolean ( " bpc " ,
" bpc " ,
" Black point compensation " ,
FALSE ,
GIMP_PARAM_READWRITE ) ) ;
gimp_pdb_register_procedure ( pdb , procedure ) ;
g_object_unref ( procedure ) ;
2015-06-05 18:51:46 +08:00
}