diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 18:30:19 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 18:30:19 +0000 |
commit | 5c1676dfe6d2f3c837a5e074117b45613fd29a72 (patch) | |
tree | cbffb45144febf451e54061db2b21395faf94bfe /app/core/gimppaintinfo.c | |
parent | Initial commit. (diff) | |
download | gimp-5c1676dfe6d2f3c837a5e074117b45613fd29a72.tar.xz gimp-5c1676dfe6d2f3c837a5e074117b45613fd29a72.zip |
Adding upstream version 2.10.34.upstream/2.10.34upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | app/core/gimppaintinfo.c | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/app/core/gimppaintinfo.c b/app/core/gimppaintinfo.c new file mode 100644 index 0000000..c7d6d81 --- /dev/null +++ b/app/core/gimppaintinfo.c @@ -0,0 +1,142 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <gdk-pixbuf/gdk-pixbuf.h> +#include <gegl.h> + +#include "core-types.h" + +#include "paint/gimppaintoptions.h" + +#include "gimp.h" +#include "gimppaintinfo.h" + + +static void gimp_paint_info_dispose (GObject *object); +static void gimp_paint_info_finalize (GObject *object); +static gchar * gimp_paint_info_get_description (GimpViewable *viewable, + gchar **tooltip); + + +G_DEFINE_TYPE (GimpPaintInfo, gimp_paint_info, GIMP_TYPE_VIEWABLE) + +#define parent_class gimp_paint_info_parent_class + + +static void +gimp_paint_info_class_init (GimpPaintInfoClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GimpViewableClass *viewable_class = GIMP_VIEWABLE_CLASS (klass); + + object_class->dispose = gimp_paint_info_dispose; + object_class->finalize = gimp_paint_info_finalize; + + viewable_class->get_description = gimp_paint_info_get_description; +} + +static void +gimp_paint_info_init (GimpPaintInfo *paint_info) +{ + paint_info->gimp = NULL; + paint_info->paint_type = G_TYPE_NONE; + paint_info->blurb = NULL; + paint_info->paint_options = NULL; +} + +static void +gimp_paint_info_dispose (GObject *object) +{ + GimpPaintInfo *paint_info = GIMP_PAINT_INFO (object); + + if (paint_info->paint_options) + { + g_object_run_dispose (G_OBJECT (paint_info->paint_options)); + g_clear_object (&paint_info->paint_options); + } + + G_OBJECT_CLASS (parent_class)->dispose (object); +} + +static void +gimp_paint_info_finalize (GObject *object) +{ + GimpPaintInfo *paint_info = GIMP_PAINT_INFO (object); + + g_clear_pointer (&paint_info->blurb, g_free); + + G_OBJECT_CLASS (parent_class)->finalize (object); +} + +static gchar * +gimp_paint_info_get_description (GimpViewable *viewable, + gchar **tooltip) +{ + GimpPaintInfo *paint_info = GIMP_PAINT_INFO (viewable); + + return g_strdup (paint_info->blurb); +} + +GimpPaintInfo * +gimp_paint_info_new (Gimp *gimp, + GType paint_type, + GType paint_options_type, + const gchar *identifier, + const gchar *blurb, + const gchar *icon_name) +{ + GimpPaintInfo *paint_info; + + g_return_val_if_fail (GIMP_IS_GIMP (gimp), NULL); + g_return_val_if_fail (identifier != NULL, NULL); + g_return_val_if_fail (blurb != NULL, NULL); + g_return_val_if_fail (icon_name != NULL, NULL); + + paint_info = g_object_new (GIMP_TYPE_PAINT_INFO, + "name", identifier, + "icon-name", icon_name, + NULL); + + paint_info->gimp = gimp; + paint_info->paint_type = paint_type; + paint_info->paint_options_type = paint_options_type; + paint_info->blurb = g_strdup (blurb); + + paint_info->paint_options = gimp_paint_options_new (paint_info); + + return paint_info; +} + +void +gimp_paint_info_set_standard (Gimp *gimp, + GimpPaintInfo *paint_info) +{ + g_return_if_fail (GIMP_IS_GIMP (gimp)); + g_return_if_fail (! paint_info || GIMP_IS_PAINT_INFO (paint_info)); + + g_set_object (&gimp->standard_paint_info, paint_info); +} + +GimpPaintInfo * +gimp_paint_info_get_standard (Gimp *gimp) +{ + g_return_val_if_fail (GIMP_IS_GIMP (gimp), NULL); + + return gimp->standard_paint_info; +} |