/* LIBPIKA - The PIKA Library * Copyright (C) 1995-2003 Peter Mattis and Spencer Kimball * * pikafile_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 * . */ /* NOTE: This file is auto-generated by pdbgen.pl */ #include "config.h" #include "stamp-pdbgen.h" #include "pika.h" /** * SECTION: pikafile * @title: pikafile * @short_description: Image file operations (load, save, etc.) * * Image file operations (load, save, etc.) **/ /** * pika_file_load: * @run_mode: The run mode. * @file: The file to load. * * Loads an image file by invoking the right load handler. * * This procedure invokes the correct file load handler using magic if * possible, and falling back on the file's extension and/or prefix if * not. * * Returns: (transfer none): The output image. **/ PikaImage * pika_file_load (PikaRunMode run_mode, GFile *file) { PikaValueArray *args; PikaValueArray *return_vals; PikaImage *image = NULL; args = pika_value_array_new_from_types (NULL, PIKA_TYPE_RUN_MODE, run_mode, G_TYPE_FILE, file, G_TYPE_NONE); return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (), "pika-file-load", args); pika_value_array_unref (args); if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS) image = PIKA_VALUES_GET_IMAGE (return_vals, 1); pika_value_array_unref (return_vals); return image; } /** * pika_file_load_layer: * @run_mode: The run mode. * @image: Destination image. * @file: The file to load. * * Loads an image file as a layer for an existing image. * * This procedure behaves like the file-load procedure but opens the * specified image as a layer for an existing image. The returned layer * needs to be added to the existing image with * pika_image_insert_layer(). * * Returns: (transfer none): The layer created when loading the image file. * * Since: 2.4 **/ PikaLayer * pika_file_load_layer (PikaRunMode run_mode, PikaImage *image, GFile *file) { PikaValueArray *args; PikaValueArray *return_vals; PikaLayer *layer = NULL; args = pika_value_array_new_from_types (NULL, PIKA_TYPE_RUN_MODE, run_mode, PIKA_TYPE_IMAGE, image, G_TYPE_FILE, file, G_TYPE_NONE); return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (), "pika-file-load-layer", args); pika_value_array_unref (args); if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS) layer = PIKA_VALUES_GET_LAYER (return_vals, 1); pika_value_array_unref (return_vals); return layer; } /** * pika_file_load_layers: * @run_mode: The run mode. * @image: Destination image. * @file: The file to load. * @num_layers: (out): The number of loaded layers. * * Loads an image file as layers for an existing image. * * This procedure behaves like the file-load procedure but opens the * specified image as layers for an existing image. The returned layers * needs to be added to the existing image with * pika_image_insert_layer(). * * Returns: (array length=num_layers) (element-type PikaLayer) (transfer container): * The list of loaded layers. * The returned value must be freed with g_free(). * * Since: 2.4 **/ PikaLayer ** pika_file_load_layers (PikaRunMode run_mode, PikaImage *image, GFile *file, gint *num_layers) { PikaValueArray *args; PikaValueArray *return_vals; PikaLayer **layers = NULL; args = pika_value_array_new_from_types (NULL, PIKA_TYPE_RUN_MODE, run_mode, PIKA_TYPE_IMAGE, image, G_TYPE_FILE, file, G_TYPE_NONE); return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (), "pika-file-load-layers", args); pika_value_array_unref (args); *num_layers = 0; if (PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS) { *num_layers = PIKA_VALUES_GET_INT (return_vals, 1); { PikaObjectArray *a = g_value_get_boxed (pika_value_array_index (return_vals, 2)); if (a) layers = g_memdup2 (a->data, a->length * sizeof (gpointer)); }; } pika_value_array_unref (return_vals); return layers; } /** * pika_file_save: * @run_mode: The run mode. * @image: Input image. * @num_drawables: The number of drawables to save. * @drawables: (array length=num_drawables) (element-type PikaItem): Drawables to save. * @file: The file to save the image in. * * Saves a file by extension. * * This procedure invokes the correct file save handler according to * the file's extension and/or prefix. * * Returns: TRUE on success. **/ gboolean pika_file_save (PikaRunMode run_mode, PikaImage *image, gint num_drawables, const PikaItem **drawables, GFile *file) { PikaValueArray *args; PikaValueArray *return_vals; gboolean success = TRUE; args = pika_value_array_new_from_types (NULL, PIKA_TYPE_RUN_MODE, run_mode, PIKA_TYPE_IMAGE, image, G_TYPE_INT, num_drawables, PIKA_TYPE_OBJECT_ARRAY, NULL, G_TYPE_FILE, file, G_TYPE_NONE); pika_value_set_object_array (pika_value_array_index (args, 3), PIKA_TYPE_ITEM, (GObject **) drawables, num_drawables); return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (), "pika-file-save", args); pika_value_array_unref (args); success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS; pika_value_array_unref (return_vals); return success; } /** * pika_file_save_thumbnail: * @image: The image. * @file: The file the thumbnail belongs to. * * Saves a thumbnail for the given image * * This procedure saves a thumbnail for the given image according to * the Free Desktop Thumbnail Managing Standard. The thumbnail is saved * so that it belongs to the given file. This means you have to save * the image under this name first, otherwise this procedure will fail. * This procedure may become useful if you want to explicitly save a * thumbnail with a file. * * Returns: TRUE on success. **/ gboolean pika_file_save_thumbnail (PikaImage *image, GFile *file) { PikaValueArray *args; PikaValueArray *return_vals; gboolean success = TRUE; args = pika_value_array_new_from_types (NULL, PIKA_TYPE_IMAGE, image, G_TYPE_FILE, file, G_TYPE_NONE); return_vals = _pika_pdb_run_procedure_array (pika_get_pdb (), "pika-file-save-thumbnail", args); pika_value_array_unref (args); success = PIKA_VALUES_GET_ENUM (return_vals, 0) == PIKA_PDB_SUCCESS; pika_value_array_unref (return_vals); return success; }