Example #1
0
		private void Activated (object sender, EventArgs e)
		{
			// TODO - allow the layer to be zoomed in or out
			
			var data = new RotateZoomData ();
			var dialog = new SimpleEffectDialog (Catalog.GetString ("Rotate / Zoom Layer"),
				PintaCore.Resources.GetIcon ("Menu.Layers.RotateZoom.png"), data,
			                                     new PintaLocalizer ());

            // When parameters are modified, update the display transform of the layer.
		    dialog.EffectDataChanged += (o, args) =>
		    {
		        var xform = ComputeMatrix (data);
		        var doc = PintaCore.Workspace.ActiveDocument;
		        doc.CurrentUserLayer.Transform.InitMatrix (xform);
		        PintaCore.Workspace.Invalidate ();
		    };

			int response = dialog.Run ();
		    ClearLivePreview ();
			if (response == (int)Gtk.ResponseType.Ok && !data.IsDefault)
				ApplyTransform (data);

			dialog.Destroy ();
		}
        private void Activated(object sender, EventArgs e)
        {
            // TODO - allow the layer to be zoomed in or out

            var data   = new RotateZoomData();
            var dialog = new SimpleEffectDialog(Catalog.GetString("Rotate / Zoom Layer"),
                                                PintaCore.Resources.GetIcon("Menu.Layers.RotateZoom.png"), data,
                                                new PintaLocalizer());

            // When parameters are modified, update the display transform of the layer.
            dialog.EffectDataChanged += (o, args) =>
            {
                var xform = ComputeMatrix(data);
                var doc   = PintaCore.Workspace.ActiveDocument;
                doc.CurrentUserLayer.Transform.InitMatrix(xform);
                PintaCore.Workspace.Invalidate();
            };

            int response = dialog.Run();

            ClearLivePreview();
            if (response == (int)Gtk.ResponseType.Ok && !data.IsDefault)
            {
                ApplyTransform(data);
            }

            dialog.Destroy();
        }
        private void Activated(object sender, EventArgs e)
        {
            // TODO - allow the layer to be zoomed in or out

            var data = new RotateZoomData();

            Gtk.ResponseType response;
            using (var dialog = new SimpleEffectDialog(Translations.GetString("Rotate / Zoom Layer"),
                                                       Gtk.IconTheme.Default.LoadIcon(Resources.Icons.LayerRotateZoom, 16),
                                                       data,
                                                       new PintaLocalizer())) {
                // When parameters are modified, update the display transform of the layer.
                dialog.EffectDataChanged += (o, args) => {
                    var xform = ComputeMatrix(data);
                    var doc   = PintaCore.Workspace.ActiveDocument;
                    doc.Layers.CurrentUserLayer.Transform.InitMatrix(xform);
                    PintaCore.Workspace.Invalidate();
                };

                response = (Gtk.ResponseType)dialog.Run();
            }

            ClearLivePreview();
            if (response == Gtk.ResponseType.Ok && !data.IsDefault)
            {
                ApplyTransform(data);
            }
        }
        private static Matrix ComputeMatrix(RotateZoomData data)
        {
            var xform      = new Matrix();
            var image_size = PintaCore.Workspace.ImageSize;
            var center_x   = image_size.Width / 2.0;
            var center_y   = image_size.Height / 2.0;

            xform.Translate((1 + data.Pan.X) * center_x, (1 + data.Pan.Y) * center_y);
            xform.Rotate((-data.Angle / 180d) * Math.PI);
            xform.Scale(data.Zoom, data.Zoom);
            xform.Translate(-center_x, -center_y);

            return(xform);
        }
        private void DoRotate(RotateZoomData rotateZoomData)
        {
            Document doc = PintaCore.Workspace.ActiveDocument;
            PintaCore.Tools.Commit ();

            var oldSurface = doc.CurrentLayer.Surface.Clone ();

            doc.CurrentLayer.Rotate (rotateZoomData.Angle);
            doc.Workspace.Invalidate ();

            var historyItem = new SimpleHistoryItem ("Menu.Layers.RotateZoom.png", Catalog.GetString ("Rotate / Zoom Layer"), oldSurface, doc.CurrentLayerIndex);

            doc.History.PushNewItem (historyItem);
        }
