mirror of https://github.com/GNOME/gimp.git
pdb, libgimp, app: add gimp_drawable_get_thumbnail_format()
so plug-ins can allocate buffers and stuff before getting the actual thumbnail data.
This commit is contained in:
parent
0326a3e79a
commit
fc89dfb09b
|
@ -90,6 +90,36 @@ drawable_get_format_invoker (GimpProcedure *procedure,
|
||||||
return return_vals;
|
return return_vals;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static GimpValueArray *
|
||||||
|
drawable_get_thumbnail_format_invoker (GimpProcedure *procedure,
|
||||||
|
Gimp *gimp,
|
||||||
|
GimpContext *context,
|
||||||
|
GimpProgress *progress,
|
||||||
|
const GimpValueArray *args,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
gboolean success = TRUE;
|
||||||
|
GimpValueArray *return_vals;
|
||||||
|
GimpDrawable *drawable;
|
||||||
|
gchar *format = NULL;
|
||||||
|
|
||||||
|
drawable = gimp_value_get_drawable (gimp_value_array_index (args, 0), gimp);
|
||||||
|
|
||||||
|
if (success)
|
||||||
|
{
|
||||||
|
format = g_strdup (babl_format_get_encoding (gimp_drawable_get_preview_format (drawable)));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return_vals = gimp_procedure_get_return_values (procedure, success,
|
||||||
|
error ? *error : NULL);
|
||||||
|
|
||||||
|
if (success)
|
||||||
|
g_value_take_string (gimp_value_array_index (return_vals, 1), format);
|
||||||
|
|
||||||
|
return return_vals;
|
||||||
|
}
|
||||||
|
|
||||||
static GimpValueArray *
|
static GimpValueArray *
|
||||||
drawable_type_invoker (GimpProcedure *procedure,
|
drawable_type_invoker (GimpProcedure *procedure,
|
||||||
Gimp *gimp,
|
Gimp *gimp,
|
||||||
|
@ -994,6 +1024,37 @@ register_drawable_procs (GimpPDB *pdb)
|
||||||
gimp_pdb_register_procedure (pdb, procedure);
|
gimp_pdb_register_procedure (pdb, procedure);
|
||||||
g_object_unref (procedure);
|
g_object_unref (procedure);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* gimp-drawable-get-thumbnail-format
|
||||||
|
*/
|
||||||
|
procedure = gimp_procedure_new (drawable_get_thumbnail_format_invoker);
|
||||||
|
gimp_object_set_static_name (GIMP_OBJECT (procedure),
|
||||||
|
"gimp-drawable-get-thumbnail-format");
|
||||||
|
gimp_procedure_set_static_strings (procedure,
|
||||||
|
"gimp-drawable-get-thumbnail-format",
|
||||||
|
"Returns the drawable's thumbnail Babl format",
|
||||||
|
"This procedure returns the drawable's thumbnail Babl format.\n"
|
||||||
|
"Thumbnails are always 8-bit images, see 'gimp-drawable-thumbnail' and 'gimp-drawable-sub-thmbnail'.",
|
||||||
|
"Michael Natterer <mitch@gimp.org>",
|
||||||
|
"Michael Natterer",
|
||||||
|
"2019",
|
||||||
|
NULL);
|
||||||
|
gimp_procedure_add_argument (procedure,
|
||||||
|
gimp_param_spec_drawable_id ("drawable",
|
||||||
|
"drawable",
|
||||||
|
"The drawable",
|
||||||
|
pdb->gimp, FALSE,
|
||||||
|
GIMP_PARAM_READWRITE));
|
||||||
|
gimp_procedure_add_return_value (procedure,
|
||||||
|
gimp_param_spec_string ("format",
|
||||||
|
"format",
|
||||||
|
"The drawable's thumbnail Babl format",
|
||||||
|
FALSE, FALSE, FALSE,
|
||||||
|
NULL,
|
||||||
|
GIMP_PARAM_READWRITE));
|
||||||
|
gimp_pdb_register_procedure (pdb, procedure);
|
||||||
|
g_object_unref (procedure);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* gimp-drawable-type
|
* gimp-drawable-type
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
#include "internal-procs.h"
|
#include "internal-procs.h"
|
||||||
|
|
||||||
|
|
||||||
/* 734 procedures registered total */
|
/* 735 procedures registered total */
|
||||||
|
|
||||||
void
|
void
|
||||||
internal_procs_init (GimpPDB *pdb)
|
internal_procs_init (GimpPDB *pdb)
|
||||||
|
|
|
@ -212,6 +212,7 @@ EXPORTS
|
||||||
gimp_drawable_get_sub_thumbnail_data
|
gimp_drawable_get_sub_thumbnail_data
|
||||||
gimp_drawable_get_thumbnail
|
gimp_drawable_get_thumbnail
|
||||||
gimp_drawable_get_thumbnail_data
|
gimp_drawable_get_thumbnail_data
|
||||||
|
gimp_drawable_get_thumbnail_format
|
||||||
gimp_drawable_get_tile
|
gimp_drawable_get_tile
|
||||||
gimp_drawable_has_alpha
|
gimp_drawable_has_alpha
|
||||||
gimp_drawable_height
|
gimp_drawable_height
|
||||||
|
|
|
@ -437,3 +437,24 @@ gimp_drawable_get_format (gint32 drawable_ID)
|
||||||
|
|
||||||
return format;
|
return format;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* gimp_drawable_get_thumbnail_format:
|
||||||
|
* @drawable_ID: the ID of the #GimpDrawable to get the thumbnail format for.
|
||||||
|
*
|
||||||
|
* Returns the #Babl thumbnail format of the drawable.
|
||||||
|
*
|
||||||
|
* Return value: The #Babl thumbnail format.
|
||||||
|
*
|
||||||
|
* Since: 2.10.14
|
||||||
|
*/
|
||||||
|
const Babl *
|
||||||
|
gimp_drawable_get_thumbnail_format (gint32 drawable_ID)
|
||||||
|
{
|
||||||
|
const Babl *format = NULL;
|
||||||
|
gchar *format_str = _gimp_drawable_get_thumbnail_format (drawable_ID);
|
||||||
|
|
||||||
|
if (format_str)
|
||||||
|
format = babl_format (format_str);
|
||||||
|
|
||||||
|
return format;
|
||||||
|
}
|
||||||
|
|
|
@ -46,6 +46,7 @@ GeglBuffer * gimp_drawable_get_buffer (gint32 drawable_ID)
|
||||||
GeglBuffer * gimp_drawable_get_shadow_buffer (gint32 drawable_ID);
|
GeglBuffer * gimp_drawable_get_shadow_buffer (gint32 drawable_ID);
|
||||||
|
|
||||||
const Babl * gimp_drawable_get_format (gint32 drawable_ID);
|
const Babl * gimp_drawable_get_format (gint32 drawable_ID);
|
||||||
|
const Babl * gimp_drawable_get_thumbnail_format (gint32 drawable_ID);
|
||||||
|
|
||||||
GIMP_DEPRECATED_FOR(gimp_drawable_get_buffer)
|
GIMP_DEPRECATED_FOR(gimp_drawable_get_buffer)
|
||||||
GimpDrawable * gimp_drawable_get (gint32 drawable_ID);
|
GimpDrawable * gimp_drawable_get (gint32 drawable_ID);
|
||||||
|
|
|
@ -71,6 +71,40 @@ _gimp_drawable_get_format (gint32 drawable_ID)
|
||||||
return format;
|
return format;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* _gimp_drawable_get_thumbnail_format:
|
||||||
|
* @drawable_ID: The drawable.
|
||||||
|
*
|
||||||
|
* Returns the drawable's thumbnail Babl format
|
||||||
|
*
|
||||||
|
* This procedure returns the drawable's thumbnail Babl format.
|
||||||
|
* Thumbnails are always 8-bit images, see gimp_drawable_thumbnail()
|
||||||
|
* and gimp_drawable_sub_thmbnail().
|
||||||
|
*
|
||||||
|
* Returns: The drawable's thumbnail Babl format.
|
||||||
|
*
|
||||||
|
* Since: 2.10.14
|
||||||
|
**/
|
||||||
|
gchar *
|
||||||
|
_gimp_drawable_get_thumbnail_format (gint32 drawable_ID)
|
||||||
|
{
|
||||||
|
GimpParam *return_vals;
|
||||||
|
gint nreturn_vals;
|
||||||
|
gchar *format = NULL;
|
||||||
|
|
||||||
|
return_vals = gimp_run_procedure ("gimp-drawable-get-thumbnail-format",
|
||||||
|
&nreturn_vals,
|
||||||
|
GIMP_PDB_DRAWABLE, drawable_ID,
|
||||||
|
GIMP_PDB_END);
|
||||||
|
|
||||||
|
if (return_vals[0].data.d_status == GIMP_PDB_SUCCESS)
|
||||||
|
format = g_strdup (return_vals[1].data.d_string);
|
||||||
|
|
||||||
|
gimp_destroy_params (return_vals, nreturn_vals);
|
||||||
|
|
||||||
|
return format;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gimp_drawable_type:
|
* gimp_drawable_type:
|
||||||
* @drawable_ID: The drawable.
|
* @drawable_ID: The drawable.
|
||||||
|
|
|
@ -32,76 +32,77 @@ G_BEGIN_DECLS
|
||||||
/* For information look into the C source or the html documentation */
|
/* For information look into the C source or the html documentation */
|
||||||
|
|
||||||
|
|
||||||
G_GNUC_INTERNAL gchar* _gimp_drawable_get_format (gint32 drawable_ID);
|
G_GNUC_INTERNAL gchar* _gimp_drawable_get_format (gint32 drawable_ID);
|
||||||
GimpImageType gimp_drawable_type (gint32 drawable_ID);
|
G_GNUC_INTERNAL gchar* _gimp_drawable_get_thumbnail_format (gint32 drawable_ID);
|
||||||
GimpImageType gimp_drawable_type_with_alpha (gint32 drawable_ID);
|
GimpImageType gimp_drawable_type (gint32 drawable_ID);
|
||||||
gboolean gimp_drawable_has_alpha (gint32 drawable_ID);
|
GimpImageType gimp_drawable_type_with_alpha (gint32 drawable_ID);
|
||||||
gboolean gimp_drawable_is_rgb (gint32 drawable_ID);
|
gboolean gimp_drawable_has_alpha (gint32 drawable_ID);
|
||||||
gboolean gimp_drawable_is_gray (gint32 drawable_ID);
|
gboolean gimp_drawable_is_rgb (gint32 drawable_ID);
|
||||||
gboolean gimp_drawable_is_indexed (gint32 drawable_ID);
|
gboolean gimp_drawable_is_gray (gint32 drawable_ID);
|
||||||
gint gimp_drawable_bpp (gint32 drawable_ID);
|
gboolean gimp_drawable_is_indexed (gint32 drawable_ID);
|
||||||
gint gimp_drawable_width (gint32 drawable_ID);
|
gint gimp_drawable_bpp (gint32 drawable_ID);
|
||||||
gint gimp_drawable_height (gint32 drawable_ID);
|
gint gimp_drawable_width (gint32 drawable_ID);
|
||||||
gboolean gimp_drawable_offsets (gint32 drawable_ID,
|
gint gimp_drawable_height (gint32 drawable_ID);
|
||||||
gint *offset_x,
|
gboolean gimp_drawable_offsets (gint32 drawable_ID,
|
||||||
gint *offset_y);
|
gint *offset_x,
|
||||||
gboolean gimp_drawable_mask_bounds (gint32 drawable_ID,
|
gint *offset_y);
|
||||||
gint *x1,
|
gboolean gimp_drawable_mask_bounds (gint32 drawable_ID,
|
||||||
gint *y1,
|
gint *x1,
|
||||||
gint *x2,
|
gint *y1,
|
||||||
gint *y2);
|
gint *x2,
|
||||||
gboolean gimp_drawable_mask_intersect (gint32 drawable_ID,
|
gint *y2);
|
||||||
gint *x,
|
gboolean gimp_drawable_mask_intersect (gint32 drawable_ID,
|
||||||
gint *y,
|
gint *x,
|
||||||
gint *width,
|
gint *y,
|
||||||
gint *height);
|
gint *width,
|
||||||
gboolean gimp_drawable_merge_shadow (gint32 drawable_ID,
|
gint *height);
|
||||||
gboolean undo);
|
gboolean gimp_drawable_merge_shadow (gint32 drawable_ID,
|
||||||
gboolean gimp_drawable_free_shadow (gint32 drawable_ID);
|
gboolean undo);
|
||||||
gboolean gimp_drawable_update (gint32 drawable_ID,
|
gboolean gimp_drawable_free_shadow (gint32 drawable_ID);
|
||||||
gint x,
|
gboolean gimp_drawable_update (gint32 drawable_ID,
|
||||||
gint y,
|
gint x,
|
||||||
gint width,
|
gint y,
|
||||||
gint height);
|
gint width,
|
||||||
guint8* gimp_drawable_get_pixel (gint32 drawable_ID,
|
gint height);
|
||||||
gint x_coord,
|
guint8* gimp_drawable_get_pixel (gint32 drawable_ID,
|
||||||
gint y_coord,
|
gint x_coord,
|
||||||
gint *num_channels);
|
gint y_coord,
|
||||||
gboolean gimp_drawable_set_pixel (gint32 drawable_ID,
|
gint *num_channels);
|
||||||
gint x_coord,
|
gboolean gimp_drawable_set_pixel (gint32 drawable_ID,
|
||||||
gint y_coord,
|
gint x_coord,
|
||||||
gint num_channels,
|
gint y_coord,
|
||||||
const guint8 *pixel);
|
gint num_channels,
|
||||||
gboolean gimp_drawable_fill (gint32 drawable_ID,
|
const guint8 *pixel);
|
||||||
GimpFillType fill_type);
|
gboolean gimp_drawable_fill (gint32 drawable_ID,
|
||||||
gboolean gimp_drawable_offset (gint32 drawable_ID,
|
GimpFillType fill_type);
|
||||||
gboolean wrap_around,
|
gboolean gimp_drawable_offset (gint32 drawable_ID,
|
||||||
GimpOffsetType fill_type,
|
gboolean wrap_around,
|
||||||
gint offset_x,
|
GimpOffsetType fill_type,
|
||||||
gint offset_y);
|
gint offset_x,
|
||||||
G_GNUC_INTERNAL gboolean _gimp_drawable_thumbnail (gint32 drawable_ID,
|
gint offset_y);
|
||||||
gint width,
|
G_GNUC_INTERNAL gboolean _gimp_drawable_thumbnail (gint32 drawable_ID,
|
||||||
gint height,
|
gint width,
|
||||||
gint *actual_width,
|
gint height,
|
||||||
gint *actual_height,
|
gint *actual_width,
|
||||||
gint *bpp,
|
gint *actual_height,
|
||||||
gint *thumbnail_data_count,
|
gint *bpp,
|
||||||
guint8 **thumbnail_data);
|
gint *thumbnail_data_count,
|
||||||
G_GNUC_INTERNAL gboolean _gimp_drawable_sub_thumbnail (gint32 drawable_ID,
|
guint8 **thumbnail_data);
|
||||||
gint src_x,
|
G_GNUC_INTERNAL gboolean _gimp_drawable_sub_thumbnail (gint32 drawable_ID,
|
||||||
gint src_y,
|
gint src_x,
|
||||||
gint src_width,
|
gint src_y,
|
||||||
gint src_height,
|
gint src_width,
|
||||||
gint dest_width,
|
gint src_height,
|
||||||
gint dest_height,
|
gint dest_width,
|
||||||
gint *width,
|
gint dest_height,
|
||||||
gint *height,
|
gint *width,
|
||||||
gint *bpp,
|
gint *height,
|
||||||
gint *thumbnail_data_count,
|
gint *bpp,
|
||||||
guint8 **thumbnail_data);
|
gint *thumbnail_data_count,
|
||||||
gboolean gimp_drawable_foreground_extract (gint32 drawable_ID,
|
guint8 **thumbnail_data);
|
||||||
GimpForegroundExtractMode mode,
|
gboolean gimp_drawable_foreground_extract (gint32 drawable_ID,
|
||||||
gint32 mask_ID);
|
GimpForegroundExtractMode mode,
|
||||||
|
gint32 mask_ID);
|
||||||
|
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
|
@ -307,6 +307,38 @@ CODE
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub drawable_get_thumbnail_format {
|
||||||
|
$blurb = "Returns the drawable's thumbnail Babl format";
|
||||||
|
|
||||||
|
$help = <<'HELP';
|
||||||
|
This procedure returns the drawable's thumbnail Babl format.
|
||||||
|
|
||||||
|
Thumbnails are always 8-bit images, see gimp_drawable_thumbnail() and
|
||||||
|
gimp_drawable_sub_thmbnail().
|
||||||
|
HELP
|
||||||
|
|
||||||
|
&mitch_pdb_misc('2019', '2.10.14');
|
||||||
|
|
||||||
|
@inargs = (
|
||||||
|
{ name => 'drawable', type => 'drawable',
|
||||||
|
desc => 'The drawable' }
|
||||||
|
);
|
||||||
|
|
||||||
|
@outargs = (
|
||||||
|
{ name => 'format', type => 'string', wrap => 1,
|
||||||
|
desc => "The drawable's thumbnail Babl format" }
|
||||||
|
);
|
||||||
|
|
||||||
|
%invoke = (
|
||||||
|
code => <<'CODE'
|
||||||
|
{
|
||||||
|
format = g_strdup (babl_format_get_encoding (gimp_drawable_get_preview_format (drawable)));
|
||||||
|
|
||||||
|
}
|
||||||
|
CODE
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
sub drawable_type {
|
sub drawable_type {
|
||||||
$blurb = "Returns the drawable's type.";
|
$blurb = "Returns the drawable's type.";
|
||||||
$help = "This procedure returns the drawable's type.";
|
$help = "This procedure returns the drawable's type.";
|
||||||
|
@ -994,6 +1026,7 @@ CODE
|
||||||
"gimp-intl.h");
|
"gimp-intl.h");
|
||||||
|
|
||||||
@procs = qw(drawable_get_format
|
@procs = qw(drawable_get_format
|
||||||
|
drawable_get_thumbnail_format
|
||||||
drawable_type
|
drawable_type
|
||||||
drawable_type_with_alpha
|
drawable_type_with_alpha
|
||||||
drawable_has_alpha
|
drawable_has_alpha
|
||||||
|
|
Loading…
Reference in New Issue