Pinta.Core.Document.DuplicateCurrentLayer C# (CSharp) Method

DuplicateCurrentLayer() public method

public DuplicateCurrentLayer ( ) : Pinta.Core.UserLayer
return Pinta.Core.UserLayer
        public UserLayer DuplicateCurrentLayer()
        {
            UserLayer source = CurrentUserLayer;
            UserLayer layer = CreateLayer(string.Format("{0} {1}", source.Name, Catalog.GetString("copy")));

            using (Cairo.Context g = new Cairo.Context (layer.Surface)) {
                g.SetSource (source.Surface);
                g.Paint ();
            }

            layer.Hidden = source.Hidden;
            layer.Opacity = source.Opacity;
            layer.Tiled = source.Tiled;

            UserLayers.Insert (++current_layer, layer);

            layer.PropertyChanged += RaiseLayerPropertyChangedEvent;

            PintaCore.Layers.OnLayerAdded ();

            return layer;
        }

Usage Example

Example #1
0
        private void HandlePintaCoreActionsLayersDuplicateLayerActivated(object sender, EventArgs e)
        {
            Document doc = PintaCore.Workspace.ActiveDocument;

            PintaCore.Tools.Commit();

            Layer l = doc.DuplicateCurrentLayer();

            // Make new layer the current layer
            doc.SetCurrentLayer(l);

            AddLayerHistoryItem hist = new AddLayerHistoryItem("Menu.Layers.DuplicateLayer.png", Catalog.GetString("Duplicate Layer"), doc.Layers.IndexOf(l));

            doc.History.PushNewItem(hist);
        }