static void gimp_image_undo_constructed (GObject *object) { GimpImageUndo *image_undo = GIMP_IMAGE_UNDO (object); GimpImage *image; G_OBJECT_CLASS (parent_class)->constructed (object); image = GIMP_UNDO (object)->image; switch (GIMP_UNDO (object)->undo_type) { case GIMP_UNDO_IMAGE_TYPE: image_undo->base_type = gimp_image_get_base_type (image); break; case GIMP_UNDO_IMAGE_PRECISION: image_undo->precision = gimp_image_get_precision (image); break; case GIMP_UNDO_IMAGE_SIZE: image_undo->width = gimp_image_get_width (image); image_undo->height = gimp_image_get_height (image); break; case GIMP_UNDO_IMAGE_RESOLUTION: gimp_image_get_resolution (image, &image_undo->xresolution, &image_undo->yresolution); image_undo->resolution_unit = gimp_image_get_unit (image); break; case GIMP_UNDO_IMAGE_GRID: g_assert (GIMP_IS_GRID (image_undo->grid)); break; case GIMP_UNDO_IMAGE_COLORMAP: image_undo->num_colors = gimp_image_get_colormap_size (image); image_undo->colormap = g_memdup (gimp_image_get_colormap (image), GIMP_IMAGE_COLORMAP_SIZE); break; case GIMP_UNDO_IMAGE_METADATA: image_undo->metadata = gimp_metadata_duplicate (gimp_image_get_metadata (image)); break; case GIMP_UNDO_PARASITE_ATTACH: case GIMP_UNDO_PARASITE_REMOVE: g_assert (image_undo->parasite_name != NULL); image_undo->parasite = gimp_parasite_copy (gimp_image_parasite_find (image, image_undo->parasite_name)); break; default: g_assert_not_reached (); } }
GimpUndo * gimp_image_undo_push_image_grid (GimpImage *image, const gchar *undo_desc, GimpGrid *grid) { g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL); g_return_val_if_fail (GIMP_IS_GRID (grid), NULL); return gimp_image_undo_push (image, GIMP_TYPE_IMAGE_UNDO, GIMP_UNDO_IMAGE_GRID, undo_desc, GIMP_DIRTY_IMAGE_META, "grid", grid, NULL); }
GtkWidget * gimp_grid_editor_new (GimpGrid *grid, GimpContext *context, gdouble xresolution, gdouble yresolution) { g_return_val_if_fail (GIMP_IS_GRID (grid), NULL); return g_object_new (GIMP_TYPE_GRID_EDITOR, "grid", grid, "context", context, "xresolution", xresolution, "yresolution", yresolution, NULL); }
void gimp_display_shell_set_grid_style (GimpDisplayShell *shell, cairo_t *cr, GimpGrid *grid) { g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell)); g_return_if_fail (cr != NULL); g_return_if_fail (GIMP_IS_GRID (grid)); cairo_set_line_width (cr, 1.0); switch (grid->style) { cairo_pattern_t *pattern; case GIMP_GRID_ON_OFF_DASH: case GIMP_GRID_DOUBLE_DASH: if (grid->style == GIMP_GRID_DOUBLE_DASH) { pattern = gimp_cairo_stipple_pattern_create (&grid->fgcolor, &grid->bgcolor, 0); } else { GimpRGB bg = { 0.0, 0.0, 0.0, 0.0 }; pattern = gimp_cairo_stipple_pattern_create (&grid->fgcolor, &bg, 0); } cairo_set_source (cr, pattern); cairo_pattern_destroy (pattern); break; case GIMP_GRID_DOTS: case GIMP_GRID_INTERSECTIONS: case GIMP_GRID_SOLID: cairo_set_source_rgb (cr, grid->fgcolor.r, grid->fgcolor.g, grid->fgcolor.b); break; } }
GimpParasite * gimp_grid_to_parasite (const GimpGrid *grid) { GimpParasite *parasite; gchar *str; g_return_val_if_fail (GIMP_IS_GRID (grid), NULL); str = gimp_config_serialize_to_string (GIMP_CONFIG (grid), NULL); g_return_val_if_fail (str != NULL, NULL); parasite = gimp_parasite_new (gimp_grid_parasite_name (), GIMP_PARASITE_PERSISTENT, strlen (str) + 1, str); g_free (str); return parasite; }