2015-05-31 05:55:58 +08:00
|
|
|
/* LIBGIMP - The GIMP Library
|
|
|
|
* Copyright (C) 1995-2003 Peter Mattis and Spencer Kimball
|
|
|
|
*
|
|
|
|
* gimpimagetransform_pdb.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
|
2018-07-12 05:27:07 +08:00
|
|
|
* <https://www.gnu.org/licenses/>.
|
2015-05-31 05:55:58 +08:00
|
|
|
*/
|
|
|
|
|
|
|
|
/* NOTE: This file is auto-generated by pdbgen.pl */
|
|
|
|
|
|
|
|
#include "config.h"
|
|
|
|
|
|
|
|
#include "gimp.h"
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
2019-07-31 02:52:56 +08:00
|
|
|
* SECTION: gimpimagetransform_pdb
|
2015-05-31 05:55:58 +08:00
|
|
|
* @title: gimpimagetransform
|
2016-06-26 04:54:10 +08:00
|
|
|
* @short_description: Transformations on images.
|
2015-05-31 05:55:58 +08:00
|
|
|
*
|
|
|
|
* Operations to scale, resize, crop, flip and rotate images.
|
|
|
|
**/
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* gimp_image_resize:
|
|
|
|
* @image_ID: The image.
|
|
|
|
* @new_width: New image width.
|
|
|
|
* @new_height: New image height.
|
|
|
|
* @offx: x offset between upper left corner of old and new images: (new - old).
|
|
|
|
* @offy: y offset between upper left corner of old and new images: (new - old).
|
|
|
|
*
|
|
|
|
* Resize the image to the specified extents.
|
|
|
|
*
|
|
|
|
* This procedure resizes the image so that it's new width and height
|
|
|
|
* are equal to the supplied parameters. Offsets are also provided
|
|
|
|
* which describe the position of the previous image's content. All
|
|
|
|
* channels within the image are resized according to the specified
|
|
|
|
* parameters; this includes the image selection mask. All layers
|
|
|
|
* within the image are repositioned according to the specified
|
|
|
|
* offsets.
|
|
|
|
*
|
|
|
|
* Returns: TRUE on success.
|
|
|
|
**/
|
|
|
|
gboolean
|
|
|
|
gimp_image_resize (gint32 image_ID,
|
|
|
|
gint new_width,
|
|
|
|
gint new_height,
|
|
|
|
gint offx,
|
|
|
|
gint offy)
|
|
|
|
{
|
2019-07-30 16:51:16 +08:00
|
|
|
GimpValueArray *args;
|
|
|
|
GimpValueArray *return_vals;
|
2015-05-31 05:55:58 +08:00
|
|
|
gboolean success = TRUE;
|
|
|
|
|
2019-07-30 16:51:16 +08:00
|
|
|
args = gimp_value_array_new_from_types (GIMP_TYPE_IMAGE_ID,
|
|
|
|
GIMP_TYPE_INT32,
|
|
|
|
GIMP_TYPE_INT32,
|
|
|
|
GIMP_TYPE_INT32,
|
|
|
|
GIMP_TYPE_INT32,
|
|
|
|
G_TYPE_NONE);
|
|
|
|
gimp_value_set_image_id (gimp_value_array_index (args, 0), image_ID);
|
|
|
|
g_value_set_int (gimp_value_array_index (args, 1), new_width);
|
|
|
|
g_value_set_int (gimp_value_array_index (args, 2), new_height);
|
|
|
|
g_value_set_int (gimp_value_array_index (args, 3), offx);
|
|
|
|
g_value_set_int (gimp_value_array_index (args, 4), offy);
|
2015-05-31 05:55:58 +08:00
|
|
|
|
2019-07-30 16:51:16 +08:00
|
|
|
return_vals = gimp_run_procedure_with_array ("gimp-image-resize",
|
|
|
|
args);
|
|
|
|
gimp_value_array_unref (args);
|
2015-05-31 05:55:58 +08:00
|
|
|
|
2019-07-30 16:51:16 +08:00
|
|
|
success = g_value_get_enum (gimp_value_array_index (return_vals, 0)) == GIMP_PDB_SUCCESS;
|
|
|
|
|
|
|
|
gimp_value_array_unref (return_vals);
|
2015-05-31 05:55:58 +08:00
|
|
|
|
|
|
|
return success;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* gimp_image_resize_to_layers:
|
|
|
|
* @image_ID: The image.
|
|
|
|
*
|
|
|
|
* Resize the image to fit all layers.
|
|
|
|
*
|
|
|
|
* This procedure resizes the image to the bounding box of all layers
|
|
|
|
* of the image. All channels within the image are resized to the new
|
|
|
|
* size; this includes the image selection mask. All layers within the
|
|
|
|
* image are repositioned to the new image area.
|
|
|
|
*
|
|
|
|
* Returns: TRUE on success.
|
|
|
|
*
|
2015-06-01 03:18:09 +08:00
|
|
|
* Since: 2.2
|
2015-05-31 05:55:58 +08:00
|
|
|
**/
|
|
|
|
gboolean
|
|
|
|
gimp_image_resize_to_layers (gint32 image_ID)
|
|
|
|
{
|
2019-07-30 16:51:16 +08:00
|
|
|
GimpValueArray *args;
|
|
|
|
GimpValueArray *return_vals;
|
2015-05-31 05:55:58 +08:00
|
|
|
gboolean success = TRUE;
|
|
|
|
|
2019-07-30 16:51:16 +08:00
|
|
|
args = gimp_value_array_new_from_types (GIMP_TYPE_IMAGE_ID,
|
|
|
|
G_TYPE_NONE);
|
|
|
|
gimp_value_set_image_id (gimp_value_array_index (args, 0), image_ID);
|
|
|
|
|
|
|
|
return_vals = gimp_run_procedure_with_array ("gimp-image-resize-to-layers",
|
|
|
|
args);
|
|
|
|
gimp_value_array_unref (args);
|
2015-05-31 05:55:58 +08:00
|
|
|
|
2019-07-30 16:51:16 +08:00
|
|
|
success = g_value_get_enum (gimp_value_array_index (return_vals, 0)) == GIMP_PDB_SUCCESS;
|
2015-05-31 05:55:58 +08:00
|
|
|
|
2019-07-30 16:51:16 +08:00
|
|
|
gimp_value_array_unref (return_vals);
|
2015-05-31 05:55:58 +08:00
|
|
|
|
|
|
|
return success;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* gimp_image_scale:
|
|
|
|
* @image_ID: The image.
|
|
|
|
* @new_width: New image width.
|
|
|
|
* @new_height: New image height.
|
|
|
|
*
|
|
|
|
* Scale the image using the default interpolation method.
|
|
|
|
*
|
|
|
|
* This procedure scales the image so that its new width and height are
|
|
|
|
* equal to the supplied parameters. All layers and channels within the
|
|
|
|
* image are scaled according to the specified parameters; this
|
|
|
|
* includes the image selection mask. The interpolation method used can
|
|
|
|
* be set with gimp_context_set_interpolation().
|
|
|
|
*
|
|
|
|
* Returns: TRUE on success.
|
|
|
|
**/
|
|
|
|
gboolean
|
|
|
|
gimp_image_scale (gint32 image_ID,
|
|
|
|
gint new_width,
|
|
|
|
gint new_height)
|
|
|
|
{
|
2019-07-30 16:51:16 +08:00
|
|
|
GimpValueArray *args;
|
|
|
|
GimpValueArray *return_vals;
|
2015-05-31 05:55:58 +08:00
|
|
|
gboolean success = TRUE;
|
|
|
|
|
2019-07-30 16:51:16 +08:00
|
|
|
args = gimp_value_array_new_from_types (GIMP_TYPE_IMAGE_ID,
|
|
|
|
GIMP_TYPE_INT32,
|
|
|
|
GIMP_TYPE_INT32,
|
|
|
|
G_TYPE_NONE);
|
|
|
|
gimp_value_set_image_id (gimp_value_array_index (args, 0), image_ID);
|
|
|
|
g_value_set_int (gimp_value_array_index (args, 1), new_width);
|
|
|
|
g_value_set_int (gimp_value_array_index (args, 2), new_height);
|
|
|
|
|
|
|
|
return_vals = gimp_run_procedure_with_array ("gimp-image-scale",
|
|
|
|
args);
|
|
|
|
gimp_value_array_unref (args);
|
2015-05-31 05:55:58 +08:00
|
|
|
|
2019-07-30 16:51:16 +08:00
|
|
|
success = g_value_get_enum (gimp_value_array_index (return_vals, 0)) == GIMP_PDB_SUCCESS;
|
2015-05-31 05:55:58 +08:00
|
|
|
|
2019-07-30 16:51:16 +08:00
|
|
|
gimp_value_array_unref (return_vals);
|
2015-05-31 05:55:58 +08:00
|
|
|
|
|
|
|
return success;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* gimp_image_crop:
|
|
|
|
* @image_ID: The image.
|
|
|
|
* @new_width: New image width: (0 < new_width <= width).
|
|
|
|
* @new_height: New image height: (0 < new_height <= height).
|
|
|
|
* @offx: X offset: (0 <= offx <= (width - new_width)).
|
|
|
|
* @offy: Y offset: (0 <= offy <= (height - new_height)).
|
|
|
|
*
|
|
|
|
* Crop the image to the specified extents.
|
|
|
|
*
|
|
|
|
* This procedure crops the image so that it's new width and height are
|
|
|
|
* equal to the supplied parameters. Offsets are also provided which
|
|
|
|
* describe the position of the previous image's content. All channels
|
|
|
|
* and layers within the image are cropped to the new image extents;
|
|
|
|
* this includes the image selection mask. If any parameters are out of
|
|
|
|
* range, an error is returned.
|
|
|
|
*
|
|
|
|
* Returns: TRUE on success.
|
|
|
|
**/
|
|
|
|
gboolean
|
|
|
|
gimp_image_crop (gint32 image_ID,
|
|
|
|
gint new_width,
|
|
|
|
gint new_height,
|
|
|
|
gint offx,
|
|
|
|
gint offy)
|
|
|
|
{
|
2019-07-30 16:51:16 +08:00
|
|
|
GimpValueArray *args;
|
|
|
|
GimpValueArray *return_vals;
|
2015-05-31 05:55:58 +08:00
|
|
|
gboolean success = TRUE;
|
|
|
|
|
2019-07-30 16:51:16 +08:00
|
|
|
args = gimp_value_array_new_from_types (GIMP_TYPE_IMAGE_ID,
|
|
|
|
GIMP_TYPE_INT32,
|
|
|
|
GIMP_TYPE_INT32,
|
|
|
|
GIMP_TYPE_INT32,
|
|
|
|
GIMP_TYPE_INT32,
|
|
|
|
G_TYPE_NONE);
|
|
|
|
gimp_value_set_image_id (gimp_value_array_index (args, 0), image_ID);
|
|
|
|
g_value_set_int (gimp_value_array_index (args, 1), new_width);
|
|
|
|
g_value_set_int (gimp_value_array_index (args, 2), new_height);
|
|
|
|
g_value_set_int (gimp_value_array_index (args, 3), offx);
|
|
|
|
g_value_set_int (gimp_value_array_index (args, 4), offy);
|
2015-05-31 05:55:58 +08:00
|
|
|
|
2019-07-30 16:51:16 +08:00
|
|
|
return_vals = gimp_run_procedure_with_array ("gimp-image-crop",
|
|
|
|
args);
|
|
|
|
gimp_value_array_unref (args);
|
2015-05-31 05:55:58 +08:00
|
|
|
|
2019-07-30 16:51:16 +08:00
|
|
|
success = g_value_get_enum (gimp_value_array_index (return_vals, 0)) == GIMP_PDB_SUCCESS;
|
|
|
|
|
|
|
|
gimp_value_array_unref (return_vals);
|
2015-05-31 05:55:58 +08:00
|
|
|
|
|
|
|
return success;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* gimp_image_flip:
|
|
|
|
* @image_ID: The image.
|
|
|
|
* @flip_type: Type of flip.
|
|
|
|
*
|
|
|
|
* Flips the image horizontally or vertically.
|
|
|
|
*
|
|
|
|
* This procedure flips (mirrors) the image.
|
|
|
|
*
|
|
|
|
* Returns: TRUE on success.
|
|
|
|
**/
|
|
|
|
gboolean
|
|
|
|
gimp_image_flip (gint32 image_ID,
|
|
|
|
GimpOrientationType flip_type)
|
|
|
|
{
|
2019-07-30 16:51:16 +08:00
|
|
|
GimpValueArray *args;
|
|
|
|
GimpValueArray *return_vals;
|
2015-05-31 05:55:58 +08:00
|
|
|
gboolean success = TRUE;
|
|
|
|
|
2019-07-30 16:51:16 +08:00
|
|
|
args = gimp_value_array_new_from_types (GIMP_TYPE_IMAGE_ID,
|
2019-07-31 00:45:10 +08:00
|
|
|
GIMP_TYPE_ORIENTATION_TYPE,
|
2019-07-30 16:51:16 +08:00
|
|
|
G_TYPE_NONE);
|
|
|
|
gimp_value_set_image_id (gimp_value_array_index (args, 0), image_ID);
|
|
|
|
g_value_set_enum (gimp_value_array_index (args, 1), flip_type);
|
|
|
|
|
|
|
|
return_vals = gimp_run_procedure_with_array ("gimp-image-flip",
|
|
|
|
args);
|
|
|
|
gimp_value_array_unref (args);
|
2015-05-31 05:55:58 +08:00
|
|
|
|
2019-07-30 16:51:16 +08:00
|
|
|
success = g_value_get_enum (gimp_value_array_index (return_vals, 0)) == GIMP_PDB_SUCCESS;
|
2015-05-31 05:55:58 +08:00
|
|
|
|
2019-07-30 16:51:16 +08:00
|
|
|
gimp_value_array_unref (return_vals);
|
2015-05-31 05:55:58 +08:00
|
|
|
|
|
|
|
return success;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* gimp_image_rotate:
|
|
|
|
* @image_ID: The image.
|
|
|
|
* @rotate_type: Angle of rotation.
|
|
|
|
*
|
|
|
|
* Rotates the image by the specified degrees.
|
|
|
|
*
|
|
|
|
* This procedure rotates the image.
|
|
|
|
*
|
|
|
|
* Returns: TRUE on success.
|
|
|
|
**/
|
|
|
|
gboolean
|
|
|
|
gimp_image_rotate (gint32 image_ID,
|
|
|
|
GimpRotationType rotate_type)
|
|
|
|
{
|
2019-07-30 16:51:16 +08:00
|
|
|
GimpValueArray *args;
|
|
|
|
GimpValueArray *return_vals;
|
2015-05-31 05:55:58 +08:00
|
|
|
gboolean success = TRUE;
|
|
|
|
|
2019-07-30 16:51:16 +08:00
|
|
|
args = gimp_value_array_new_from_types (GIMP_TYPE_IMAGE_ID,
|
2019-07-31 00:45:10 +08:00
|
|
|
GIMP_TYPE_ROTATION_TYPE,
|
2019-07-30 16:51:16 +08:00
|
|
|
G_TYPE_NONE);
|
|
|
|
gimp_value_set_image_id (gimp_value_array_index (args, 0), image_ID);
|
|
|
|
g_value_set_enum (gimp_value_array_index (args, 1), rotate_type);
|
|
|
|
|
|
|
|
return_vals = gimp_run_procedure_with_array ("gimp-image-rotate",
|
|
|
|
args);
|
|
|
|
gimp_value_array_unref (args);
|
2015-05-31 05:55:58 +08:00
|
|
|
|
2019-07-30 16:51:16 +08:00
|
|
|
success = g_value_get_enum (gimp_value_array_index (return_vals, 0)) == GIMP_PDB_SUCCESS;
|
2015-05-31 05:55:58 +08:00
|
|
|
|
2019-07-30 16:51:16 +08:00
|
|
|
gimp_value_array_unref (return_vals);
|
2015-05-31 05:55:58 +08:00
|
|
|
|
|
|
|
return success;
|
|
|
|
}
|