From 172d4356c5663b38f49e91a2adf36697fa73f719 Mon Sep 17 00:00:00 2001 From: Jehan Date: Mon, 13 Oct 2025 17:28:14 +0200 Subject: [PATCH] app, libgimp, pdb: convert several files newlines with dos2unix. --- app/path/gimpvectorlayerundo.c | 544 ++++----- libgimp/gimpvectorlayer.c | 150 +-- pdb/groups/vector_layer.pdb | 1924 ++++++++++++++++---------------- 3 files changed, 1309 insertions(+), 1309 deletions(-) diff --git a/app/path/gimpvectorlayerundo.c b/app/path/gimpvectorlayerundo.c index 53124e445c..7b6efd60fe 100644 --- a/app/path/gimpvectorlayerundo.c +++ b/app/path/gimpvectorlayerundo.c @@ -1,272 +1,272 @@ -/* GIMP - The GNU Image Manipulation Program - * Copyright (C) 1995 Spencer Kimball and Peter Mattis - * - * gimpvectorlayerundo.h - * - * Copyright 2006 Hendrik Boom - * - * 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 . - */ - -#include "config.h" - -#include -#include -#include - -#include "libgimpconfig/gimpconfig.h" - -#include "path-types.h" - -#include "core/gimp-memsize.h" -#include "core/gimp-utils.h" -#include "core/gimpitem.h" -#include "core/gimpitemundo.h" - -#include "gimpvectorlayer.h" -#include "gimpvectorlayeroptions.h" -#include "gimpvectorlayerundo.h" - -enum -{ - PROP_0, - PROP_PARAM -}; - - -static void gimp_vector_layer_undo_constructed (GObject *object); -static void gimp_vector_layer_undo_set_property (GObject *object, - guint property_id, - const GValue *value, - GParamSpec *pspec); -static void gimp_vector_layer_undo_get_property (GObject *object, - guint property_id, - GValue *value, - GParamSpec *pspec); -static gint64 gimp_vector_layer_undo_get_memsize (GimpObject *object, - gint64 *gui_size); -static void gimp_vector_layer_undo_pop (GimpUndo *undo, - GimpUndoMode undo_mode, - GimpUndoAccumulator *accum); -static void gimp_vector_layer_undo_free (GimpUndo *undo, - GimpUndoMode undo_mode); - - - -G_DEFINE_TYPE (GimpVectorLayerUndo, gimp_vector_layer_undo, GIMP_TYPE_ITEM_UNDO) - -#define parent_class gimp_vector_layer_undo_parent_class - - -static void -gimp_vector_layer_undo_class_init (GimpVectorLayerUndoClass *klass) -{ - GObjectClass *object_class = G_OBJECT_CLASS (klass); - GimpObjectClass *gimp_object_class = GIMP_OBJECT_CLASS (klass); - GimpUndoClass *undo_class = GIMP_UNDO_CLASS (klass); - - object_class->constructed = gimp_vector_layer_undo_constructed; - object_class->set_property = gimp_vector_layer_undo_set_property; - object_class->get_property = gimp_vector_layer_undo_get_property; - - gimp_object_class->get_memsize = gimp_vector_layer_undo_get_memsize; - - undo_class->pop = gimp_vector_layer_undo_pop; - undo_class->free = gimp_vector_layer_undo_free; - - g_object_class_install_property (object_class, PROP_PARAM, - g_param_spec_param ("param", NULL, NULL, - G_TYPE_PARAM, - G_PARAM_READWRITE | - G_PARAM_CONSTRUCT_ONLY)); -} - -static void -gimp_vector_layer_undo_init (GimpVectorLayerUndo *undo) -{ -} - -static void -gimp_vector_layer_undo_constructed (GObject *object) -{ - GimpVectorLayerUndo *vector_undo = GIMP_VECTOR_LAYER_UNDO (object); - GimpVectorLayer *vector_layer; - - G_OBJECT_CLASS (parent_class)->constructed (object); - - g_assert (GIMP_IS_VECTOR_LAYER (GIMP_ITEM_UNDO (vector_undo)->item)); - - vector_layer = GIMP_VECTOR_LAYER (GIMP_ITEM_UNDO (vector_undo)->item); - - switch (GIMP_UNDO (object)->undo_type) - { - case GIMP_UNDO_VECTOR_LAYER: - if (vector_undo->pspec) - { - g_assert (vector_undo->pspec->owner_type == GIMP_TYPE_VECTOR_LAYER_OPTIONS); - - vector_undo->value = g_slice_new0 (GValue); - - g_value_init (vector_undo->value, vector_undo->pspec->value_type); - g_object_get_property (G_OBJECT (vector_layer->options), - vector_undo->pspec->name, vector_undo->value); - } - else if (vector_layer->options) - { - vector_undo->vector_layer_options = gimp_config_duplicate (GIMP_CONFIG (vector_layer->options)); - } - break; - - default: - g_assert_not_reached (); - } -} - -static void -gimp_vector_layer_undo_set_property (GObject *object, - guint property_id, - const GValue *value, - GParamSpec *pspec) -{ - GimpVectorLayerUndo *vector_undo = GIMP_VECTOR_LAYER_UNDO (object); - - switch (property_id) - { - case PROP_PARAM: - vector_undo->pspec = g_value_get_param (value); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - -static void -gimp_vector_layer_undo_get_property (GObject *object, - guint property_id, - GValue *value, - GParamSpec *pspec) -{ - GimpVectorLayerUndo *vector_undo = GIMP_VECTOR_LAYER_UNDO (object); - - switch (property_id) - { - case PROP_PARAM: - g_value_set_param (value, (GParamSpec *) vector_undo->pspec); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - -static gint64 -gimp_vector_layer_undo_get_memsize (GimpObject *object, - gint64 *gui_size) -{ - GimpVectorLayerUndo *undo = GIMP_VECTOR_LAYER_UNDO (object); - gint64 memsize = 0; - - memsize += gimp_g_value_get_memsize (undo->value); - memsize += gimp_object_get_memsize (GIMP_OBJECT (undo->vector_layer_options), NULL); - - return memsize + GIMP_OBJECT_CLASS (parent_class)->get_memsize (object, - gui_size); -} - -static void -gimp_vector_layer_undo_pop (GimpUndo *undo, - GimpUndoMode undo_mode, - GimpUndoAccumulator *accum) -{ - GimpVectorLayerUndo *vector_undo = GIMP_VECTOR_LAYER_UNDO (undo); - GimpVectorLayer *vector_layer = GIMP_VECTOR_LAYER (GIMP_ITEM_UNDO (undo)->item); - - GIMP_UNDO_CLASS (parent_class)->pop (undo, undo_mode, accum); - - switch (undo->undo_type) - { - case GIMP_UNDO_VECTOR_LAYER: - if (vector_undo->pspec) - { - GValue *value; - - g_return_if_fail (vector_layer->options != NULL); - - value = g_slice_new0 (GValue); - g_value_init (value, vector_undo->pspec->value_type); - - g_object_get_property (G_OBJECT (vector_layer->options), - vector_undo->pspec->name, value); - - g_object_set_property (G_OBJECT (vector_layer->options), - vector_undo->pspec->name, vector_undo->value); - - g_value_unset (vector_undo->value); - g_slice_free (GValue, vector_undo->value); - - vector_undo->value = value; - } - else - { - GimpVectorLayerOptions *vector_layer_options; - - vector_layer_options = (vector_layer->options ? - gimp_config_duplicate (GIMP_CONFIG (vector_layer->options)) : NULL); - - if (vector_layer->options && vector_undo->vector_layer_options) - gimp_config_sync (G_OBJECT (vector_undo->vector_layer_options), - G_OBJECT (vector_layer->options), 0); - else - g_object_set (vector_layer, - "vector-layer-options", vector_undo->vector_layer_options, - NULL); - - if (vector_undo->vector_layer_options) - g_object_unref (vector_undo->vector_layer_options); - - vector_undo->vector_layer_options = vector_layer_options; - } - break; - - default: - g_assert_not_reached (); - } -} - -static void -gimp_vector_layer_undo_free (GimpUndo *undo, - GimpUndoMode undo_mode) -{ - GimpVectorLayerUndo *vector_undo = GIMP_VECTOR_LAYER_UNDO (undo); - - if (vector_undo->vector_layer_options) - { - g_object_unref (vector_undo->vector_layer_options); - vector_undo->vector_layer_options = NULL; - } - - if (vector_undo->pspec) - { - g_value_unset (vector_undo->value); - g_slice_free (GValue, vector_undo->value); - - vector_undo->value = NULL; - vector_undo->pspec = NULL; - } - - GIMP_UNDO_CLASS (parent_class)->free (undo, undo_mode); -} +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * gimpvectorlayerundo.h + * + * Copyright 2006 Hendrik Boom + * + * 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 . + */ + +#include "config.h" + +#include +#include +#include + +#include "libgimpconfig/gimpconfig.h" + +#include "path-types.h" + +#include "core/gimp-memsize.h" +#include "core/gimp-utils.h" +#include "core/gimpitem.h" +#include "core/gimpitemundo.h" + +#include "gimpvectorlayer.h" +#include "gimpvectorlayeroptions.h" +#include "gimpvectorlayerundo.h" + +enum +{ + PROP_0, + PROP_PARAM +}; + + +static void gimp_vector_layer_undo_constructed (GObject *object); +static void gimp_vector_layer_undo_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec); +static void gimp_vector_layer_undo_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec); +static gint64 gimp_vector_layer_undo_get_memsize (GimpObject *object, + gint64 *gui_size); +static void gimp_vector_layer_undo_pop (GimpUndo *undo, + GimpUndoMode undo_mode, + GimpUndoAccumulator *accum); +static void gimp_vector_layer_undo_free (GimpUndo *undo, + GimpUndoMode undo_mode); + + + +G_DEFINE_TYPE (GimpVectorLayerUndo, gimp_vector_layer_undo, GIMP_TYPE_ITEM_UNDO) + +#define parent_class gimp_vector_layer_undo_parent_class + + +static void +gimp_vector_layer_undo_class_init (GimpVectorLayerUndoClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GimpObjectClass *gimp_object_class = GIMP_OBJECT_CLASS (klass); + GimpUndoClass *undo_class = GIMP_UNDO_CLASS (klass); + + object_class->constructed = gimp_vector_layer_undo_constructed; + object_class->set_property = gimp_vector_layer_undo_set_property; + object_class->get_property = gimp_vector_layer_undo_get_property; + + gimp_object_class->get_memsize = gimp_vector_layer_undo_get_memsize; + + undo_class->pop = gimp_vector_layer_undo_pop; + undo_class->free = gimp_vector_layer_undo_free; + + g_object_class_install_property (object_class, PROP_PARAM, + g_param_spec_param ("param", NULL, NULL, + G_TYPE_PARAM, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY)); +} + +static void +gimp_vector_layer_undo_init (GimpVectorLayerUndo *undo) +{ +} + +static void +gimp_vector_layer_undo_constructed (GObject *object) +{ + GimpVectorLayerUndo *vector_undo = GIMP_VECTOR_LAYER_UNDO (object); + GimpVectorLayer *vector_layer; + + G_OBJECT_CLASS (parent_class)->constructed (object); + + g_assert (GIMP_IS_VECTOR_LAYER (GIMP_ITEM_UNDO (vector_undo)->item)); + + vector_layer = GIMP_VECTOR_LAYER (GIMP_ITEM_UNDO (vector_undo)->item); + + switch (GIMP_UNDO (object)->undo_type) + { + case GIMP_UNDO_VECTOR_LAYER: + if (vector_undo->pspec) + { + g_assert (vector_undo->pspec->owner_type == GIMP_TYPE_VECTOR_LAYER_OPTIONS); + + vector_undo->value = g_slice_new0 (GValue); + + g_value_init (vector_undo->value, vector_undo->pspec->value_type); + g_object_get_property (G_OBJECT (vector_layer->options), + vector_undo->pspec->name, vector_undo->value); + } + else if (vector_layer->options) + { + vector_undo->vector_layer_options = gimp_config_duplicate (GIMP_CONFIG (vector_layer->options)); + } + break; + + default: + g_assert_not_reached (); + } +} + +static void +gimp_vector_layer_undo_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + GimpVectorLayerUndo *vector_undo = GIMP_VECTOR_LAYER_UNDO (object); + + switch (property_id) + { + case PROP_PARAM: + vector_undo->pspec = g_value_get_param (value); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +gimp_vector_layer_undo_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + GimpVectorLayerUndo *vector_undo = GIMP_VECTOR_LAYER_UNDO (object); + + switch (property_id) + { + case PROP_PARAM: + g_value_set_param (value, (GParamSpec *) vector_undo->pspec); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static gint64 +gimp_vector_layer_undo_get_memsize (GimpObject *object, + gint64 *gui_size) +{ + GimpVectorLayerUndo *undo = GIMP_VECTOR_LAYER_UNDO (object); + gint64 memsize = 0; + + memsize += gimp_g_value_get_memsize (undo->value); + memsize += gimp_object_get_memsize (GIMP_OBJECT (undo->vector_layer_options), NULL); + + return memsize + GIMP_OBJECT_CLASS (parent_class)->get_memsize (object, + gui_size); +} + +static void +gimp_vector_layer_undo_pop (GimpUndo *undo, + GimpUndoMode undo_mode, + GimpUndoAccumulator *accum) +{ + GimpVectorLayerUndo *vector_undo = GIMP_VECTOR_LAYER_UNDO (undo); + GimpVectorLayer *vector_layer = GIMP_VECTOR_LAYER (GIMP_ITEM_UNDO (undo)->item); + + GIMP_UNDO_CLASS (parent_class)->pop (undo, undo_mode, accum); + + switch (undo->undo_type) + { + case GIMP_UNDO_VECTOR_LAYER: + if (vector_undo->pspec) + { + GValue *value; + + g_return_if_fail (vector_layer->options != NULL); + + value = g_slice_new0 (GValue); + g_value_init (value, vector_undo->pspec->value_type); + + g_object_get_property (G_OBJECT (vector_layer->options), + vector_undo->pspec->name, value); + + g_object_set_property (G_OBJECT (vector_layer->options), + vector_undo->pspec->name, vector_undo->value); + + g_value_unset (vector_undo->value); + g_slice_free (GValue, vector_undo->value); + + vector_undo->value = value; + } + else + { + GimpVectorLayerOptions *vector_layer_options; + + vector_layer_options = (vector_layer->options ? + gimp_config_duplicate (GIMP_CONFIG (vector_layer->options)) : NULL); + + if (vector_layer->options && vector_undo->vector_layer_options) + gimp_config_sync (G_OBJECT (vector_undo->vector_layer_options), + G_OBJECT (vector_layer->options), 0); + else + g_object_set (vector_layer, + "vector-layer-options", vector_undo->vector_layer_options, + NULL); + + if (vector_undo->vector_layer_options) + g_object_unref (vector_undo->vector_layer_options); + + vector_undo->vector_layer_options = vector_layer_options; + } + break; + + default: + g_assert_not_reached (); + } +} + +static void +gimp_vector_layer_undo_free (GimpUndo *undo, + GimpUndoMode undo_mode) +{ + GimpVectorLayerUndo *vector_undo = GIMP_VECTOR_LAYER_UNDO (undo); + + if (vector_undo->vector_layer_options) + { + g_object_unref (vector_undo->vector_layer_options); + vector_undo->vector_layer_options = NULL; + } + + if (vector_undo->pspec) + { + g_value_unset (vector_undo->value); + g_slice_free (GValue, vector_undo->value); + + vector_undo->value = NULL; + vector_undo->pspec = NULL; + } + + GIMP_UNDO_CLASS (parent_class)->free (undo, undo_mode); +} diff --git a/libgimp/gimpvectorlayer.c b/libgimp/gimpvectorlayer.c index 957977676c..c8e49abb51 100644 --- a/libgimp/gimpvectorlayer.c +++ b/libgimp/gimpvectorlayer.c @@ -1,75 +1,75 @@ -/* LIBGIMP - The GIMP Library - * Copyright (C) 1995-2000 Peter Mattis and Spencer Kimball - * - * gimpvectorlayer.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 - * . - */ - -#include "config.h" - -#include "gimp.h" - - -struct _GimpVectorLayer -{ - GimpLayer parent_instance; -}; - - -G_DEFINE_TYPE_WITH_CODE (GimpVectorLayer, gimp_vector_layer, GIMP_TYPE_LAYER, - G_IMPLEMENT_INTERFACE (GIMP_TYPE_RASTERIZABLE, NULL)) - -#define parent_class gimp_vector_layer_parent_class - - -static void -gimp_vector_layer_class_init (GimpVectorLayerClass *klass) -{ -} - -static void -gimp_vector_layer_init (GimpVectorLayer *layer) -{ -} - - -/* Public API. */ - -/** - * gimp_vector_layer_get_by_id: - * @layer_id: The layer id. - * - * Returns a #GimpVectorLayer representing @layer_id. This function calls - * gimp_item_get_by_id() and returns the item if it is layer or %NULL - * otherwise. - * - * Returns: (nullable) (transfer none): a #GimpVectorLayer for @layer_id or - * %NULL if @layer_id does not represent a valid layer. The - * object belongs to libgimp and you must not modify or unref - * it. - * - * Since: 3.0 - **/ -GimpVectorLayer * -gimp_vector_layer_get_by_id (gint32 layer_id) -{ - GimpItem *item = gimp_item_get_by_id (layer_id); - - if (GIMP_IS_VECTOR_LAYER (item)) - return (GimpVectorLayer *) item; - - return NULL; -} +/* LIBGIMP - The GIMP Library + * Copyright (C) 1995-2000 Peter Mattis and Spencer Kimball + * + * gimpvectorlayer.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 + * . + */ + +#include "config.h" + +#include "gimp.h" + + +struct _GimpVectorLayer +{ + GimpLayer parent_instance; +}; + + +G_DEFINE_TYPE_WITH_CODE (GimpVectorLayer, gimp_vector_layer, GIMP_TYPE_LAYER, + G_IMPLEMENT_INTERFACE (GIMP_TYPE_RASTERIZABLE, NULL)) + +#define parent_class gimp_vector_layer_parent_class + + +static void +gimp_vector_layer_class_init (GimpVectorLayerClass *klass) +{ +} + +static void +gimp_vector_layer_init (GimpVectorLayer *layer) +{ +} + + +/* Public API. */ + +/** + * gimp_vector_layer_get_by_id: + * @layer_id: The layer id. + * + * Returns a #GimpVectorLayer representing @layer_id. This function calls + * gimp_item_get_by_id() and returns the item if it is layer or %NULL + * otherwise. + * + * Returns: (nullable) (transfer none): a #GimpVectorLayer for @layer_id or + * %NULL if @layer_id does not represent a valid layer. The + * object belongs to libgimp and you must not modify or unref + * it. + * + * Since: 3.0 + **/ +GimpVectorLayer * +gimp_vector_layer_get_by_id (gint32 layer_id) +{ + GimpItem *item = gimp_item_get_by_id (layer_id); + + if (GIMP_IS_VECTOR_LAYER (item)) + return (GimpVectorLayer *) item; + + return NULL; +} diff --git a/pdb/groups/vector_layer.pdb b/pdb/groups/vector_layer.pdb index 8e0066a195..93e466d8be 100644 --- a/pdb/groups/vector_layer.pdb +++ b/pdb/groups/vector_layer.pdb @@ -1,962 +1,962 @@ -# GIMP - The GNU Image Manipulation Program -# Copyright (C) 1995 Spencer Kimball and Peter Mattis - -# New Vector Layer PDB API - -# 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 . - - -sub vector_layer_new { - $blurb = 'Create a new vector layer.'; - - $help = <<'HELP'; -This procedure creates a new vector layer displaying the specified @path. By -default, the fill and stroke properties will be defined by the context. - - -The new layer still needs to be added to the image as this is not -automatic. Add the new layer with the [method@Image.insert_layer] -method. - - -The arguments are kept as simple as necessary for the basic case. All -vector attributes, however, can be modified with the appropriate -`gimp_vector_layer_set_*()` procedures. -HELP - - &alxsa_pdb_misc('2025', '3.2'); - - @inargs = ( - { name => 'image', type => 'image', - desc => 'The image' }, - { name => 'path', type => 'path', - desc => 'The path to create the layer from' } - ); - - @outargs = ( - { name => 'layer', type => 'vector_layer', - desc => 'The new vector layer. The object belongs to libgimp and you should not free it.' } - ); - - %invoke = ( - code => <<'CODE' -{ - if (path == NULL) - { - g_set_error (error, GIMP_PDB_ERROR, GIMP_PDB_ERROR_INVALID_ARGUMENT, - _("Failed to create vector layer")); - - success = FALSE; - } - - if (success) - { - layer = GIMP_VECTOR_LAYER (gimp_vector_layer_new (image, path, context)); - - if (! layer) - { - g_set_error (error, GIMP_PDB_ERROR, GIMP_PDB_ERROR_INVALID_ARGUMENT, - _("Failed to create vector layer")); - - success = FALSE; - } - } -} -CODE - ); -} - -sub vector_layer_refresh { - $blurb = 'Rerender the vector layer'; - - $help = <<'HELP'; -This procedure causes the vector layer to refresh itself after changes. -HELP - - &alxsa_pdb_misc('2025', '3.2'); - - @inargs = ( - { name => 'layer', type => 'vector_layer', - desc => 'The vector layer' } - ); - - %invoke = ( - code => <<'CODE' -{ - gimp_vector_layer_refresh (layer); -} -CODE - ); -} - -sub vector_layer_get_path { - $blurb = 'Gets the path from the vector layer if one is associated with it.'; - - $help = <<'HELP'; -This procedure returns the path from the vector layer if one is associated with it. -HELP - - &alxsa_pdb_misc('2025', '3.2'); - - @inargs = ( - { name => 'layer', type => 'vector_layer', - desc => 'The vector layer' } - ); - - @outargs = ( - { name => 'path', type => 'path', - desc => 'The path associated with the vector layer' } - ); - - %invoke = ( - code => <<'CODE' -{ - path = gimp_vector_layer_get_path (layer); - - if (! path) - success = FALSE; -} -CODE - ); -} - -sub vector_layer_get_enable_stroke { - $blurb = 'Check if stroke is enabled in the vector layer.'; - - $help = <<'HELP'; -This procedure checks if stroke is enabled in the specified vector layer. -HELP - - &alxsa_pdb_misc('2025', '3.2'); - - @inargs = ( - { name => 'layer', type => 'vector_layer', - desc => 'The vector layer' } - ); - - @outargs = ( - { name => 'enable_stroke', type => 'boolean', - desc => 'If the stroke is enabled on the vector layer' } - ); - - %invoke = ( - code => <<'CODE' -{ - GimpVectorLayerOptions *options; - - options = gimp_vector_layer_get_options (layer); - if (! options) - success = FALSE; - - if (success) - g_object_get (options, - "enable-stroke", &enable_stroke, - NULL); -} -CODE - ); -} - -sub vector_layer_set_enable_stroke { - $blurb = 'Set whether the stroke is enabled on the vector layer.'; - - $help = <<'HELP'; -This procedure sets the stroke's visibility in the vector layer 'layer'. -HELP - - &alxsa_pdb_misc('2025', '3.2'); - - @inargs = ( - { name => 'layer', type => 'vector_layer', - desc => 'The vector layer' }, - { name => 'enable_stroke', type => 'boolean', - desc => 'Whether to enable the stroke on the vector layer' } - ); - - %invoke = ( - code => <<'CODE' -{ - GimpVectorLayerOptions *options; - - options = gimp_vector_layer_get_options (layer); - if (! options) - success = FALSE; - - if (success) - { - g_object_set (options, - "enable-stroke", &enable_stroke, - NULL); - } -} -CODE - ); -} - -sub vector_layer_get_stroke_color { - $blurb = 'Get the color of the stroke in a vector layer.'; - - $help = <<'HELP'; -This procedure returns the color of the stroke in a vector layer. -HELP - - &marcus_pdb_misc('2008', '2.6'); - - @inargs = ( - { name => 'layer', type => 'vector_layer', - desc => 'The vector layer.' } - ); - - @outargs = ( - { name => 'color', type => 'geglcolor', - desc => 'The color of the stroke.' } - ); - - %invoke = ( - code => <<'CODE' -{ - GimpVectorLayerOptions *options; - - options = gimp_vector_layer_get_options (layer); - if (! options) - success = FALSE; - - if (success) - color = gegl_color_duplicate (gimp_context_get_foreground ( - GIMP_CONTEXT (options->stroke_options))); -} -CODE - ); -} - -sub vector_layer_get_stroke_width { - $blurb = 'Get the stroke width of a vector layer.'; - - $help = <<'HELP'; -This procedure returns the stroke width in a vector layer. -HELP - - &alxsa_pdb_misc('2025', '3.2'); - - @inargs = ( - { name => 'layer', type => 'vector_layer', - desc => 'The vector layer.' } - ); - - @outargs = ( - { name => 'width', type => "0 <= double", - desc => 'The stroke width.' } - ); - - %invoke = ( - code => <<'CODE' -{ - GimpVectorLayerOptions *options; - - options = gimp_vector_layer_get_options (layer); - if (! options) - success = FALSE; - - if (success) - width = gimp_stroke_options_get_width (options->stroke_options); -} -CODE - ); -} - -sub vector_layer_get_stroke_width_unit { - $blurb = 'Get the stroke width unit of a vector layer.'; - - $help = <<'HELP'; -This procedure returns the stroke width unit in a vector layer. -HELP - - &alxsa_pdb_misc('2025', '3.2'); - - @inargs = ( - { name => 'layer', type => 'vector_layer', - desc => 'The vector layer.' } - ); - - @outargs = ( - { name => 'unit', type => 'unit', - desc => 'The stroke width unit.' } - ); - - %invoke = ( - code => <<'CODE' -{ - GimpVectorLayerOptions *options; - - options = gimp_vector_layer_get_options (layer); - if (! options) - success = FALSE; - - if (success) - unit = gimp_stroke_options_get_unit (options->stroke_options); -} -CODE - ); -} - -sub vector_layer_get_stroke_cap_style { - $blurb = 'Get the stroke cap style of a vector layer.'; - - $help = <<'HELP'; -This procedure returns the stroke cap style in a vector layer. -HELP - - &alxsa_pdb_misc('2025', '3.2'); - - @inargs = ( - { name => 'layer', type => 'vector_layer', - desc => 'The vector layer.' } - ); - - @outargs = ( - { name => 'cap_style', type => 'enum GimpCapStyle', - desc => 'The stroke cap style.' } - ); - - %invoke = ( - code => <<'CODE' -{ - GimpVectorLayerOptions *options; - - options = gimp_vector_layer_get_options (layer); - if (! options) - success = FALSE; - - if (success) - cap_style = gimp_stroke_options_get_cap_style (options->stroke_options); -} -CODE - ); -} - -sub vector_layer_get_stroke_join_style { - $blurb = 'Get the stroke join style of a vector layer.'; - - $help = <<'HELP'; -This procedure returns the stroke join style in a vector layer. -HELP - - &alxsa_pdb_misc('2025', '3.2'); - - @inargs = ( - { name => 'layer', type => 'vector_layer', - desc => 'The vector layer.' } - ); - - @outargs = ( - { name => 'join_style', type => 'enum GimpJoinStyle', - desc => 'The stroke join style.' } - ); - - %invoke = ( - code => <<'CODE' -{ - GimpVectorLayerOptions *options; - - options = gimp_vector_layer_get_options (layer); - if (! options) - success = FALSE; - - if (success) - join_style = gimp_stroke_options_get_join_style (options->stroke_options); -} -CODE - ); -} - -sub vector_layer_get_stroke_miter_limit { - $blurb = 'Get the stroke miter limit of a vector layer.'; - - $help = <<'HELP'; -This procedure returns the stroke miter limit in a vector layer. -HELP - - &alxsa_pdb_misc('2025', '3.2'); - - @inargs = ( - { name => 'layer', type => 'vector_layer', - desc => 'The vector layer.' } - ); - - @outargs = ( - { name => 'miter', type => "0 <= double", - desc => 'The stroke miter limit.' } - ); - - %invoke = ( - code => <<'CODE' -{ - GimpVectorLayerOptions *options; - - options = gimp_vector_layer_get_options (layer); - if (! options) - success = FALSE; - - if (success) - miter = gimp_stroke_options_get_miter_limit (options->stroke_options); -} -CODE - ); -} - -sub vector_layer_get_stroke_dash_offset { - $blurb = 'Get the stroke dash offset of a vector layer.'; - - $help = <<'HELP'; -This procedure returns the stroke dash offset in a vector layer. -HELP - - &alxsa_pdb_misc('2025', '3.2'); - - @inargs = ( - { name => 'layer', type => 'vector_layer', - desc => 'The vector layer.' } - ); - - @outargs = ( - { name => 'dash_offset', type => "0 <= double", - desc => 'The stroke dash offset.' } - ); - - %invoke = ( - code => <<'CODE' -{ - GimpVectorLayerOptions *options; - - options = gimp_vector_layer_get_options (layer); - if (! options) - success = FALSE; - - if (success) - dash_offset = gimp_stroke_options_get_dash_offset (options->stroke_options); -} -CODE - ); -} - -sub vector_layer_get_stroke_dash_pattern { - $blurb = 'Get the stroke dash pattern of a vector layer.'; - - $help = <<'HELP'; -This procedure returns the stroke dash pattern in a vector layer. -HELP - - &alxsa_pdb_misc('2025', '3.2'); - - @inargs = ( - { name => 'layer', type => 'vector_layer', - desc => 'The vector layer.' } - ); - - @outargs = ( - { name => 'dashes', type => 'doublearray', void_ret => 1, - desc => 'The stroke dash pattern array.', - array => { desc => 'The number of dashes in the dash_pattern array' } } - ); - - %invoke = ( - code => <<'CODE' -{ - GimpVectorLayerOptions *options; - - options = gimp_vector_layer_get_options (layer); - if (! options) - success = FALSE; - - if (success) - { - GArray *pattern = - gimp_stroke_options_get_dash_info (options->stroke_options); - - dashes = gimp_dash_pattern_to_double_array (pattern, &num_dashes); - } -} -CODE - ); -} - -sub vector_layer_set_stroke_color { - $blurb = 'Set the color of the stroke in the vector layer.'; - - $help = <<'HELP'; -This procedure sets the stroke color in the vector layer 'layer'. -HELP - - &alxsa_pdb_misc('2025', '3.2'); - - @inargs = ( - { name => 'layer', type => 'vector_layer', - desc => 'The vector layer' }, - { name => 'color', type => 'geglcolor', - desc => 'The color to use for the stroke' } - ); - - %invoke = ( - code => <<'CODE' -{ - GimpVectorLayerOptions *options; - - options = gimp_vector_layer_get_options (layer); - if (! options) - success = FALSE; - - if (success) - gimp_context_set_foreground (GIMP_CONTEXT (options->stroke_options), - color); -} -CODE - ); -} - -sub vector_layer_set_stroke_width { - $blurb = 'Set the stroke width of a vector layer.'; - - $help = <<'HELP'; -This procedure sets the stroke width in a vector layer. -HELP - - &alxsa_pdb_misc('2025', '3.2'); - - @inargs = ( - { name => 'layer', type => 'vector_layer', - desc => 'The vector layer.' }, - { name => 'width', type => "0 <= double", - desc => 'The stroke width.' } - ); - - %invoke = ( - code => <<'CODE' -{ - GimpVectorLayerOptions *options; - - options = gimp_vector_layer_get_options (layer); - if (! options) - success = FALSE; - - if (success) - g_object_set (options->stroke_options, - "width", width, - NULL); -} -CODE - ); -} - -sub vector_layer_set_stroke_width_unit { - $blurb = 'Set the stroke width unit of a vector layer.'; - - $help = <<'HELP'; -This procedure sets the stroke width unit in a vector layer. -HELP - - &alxsa_pdb_misc('2025', '3.2'); - - @inargs = ( - { name => 'layer', type => 'vector_layer', - desc => 'The vector layer.' }, - { name => 'unit', type => 'unit', - desc => 'The stroke width unit.' } - ); - - %invoke = ( - code => <<'CODE' -{ - GimpVectorLayerOptions *options; - - options = gimp_vector_layer_get_options (layer); - if (! options) - success = FALSE; - - if (success) - g_object_set (options->stroke_options, - "unit", unit, - NULL); -} -CODE - ); -} - -sub vector_layer_set_stroke_cap_style { - $blurb = 'Set the stroke cap style of a vector layer.'; - - $help = <<'HELP'; -This procedure sets the stroke cap style in a vector layer. -HELP - - &alxsa_pdb_misc('2025', '3.2'); - - @inargs = ( - { name => 'layer', type => 'vector_layer', - desc => 'The vector layer.' }, - { name => 'cap_style', type => 'enum GimpCapStyle', - desc => 'The stroke cap style.' } - ); - - %invoke = ( - code => <<'CODE' -{ - GimpVectorLayerOptions *options; - - options = gimp_vector_layer_get_options (layer); - if (! options) - success = FALSE; - - if (success) - g_object_set (options->stroke_options, - "cap-style", cap_style, - NULL); -} -CODE - ); -} - -sub vector_layer_set_stroke_join_style { - $blurb = 'Set the stroke join style of a vector layer.'; - - $help = <<'HELP'; -This procedure sets the stroke join style in a vector layer. -HELP - - &alxsa_pdb_misc('2025', '3.2'); - - @inargs = ( - { name => 'layer', type => 'vector_layer', - desc => 'The vector layer.' }, - { name => 'join_style', type => 'enum GimpJoinStyle', - desc => 'The stroke join style.' } - ); - - %invoke = ( - code => <<'CODE' -{ - GimpVectorLayerOptions *options; - - options = gimp_vector_layer_get_options (layer); - if (! options) - success = FALSE; - - if (success) - g_object_set (options->stroke_options, - "join-style", join_style, - NULL); -} -CODE - ); -} - -sub vector_layer_set_stroke_miter_limit { - $blurb = 'Set the stroke miter limit of a vector layer.'; - - $help = <<'HELP'; -This procedure sets the stroke miter limit in a vector layer. -HELP - - &alxsa_pdb_misc('2025', '3.2'); - - @inargs = ( - { name => 'layer', type => 'vector_layer', - desc => 'The vector layer.' }, - { name => 'miter', type => "0 <= double", - desc => 'The stroke miter limit.' } - ); - - %invoke = ( - code => <<'CODE' -{ - GimpVectorLayerOptions *options; - - options = gimp_vector_layer_get_options (layer); - if (! options) - success = FALSE; - - if (success) - g_object_set (options->stroke_options, - "miter-limit", miter, - NULL); -} -CODE - ); -} - -sub vector_layer_set_stroke_dash_offset { - $blurb = 'Set the stroke dash offset of a vector layer.'; - - $help = <<'HELP'; -This procedure sets the stroke dash offset in a vector layer. -HELP - - &alxsa_pdb_misc('2025', '3.2'); - - @inargs = ( - { name => 'layer', type => 'vector_layer', - desc => 'The vector layer.' }, - { name => 'dash_offset', type => "0 <= double", - desc => 'The stroke dash offset.' } - ); - - %invoke = ( - code => <<'CODE' -{ - GimpVectorLayerOptions *options; - - options = gimp_vector_layer_get_options (layer); - if (! options) - success = FALSE; - - if (success) - g_object_set (options->stroke_options, - "dash-offset", dash_offset, - NULL); -} -CODE - ); -} - -sub vector_layer_set_stroke_dash_pattern { - $blurb = 'Set the stroke dash pattern of a vector layer.'; - - $help = <<'HELP'; -This procedure sets the stroke dash pattern in a vector layer. -HELP - - &alxsa_pdb_misc('2025', '3.2'); - - @inargs = ( - { name => 'layer', type => 'vector_layer', - desc => 'The vector layer.' }, - { name => 'dashes', type => 'doublearray', - desc => 'The line dash pattern setting', - array => { desc => 'The number of dashes in the dash pattern array' } } - ); - - %invoke = ( - code => <<'CODE' -{ - GimpVectorLayerOptions *options; - GArray *pattern = NULL; - - options = gimp_vector_layer_get_options (layer); - if (! options) - success = FALSE; - - if (success) - { - if (num_dashes > 0) - { - pattern = gimp_dash_pattern_from_double_array (num_dashes, dashes); - - if (! pattern) - success = FALSE; - } - - if (success) - gimp_stroke_options_take_dash_pattern (options->stroke_options, - GIMP_DASH_CUSTOM, pattern); - } -} -CODE - ); -} - -sub vector_layer_get_enable_fill { - $blurb = 'Check if fill is enabled in the vector layer.'; - - $help = <<'HELP'; -This procedure checks if fill is enabled in the specified vector layer. -HELP - - &alxsa_pdb_misc('2025', '3.2'); - - @inargs = ( - { name => 'layer', type => 'vector_layer', - desc => 'The vector layer' } - ); - - @outargs = ( - { name => 'enable_fill', type => 'boolean', - desc => 'If the fill is enabled on the vector layer' } - ); - - %invoke = ( - code => <<'CODE' -{ - GimpVectorLayerOptions *options; - - options = gimp_vector_layer_get_options (layer); - if (! options) - success = FALSE; - - if (success) - g_object_get (options, - "enable-fill", &enable_fill, - NULL); -} -CODE - ); -} - -sub vector_layer_set_enable_fill { - $blurb = 'Set whether the fill is enabled on the vector layer.'; - - $help = <<'HELP'; -This procedure sets the fill's visibility in the vector layer 'layer'. -HELP - - &alxsa_pdb_misc('2025', '3.2'); - - @inargs = ( - { name => 'layer', type => 'vector_layer', - desc => 'The vector layer' }, - { name => 'enable_fill', type => 'boolean', - desc => 'Whether to enable the fill on the vector layer' } - ); - - %invoke = ( - code => <<'CODE' -{ - GimpVectorLayerOptions *options; - - options = gimp_vector_layer_get_options (layer); - if (! options) - success = FALSE; - - if (success) - g_object_set (options, - "enable-fill", enable_fill, - NULL); -} -CODE - ); -} - -sub vector_layer_get_fill_color { - $blurb = 'Get the color of the fill in a vector layer.'; - - $help = <<'HELP'; -This procedure returns the color of the fill in a vector layer. -HELP - - &marcus_pdb_misc('2008', '2.6'); - - @inargs = ( - { name => 'layer', type => 'vector_layer', - desc => 'The vector layer.' } - ); - - @outargs = ( - { name => 'color', type => 'geglcolor', - desc => 'The color of the fill.' } - ); - - %invoke = ( - code => <<'CODE' -{ - GimpVectorLayerOptions *options; - - options = gimp_vector_layer_get_options (layer); - if (! options) - success = FALSE; - - if (success) - color = - gegl_color_duplicate (gimp_context_get_foreground ( - GIMP_CONTEXT (options->fill_options))); -} -CODE - ); -} - -sub vector_layer_set_fill_color { - $blurb = 'Set the color of the fill in the vector layer.'; - - $help = <<'HELP'; -This procedure sets the fill color in the vector layer 'layer'. -HELP - - &alxsa_pdb_misc('2025', '3.2'); - - @inargs = ( - { name => 'layer', type => 'vector_layer', - desc => 'The vector layer' }, - { name => 'color', type => 'geglcolor', - desc => 'The color to use for the fill' } - ); - - %invoke = ( - code => <<'CODE' -{ - GimpVectorLayerOptions *options; - - options = gimp_vector_layer_get_options (layer); - if (! options) - success = FALSE; - - if (success) - gimp_context_set_foreground (GIMP_CONTEXT (options->fill_options), - color); -} -CODE - ); -} - -@headers = qw("libgimpbase/gimpbase.h" - "core/gimpcontext.h" - "core/gimpdashpattern.h" - "core/gimprasterizable.h" - "core/gimpstrokeoptions.h" - "path/gimpvectorlayer.h" - "path/gimpvectorlayeroptions.h" - "gimppdb-utils.h" - "gimppdberror.h" - "gimp-intl.h"); - -@procs = qw(vector_layer_new - vector_layer_refresh - vector_layer_get_enable_fill - vector_layer_get_enable_stroke - vector_layer_get_fill_color - vector_layer_get_path - vector_layer_get_stroke_cap_style - vector_layer_get_stroke_color - vector_layer_get_stroke_dash_offset - vector_layer_get_stroke_dash_pattern - vector_layer_get_stroke_join_style - vector_layer_get_stroke_miter_limit - vector_layer_get_stroke_width - vector_layer_get_stroke_width_unit - vector_layer_set_enable_fill - vector_layer_set_enable_stroke - vector_layer_set_fill_color - vector_layer_set_stroke_cap_style - vector_layer_set_stroke_color - vector_layer_set_stroke_dash_offset - vector_layer_set_stroke_dash_pattern - vector_layer_set_stroke_join_style - vector_layer_set_stroke_miter_limit - vector_layer_set_stroke_width - vector_layer_set_stroke_width_unit); - -%exports = (app => [@procs], lib => [@procs]); - -$desc = 'Vector layer procedures'; -$doc_title = 'gimpvectorlayer'; -$doc_short_desc = 'Functions for querying and manipulating vector layers.'; -$doc_long_desc = 'Functions for querying and manipulating vector layers.'; - -1; +# GIMP - The GNU Image Manipulation Program +# Copyright (C) 1995 Spencer Kimball and Peter Mattis + +# New Vector Layer PDB API + +# 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 . + + +sub vector_layer_new { + $blurb = 'Create a new vector layer.'; + + $help = <<'HELP'; +This procedure creates a new vector layer displaying the specified @path. By +default, the fill and stroke properties will be defined by the context. + + +The new layer still needs to be added to the image as this is not +automatic. Add the new layer with the [method@Image.insert_layer] +method. + + +The arguments are kept as simple as necessary for the basic case. All +vector attributes, however, can be modified with the appropriate +`gimp_vector_layer_set_*()` procedures. +HELP + + &alxsa_pdb_misc('2025', '3.2'); + + @inargs = ( + { name => 'image', type => 'image', + desc => 'The image' }, + { name => 'path', type => 'path', + desc => 'The path to create the layer from' } + ); + + @outargs = ( + { name => 'layer', type => 'vector_layer', + desc => 'The new vector layer. The object belongs to libgimp and you should not free it.' } + ); + + %invoke = ( + code => <<'CODE' +{ + if (path == NULL) + { + g_set_error (error, GIMP_PDB_ERROR, GIMP_PDB_ERROR_INVALID_ARGUMENT, + _("Failed to create vector layer")); + + success = FALSE; + } + + if (success) + { + layer = GIMP_VECTOR_LAYER (gimp_vector_layer_new (image, path, context)); + + if (! layer) + { + g_set_error (error, GIMP_PDB_ERROR, GIMP_PDB_ERROR_INVALID_ARGUMENT, + _("Failed to create vector layer")); + + success = FALSE; + } + } +} +CODE + ); +} + +sub vector_layer_refresh { + $blurb = 'Rerender the vector layer'; + + $help = <<'HELP'; +This procedure causes the vector layer to refresh itself after changes. +HELP + + &alxsa_pdb_misc('2025', '3.2'); + + @inargs = ( + { name => 'layer', type => 'vector_layer', + desc => 'The vector layer' } + ); + + %invoke = ( + code => <<'CODE' +{ + gimp_vector_layer_refresh (layer); +} +CODE + ); +} + +sub vector_layer_get_path { + $blurb = 'Gets the path from the vector layer if one is associated with it.'; + + $help = <<'HELP'; +This procedure returns the path from the vector layer if one is associated with it. +HELP + + &alxsa_pdb_misc('2025', '3.2'); + + @inargs = ( + { name => 'layer', type => 'vector_layer', + desc => 'The vector layer' } + ); + + @outargs = ( + { name => 'path', type => 'path', + desc => 'The path associated with the vector layer' } + ); + + %invoke = ( + code => <<'CODE' +{ + path = gimp_vector_layer_get_path (layer); + + if (! path) + success = FALSE; +} +CODE + ); +} + +sub vector_layer_get_enable_stroke { + $blurb = 'Check if stroke is enabled in the vector layer.'; + + $help = <<'HELP'; +This procedure checks if stroke is enabled in the specified vector layer. +HELP + + &alxsa_pdb_misc('2025', '3.2'); + + @inargs = ( + { name => 'layer', type => 'vector_layer', + desc => 'The vector layer' } + ); + + @outargs = ( + { name => 'enable_stroke', type => 'boolean', + desc => 'If the stroke is enabled on the vector layer' } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpVectorLayerOptions *options; + + options = gimp_vector_layer_get_options (layer); + if (! options) + success = FALSE; + + if (success) + g_object_get (options, + "enable-stroke", &enable_stroke, + NULL); +} +CODE + ); +} + +sub vector_layer_set_enable_stroke { + $blurb = 'Set whether the stroke is enabled on the vector layer.'; + + $help = <<'HELP'; +This procedure sets the stroke's visibility in the vector layer 'layer'. +HELP + + &alxsa_pdb_misc('2025', '3.2'); + + @inargs = ( + { name => 'layer', type => 'vector_layer', + desc => 'The vector layer' }, + { name => 'enable_stroke', type => 'boolean', + desc => 'Whether to enable the stroke on the vector layer' } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpVectorLayerOptions *options; + + options = gimp_vector_layer_get_options (layer); + if (! options) + success = FALSE; + + if (success) + { + g_object_set (options, + "enable-stroke", &enable_stroke, + NULL); + } +} +CODE + ); +} + +sub vector_layer_get_stroke_color { + $blurb = 'Get the color of the stroke in a vector layer.'; + + $help = <<'HELP'; +This procedure returns the color of the stroke in a vector layer. +HELP + + &marcus_pdb_misc('2008', '2.6'); + + @inargs = ( + { name => 'layer', type => 'vector_layer', + desc => 'The vector layer.' } + ); + + @outargs = ( + { name => 'color', type => 'geglcolor', + desc => 'The color of the stroke.' } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpVectorLayerOptions *options; + + options = gimp_vector_layer_get_options (layer); + if (! options) + success = FALSE; + + if (success) + color = gegl_color_duplicate (gimp_context_get_foreground ( + GIMP_CONTEXT (options->stroke_options))); +} +CODE + ); +} + +sub vector_layer_get_stroke_width { + $blurb = 'Get the stroke width of a vector layer.'; + + $help = <<'HELP'; +This procedure returns the stroke width in a vector layer. +HELP + + &alxsa_pdb_misc('2025', '3.2'); + + @inargs = ( + { name => 'layer', type => 'vector_layer', + desc => 'The vector layer.' } + ); + + @outargs = ( + { name => 'width', type => "0 <= double", + desc => 'The stroke width.' } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpVectorLayerOptions *options; + + options = gimp_vector_layer_get_options (layer); + if (! options) + success = FALSE; + + if (success) + width = gimp_stroke_options_get_width (options->stroke_options); +} +CODE + ); +} + +sub vector_layer_get_stroke_width_unit { + $blurb = 'Get the stroke width unit of a vector layer.'; + + $help = <<'HELP'; +This procedure returns the stroke width unit in a vector layer. +HELP + + &alxsa_pdb_misc('2025', '3.2'); + + @inargs = ( + { name => 'layer', type => 'vector_layer', + desc => 'The vector layer.' } + ); + + @outargs = ( + { name => 'unit', type => 'unit', + desc => 'The stroke width unit.' } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpVectorLayerOptions *options; + + options = gimp_vector_layer_get_options (layer); + if (! options) + success = FALSE; + + if (success) + unit = gimp_stroke_options_get_unit (options->stroke_options); +} +CODE + ); +} + +sub vector_layer_get_stroke_cap_style { + $blurb = 'Get the stroke cap style of a vector layer.'; + + $help = <<'HELP'; +This procedure returns the stroke cap style in a vector layer. +HELP + + &alxsa_pdb_misc('2025', '3.2'); + + @inargs = ( + { name => 'layer', type => 'vector_layer', + desc => 'The vector layer.' } + ); + + @outargs = ( + { name => 'cap_style', type => 'enum GimpCapStyle', + desc => 'The stroke cap style.' } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpVectorLayerOptions *options; + + options = gimp_vector_layer_get_options (layer); + if (! options) + success = FALSE; + + if (success) + cap_style = gimp_stroke_options_get_cap_style (options->stroke_options); +} +CODE + ); +} + +sub vector_layer_get_stroke_join_style { + $blurb = 'Get the stroke join style of a vector layer.'; + + $help = <<'HELP'; +This procedure returns the stroke join style in a vector layer. +HELP + + &alxsa_pdb_misc('2025', '3.2'); + + @inargs = ( + { name => 'layer', type => 'vector_layer', + desc => 'The vector layer.' } + ); + + @outargs = ( + { name => 'join_style', type => 'enum GimpJoinStyle', + desc => 'The stroke join style.' } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpVectorLayerOptions *options; + + options = gimp_vector_layer_get_options (layer); + if (! options) + success = FALSE; + + if (success) + join_style = gimp_stroke_options_get_join_style (options->stroke_options); +} +CODE + ); +} + +sub vector_layer_get_stroke_miter_limit { + $blurb = 'Get the stroke miter limit of a vector layer.'; + + $help = <<'HELP'; +This procedure returns the stroke miter limit in a vector layer. +HELP + + &alxsa_pdb_misc('2025', '3.2'); + + @inargs = ( + { name => 'layer', type => 'vector_layer', + desc => 'The vector layer.' } + ); + + @outargs = ( + { name => 'miter', type => "0 <= double", + desc => 'The stroke miter limit.' } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpVectorLayerOptions *options; + + options = gimp_vector_layer_get_options (layer); + if (! options) + success = FALSE; + + if (success) + miter = gimp_stroke_options_get_miter_limit (options->stroke_options); +} +CODE + ); +} + +sub vector_layer_get_stroke_dash_offset { + $blurb = 'Get the stroke dash offset of a vector layer.'; + + $help = <<'HELP'; +This procedure returns the stroke dash offset in a vector layer. +HELP + + &alxsa_pdb_misc('2025', '3.2'); + + @inargs = ( + { name => 'layer', type => 'vector_layer', + desc => 'The vector layer.' } + ); + + @outargs = ( + { name => 'dash_offset', type => "0 <= double", + desc => 'The stroke dash offset.' } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpVectorLayerOptions *options; + + options = gimp_vector_layer_get_options (layer); + if (! options) + success = FALSE; + + if (success) + dash_offset = gimp_stroke_options_get_dash_offset (options->stroke_options); +} +CODE + ); +} + +sub vector_layer_get_stroke_dash_pattern { + $blurb = 'Get the stroke dash pattern of a vector layer.'; + + $help = <<'HELP'; +This procedure returns the stroke dash pattern in a vector layer. +HELP + + &alxsa_pdb_misc('2025', '3.2'); + + @inargs = ( + { name => 'layer', type => 'vector_layer', + desc => 'The vector layer.' } + ); + + @outargs = ( + { name => 'dashes', type => 'doublearray', void_ret => 1, + desc => 'The stroke dash pattern array.', + array => { desc => 'The number of dashes in the dash_pattern array' } } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpVectorLayerOptions *options; + + options = gimp_vector_layer_get_options (layer); + if (! options) + success = FALSE; + + if (success) + { + GArray *pattern = + gimp_stroke_options_get_dash_info (options->stroke_options); + + dashes = gimp_dash_pattern_to_double_array (pattern, &num_dashes); + } +} +CODE + ); +} + +sub vector_layer_set_stroke_color { + $blurb = 'Set the color of the stroke in the vector layer.'; + + $help = <<'HELP'; +This procedure sets the stroke color in the vector layer 'layer'. +HELP + + &alxsa_pdb_misc('2025', '3.2'); + + @inargs = ( + { name => 'layer', type => 'vector_layer', + desc => 'The vector layer' }, + { name => 'color', type => 'geglcolor', + desc => 'The color to use for the stroke' } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpVectorLayerOptions *options; + + options = gimp_vector_layer_get_options (layer); + if (! options) + success = FALSE; + + if (success) + gimp_context_set_foreground (GIMP_CONTEXT (options->stroke_options), + color); +} +CODE + ); +} + +sub vector_layer_set_stroke_width { + $blurb = 'Set the stroke width of a vector layer.'; + + $help = <<'HELP'; +This procedure sets the stroke width in a vector layer. +HELP + + &alxsa_pdb_misc('2025', '3.2'); + + @inargs = ( + { name => 'layer', type => 'vector_layer', + desc => 'The vector layer.' }, + { name => 'width', type => "0 <= double", + desc => 'The stroke width.' } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpVectorLayerOptions *options; + + options = gimp_vector_layer_get_options (layer); + if (! options) + success = FALSE; + + if (success) + g_object_set (options->stroke_options, + "width", width, + NULL); +} +CODE + ); +} + +sub vector_layer_set_stroke_width_unit { + $blurb = 'Set the stroke width unit of a vector layer.'; + + $help = <<'HELP'; +This procedure sets the stroke width unit in a vector layer. +HELP + + &alxsa_pdb_misc('2025', '3.2'); + + @inargs = ( + { name => 'layer', type => 'vector_layer', + desc => 'The vector layer.' }, + { name => 'unit', type => 'unit', + desc => 'The stroke width unit.' } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpVectorLayerOptions *options; + + options = gimp_vector_layer_get_options (layer); + if (! options) + success = FALSE; + + if (success) + g_object_set (options->stroke_options, + "unit", unit, + NULL); +} +CODE + ); +} + +sub vector_layer_set_stroke_cap_style { + $blurb = 'Set the stroke cap style of a vector layer.'; + + $help = <<'HELP'; +This procedure sets the stroke cap style in a vector layer. +HELP + + &alxsa_pdb_misc('2025', '3.2'); + + @inargs = ( + { name => 'layer', type => 'vector_layer', + desc => 'The vector layer.' }, + { name => 'cap_style', type => 'enum GimpCapStyle', + desc => 'The stroke cap style.' } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpVectorLayerOptions *options; + + options = gimp_vector_layer_get_options (layer); + if (! options) + success = FALSE; + + if (success) + g_object_set (options->stroke_options, + "cap-style", cap_style, + NULL); +} +CODE + ); +} + +sub vector_layer_set_stroke_join_style { + $blurb = 'Set the stroke join style of a vector layer.'; + + $help = <<'HELP'; +This procedure sets the stroke join style in a vector layer. +HELP + + &alxsa_pdb_misc('2025', '3.2'); + + @inargs = ( + { name => 'layer', type => 'vector_layer', + desc => 'The vector layer.' }, + { name => 'join_style', type => 'enum GimpJoinStyle', + desc => 'The stroke join style.' } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpVectorLayerOptions *options; + + options = gimp_vector_layer_get_options (layer); + if (! options) + success = FALSE; + + if (success) + g_object_set (options->stroke_options, + "join-style", join_style, + NULL); +} +CODE + ); +} + +sub vector_layer_set_stroke_miter_limit { + $blurb = 'Set the stroke miter limit of a vector layer.'; + + $help = <<'HELP'; +This procedure sets the stroke miter limit in a vector layer. +HELP + + &alxsa_pdb_misc('2025', '3.2'); + + @inargs = ( + { name => 'layer', type => 'vector_layer', + desc => 'The vector layer.' }, + { name => 'miter', type => "0 <= double", + desc => 'The stroke miter limit.' } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpVectorLayerOptions *options; + + options = gimp_vector_layer_get_options (layer); + if (! options) + success = FALSE; + + if (success) + g_object_set (options->stroke_options, + "miter-limit", miter, + NULL); +} +CODE + ); +} + +sub vector_layer_set_stroke_dash_offset { + $blurb = 'Set the stroke dash offset of a vector layer.'; + + $help = <<'HELP'; +This procedure sets the stroke dash offset in a vector layer. +HELP + + &alxsa_pdb_misc('2025', '3.2'); + + @inargs = ( + { name => 'layer', type => 'vector_layer', + desc => 'The vector layer.' }, + { name => 'dash_offset', type => "0 <= double", + desc => 'The stroke dash offset.' } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpVectorLayerOptions *options; + + options = gimp_vector_layer_get_options (layer); + if (! options) + success = FALSE; + + if (success) + g_object_set (options->stroke_options, + "dash-offset", dash_offset, + NULL); +} +CODE + ); +} + +sub vector_layer_set_stroke_dash_pattern { + $blurb = 'Set the stroke dash pattern of a vector layer.'; + + $help = <<'HELP'; +This procedure sets the stroke dash pattern in a vector layer. +HELP + + &alxsa_pdb_misc('2025', '3.2'); + + @inargs = ( + { name => 'layer', type => 'vector_layer', + desc => 'The vector layer.' }, + { name => 'dashes', type => 'doublearray', + desc => 'The line dash pattern setting', + array => { desc => 'The number of dashes in the dash pattern array' } } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpVectorLayerOptions *options; + GArray *pattern = NULL; + + options = gimp_vector_layer_get_options (layer); + if (! options) + success = FALSE; + + if (success) + { + if (num_dashes > 0) + { + pattern = gimp_dash_pattern_from_double_array (num_dashes, dashes); + + if (! pattern) + success = FALSE; + } + + if (success) + gimp_stroke_options_take_dash_pattern (options->stroke_options, + GIMP_DASH_CUSTOM, pattern); + } +} +CODE + ); +} + +sub vector_layer_get_enable_fill { + $blurb = 'Check if fill is enabled in the vector layer.'; + + $help = <<'HELP'; +This procedure checks if fill is enabled in the specified vector layer. +HELP + + &alxsa_pdb_misc('2025', '3.2'); + + @inargs = ( + { name => 'layer', type => 'vector_layer', + desc => 'The vector layer' } + ); + + @outargs = ( + { name => 'enable_fill', type => 'boolean', + desc => 'If the fill is enabled on the vector layer' } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpVectorLayerOptions *options; + + options = gimp_vector_layer_get_options (layer); + if (! options) + success = FALSE; + + if (success) + g_object_get (options, + "enable-fill", &enable_fill, + NULL); +} +CODE + ); +} + +sub vector_layer_set_enable_fill { + $blurb = 'Set whether the fill is enabled on the vector layer.'; + + $help = <<'HELP'; +This procedure sets the fill's visibility in the vector layer 'layer'. +HELP + + &alxsa_pdb_misc('2025', '3.2'); + + @inargs = ( + { name => 'layer', type => 'vector_layer', + desc => 'The vector layer' }, + { name => 'enable_fill', type => 'boolean', + desc => 'Whether to enable the fill on the vector layer' } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpVectorLayerOptions *options; + + options = gimp_vector_layer_get_options (layer); + if (! options) + success = FALSE; + + if (success) + g_object_set (options, + "enable-fill", enable_fill, + NULL); +} +CODE + ); +} + +sub vector_layer_get_fill_color { + $blurb = 'Get the color of the fill in a vector layer.'; + + $help = <<'HELP'; +This procedure returns the color of the fill in a vector layer. +HELP + + &marcus_pdb_misc('2008', '2.6'); + + @inargs = ( + { name => 'layer', type => 'vector_layer', + desc => 'The vector layer.' } + ); + + @outargs = ( + { name => 'color', type => 'geglcolor', + desc => 'The color of the fill.' } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpVectorLayerOptions *options; + + options = gimp_vector_layer_get_options (layer); + if (! options) + success = FALSE; + + if (success) + color = + gegl_color_duplicate (gimp_context_get_foreground ( + GIMP_CONTEXT (options->fill_options))); +} +CODE + ); +} + +sub vector_layer_set_fill_color { + $blurb = 'Set the color of the fill in the vector layer.'; + + $help = <<'HELP'; +This procedure sets the fill color in the vector layer 'layer'. +HELP + + &alxsa_pdb_misc('2025', '3.2'); + + @inargs = ( + { name => 'layer', type => 'vector_layer', + desc => 'The vector layer' }, + { name => 'color', type => 'geglcolor', + desc => 'The color to use for the fill' } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpVectorLayerOptions *options; + + options = gimp_vector_layer_get_options (layer); + if (! options) + success = FALSE; + + if (success) + gimp_context_set_foreground (GIMP_CONTEXT (options->fill_options), + color); +} +CODE + ); +} + +@headers = qw("libgimpbase/gimpbase.h" + "core/gimpcontext.h" + "core/gimpdashpattern.h" + "core/gimprasterizable.h" + "core/gimpstrokeoptions.h" + "path/gimpvectorlayer.h" + "path/gimpvectorlayeroptions.h" + "gimppdb-utils.h" + "gimppdberror.h" + "gimp-intl.h"); + +@procs = qw(vector_layer_new + vector_layer_refresh + vector_layer_get_enable_fill + vector_layer_get_enable_stroke + vector_layer_get_fill_color + vector_layer_get_path + vector_layer_get_stroke_cap_style + vector_layer_get_stroke_color + vector_layer_get_stroke_dash_offset + vector_layer_get_stroke_dash_pattern + vector_layer_get_stroke_join_style + vector_layer_get_stroke_miter_limit + vector_layer_get_stroke_width + vector_layer_get_stroke_width_unit + vector_layer_set_enable_fill + vector_layer_set_enable_stroke + vector_layer_set_fill_color + vector_layer_set_stroke_cap_style + vector_layer_set_stroke_color + vector_layer_set_stroke_dash_offset + vector_layer_set_stroke_dash_pattern + vector_layer_set_stroke_join_style + vector_layer_set_stroke_miter_limit + vector_layer_set_stroke_width + vector_layer_set_stroke_width_unit); + +%exports = (app => [@procs], lib => [@procs]); + +$desc = 'Vector layer procedures'; +$doc_title = 'gimpvectorlayer'; +$doc_short_desc = 'Functions for querying and manipulating vector layers.'; +$doc_long_desc = 'Functions for querying and manipulating vector layers.'; + +1;