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); }
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); }
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)); }
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(); }
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 (); }
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)); }