Example #6
0
	    private static Matrix ComputeMatrix (RotateZoomData data)
	    {
	        var xform = new Matrix ();
	        var image_size = PintaCore.Workspace.ImageSize;
            var center_x = image_size.Width / 2.0;
            var center_y = image_size.Height / 2.0;

            xform.Translate ((1 + data.Pan.X) * center_x, (1 + data.Pan.Y) * center_y);
            xform.Rotate ((-data.Angle / 180d) * Math.PI);
            xform.Scale (data.Zoom, data.Zoom);
	        xform.Translate (-center_x, -center_y);

	        return xform;
	    }
Example #7
0
        private void DoRotate(RotateZoomData rotateZoomData)
        {
            Document doc = PintaCore.Workspace.ActiveDocument;

            PintaCore.Tools.Commit();

            var oldSurface = doc.CurrentLayer.Surface.Clone();

            doc.CurrentLayer.Rotate(rotateZoomData.Angle);
            doc.Workspace.Invalidate();

            var historyItem = new SimpleHistoryItem("Menu.Layers.RotateZoom.png", Catalog.GetString("Rotate / Zoom Layer"), oldSurface, doc.CurrentLayerIndex);

            doc.History.PushNewItem(historyItem);
        }
        private void ApplyTransform(RotateZoomData data)
        {
            var doc = PintaCore.Workspace.ActiveDocument;

            PintaCore.Tools.Commit();

            var old_surf = doc.CurrentUserLayer.Surface.Clone();

            var xform = ComputeMatrix(data);

            doc.CurrentUserLayer.ApplyTransform(xform, PintaCore.Workspace.ImageSize);
            doc.Workspace.Invalidate();

            doc.History.PushNewItem(new SimpleHistoryItem("Menu.Layers.RotateZoom.png",
                                                          Catalog.GetString("Rotate / Zoom Layer"), old_surf, doc.CurrentUserLayerIndex));
        }
Example #9
0
        private void Activated(object sender, EventArgs e)
        {
            // TODO - allow the layer to be zoomed in or out
            // TODO - show a live preview of the rotation

            var rotateZoomData = new RotateZoomData();
            var dialog         = new SimpleEffectDialog(Catalog.GetString("Rotate / Zoom Layer"),
                                                        PintaCore.Resources.GetIcon("Menu.Layers.RotateZoom.png"), rotateZoomData);

            int response = dialog.Run();

            if (response == (int)Gtk.ResponseType.Ok && !rotateZoomData.IsDefault)
            {
                DoRotate(rotateZoomData);
            }

            dialog.Destroy();
        }
Example #10
0
        private void Activated(object sender, EventArgs e)
        {
            // TODO - allow the layer to be zoomed in or out
            // TODO - show a live preview of the rotation

            var rotateZoomData = new RotateZoomData ();
            var dialog = new SimpleEffectDialog (Catalog.GetString ("Rotate / Zoom Layer"),
                PintaCore.Resources.GetIcon ("Menu.Layers.RotateZoom.png"), rotateZoomData);

            int response = dialog.Run ();

            if (response == (int)Gtk.ResponseType.Ok && !rotateZoomData.IsDefault)
            {
                DoRotate (rotateZoomData);
            }

            dialog.Destroy ();
        }
Example #11
0
	    private void ApplyTransform (RotateZoomData data)
		{
			var doc = PintaCore.Workspace.ActiveDocument;
			PintaCore.Tools.Commit ();

			var old_surf = doc.CurrentUserLayer.Surface.Clone ();

	        var xform = ComputeMatrix (data);
			doc.CurrentUserLayer.ApplyTransform (xform, PintaCore.Workspace.ImageSize);
			doc.Workspace.Invalidate ();

	        doc.History.PushNewItem (new SimpleHistoryItem ("Menu.Layers.RotateZoom.png",
	            Catalog.GetString ("Rotate / Zoom Layer"), old_surf, doc.CurrentUserLayerIndex));
		}