CreateSelectionLayer() public method

public CreateSelectionLayer ( ) : void
return void
Example #1
0
        public override void Redo()
        {
            Document doc = PintaCore.Workspace.ActiveDocument;

            // Copy the paste to the temp layer
            doc.CreateSelectionLayer();
            doc.ShowSelectionLayer = true;

            using (Cairo.Context g = new Cairo.Context(doc.SelectionLayer.Surface)) {
                g.DrawPixbuf(paste_image, new Cairo.Point(0, 0));
            }

            Swap();

            PintaCore.Workspace.Invalidate();
            PintaCore.Tools.SetCurrentTool(Catalog.GetString("Move Selected Pixels"));
        }
Example #2
0
        private void HandlerPintaCoreActionsEditPasteActivated(object sender, EventArgs e)
        {
            Document doc = PintaCore.Workspace.ActiveDocument;

            PintaCore.Tools.Commit();

            Gtk.Clipboard cb = Gtk.Clipboard.Get(Gdk.Atom.Intern("CLIPBOARD", false));

            Path p;

            // Don't dispose this, as we're going to give it to the history
            Gdk.Pixbuf image = cb.WaitForImage();

            if (image == null)
            {
                return;
            }

            Gdk.Size canvas_size = PintaCore.Workspace.ImageSize;

            // If the image being pasted is larger than the canvas size, allow the user to optionally resize the canvas
            if (image.Width > canvas_size.Width || image.Height > canvas_size.Height)
            {
                string message = Catalog.GetString("The image being pasted is larger than the canvas size. What would you like to do?");

                var enlarge_dialog = new MessageDialog(PintaCore.Chrome.MainWindow, DialogFlags.Modal, MessageType.Question, ButtonsType.None, message);
                enlarge_dialog.AddButton(Catalog.GetString("Expand canvas"), ResponseType.Accept);
                enlarge_dialog.AddButton(Catalog.GetString("Don't change canvas size"), ResponseType.Reject);
                enlarge_dialog.AddButton(Stock.Cancel, ResponseType.Cancel);
                enlarge_dialog.DefaultResponse = ResponseType.Accept;

                ResponseType response = (ResponseType)enlarge_dialog.Run();
                enlarge_dialog.Destroy();

                if (response == ResponseType.Accept)
                {
                    PintaCore.Workspace.ResizeCanvas(image.Width, image.Height, Pinta.Core.Anchor.Center);
                    PintaCore.Actions.View.UpdateCanvasScale();
                }
                else if (response == ResponseType.Cancel || response == ResponseType.DeleteEvent)
                {
                    return;
                }
            }

            // Copy the paste to the temp layer
            doc.CreateSelectionLayer();
            doc.ShowSelectionLayer = true;

            using (Cairo.Context g = new Cairo.Context(doc.SelectionLayer.Surface)) {
                g.DrawPixbuf(image, new Cairo.Point(0, 0));
                p = g.CreateRectanglePath(new Rectangle(0, 0, image.Width, image.Height));
            }

            PintaCore.Tools.SetCurrentTool(Catalog.GetString("Move Selected Pixels"));

            Path old_path           = doc.SelectionPath;
            bool old_show_selection = doc.ShowSelection;

            doc.SelectionPath = p;
            doc.ShowSelection = true;

            doc.Workspace.Invalidate();

            doc.History.PushNewItem(new PasteHistoryItem(image, old_path, old_show_selection));
        }