316
323
GimpLayer *layer;
317
324
GimpLayer *new_layer;
318
return_if_no_image (gimage, data);
325
return_if_no_image (image, data);
320
layer = gimp_image_get_active_layer (gimage);
327
layer = gimp_image_get_active_layer (image);
322
329
new_layer = (GimpLayer *) action_select_object ((GimpActionSelectType) value,
324
331
(GimpObject *) layer);
326
333
if (new_layer && new_layer != layer)
328
gimp_image_set_active_layer (gimage, new_layer);
329
gimp_image_flush (gimage);
335
gimp_image_set_active_layer (image, new_layer);
336
gimp_image_flush (image);
334
341
layers_raise_cmd_callback (GtkAction *action,
338
345
GimpLayer *layer;
339
return_if_no_layer (gimage, layer, data);
346
return_if_no_layer (image, layer, data);
341
gimp_image_raise_layer (gimage, layer);
342
gimp_image_flush (gimage);
348
gimp_image_raise_layer (image, layer);
349
gimp_image_flush (image);
346
353
layers_raise_to_top_cmd_callback (GtkAction *action,
350
357
GimpLayer *layer;
351
return_if_no_layer (gimage, layer, data);
358
return_if_no_layer (image, layer, data);
353
gimp_image_raise_layer_to_top (gimage, layer);
354
gimp_image_flush (gimage);
360
gimp_image_raise_layer_to_top (image, layer);
361
gimp_image_flush (image);
358
365
layers_lower_cmd_callback (GtkAction *action,
362
369
GimpLayer *layer;
363
return_if_no_layer (gimage, layer, data);
370
return_if_no_layer (image, layer, data);
365
gimp_image_lower_layer (gimage, layer);
366
gimp_image_flush (gimage);
372
gimp_image_lower_layer (image, layer);
373
gimp_image_flush (image);
370
377
layers_lower_to_bottom_cmd_callback (GtkAction *action,
374
381
GimpLayer *layer;
375
return_if_no_layer (gimage, layer, data);
382
return_if_no_layer (image, layer, data);
377
gimp_image_lower_layer_to_bottom (gimage, layer);
378
gimp_image_flush (gimage);
384
gimp_image_lower_layer_to_bottom (image, layer);
385
gimp_image_flush (image);
382
389
layers_duplicate_cmd_callback (GtkAction *action,
386
393
GimpLayer *layer;
387
394
GimpLayer *new_layer;
388
return_if_no_layer (gimage, layer, data);
395
return_if_no_layer (image, layer, data);
391
398
GIMP_LAYER (gimp_item_duplicate (GIMP_ITEM (layer),
392
399
G_TYPE_FROM_INSTANCE (layer),
394
gimp_image_add_layer (gimage, new_layer, -1);
401
gimp_image_add_layer (image, new_layer, -1);
396
gimp_image_flush (gimage);
403
gimp_image_flush (image);
400
407
layers_anchor_cmd_callback (GtkAction *action,
404
411
GimpLayer *layer;
405
return_if_no_layer (gimage, layer, data);
412
return_if_no_layer (image, layer, data);
407
414
if (gimp_layer_is_floating_sel (layer))
409
416
floating_sel_anchor (layer);
410
gimp_image_flush (gimage);
417
gimp_image_flush (image);
415
422
layers_merge_down_cmd_callback (GtkAction *action,
419
426
GimpLayer *layer;
420
return_if_no_layer (gimage, layer, data);
427
return_if_no_layer (image, layer, data);
422
gimp_image_merge_down (gimage, layer, action_data_get_context (data),
429
gimp_image_merge_down (image, layer, action_data_get_context (data),
423
430
GIMP_EXPAND_AS_NECESSARY);
424
gimp_image_flush (gimage);
431
gimp_image_flush (image);
428
435
layers_delete_cmd_callback (GtkAction *action,
432
439
GimpLayer *layer;
433
return_if_no_layer (gimage, layer, data);
440
return_if_no_layer (image, layer, data);
435
442
if (gimp_layer_is_floating_sel (layer))
436
443
floating_sel_remove (layer);
438
gimp_image_remove_layer (gimage, layer);
445
gimp_image_remove_layer (image, layer);
440
gimp_image_flush (gimage);
447
gimp_image_flush (image);
444
451
layers_text_discard_cmd_callback (GtkAction *action,
448
455
GimpLayer *layer;
449
return_if_no_layer (gimage, layer, data);
456
return_if_no_layer (image, layer, data);
451
458
if (GIMP_IS_TEXT_LAYER (layer))
452
459
gimp_text_layer_discard (GIMP_TEXT_LAYER (layer));
463
layers_text_to_vectors_cmd_callback (GtkAction *action,
468
return_if_no_layer (image, layer, data);
470
if (GIMP_IS_TEXT_LAYER (layer))
472
GimpVectors *vectors;
475
vectors = gimp_text_vectors_new (image, GIMP_TEXT_LAYER (layer)->text);
477
gimp_item_offsets (GIMP_ITEM (layer), &x, &y);
478
gimp_item_translate (GIMP_ITEM (vectors), x, y, FALSE);
480
gimp_image_add_vectors (image, vectors, -1);
481
gimp_image_set_active_vectors (image, vectors);
483
gimp_image_flush (image);
488
layers_text_along_vectors_cmd_callback (GtkAction *action,
493
GimpVectors *vectors;
494
return_if_no_layer (image, layer, data);
495
return_if_no_vectors (image, vectors, data);
497
if (GIMP_IS_TEXT_LAYER (layer))
499
GimpVectors *new_vectors;
501
new_vectors = gimp_text_vectors_new (image, GIMP_TEXT_LAYER (layer)->text);
503
gimp_vectors_warp_vectors (vectors, new_vectors,
504
0.5 * gimp_item_height (GIMP_ITEM (layer)));
506
gimp_item_set_visible (GIMP_ITEM (new_vectors), TRUE, FALSE);
508
gimp_image_add_vectors (image, new_vectors, -1);
509
gimp_image_set_active_vectors (image, new_vectors);
511
gimp_image_flush (image);
456
516
layers_resize_cmd_callback (GtkAction *action,
464
return_if_no_layer (gimage, layer, data);
523
return_if_no_layer (image, layer, data);
465
524
return_if_no_widget (widget, data);
467
gdisp = GIMP_IS_DISPLAY (data) ? data : NULL;
526
if (layer_resize_unit != GIMP_UNIT_PERCENT && GIMP_IS_DISPLAY (data))
527
layer_resize_unit = GIMP_DISPLAY_SHELL (GIMP_DISPLAY (data)->shell)->unit;
469
529
dialog = resize_dialog_new (GIMP_VIEWABLE (layer),
530
action_data_get_context (data),
470
531
_("Set Layer Boundary Size"), "gimp-layer-resize",
472
533
gimp_standard_help_func, GIMP_HELP_LAYER_RESIZE,
474
GIMP_DISPLAY_SHELL (gdisp->shell)->unit :
476
535
layers_resize_layer_callback,
477
536
action_data_get_context (data));
483
542
layers_resize_to_image_cmd_callback (GtkAction *action,
487
546
GimpLayer *layer;
488
return_if_no_layer (gimage, layer, data);
547
return_if_no_layer (image, layer, data);
490
549
gimp_layer_resize_to_image (layer, action_data_get_context (data));
491
gimp_image_flush (gimage);
550
gimp_image_flush (image);
495
554
layers_scale_cmd_callback (GtkAction *action,
504
return_if_no_layer (gimage, layer, data);
561
return_if_no_layer (image, layer, data);
505
562
return_if_no_widget (widget, data);
507
gdisp = action_data_get_display (data);
564
if (layer_scale_unit != GIMP_UNIT_PERCENT && GIMP_IS_DISPLAY (data))
565
layer_scale_unit = GIMP_DISPLAY_SHELL (GIMP_DISPLAY (data)->shell)->unit;
509
unit = gdisp ? GIMP_DISPLAY_SHELL (gdisp->shell)->unit : GIMP_UNIT_PIXEL;
567
if (layer_scale_interp == -1)
568
layer_scale_interp = image->gimp->config->interpolation_type;
511
570
dialog = scale_dialog_new (GIMP_VIEWABLE (layer),
571
action_data_get_context (data),
512
572
_("Scale Layer"), "gimp-layer-scale",
514
574
gimp_standard_help_func, GIMP_HELP_LAYER_SCALE,
515
unit, gimage->gimp->config->interpolation_type,
516
577
layers_scale_layer_callback,
578
GIMP_IS_DISPLAY (data) ? data : NULL);
519
580
gtk_widget_show (dialog);
771
851
index = action_select_value ((GimpActionSelectType) value,
772
852
layers_mode_index (layer_mode),
773
853
0, G_N_ELEMENTS (layer_modes) - 1,
854
0.0, 1.0, 1.0, 0.0, FALSE);
775
855
gimp_layer_set_mode (layer, layer_modes[index], push_undo);
776
gimp_image_flush (gimage);
856
gimp_image_flush (image);
780
layers_preserve_trans_cmd_callback (GtkAction *action,
860
layers_lock_alpha_cmd_callback (GtkAction *action,
784
864
GimpLayer *layer;
786
return_if_no_layer (gimage, layer, data);
788
preserve = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action));
790
if (preserve != gimp_layer_get_preserve_trans (layer))
866
return_if_no_layer (image, layer, data);
868
lock_alpha = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action));
870
if (lock_alpha != gimp_layer_get_lock_alpha (layer))
793
873
gboolean push_undo = TRUE;
795
undo = gimp_image_undo_can_compress (gimage, GIMP_TYPE_ITEM_UNDO,
796
GIMP_UNDO_LAYER_PRESERVE_TRANS);
875
undo = gimp_image_undo_can_compress (image, GIMP_TYPE_ITEM_UNDO,
876
GIMP_UNDO_LAYER_LOCK_ALPHA);
798
878
if (undo && GIMP_ITEM_UNDO (undo)->item == GIMP_ITEM (layer))
799
879
push_undo = FALSE;
801
gimp_layer_set_preserve_trans (layer, preserve, push_undo);
802
gimp_image_flush (gimage);
881
gimp_layer_set_lock_alpha (layer, lock_alpha, push_undo);
882
gimp_image_flush (image);
894
973
if (response_id == GTK_RESPONSE_OK)
896
GimpLayer *layer = dialog->layer;
897
GimpImage *gimage = gimp_item_get_image (GIMP_ITEM (layer));
975
GimpLayer *layer = dialog->layer;
976
GimpImage *image = gimp_item_get_image (GIMP_ITEM (layer));
898
977
GimpLayerMask *mask;
979
if (dialog->add_mask_type == GIMP_ADD_CHANNEL_MASK &&
982
gimp_message (image->gimp, G_OBJECT (widget), GIMP_MESSAGE_WARNING,
983
_("Please select a channel first"));
900
987
layer_add_mask_type = dialog->add_mask_type;
901
988
layer_mask_invert = dialog->invert;
903
gimp_image_undo_group_start (gimage, GIMP_UNDO_GROUP_LAYER_ADD_MASK,
990
gimp_image_undo_group_start (image, GIMP_UNDO_GROUP_LAYER_ADD_MASK,
904
991
_("Add Layer Mask"));
906
993
if (! gimp_drawable_has_alpha (GIMP_DRAWABLE (layer)))
907
994
gimp_layer_add_alpha (layer);
909
mask = gimp_layer_create_mask (layer, layer_add_mask_type);
996
mask = gimp_layer_create_mask (layer, layer_add_mask_type,
911
999
if (layer_mask_invert)
912
1000
gimp_channel_invert (GIMP_CHANNEL (mask), FALSE);
914
1002
gimp_layer_add_mask (layer, mask, TRUE);
916
gimp_image_undo_group_end (gimage);
1004
gimp_image_undo_group_end (image);
918
gimp_image_flush (gimage);
1006
gimp_image_flush (image);
921
1009
gtk_widget_destroy (dialog->dialog);