static void gimp_cage_tool_image_map_flush (GimpImageMap *image_map, GimpTool *tool) { GimpImage *image = gimp_display_get_image (tool->display); gimp_projection_flush (gimp_image_get_projection (image)); }
static void gimp_seamless_clone_tool_filter_flush (GimpDrawableFilter *filter, GimpTool *tool) { GimpImage *image = gimp_display_get_image (tool->display); gimp_projection_flush (gimp_image_get_projection (image)); }
static void gimp_projection_projectable_flush (GimpProjectable *projectable, gboolean invalidate_preview, GimpProjection *proj) { if (invalidate_preview) proj->invalidate_preview = TRUE; gimp_projection_flush (proj); }
static GeglBuffer * gimp_projection_get_buffer (GimpPickable *pickable) { GimpProjection *proj = GIMP_PROJECTION (pickable); if (! proj->buffer) { GeglNode *graph; const Babl *format; gint width; gint height; graph = gimp_projectable_get_graph (proj->projectable); format = gimp_projection_get_format (GIMP_PICKABLE (proj)); gimp_projectable_get_size (proj->projectable, &width, &height); proj->buffer = gegl_buffer_new (GEGL_RECTANGLE (0, 0, width, height), format); proj->validate_handler = gimp_tile_handler_projection_new (graph); gegl_buffer_add_handler (proj->buffer, proj->validate_handler); /* This used to call gimp_tile_handler_projection_invalidate() * which forced the entire projection to be constructed in one * go for new images, causing a potentially huge delay. Now we * initially validate stuff the normal way, which makes the * image appear incrementally, but it keeps everything * responsive. */ gimp_projection_add_update_area (proj, 0, 0, width, height); proj->invalidate_preview = TRUE; gimp_projection_flush (proj); } return proj->buffer; }
static void gimp_n_point_deformation_tool_apply_deformation (GimpNPointDeformationTool *npd_tool) { GimpTool *tool = GIMP_TOOL (npd_tool); GimpNPointDeformationOptions *npd_options; GeglBuffer *buffer; GimpImage *image; gint width, height, prev; npd_options = GIMP_N_POINT_DEFORMATION_TOOL_GET_OPTIONS (npd_tool); image = gimp_display_get_image (tool->display); buffer = gimp_drawable_get_buffer (tool->drawable); width = gegl_buffer_get_width (buffer); height = gegl_buffer_get_height (buffer); prev = npd_options->rigidity; npd_options->rigidity = 0; gimp_n_point_deformation_tool_set_options (npd_tool, npd_options); npd_options->rigidity = prev; gimp_drawable_push_undo (tool->drawable, _("N-Point Deformation"), NULL, 0, 0, width, height); gimp_gegl_apply_operation (NULL, NULL, _("N-Point Deformation"), npd_tool->npd_node, gimp_drawable_get_buffer (tool->drawable), NULL); gimp_drawable_update (tool->drawable, 0, 0, width, height); gimp_projection_flush (gimp_image_get_projection (image)); }