summaryrefslogtreecommitdiffstats
path: root/app/core/gimpimage-private.h
diff options
context:
space:
mode:
Diffstat (limited to 'app/core/gimpimage-private.h')
-rw-r--r--app/core/gimpimage-private.h149
1 files changed, 149 insertions, 0 deletions
diff --git a/app/core/gimpimage-private.h b/app/core/gimpimage-private.h
new file mode 100644
index 0000000..77687f0
--- /dev/null
+++ b/app/core/gimpimage-private.h
@@ -0,0 +1,149 @@
+/* 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/>.
+ */
+
+#ifndef __GIMP_IMAGE_PRIVATE_H__
+#define __GIMP_IMAGE_PRIVATE_H__
+
+
+typedef struct _GimpImageFlushAccumulator GimpImageFlushAccumulator;
+
+struct _GimpImageFlushAccumulator
+{
+ gboolean alpha_changed;
+ gboolean mask_changed;
+ gboolean floating_selection_changed;
+ gboolean preview_invalidated;
+};
+
+
+struct _GimpImagePrivate
+{
+ gint ID; /* provides a unique ID */
+
+ GimpPlugInProcedure *load_proc; /* procedure used for loading */
+ GimpPlugInProcedure *save_proc; /* last save procedure used */
+ GimpPlugInProcedure *export_proc; /* last export procedure used */
+
+ gchar *display_name; /* display basename */
+ gchar *display_path; /* display full path */
+ gint width; /* width in pixels */
+ gint height; /* height in pixels */
+ gdouble xresolution; /* image x-res, in dpi */
+ gdouble yresolution; /* image y-res, in dpi */
+ GimpUnit resolution_unit; /* resolution unit */
+ gboolean resolution_set; /* resolution explicitly set */
+ GimpImageBaseType base_type; /* base gimp_image type */
+ GimpPrecision precision; /* image's precision */
+ GimpLayerMode new_layer_mode; /* default mode of new layers */
+
+ gint show_all; /* render full image content */
+ GeglRectangle bounding_box; /* image content bounding box */
+ gint bounding_box_freeze_count;
+ gboolean bounding_box_update_pending;
+ GeglBuffer *pickable_buffer;
+
+ guchar *colormap; /* colormap (for indexed) */
+ gint n_colors; /* # of colors (for indexed) */
+ GimpPalette *palette; /* palette of colormap */
+ const Babl *babl_palette_rgb; /* palette's RGB Babl format */
+ const Babl *babl_palette_rgba; /* palette's RGBA Babl format */
+
+ gboolean is_color_managed; /* is this image color managed */
+ GimpColorProfile *color_profile; /* image's color profile */
+ gboolean converting; /* color model or profile in middle of conversion? */
+
+ /* Cached color transforms: from layer to sRGB u8 and double, and back */
+ gboolean color_transforms_created;
+ GimpColorTransform *transform_to_srgb_u8;
+ GimpColorTransform *transform_from_srgb_u8;
+ GimpColorTransform *transform_to_srgb_double;
+ GimpColorTransform *transform_from_srgb_double;
+
+ GimpMetadata *metadata; /* image's metadata */
+
+ GFile *file; /* the image's XCF file */
+ GFile *imported_file; /* the image's source file */
+ GFile *exported_file; /* the image's export file */
+ GFile *save_a_copy_file; /* the image's save-a-copy file */
+ GFile *untitled_file; /* a file saying "Untitled" */
+
+ gboolean xcf_compression; /* XCF compression enabled? */
+
+ gint dirty; /* dirty flag -- # of ops */
+ gint64 dirty_time; /* time when image became dirty */
+ gint export_dirty; /* 'dirty' but for export */
+
+ gint undo_freeze_count; /* counts the _freeze's */
+
+ gint instance_count; /* number of instances */
+ gint disp_count; /* number of displays */
+
+ GimpTattoo tattoo_state; /* the last used tattoo */
+
+ GimpProjection *projection; /* projection layers & channels */
+ GeglNode *graph; /* GEGL projection graph */
+ GeglNode *visible_mask; /* component visibility node */
+
+ GList *symmetries; /* Painting symmetries */
+ GimpSymmetry *active_symmetry; /* Active symmetry */
+
+ GList *guides; /* guides */
+ GimpGrid *grid; /* grid */
+ GList *sample_points; /* color sample points */
+
+ /* Layer/Channel attributes */
+ GimpItemTree *layers; /* the tree of layers */
+ GimpItemTree *channels; /* the tree of masks */
+ GimpItemTree *vectors; /* the tree of vectors */
+ GSList *layer_stack; /* the layers in MRU order */
+
+ GQuark layer_offset_x_handler;
+ GQuark layer_offset_y_handler;
+ GQuark layer_bounding_box_handler;
+ GQuark layer_alpha_handler;
+ GQuark channel_name_changed_handler;
+ GQuark channel_color_changed_handler;
+
+ GimpLayer *floating_sel; /* the FS layer */
+ GimpChannel *selection_mask; /* the selection mask channel */
+
+ GimpParasiteList *parasites; /* Plug-in parasite data */
+
+ gboolean visible[MAX_CHANNELS]; /* visible channels */
+ gboolean active[MAX_CHANNELS]; /* active channels */
+
+ gboolean quick_mask_state; /* TRUE if quick mask is on */
+ gboolean quick_mask_inverted; /* TRUE if quick mask is inverted */
+ GimpRGB quick_mask_color; /* rgba triplet of the color */
+
+ /* Undo apparatus */
+ GimpUndoStack *undo_stack; /* stack for undo operations */
+ GimpUndoStack *redo_stack; /* stack for redo operations */
+ gint group_count; /* nested undo groups */
+ GimpUndoType pushing_undo_group; /* undo group status flag */
+
+ /* Signal emission accumulator */
+ GimpImageFlushAccumulator flush_accum;
+};
+
+#define GIMP_IMAGE_GET_PRIVATE(image) (((GimpImage *) (image))->priv)
+
+void gimp_image_take_mask (GimpImage *image,
+ GimpChannel *mask);
+
+
+#endif /* __GIMP_IMAGE_PRIVATE_H__ */