From b8929b3ba7dd71e6555f86f91166505c72a7439b Mon Sep 17 00:00:00 2001 From: grof Date: Mon, 23 Dec 2024 19:14:19 +0000 Subject: [PATCH 1/4] Translated using Weblate (Slovenian) Currently translated at 100.0% (559 of 559 strings) Translation: Pinta/Pinta Translate-URL: https://hosted.weblate.org/projects/pinta/pinta/sl/ --- po/sl.po | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/po/sl.po b/po/sl.po index 7380456851..2de534678b 100644 --- a/po/sl.po +++ b/po/sl.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: pinta\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-12-08 01:47+0000\n" -"PO-Revision-Date: 2024-11-01 12:00+0000\n" +"PO-Revision-Date: 2024-12-24 11:28+0000\n" "Last-Translator: grof \n" "Language-Team: Slovenian \n" @@ -18,7 +18,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || " "n%100==4 ? 3 : 0);\n" -"X-Generator: Weblate 5.8.2-dev\n" +"X-Generator: Weblate 5.10-dev\n" "X-Launchpad-Export-Date: 2023-12-18 03:00+0000\n" #: ../Pinta.Gui.Addins/InstallDialog.cs:257 @@ -298,11 +298,11 @@ msgstr "Platno" #: ../Pinta/Dialogs/CanvasGridSettingsDialog.cs:55 msgid "Canvas Grid Settings" -msgstr "" +msgstr "Nastavitve mreže platna" #: ../Pinta.Core/Actions/ViewActions.cs:75 msgid "Canvas Grid..." -msgstr "" +msgstr "Mreža platna..." #: ../Pinta.Effects/Effects/PixelateEffect.cs:126 msgid "Cell Size" @@ -340,7 +340,7 @@ msgstr "Centimetri" #: ../Pinta.Tools/Editable/EditEngines/BaseEditEngine.cs:280 #: ../Pinta.Tools/Tools/BaseBrushTool.cs:49 msgid "Change brush width. Shortcut keys: [ ]" -msgstr "" +msgstr "Spremeni šiirino čopiča. Bližnica: [ ]" #: ../Pinta.Tools/Editable/EditEngines/BaseEditEngine.cs:359 msgid "Changed Shape Type" @@ -575,7 +575,7 @@ msgstr "Izreži izbor" #: ../Pinta.Effects/Effects/TileEffect.cs:246 msgid "Curved" -msgstr "" +msgstr "Ukrivljen" #: ../Pinta.Effects/Adjustments/CurvesEffect.cs:27 #: ../Pinta.Effects/Dialogs/Effects.CurvesDialog.cs:134 @@ -995,7 +995,7 @@ msgstr "Datoteke ICO ne morejo biti večje od 255 x 255 točk." #: ../Pinta/Actions/File/CloseDocumentAction.cs:75 msgid "If you don't save, all changes will be permanently lost." -msgstr "V primeru, da datoteke ne shranite, bodo vse spremembe izgubljene." +msgstr "Če datoteke ne shranite, bodo vse spremembe izgubljene." #: ../Pinta.Tools/Tools/ColorPickerTool.cs:241 ../Pinta/MainWindow.cs:402 msgid "Image" @@ -1388,7 +1388,7 @@ msgstr "Del Mandelbrot" #. Translators: Gradient with bright, high-energy, and otherworldly tones of blue, purple, and yellow, along with a dark red that gives off the appearance of burning #: ../Pinta.Effects/Effects/GradientHelper.cs:52 msgid "Martian Lava" -msgstr "" +msgstr "Marsovska lava" #: ../Pinta.Effects/Effects/MedianEffect.cs:24 msgid "Median" @@ -2107,7 +2107,7 @@ msgstr "Vrsta oblike" #: ../Pinta.Effects/Effects/TileEffect.cs:243 msgid "Sharp Edges" -msgstr "" +msgstr "Ostri robovi" #: ../Pinta.Effects/Effects/SharpenEffect.cs:24 msgid "Sharpen" @@ -2120,7 +2120,7 @@ msgstr "Tipka bližnjice" #: ../Pinta/Dialogs/CanvasGridSettingsDialog.cs:70 msgid "Show Grid" -msgstr "" +msgstr "Prikaži mrežo" #: ../Pinta/Actions/Layers/LayerPropertiesAction.cs:119 msgid "Show Layer" @@ -2301,7 +2301,7 @@ msgstr "Velikost ploščice" #: ../Pinta.Effects/Effects/TileEffect.cs:233 msgid "Tile Type" -msgstr "" +msgstr "Vrsta ploščice" #: ../Pinta.Effects/Dialogs/Effects.CurvesDialog.cs:95 msgid "Tip: Right-click to remove control points." From 30b0b85fec0f5dc152cb9be896a284d43a692507 Mon Sep 17 00:00:00 2001 From: Lehonti Ramos <17771375+Lehonti@users.noreply.github.com> Date: Tue, 24 Dec 2024 13:14:09 -0600 Subject: [PATCH 2/4] Miscellaneous refactorings in `BaseEditEngine` (#1187) --- .../Editable/EditEngines/BaseEditEngine.cs | 243 ++++++++++-------- 1 file changed, 135 insertions(+), 108 deletions(-) diff --git a/Pinta.Tools/Editable/EditEngines/BaseEditEngine.cs b/Pinta.Tools/Editable/EditEngines/BaseEditEngine.cs index 069e881301..5a674b4443 100644 --- a/Pinta.Tools/Editable/EditEngines/BaseEditEngine.cs +++ b/Pinta.Tools/Editable/EditEngines/BaseEditEngine.cs @@ -125,7 +125,9 @@ private ShapeTypes ShapeType { public const double DefaultEndPointTension = 0d; public const double DefaultMidPointTension = 1d / 3d; - public int SelectedPointIndex, SelectedShapeIndex; + public int SelectedPointIndex; + public int SelectedShapeIndex; + protected int prev_selected_shape_index; /// @@ -196,23 +198,17 @@ protected virtual void BrushPlusButtonClickedEvent (object? o, EventArgs args) protected void Palette_PrimaryColorChanged (object? sender, EventArgs e) { ShapeEngine? activeEngine = ActiveShapeEngine; - - if (activeEngine != null) { - activeEngine.OutlineColor = OutlineColor; - - DrawActiveShape (false, false, true, false, false); - } + if (activeEngine == null) return; + activeEngine.OutlineColor = OutlineColor; + DrawActiveShape (false, false, true, false, false); } protected void Palette_SecondaryColorChanged (object? sender, EventArgs e) { ShapeEngine? activeEngine = ActiveShapeEngine; - - if (activeEngine != null) { - activeEngine.FillColor = FillColor; - - DrawActiveShape (false, false, true, false, false); - } + if (activeEngine == null) return; + activeEngine.FillColor = FillColor; + DrawActiveShape (false, false, true, false, false); } private void OnFillStyleChanged (object? sender, EventArgs e) @@ -257,10 +253,13 @@ public virtual void OnSaveSettings (ISettingsService settings, string toolPrefix { if (brush_width is not null) settings.PutSetting (BRUSH_WIDTH_SETTING (toolPrefix), (int) brush_width.Value); + if (fill_button is not null) settings.PutSetting (FILL_TYPE_SETTING (toolPrefix), fill_button.SelectedIndex); + if (shape_type_button is not null) settings.PutSetting (SHAPE_TYPE_SETTING (toolPrefix), shape_type_button.SelectedIndex); + if (dash_pattern_box?.ComboBox is not null) settings.PutSetting (DASH_PATTERN_SETTING (toolPrefix), dash_pattern_box.ComboBox.ComboBox.GetActiveText ()!); } @@ -268,7 +267,7 @@ public virtual void OnSaveSettings (ISettingsService settings, string toolPrefix public virtual void HandleBuildToolBar (Gtk.Box tb, ISettingsService settings, string toolPrefix) { if (brush_width_label == null) { - var brushWidthText = Translations.GetString ("Brush width"); + string brushWidthText = Translations.GetString ("Brush width"); brush_width_label = Gtk.Label.New ($" {brushWidthText}: "); } @@ -282,10 +281,7 @@ public virtual void HandleBuildToolBar (Gtk.Box tb, ISettingsService settings, s brush_width.OnValueChanged += (o, e) => { ShapeEngine? selEngine = SelectedShapeEngine; - - if (selEngine == null) - return; - + if (selEngine == null) return; selEngine.BrushWidth = BrushWidth; StorePreviousSettings (); DrawActiveShape (false, false, true, false, false); @@ -299,7 +295,7 @@ public virtual void HandleBuildToolBar (Gtk.Box tb, ISettingsService settings, s tb.Append (fill_sep); if (fill_label == null) { - var fillStyleText = Translations.GetString ("Fill Style"); + string fillStyleText = Translations.GetString ("Fill Style"); fill_label = Gtk.Label.New ($" {fillStyleText}: "); } @@ -323,7 +319,7 @@ public virtual void HandleBuildToolBar (Gtk.Box tb, ISettingsService settings, s tb.Append (shape_type_sep); if (shape_type_label == null) { - var shapeTypeText = Translations.GetString ("Shape Type"); + string shapeTypeText = Translations.GetString ("Shape Type"); shape_type_label = Gtk.Label.New ($" {shapeTypeText}: "); } @@ -384,10 +380,7 @@ public virtual void HandleBuildToolBar (Gtk.Box tb, ISettingsService settings, s dpbBox.OnChanged += (o, e) => { ShapeEngine? selEngine = SelectedShapeEngine; - - if (selEngine == null) - return; - + if (selEngine == null) return; selEngine.DashPattern = dpbBox.GetActiveText ()!; StorePreviousSettings (); DrawActiveShape (false, false, true, false, false); @@ -448,8 +441,7 @@ public virtual void HandleAfterUndo () if (activeEngine != null) UpdateToolbarSettings (activeEngine); - //Draw the current state. - DrawActiveShape (true, false, true, false, false); + DrawActiveShape (true, false, true, false, false); // Draw the current state. } public virtual void HandleAfterRedo () @@ -459,8 +451,7 @@ public virtual void HandleAfterRedo () if (activeEngine != null) UpdateToolbarSettings (activeEngine); - //Draw the current state. - DrawActiveShape (true, false, true, false, false); + DrawActiveShape (true, false, true, false, false); // Draw the current state. } public virtual bool HandleKeyDown (Document document, ToolKeyEventArgs e) @@ -521,13 +512,13 @@ private void HandleRight (ToolKeyEventArgs e) if (activeEngine != null) { ++SelectedPointIndex; - if (SelectedPointIndex > activeEngine.ControlPoints.Count - 1) { + if (SelectedPointIndex > activeEngine.ControlPoints.Count - 1) SelectedPointIndex = 0; - } + } } else { //Move the selected control point. - var originalPosition = SelectedPoint!.Position; // NRT - Checked by SelectedPointIndex + PointD originalPosition = SelectedPoint!.Position; // NRT - Checked by SelectedPointIndex SelectedPoint.Position = originalPosition with { X = originalPosition.X + 1d }; } @@ -549,13 +540,13 @@ private void HandleLeft (ToolKeyEventArgs e) if (SelectedPointIndex < 0) { ShapeEngine? activeEngine = ActiveShapeEngine; - if (activeEngine != null) { + if (activeEngine != null) SelectedPointIndex = activeEngine.ControlPoints.Count - 1; - } + } } else { //Move the selected control point. - var originalPosition = SelectedPoint!.Position; // NRT - Checked by SelectedPointIndex + PointD originalPosition = SelectedPoint!.Position; // NRT - Checked by SelectedPointIndex SelectedPoint.Position = originalPosition with { X = originalPosition.X - 1d }; } @@ -570,7 +561,7 @@ private void HandleDown () return; //Move the selected control point. - var originalPosition = SelectedPoint!.Position; // NRT - Checked by SelectedPointIndex + PointD originalPosition = SelectedPoint!.Position; // NRT - Checked by SelectedPointIndex SelectedPoint.Position = originalPosition with { Y = originalPosition.Y + 1d }; DrawActiveShape (true, false, true, false, false); @@ -602,8 +593,12 @@ private void HandleSpace (ToolKeyEventArgs e) //Create a new ShapesModifyHistoryItem so that the adding of a control point can be undone. workspace.ActiveDocument.History.PushNewItem ( - new ShapesModifyHistoryItem (this, owner.Icon, ShapeName + " " + Translations.GetString ("Point Added"))); - + new ShapesModifyHistoryItem ( + this, + owner.Icon, + ShapeName + " " + Translations.GetString ("Point Added") + ) + ); bool shiftKey = e.IsShiftPressed; bool ctrlKey = e.IsControlPressed; @@ -649,32 +644,44 @@ private void HandleDelete () if (controlPoints.Count > 1) { //Create a new ShapesModifyHistoryItem so that the deletion of a control point can be undone. workspace.ActiveDocument.History.PushNewItem ( - new ShapesModifyHistoryItem (this, owner.Icon, ShapeName + " " + Translations.GetString ("Point Deleted"))); + new ShapesModifyHistoryItem ( + this, + owner.Icon, + ShapeName + " " + Translations.GetString ("Point Deleted") + ) + ); //Delete the selected point from the shape. controlPoints.RemoveAt (SelectedPointIndex); //Set the newly selected point to be the median-most point on the shape, order-wise. - if (SelectedPointIndex > controlPoints.Count / 2) { + if (SelectedPointIndex > controlPoints.Count / 2) --SelectedPointIndex; - } + } else { Document doc = workspace.ActiveDocument; //Create a new ShapesHistoryItem so that the deletion of a shape can be undone. doc.History.PushNewItem ( - new ShapesHistoryItem (this, owner.Icon, ShapeName + " " + Translations.GetString ("Deleted"), - doc.Layers.CurrentUserLayer.Surface.Clone (), doc.Layers.CurrentUserLayer, SelectedPointIndex, SelectedShapeIndex, false)); + new ShapesHistoryItem ( + this, + owner.Icon, + ShapeName + " " + Translations.GetString ("Deleted"), + doc.Layers.CurrentUserLayer.Surface.Clone (), + doc.Layers.CurrentUserLayer, + SelectedPointIndex, + SelectedShapeIndex, + false + ) + ); //Since the shape itself will be deleted, remove its ReEditableLayer from the drawing loop. ReEditableLayer removeMe = SEngines.ElementAt (SelectedShapeIndex).DrawingLayer; - if (removeMe.InTheLoop) { + if (removeMe.InTheLoop) SEngines.ElementAt (SelectedShapeIndex).DrawingLayer.TryRemoveLayer (); - } - //Delete the selected shape. SEngines.RemoveAt (SelectedShapeIndex); @@ -713,11 +720,10 @@ public virtual bool HandleKeyUp (Document document, ToolKeyEventArgs e) public virtual void HandleMouseDown (Document document, ToolMouseEventArgs e) { - var unclamped_point = e.PointDouble; + PointD unclamped_point = e.PointDouble; //If we are already drawing, ignore any additional mouse down events. - if (is_drawing) - return; + if (is_drawing) return; //Redraw the previously (and possibly currently) active shape without any control points in case another shape is made active. DrawActiveShape (false, false, false, false, false); @@ -734,43 +740,48 @@ public virtual void HandleMouseDown (Document document, ToolMouseEventArgs e) is_drawing = true; - //Right clicking changes tension. - if (e.MouseButton == MouseButton.Left) - changing_tension = false; - else - changing_tension = true; - + changing_tension = e.MouseButton != MouseButton.Left; bool ctrlKey = e.IsControlPressed; - SEngines.FindClosestControlPoint (unclamped_point, - out var closestCPShapeIndex, out var closestCPIndex, out var closestControlPoint, out _); - OrganizedPointCollection.FindClosestPoint (SEngines, unclamped_point, - out var closestShapeIndex, out var closestPointIndex, out var closestPoint, out _); + + SEngines.FindClosestControlPoint ( + unclamped_point, + out int closestCPShapeIndex, + out int closestCPIndex, + out var closestControlPoint, + out _); + + OrganizedPointCollection.FindClosestPoint ( + SEngines, + unclamped_point, + out int closestShapeIndex, + out int closestPointIndex, + out var closestPoint, + out _); bool clicked_control_point = false; bool clicked_generated_point = false; - { - var current_window_point = workspace.CanvasPointToView (unclamped_point); - MoveHandle test_handle = new (); - // Check if the user is directly clicking on a control point. - if (closestControlPoint != null) { - test_handle.CanvasPosition = closestControlPoint.Position; - clicked_control_point = test_handle.ContainsPoint (current_window_point); - if (clicked_control_point) { - SelectedPointIndex = closestCPIndex; - SelectedShapeIndex = closestCPShapeIndex; - } - } + PointD current_window_point = workspace.CanvasPointToView (unclamped_point); + MoveHandle test_handle = new (); - // Otherwise, the user might have clicked on a generated point. - if (!clicked_control_point && closestPoint.HasValue) { - test_handle.CanvasPosition = closestPoint.Value; - clicked_generated_point = test_handle.ContainsPoint (current_window_point); + // Check if the user is directly clicking on a control point. + if (closestControlPoint != null) { + test_handle.CanvasPosition = closestControlPoint.Position; + clicked_control_point = test_handle.ContainsPoint (current_window_point); + if (clicked_control_point) { + SelectedPointIndex = closestCPIndex; + SelectedShapeIndex = closestCPShapeIndex; } } + // Otherwise, the user might have clicked on a generated point. + if (!clicked_control_point && closestPoint.HasValue) { + test_handle.CanvasPosition = closestPoint.Value; + clicked_generated_point = test_handle.ContainsPoint (current_window_point); + } + clicked_without_modifying = clicked_control_point; if (!changing_tension && clicked_generated_point) { @@ -800,9 +811,8 @@ public virtual void HandleMouseDown (Document document, ToolMouseEventArgs e) ShapeEngine? activeEngine = ActiveShapeEngine; - if (activeEngine != null) { + if (activeEngine != null) UpdateToolbarSettings (activeEngine); - } } //Create a new shape if the user control + clicks on a shape or if the user simply clicks outside of any shapes. @@ -850,15 +860,13 @@ public virtual void HandleMouseDown (Document document, ToolMouseEventArgs e) ShapeEngine? activeEngine = ActiveShapeEngine; - if (activeEngine != null) { + if (activeEngine != null) UpdateToolbarSettings (activeEngine); - } } //Determine if the user right clicks outside of any shapes (neither on their control points nor on their generated points). - if ((!clicked_control_point && !clicked_generated_point) && changing_tension) { + if ((!clicked_control_point && !clicked_generated_point) && changing_tension) clicked_without_modifying = true; - } DrawActiveShape (false, false, true, shiftKey, false, e.IsControlPressed); } @@ -957,13 +965,13 @@ public virtual void HandleMouseMove (Document document, ToolMouseEventArgs e) PointD midPoint = new PointD ((prevPoint.X + nextPoint.X) / 2d, (prevPoint.Y + nextPoint.Y) / 2d); //Calculate the x change in the mouse position. - var xChange = + double xChange = (curPoint.X <= midPoint.X) ? current_point.X - last_mouse_pos.X : last_mouse_pos.X - current_point.X; //Calculate the y change in the mouse position. - var yChange = + double yChange = (curPoint.Y <= midPoint.Y) ? current_point.Y - last_mouse_pos.Y : last_mouse_pos.Y - current_point.Y; @@ -975,8 +983,7 @@ public virtual void HandleMouseMove (Document document, ToolMouseEventArgs e) Math.Round (Math.Clamp ((xChange * yDiff + yChange * xDiff) / totalDiff, -1d, 1d)) / 50d; //Restrict the new tension to range from 0d to 1d. - controlPoints[SelectedPointIndex].Tension = - Math.Clamp (selPoint.Tension, 0d, 1d); + controlPoints[SelectedPointIndex].Tension = Math.Clamp (selPoint.Tension, 0d, 1d); DrawActiveShape (false, false, true, shiftKey, false, e.IsControlPressed); @@ -1164,7 +1171,7 @@ protected RectangleD DrawShape (ShapeEngine engine, Layer l, bool drawCP, bool d g.Antialias = activeEngine.AntiAliasing ? Antialias.Subpixel : Antialias.None; - var isDashedLine = g.SetDashFromString (activeEngine.DashPattern, activeEngine.BrushWidth, LineCap.Square); + bool isDashedLine = g.SetDashFromString (activeEngine.DashPattern, activeEngine.BrushWidth, LineCap.Square); g.LineWidth = activeEngine.BrushWidth; @@ -1187,9 +1194,10 @@ protected RectangleD DrawShape (ShapeEngine engine, Layer l, bool drawCP, bool d if (StrokeShape) { // dashpatterns cannot work with butt, so if we are using a dashpattern we default to square. - var lineCap = activeEngine.LineCap; - if (isDashedLine) - lineCap = LineCap.Square; + LineCap lineCap = + isDashedLine + ? LineCap.Square + : activeEngine.LineCap; dirty = dirty.UnionRectangles (g.DrawPolygonal (points.AsSpan (), activeEngine.OutlineColor, lineCap)); } @@ -1199,10 +1207,8 @@ protected RectangleD DrawShape (ShapeEngine engine, Layer l, bool drawCP, bool d //Draw anything extra (that not every shape has), like arrows. DrawExtras (ref dirty, g, engine); - DrawControlPoints (g, activeEngine, drawCP, drawHoverSelection, ctrl_key); - return dirty ?? RectangleD.Zero; } @@ -1243,17 +1249,24 @@ private void DrawControlPoints (Context g, ShapeEngine shape, bool draw_controls /// protected void UpdateHoverHandle (bool draw_selection, bool ctrl_key) { - var dirty = RectangleI.Zero; - if (hover_handle.Active) - dirty = hover_handle.InvalidateRect; + RectangleI dirty = + hover_handle.Active + ? hover_handle.InvalidateRect + : RectangleI.Zero; // Don't show the hover handle while the user is changing a control point's tension. hover_handle.Active = hover_handle.Selected = false; if (!changing_tension && draw_selection) { + var current_window_point = workspace.CanvasPointToView (current_point); - SEngines.FindClosestControlPoint (current_point, - out _, out _, out var closestControlPoint, out _); + + SEngines.FindClosestControlPoint ( + current_point, + out _, + out _, + out var closestControlPoint, + out _); // Check if the user is directly hovering over a control point. if (closestControlPoint != null) { @@ -1263,8 +1276,14 @@ protected void UpdateHoverHandle (bool draw_selection, bool ctrl_key) // Otherwise, the user may be hovering over a generated point. if (!hover_handle.Active) { - OrganizedPointCollection.FindClosestPoint (SEngines, current_point, - out _, out _, out var closestPoint, out _); + + OrganizedPointCollection.FindClosestPoint ( + SEngines, + current_point, + out _, + out _, + out var closestPoint, + out _); if (closestPoint.HasValue) { hover_handle.CanvasPosition = closestPoint.Value; @@ -1280,6 +1299,7 @@ protected void UpdateHoverHandle (bool draw_selection, bool ctrl_key) // and Ctrl is not pressed (since Ctrl+click starts a new shape). // Otherwise, the normal cursor is shown to indicate that a shape can be drawn. var tool = tools.CurrentTool!; + if (hover_handle.Active && !is_drawing && !ctrl_key) tool.SetCursor (grab_cursor); else @@ -1384,18 +1404,17 @@ protected void CalculateModifiedCurrentPoint () // Constrain to a square / circle. - var origin = selEngine.ControlPoints[(SelectedPointIndex + 2) % 4].Position; + PointD origin = selEngine.ControlPoints[(SelectedPointIndex + 2) % 4].Position; PointD d = current_point - origin; var length = Math.Max (Math.Abs (d.X), Math.Abs (d.Y)); - d = new PointD ( + PointD offset = new ( X: length * Math.Sign (d.X), - Y: length * Math.Sign (d.Y) - ); + Y: length * Math.Sign (d.Y)); - current_point = origin + d; + current_point = origin + offset; } else { // Calculate the modified position of currentPoint such that the angle between the adjacent point @@ -1413,12 +1432,19 @@ protected void CalculateModifiedCurrentPoint () return; } - PointD dir = new PointD (current_point.X - adjacentPoint.Position.X, current_point.Y - adjacentPoint.Position.Y); - double theta = Math.Atan2 (dir.Y, dir.X); + PointD dir = new ( + X: current_point.X - adjacentPoint.Position.X, + Y: current_point.Y - adjacentPoint.Position.Y); + + RadiansAngle baseTheta = new (Math.Atan2 (dir.Y, dir.X)); + double len = Math.Sqrt (dir.X * dir.X + dir.Y * dir.Y); - theta = Math.Round (12 * theta / Math.PI) * Math.PI / 12; - current_point = new PointD ((adjacentPoint.Position.X + len * Math.Cos (theta)), (adjacentPoint.Position.Y + len * Math.Sin (theta))); + RadiansAngle theta = new (Math.Round (12 * baseTheta.Radians / Math.PI) * Math.PI / 12); + + current_point = new PointD ( + X: adjacentPoint.Position.X + len * Math.Cos (theta.Radians), + Y: adjacentPoint.Position.Y + len * Math.Sin (theta.Radians)); } } @@ -1494,6 +1520,7 @@ protected void ResetShapes () //What happens next depends on whether the old tool was an editable ShapeTool. if (oldTool != null && oldTool.IsEditableShapeTool) { + if (permanentSwitch) { //Set the new tool's active shape and point to the old shape and point. newTool.EditEngine.SelectedPointIndex = oldToolSPI; @@ -1506,9 +1533,9 @@ protected void ResetShapes () ShapeEngine? activeEngine = newTool.EditEngine.ActiveShapeEngine; - if (activeEngine != null) { + if (activeEngine != null) newTool.EditEngine.UpdateToolbarSettings (activeEngine); - } + } else { if (permanentSwitch) { //Make sure that the new tool doesn't think it is drawing anything. From 805c07d1d301fcd9661b2cc492f578988b66413c Mon Sep 17 00:00:00 2001 From: Cameron White Date: Tue, 24 Dec 2024 14:49:49 -0500 Subject: [PATCH 3/4] Replace default gtk color picker #1025 This replaces the default gtk color picker with a custom one. It allows editing both primary and secondary, HSV color circle and Sat / Val square, RGB and HSV color sliders with color previewing and manual input entries Squashed commit of the following: commit 2a775ec1a9e8bbb4f62aa077a3cbb498e71aa92b commit a069ff49317fc929f862edb73163491f2b0156f5 commit 75007ac2a304fb6f05302a31208f45fc9aa7bd52 commit 9c386b710681862e6e7f4a6fd86a2fc7e9c08b6b commit 1b57df92fff2740dbc8b13287acb1e999360475c commit b5c4f69910ca5c3b23ec8f09223e6079ccb67007 commit 917406e7fb79586ac6be48bbd24f0ea834925e98 commit dc0bfd71584ab5d3cc629df53db5adba11fe59fa commit 879330b0b5c1d69ecb67b6b346c9b746d5a0e611 commit 83208557270d1e28559ba6b0982ecf0e2d3e88a6 commit f3878ba5e32720370028b2a49df2558af410402f commit 916d1e3a19f754d46eb838eb83f94f0fe4464a9c commit a49a9786491ec83ef8ed9506e9b79cf9046d93fa commit df12a8adfcf061ba8ff8755c8f4358fddb76b5f3 commit bc1a4b5293fae3470152c96ccf2dccf131f77ce2 commit a9e0395e0cc0a40db160c46eb4dd12741255fff9 commit 8ff7d651923ce8eb944bea93d214319e139fa5cf commit 6cc8e6b732c34ef6ee85538a9fa71d1d8c127fe0 commit ddd49f589e6072d347718daf90a36eef22917ebb commit 7d8d0d12d4716c68782a32b4d6c01fffaa62506f commit 317b07d0a477c03f4d62c455e03877669d9bb364 commit e6394d8235f94008b61522e520bea92c37f88bd2 commit 22223251d2577d977cb55b5c13154e251f479127 commit 81a1ef47b16985f6b3f457fd09d7abaf04bbcde1 commit f0bf3510ccf9b014eaf8872c9edec86712719f2f commit 2c4b49d21b3d7f0b44ea0ac1f84c208296cb25ad commit 11c11ae99230c632604f007f9e35f4439f3e6fe4 commit 54a94722f3627cb50a8e89299691dee4b771c4be commit e51e670bb3737ba01c7d707f72dac3bb483f7c0d commit 17d5495142857759b03c0dd34026f996002eb2ad commit 05a755bc4b3da101b36bbfcd9e7ca89d2a25522f commit f8b9ace9bce029cfbeb31c3068fbbfdf25593b2b Co-authored-by: potatoes1286 <48143760+potatoes1286@users.noreply.github.com> --- Pinta.Core/Classes/ColorBgra.cs | 7 +- Pinta.Core/Classes/HsvColor.cs | 135 +-- Pinta.Core/Classes/RgbColor.cs | 115 -- Pinta.Core/Effects/UnaryPixelOps.cs | 11 +- .../Cairo/CairoExtensions.ColorType.cs | 241 +++++ .../Extensions/Gtk/GtkExtensions.Widget.cs | 17 + .../Widgets/ColorPickerDialog.cs | 995 ++++++++++++++++++ .../Widgets/StatusBarColorPaletteWidget.cs | 113 +- Pinta.Resources/Icons.cs | 13 +- .../actions/edit-swap-vert-symbolic.svg | 1 + tests/Pinta.Core.Tests/ColorTests.cs | 46 + .../Assets/huesaturation2.png | Bin 122994 -> 109113 bytes tests/Pinta.Effects.Tests/Utilities.cs | 2 +- 13 files changed, 1408 insertions(+), 288 deletions(-) delete mode 100644 Pinta.Core/Classes/RgbColor.cs create mode 100644 Pinta.Gui.Widgets/Widgets/ColorPickerDialog.cs create mode 100644 Pinta.Resources/icons/hicolor/scalable/actions/edit-swap-vert-symbolic.svg create mode 100644 tests/Pinta.Core.Tests/ColorTests.cs diff --git a/Pinta.Core/Classes/ColorBgra.cs b/Pinta.Core/Classes/ColorBgra.cs index ca2793c602..9f23573070 100644 --- a/Pinta.Core/Classes/ColorBgra.cs +++ b/Pinta.Core/Classes/ColorBgra.cs @@ -324,7 +324,7 @@ public static ColorBgra Blend (ReadOnlySpan colors) /// A ColorBgra value in premultiplied alpha form public readonly ColorBgra ToPremultipliedAlpha () => FromBgra ((byte) (B * A / 255), (byte) (G * A / 255), (byte) (R * A / 255), A); - public static bool ColorsWithinTolerance (ColorBgra a, ColorBgra b, int tolerance) + public static int ColorDifference (ColorBgra a, ColorBgra b) { int diffR = a.R - b.R; int diffG = a.G - b.G; @@ -337,10 +337,11 @@ public static bool ColorsWithinTolerance (ColorBgra a, ColorBgra b, int toleranc int summandA = diffA * diffA; int sum = summandR + summandG + summandB + summandA; - - return sum <= tolerance * tolerance * 4; + return sum; } + public static bool ColorsWithinTolerance (ColorBgra a, ColorBgra b, int tolerance) => ColorDifference (a, b) <= tolerance * tolerance * 4; + /// /// Brings the color channels from premultiplied alpha in straight alpha form. /// This is required for direct memory manipulation when reading from Cairo surfaces diff --git a/Pinta.Core/Classes/HsvColor.cs b/Pinta.Core/Classes/HsvColor.cs index d6d60adf20..a2091a2c18 100644 --- a/Pinta.Core/Classes/HsvColor.cs +++ b/Pinta.Core/Classes/HsvColor.cs @@ -6,141 +6,46 @@ ///////////////////////////////////////////////////////////////////////////////// using System; +using Cairo; namespace Pinta.Core; /// -/// Adapted from: +/// Adapted from: /// "A Primer on Building a Color Picker User Control with GDI+ in Visual Basic .NET or C#" /// http://www.msdnaa.net/Resources/display.aspx?ResID=2460 /// public readonly struct HsvColor { - public readonly int Hue { get; } // 0-360 - public readonly int Saturation { get; } // 0-100 - public readonly int Value { get; } // 0-100 + public double Hue { get; init; } // 0-360 + public double Sat { get; init; } // 0-1 + public double Val { get; init; } // 0-1 - public static bool operator == (HsvColor lhs, HsvColor rhs) - => lhs.Hue == rhs.Hue && lhs.Saturation == rhs.Saturation && lhs.Value == rhs.Value; - - public static bool operator != (HsvColor lhs, HsvColor rhs) - => !(lhs == rhs); - - public override readonly bool Equals (object? obj) - => obj is HsvColor hsv && this == hsv; - - public override readonly int GetHashCode () - => (Hue + (Saturation << 8) + (Value << 16)).GetHashCode (); - - public HsvColor (int hue, int saturation, int value) + public HsvColor (double hue, double sat, double val) { if (hue < 0 || hue > 360) throw new ArgumentOutOfRangeException (nameof (hue), "must be in the range [0, 360]"); - if (saturation < 0 || saturation > 100) - throw new ArgumentOutOfRangeException (nameof (saturation), "must be in the range [0, 100]"); + if (sat < 0 || sat > 1) + throw new ArgumentOutOfRangeException (nameof (sat), "must be in the range [0, 1]"); - if (value < 0 || value > 100) - throw new ArgumentOutOfRangeException (nameof (value), "must be in the range [0, 100]"); + if (val < 0 || val > 1) + throw new ArgumentOutOfRangeException (nameof (val), "must be in the range [0, 1]"); Hue = hue; - Saturation = saturation; - Value = value; + Sat = sat; + Val = val; } - // public static HsvColor FromColor(Color color) - // { - // RgbColor rgb = new RgbColor(color.R, color.G, color.B); - // return rgb.ToHsv(); - // } - // - // public Color ToColor() - // { - // RgbColor rgb = ToRgb(); - // return Color.FromArgb(rgb.Red, rgb.Green, rgb.Blue); - // } - - public readonly RgbColor ToRgb () - { - // HsvColor contains values scaled as in the color wheel. - // Scale Hue to be between 0 and 360. Saturation - // and value scale to be between 0 and 1. - double h = (double) Hue % 360; - double s = (double) Saturation / 100; - double v = (double) Value / 100; - - double r = 0; - double g = 0; - double b = 0; - - if (s == 0) { - // If s is 0, all colors are the same. - // This is some flavor of gray. - r = v; - g = v; - b = v; - } else { - // The color wheel consists of 6 sectors. - // Figure out which sector you're in. - double sectorPos = h / 60; - int sectorNumber = (int) (Math.Floor (sectorPos)); - - // get the fractional part of the sector. - // That is, how many degrees into the sector - // are you? - double fractionalSector = sectorPos - sectorNumber; + public static HsvColor FromColor (Color c) => c.ToHsv (); + public Color ToColor (double alpha = 1) => Color.FromHsv (this, alpha); + public static HsvColor FromBgra (ColorBgra c) => c.ToCairoColor ().ToHsv (); + public ColorBgra ToBgra () => this.ToColor ().ToColorBgra (); - // Calculate values for the three axes - // of the color. - double p = v * (1 - s); - double q = v * (1 - (s * fractionalSector)); - double t = v * (1 - (s * (1 - fractionalSector))); - - // Assign the fractional colors to r, g, and b - // based on the sector the angle is in. - switch (sectorNumber) { - case 0: - r = v; - g = t; - b = p; - break; - - case 1: - r = q; - g = v; - b = p; - break; - - case 2: - r = p; - g = v; - b = t; - break; - - case 3: - r = p; - g = q; - b = v; - break; - - case 4: - r = t; - g = p; - b = v; - break; - - case 5: - r = v; - g = p; - b = q; - break; - } - } - // return an RgbColor structure, with values scaled - // to be between 0 and 255. - return new RgbColor ((int) (r * 255), (int) (g * 255), (int) (b * 255)); - } public override readonly string ToString () - => $"({Hue}, {Saturation}, {Value})"; + => $"({Hue:F2}, {Sat:F2}, {Val:F2})"; + + public override int GetHashCode () + => ((int) Hue + ((int) Sat << 8) + ((int) Val << 16)).GetHashCode (); } diff --git a/Pinta.Core/Classes/RgbColor.cs b/Pinta.Core/Classes/RgbColor.cs deleted file mode 100644 index 8ac619f845..0000000000 --- a/Pinta.Core/Classes/RgbColor.cs +++ /dev/null @@ -1,115 +0,0 @@ -///////////////////////////////////////////////////////////////////////////////// -// Paint.NET // -// Copyright (C) Rick Brewster, Tom Jackson, and past contributors. // -// Portions Copyright (C) Microsoft Corporation. All Rights Reserved. // -// See license-pdn.txt for full licensing and attribution details. // -///////////////////////////////////////////////////////////////////////////////// - -using System; - -namespace Pinta.Core; - -/// -/// Adapted from: -/// "A Primer on Building a Color Picker User Control with GDI+ in Visual Basic .NET or C#" -/// http://www.msdnaa.net/Resources/display.aspx?ResID=2460 -/// -/// This class is only used by the ColorsForm and ColorWheel. Nothing else in this program -/// should be using it! -/// -[Serializable] -public readonly struct RgbColor -{ - // All values are between 0 and 255. - public readonly int Red; - public readonly int Green; - public readonly int Blue; - - public RgbColor (int R, int G, int B) - { -#if DEBUG - if (R < 0 || R > 255) { - throw new ArgumentOutOfRangeException (nameof (R), R, $"{nameof (R)} must correspond to a byte value"); - } - if (G < 0 || G > 255) { - throw new ArgumentOutOfRangeException (nameof (G), G, $"{nameof (G)} must correspond to a byte value"); - } - if (B < 0 || B > 255) { - throw new ArgumentOutOfRangeException (nameof (B), B, $"{nameof (B)} must correspond to a byte value"); - } -#endif - Red = R; - Green = G; - Blue = B; - } - - public static RgbColor FromHsv (HsvColor hsv) - { - return hsv.ToRgb (); - } - - // public Color ToColor() - // { - // return Color.FromArgb(Red, Green, Blue); - // } - - public readonly HsvColor ToHsv () - { - // In this function, R, G, and B values must be scaled - // to be between 0 and 1. - // HsvColor.Hue will be a value between 0 and 360, and - // HsvColor.Saturation and value are between 0 and 1. - - double r = (double) Red / 255; - double g = (double) Green / 255; - double b = (double) Blue / 255; - - double min = Math.Min (Math.Min (r, g), b); - double max = Math.Max (Math.Max (r, g), b); - - double delta = max - min; - - double h; - double s; - double v; - - if (max == 0 || delta == 0) { - // R, G, and B must be 0, or all the same. - // In this case, S is 0, and H is undefined. - // Using H = 0 is as good as any... - s = 0; - h = 0; - v = max; - } else { - s = delta / max; - if (r == max) { - // Between Yellow and Magenta - h = (g - b) / delta; - } else if (g == max) { - // Between Cyan and Yellow - h = 2 + (b - r) / delta; - } else { - // Between Magenta and Cyan - h = 4 + (r - g) / delta; - } - v = max; - } - // Scale h to be between 0 and 360. - // This may require adding 360, if the value - // is negative. - h *= 60; - - if (h < 0) { - h += 360; - } - - // Scale to the requirements of this - // application. All values are between 0 and 255. - return new HsvColor ((int) h, (int) (s * 100), (int) (v * 100)); - } - - public override readonly string ToString () - { - return $"({Red}, {Green}, {Blue})"; - } -} diff --git a/Pinta.Core/Effects/UnaryPixelOps.cs b/Pinta.Core/Effects/UnaryPixelOps.cs index 1b719a7559..96511e5311 100644 --- a/Pinta.Core/Effects/UnaryPixelOps.cs +++ b/Pinta.Core/Effects/UnaryPixelOps.cs @@ -132,7 +132,7 @@ public SetChannel (int channel, byte setValue) /// /// Specialization of SetChannel that sets the alpha channel. /// - /// This class depends on the system being litte-endian with the alpha channel + /// This class depends on the system being litte-endian with the alpha channel /// occupying the 8 most-significant-bits of a ColorBgra instance. /// By the way, we use addition instead of bitwise-OR because an addition can be /// perform very fast (0.5 cycles) on a Pentium 4. @@ -669,8 +669,8 @@ public override ColorBgra Apply (in ColorBgra src_color) color.G = Utility.ClampToByte ((intensity * 1024 + (color.G - intensity) * sat_factor) >> 10); color.B = Utility.ClampToByte ((intensity * 1024 + (color.B - intensity) * sat_factor) >> 10); - HsvColor hsvColor = (new RgbColor (color.R, color.G, color.B)).ToHsv (); - int newHue = hsvColor.Hue; + HsvColor hsvColor = HsvColor.FromBgra (color); + int newHue = (int) hsvColor.Hue; newHue += hue_delta; @@ -678,10 +678,7 @@ public override ColorBgra Apply (in ColorBgra src_color) while (newHue > 360) { newHue -= 360; } - hsvColor = new HsvColor (newHue, hsvColor.Saturation, hsvColor.Value); - - RgbColor rgbColor = hsvColor.ToRgb (); - ColorBgra newColor = ColorBgra.FromBgr ((byte) rgbColor.Blue, (byte) rgbColor.Green, (byte) rgbColor.Red); + ColorBgra newColor = (hsvColor with { Hue = newHue }).ToBgra (); newColor = blend_op.Apply (newColor); newColor.A = color.A; diff --git a/Pinta.Core/Extensions/Cairo/CairoExtensions.ColorType.cs b/Pinta.Core/Extensions/Cairo/CairoExtensions.ColorType.cs index 2c68136ea0..bb6f66f478 100644 --- a/Pinta.Core/Extensions/Cairo/CairoExtensions.ColorType.cs +++ b/Pinta.Core/Extensions/Cairo/CairoExtensions.ColorType.cs @@ -1,3 +1,7 @@ +using System; +using System.Globalization; +using Pinta.Core; + namespace Cairo; // TODO-GTK4 (bindings, unsubmitted) - should this be added to gir.core? @@ -10,4 +14,241 @@ public readonly record struct Color ( public Color (double r, double g, double b) : this (r, g, b, 1.0) { } + + /// + /// Returns the color value as a string in hex color format. + /// + /// If false, returns in format "RRGGBB" (Alpha will not affect result).
+ /// Otherwise, returns in format "RRGGBBAA". + public string ToHex (bool addAlpha = true) + { + int r = Convert.ToInt32 (R * 255.0); + int g = Convert.ToInt32 (G * 255.0); + int b = Convert.ToInt32 (B * 255.0); + int a = Convert.ToInt32 (A * 255.0); + + if (addAlpha) + return $"{r:X2}{g:X2}{b:X2}{a:X2}"; + else + return $"{r:X2}{g:X2}{b:X2}"; + } + + /// + /// Returns a color from an RGBA hex color. Accepts the following formats:
+ /// RRGGBBAA
+ /// RRGGBB
+ /// RGB (Expands to RRGGBB)
+ /// RGBA (Expands to RRGGBBAA)
+ /// Will accept leading #. + ///
+ /// Hex color as a string. + /// Resulting color. If null, the method could not parse it. + public static Color? FromHex (string hex) + { + if (hex.StartsWith ("#")) + hex = hex.Remove (0, 1); + + // handle shorthand hex + if (hex.Length == 3) + hex = $"{hex[0]}{hex[0]}{hex[1]}{hex[1]}{hex[2]}{hex[2]}"; + if (hex.Length == 4) + hex = $"{hex[0]}{hex[0]}{hex[1]}{hex[1]}{hex[2]}{hex[2]}{hex[3]}{hex[3]}"; + + if (hex.Length != 6 && hex.Length != 8) + return null; + try { + int r = int.Parse (hex.Substring (0, 2), NumberStyles.HexNumber); + int g = int.Parse (hex.Substring (2, 2), NumberStyles.HexNumber); + int b = int.Parse (hex.Substring (4, 2), NumberStyles.HexNumber); + int a = 255; + if (hex.Length > 6) + a = int.Parse (hex.Substring (6, 2), NumberStyles.HexNumber); + return new Color (r / 255.0, g / 255.0, b / 255.0, a / 255.0); + } catch { + return null; + } + } + + /// + /// Copied from RgbColor.ToHsv
+ /// Returns the Cairo color in HSV value. + ///
+ /// HSV struct. + /// Hue varies from 0 - 360.
+ /// Saturation and value varies from 0 - 1. + ///
+ public HsvColor ToHsv () + { + // In this function, R, G, and B values must be scaled + // to be between 0 and 1. + // HsvColor.Hue will be a value between 0 and 360, and + // HsvColor.Saturation and value are between 0 and 1. + + double h, s, v; + + double min = Math.Min (Math.Min (R, G), B); + double max = Math.Max (Math.Max (R, G), B); + + double delta = max - min; + + if (max == 0 || delta == 0) { + // R, G, and B must be 0, or all the same. + // In this case, S is 0, and H is undefined. + // Using H = 0 is as good as any... + s = 0; + h = 0; + v = max; + } else { + s = delta / max; + if (R == max) { + // Between Yellow and Magenta + h = (G - B) / delta; + } else if (G == max) { + // Between Cyan and Yellow + h = 2 + (B - R) / delta; + } else { + // Between Magenta and Cyan + h = 4 + (R - G) / delta; + } + + v = max; + } + + // Scale h to be between 0 and 360. + // This may require adding 360, if the value + // is negative. + h *= 60; + + if (h < 0) { + h += 360; + } + + // Scale to the requirements of this + // application. All values are between 0 and 255. + return new HsvColor (h, s, v); + } + + /// + /// Returns a copy of the original color, replacing provided HSV components. + /// HSV components not changed will retain their values from the original color. + /// + /// Hue component, 0 - 360 + /// Saturation component, 0 - 1 + /// Value component, 0 - 1 + /// Alpha component, 0 - 1 + public Color CopyHsv (double? hue = null, double? sat = null, double? value = null, double? alpha = null) + { + var hsv = ToHsv (); + + double h = hue ?? hsv.Hue; + double s = sat ?? hsv.Sat; + double v = value ?? hsv.Val; + double a = alpha ?? A; + + return FromHsv (h, s, v, a); + } + + /// + /// Returns a RGBA Cairo color using the given HsvColor. + /// + /// Alpha of the new Cairo color, 0 - 1 + public static Color FromHsv (HsvColor hsv, double alpha = 1) => FromHsv (hsv.Hue, hsv.Sat, hsv.Val, alpha); + + /// + /// Returns a RGBA Cairo color using the given HSV values. + /// + /// Hue component, 0 - 360 + /// Saturation component, 0 - 1 + /// Value component, 0 - 1 + /// Alpha component, 0 - 1 + public static Color FromHsv (double hue, double sat, double value, double alpha = 1) + { + double h = hue; + double s = sat; + double v = value; + + // Stupid hack! + // If v or s is set to 0, it results in data loss for hue / sat. So we force it to be slightly above zero. + if (v == 0) + v = 0.0001; + if (s == 0) + s = 0.0001; + + // HsvColor contains values scaled as in the color wheel. + // Scale Hue to be between 0 and 360. Saturation + // and value scale to be between 0 and 1. + h %= 360.0; + + double r = 0; + double g = 0; + double b = 0; + + if (s == 0) { + // If s is 0, all colors are the same. + // This is some flavor of gray. + r = v; + g = v; + b = v; + } else { + // The color wheel consists of 6 sectors. + // Figure out which sector you're in. + double sectorPos = h / 60; + int sectorNumber = (int) (Math.Floor (sectorPos)); + + // get the fractional part of the sector. + // That is, how many degrees into the sector + // are you? + double fractionalSector = sectorPos - sectorNumber; + + // Calculate values for the three axes + // of the color. + double p = v * (1 - s); + double q = v * (1 - (s * fractionalSector)); + double t = v * (1 - (s * (1 - fractionalSector))); + + // Assign the fractional colors to r, g, and b + // based on the sector the angle is in. + switch (sectorNumber) { + case 0: + r = v; + g = t; + b = p; + break; + + case 1: + r = q; + g = v; + b = p; + break; + + case 2: + r = p; + g = v; + b = t; + break; + + case 3: + r = p; + g = q; + b = v; + break; + + case 4: + r = t; + g = p; + b = v; + break; + + case 5: + r = v; + g = p; + b = q; + break; + } + } + + // return an RgbColor structure, with values scaled + // to be between 0 and 255. + return new Color (r, g, b, alpha); + } } diff --git a/Pinta.Core/Extensions/Gtk/GtkExtensions.Widget.cs b/Pinta.Core/Extensions/Gtk/GtkExtensions.Widget.cs index b8fbdfe19c..60abb3911c 100644 --- a/Pinta.Core/Extensions/Gtk/GtkExtensions.Widget.cs +++ b/Pinta.Core/Extensions/Gtk/GtkExtensions.Widget.cs @@ -254,5 +254,22 @@ public static void GetColor (this Gtk.StyleContext context, out Cairo.Color colo StyleContextGetColor (context.Handle, out var gdk_color); color = new Cairo.Color (gdk_color.Red, gdk_color.Green, gdk_color.Blue, gdk_color.Alpha); } + + /// + /// Checks whether the mousePos (which is relative to topwidget) is within the area and returns its relative position to the area. + /// + /// Drawing area where returns true if mouse inside. + /// The top widget. This is what the mouse position is relative to. + /// Position of the mouse relative to the top widget, usually obtained from Gtk.GestureClick + /// Position of the mouse relative to the drawing area. + /// Whether or not mouse position is within the drawing area. + public static bool IsMouseInDrawingArea (this Gtk.Widget widget, Gtk.Widget topWidget, PointD mousePos, out PointD relPos) + { + widget.TranslateCoordinates (topWidget, 0, 0, out double x, out double y); + relPos = new PointD ((mousePos.X - x), (mousePos.Y - y)); + if (relPos.X >= 0 && relPos.X <= widget.GetWidth () && relPos.Y >= 0 && relPos.Y <= widget.GetHeight ()) + return true; + return false; + } } diff --git a/Pinta.Gui.Widgets/Widgets/ColorPickerDialog.cs b/Pinta.Gui.Widgets/Widgets/ColorPickerDialog.cs new file mode 100644 index 0000000000..08f8fb6f7a --- /dev/null +++ b/Pinta.Gui.Widgets/Widgets/ColorPickerDialog.cs @@ -0,0 +1,995 @@ +using System; +using System.Globalization; +using System.Linq; +using Cairo; +using Gdk; +using GLib; +using Gtk; +using Pinta.Core; +using Color = Cairo.Color; +using Context = Cairo.Context; + +namespace Pinta.Gui.Widgets; + +// used for the right hand side sliders +// uses a label, scale, and entry +// then hides the scale and draws over it +// with a drawingarea +public class ColorPickerSlider : Gtk.Box +{ + public class OnChangeValArgs : EventArgs + { + public string sender_name = ""; + public double value; + } + + public struct ColorPickerSliderArgs () + { + public int Upper { get; set; } + public required string Text { get; set; } + public double Val { get; set; } + public required Gtk.Window TopWindow { get; set; } + public int SliderPaddingWidth { get; set; } + public int SliderPaddingHeight { get; set; } + public int SliderWidth { get; set; } + public int MaxWidthChars { get; set; } = 3; + } + + private readonly ColorPickerSliderArgs args; + private readonly Gtk.Window top_window; + + private readonly Gtk.Label label = new Gtk.Label (); + private readonly Gtk.Scale slider = new Gtk.Scale (); + private readonly Gtk.Entry input = new Gtk.Entry (); + private readonly Gtk.Overlay slider_overlay = new Overlay (); + private readonly Gtk.DrawingArea cursor = new Gtk.DrawingArea (); + public Gtk.DrawingArea Gradient { get; private set; } = new Gtk.DrawingArea (); + + public event EventHandler? OnValueChange; + + private int maxVal; + + + + public ColorPickerSlider (ColorPickerSliderArgs args) + { + this.args = args; + top_window = args.TopWindow; + maxVal = args.Upper; + + label.SetLabel (args.Text); + label.WidthRequest = 50; + slider.SetOrientation (Orientation.Horizontal); + slider.SetAdjustment (Adjustment.New (0, 0, maxVal + 1, 1, 1, 1)); + + slider.WidthRequest = args.SliderWidth; + slider.SetValue (args.Val); + slider.Opacity = 0; + Gradient.SetSizeRequest (args.SliderWidth, this.GetHeight ()); + cursor.SetSizeRequest (args.SliderWidth, this.GetHeight ()); + + cursor.SetDrawFunc ((area, context, width, height) => { + int outlineWidth = 2; + + var curpos = slider.GetValue () / maxVal * (width - 2 * args.SliderPaddingWidth) + args.SliderPaddingWidth; + + ReadOnlySpan cursorPoly = stackalloc PointD[] { + new PointD (curpos, height / 2), + new PointD (curpos + 4, 3 * height / 4), + new PointD (curpos + 4, height - outlineWidth / 2), + new PointD (curpos - 4, height - outlineWidth / 2), + new PointD (curpos - 4, 3 * height / 4), + new PointD (curpos, height / 2) + }; + + context.LineWidth = outlineWidth; + context.DrawPolygonal (cursorPoly, new Color (0, 0, 0), LineCap.Butt); + context.FillPolygonal (cursorPoly, new Color (1, 1, 1)); + }); + + slider_overlay.WidthRequest = args.SliderWidth; + slider_overlay.HeightRequest = this.GetHeight (); + + + slider_overlay.AddOverlay (Gradient); + slider_overlay.AddOverlay (cursor); + slider_overlay.AddOverlay (slider); + + input.MaxWidthChars = args.MaxWidthChars; + input.WidthRequest = 50; + input.Hexpand = false; + input.SetText (Convert.ToInt32 (args.Val).ToString ()); + this.Append (label); + this.Append (slider_overlay); + this.Append (input); + + slider.OnChangeValue += (sender, args) => { + var e = new OnChangeValArgs (); + + + e.sender_name = label.GetLabel (); + e.value = args.Value; + input.SetText (e.value.ToString (CultureInfo.InvariantCulture)); + OnValueChange?.Invoke (this, e); + return false; + }; + + input.OnChanged ((o, e) => { + // see SetValue about suppression + if (suppressEvent) + return; + + var t = o.GetText (); + double val; + var success = double.TryParse (t, CultureInfo.InvariantCulture, out val); + + if (val > maxVal) { + val = maxVal; + input.SetText (Convert.ToInt32 (val).ToString ()); + } + + + if (success) { + var e2 = new OnChangeValArgs (); + e2.sender_name = label.GetLabel (); + e2.value = val; + OnValueChange?.Invoke (this, e2); + } + }); + } + + public void SetSliderWidth (int sliderWidth) + { + slider.WidthRequest = sliderWidth; + Gradient.SetSizeRequest (sliderWidth, this.GetHeight ()); + cursor.SetSizeRequest (sliderWidth, this.GetHeight ()); + slider_overlay.WidthRequest = sliderWidth; + } + + private bool suppressEvent = false; + public void SetValue (double val) + { + slider.SetValue (val); + // Make sure we do not set the text if we are editing it right now + // This is the only reason top_window is passed in as an arg, and despite my best efforts I cannot find a way + // to get that info from GTK programmatically. + if (top_window.GetFocus ()?.Parent != input) { + // hackjob + // prevents OnValueChange from firing when we change the value internally + // because OnValueChange eventually calls SetValue so it causes a stack overflow + suppressEvent = true; + input.SetText (Convert.ToInt32 (val).ToString ()); + } + Gradient.QueueDraw (); + cursor.QueueDraw (); + suppressEvent = false; + } + + public void DrawGradient (Context context, int width, int height, Color[] colors) + { + context.Antialias = Antialias.None; + var draw_w = width - args.SliderPaddingWidth * 2; + var draw_h = height - args.SliderPaddingHeight * 2; + var x1 = args.SliderPaddingWidth + draw_w; + var y1 = args.SliderPaddingHeight + draw_h; + + var bsize = draw_h / 2; + + // Draw transparency background + context.FillRectangle (new RectangleD (args.SliderPaddingWidth, args.SliderPaddingHeight, draw_w, draw_h), new Color (1, 1, 1)); + for (int x = args.SliderPaddingWidth; x < x1; x += bsize * 2) { + var bwidth = bsize; + if (x + bsize > x1) + bwidth = x1 - x; + context.FillRectangle (new RectangleD (x, args.SliderPaddingHeight, bwidth, bsize), new Color (.8, .8, .8)); + } + for (int x = args.SliderPaddingWidth + bsize; x < x1; x += bsize * 2) { + var bwidth = bsize; + if (x + bsize > x1) + bwidth = x1 - x; + context.FillRectangle (new RectangleD (x, args.SliderPaddingHeight + draw_h / 2, bwidth, bsize), new Color (.8, .8, .8)); + } + + var pat = new LinearGradient (args.SliderPaddingWidth, args.SliderPaddingHeight, x1, y1); + + for (int i = 0; i < colors.Length; i++) + pat.AddColorStop (i / (double) (colors.Length - 1), colors[i]); + + context.Rectangle (args.SliderPaddingWidth, args.SliderPaddingHeight, draw_w, draw_h); + context.SetSource (pat); + context.Fill (); + } + +} + +public class CheckboxOption : Gtk.Box +{ + public bool State { get; private set; } + public Gtk.CheckButton Button { get; } + public Gtk.Label Label { get; } + public CheckboxOption (int spacing, bool active, string text) + { + this.Spacing = spacing; + Button = new Gtk.CheckButton (); + State = active; + Button.Active = State; + this.Append (Button); + + Label = new Gtk.Label { Label_ = text }; + this.Append (Label); + } + + public void Toggle () + { + State = !State; + Button.Active = State; + } +} + + +public sealed class ColorPickerDialog : Gtk.Dialog +{ + + private Gtk.Box top_box; + private Gtk.Box swatch_box; + + private Gtk.HeaderBar title_bar; + + private Gtk.Box color_display_box; + + // palette + private int palette_display_size = 50; + private int palette_display_border_thickness = 3; + private Gtk.DrawingArea[] color_displays; + + // color surface + private int picker_surface_radius = 200 / 2; + private int picker_surface_padding = 10; + private Gtk.Box picker_surface_selector_box; + private Gtk.Box picker_surface_box; + private Gtk.Overlay picker_surface_overlay; + private Gtk.DrawingArea picker_surface; + private Gtk.DrawingArea picker_surface_cursor; + enum ColorSurfaceType + { + HueAndSat, + SatAndVal + } + private ColorSurfaceType picker_surface_type = ColorSurfaceType.HueAndSat; + // color surface options + private bool mouse_on_picker_surface = false; + private CheckboxOption picker_surface_option_draw_value; + + // swatches + private Gtk.DrawingArea swatch_recent; + private Gtk.DrawingArea swatch_palette; + + // hex + sliders + private Entry hex_entry; + + private const int cps_padding_height = 10; + private const int cps_padding_width = 14; + private int cps_width = 200; + private Gtk.Box sliders_box; + private ColorPickerSlider hue_cps; + private ColorPickerSlider sat_cps; + private ColorPickerSlider val_cps; + + private ColorPickerSlider r_cps; + private ColorPickerSlider g_cps; + private ColorPickerSlider b_cps; + + private ColorPickerSlider a_cps; + + + // common state + private int color_index = 0; + public Color[] Colors { get; private set; } + private readonly Color[] original_colors; + + private Color CurrentColor { + get => Colors[color_index]; + set => Colors[color_index] = value; + } + + private int spacing = 6; + private int margins = 12; + private readonly ChromeManager chrome_manager; + private readonly string window_title; + private bool small_mode = false; + private bool show_swatches = false; + + private void SetSmallMode (bool isSmallMode) + { + // incredibly silly workaround + // but if this is not done, it seems Wayland will assume the window will never be transparent, and thus opacity will break + this.SetOpacity (0.995f); + small_mode = isSmallMode; + if (isSmallMode) { + spacing = 2; + margins = 6; + palette_display_size = 40; + picker_surface_radius = 75; + cps_width = 150; + swatch_box.Visible = false; + } else { + spacing = 6; + margins = 12; + palette_display_size = 50; + picker_surface_radius = 100; + cps_width = 200; + if (show_swatches) + swatch_box.Visible = true; + } + + top_box.Spacing = spacing; + color_display_box.Spacing = spacing; + + foreach (var display in color_displays) + display.SetSizeRequest (palette_display_size, palette_display_size); + var pickerSurfaceDrawSize = (picker_surface_radius + picker_surface_padding) * 2; + + picker_surface_box.WidthRequest = pickerSurfaceDrawSize; + picker_surface_box.Spacing = spacing; + picker_surface_selector_box.WidthRequest = pickerSurfaceDrawSize; + picker_surface_selector_box.Spacing = spacing; + picker_surface.SetSizeRequest (pickerSurfaceDrawSize, pickerSurfaceDrawSize); + picker_surface_cursor.SetSizeRequest (pickerSurfaceDrawSize, pickerSurfaceDrawSize); + picker_surface_overlay.SetSizeRequest (pickerSurfaceDrawSize, pickerSurfaceDrawSize); + if (small_mode) + picker_surface_selector_box.SetOrientation (Orientation.Vertical); + else + picker_surface_selector_box.SetOrientation (Orientation.Horizontal); + + hue_cps.SetSliderWidth (cps_width); + sat_cps.SetSliderWidth (cps_width); + val_cps.SetSliderWidth (cps_width); + r_cps.SetSliderWidth (cps_width); + g_cps.SetSliderWidth (cps_width); + b_cps.SetSliderWidth (cps_width); + a_cps.SetSliderWidth (cps_width); + + sliders_box.Spacing = spacing; + + this.GetContentAreaBox ().SetAllMargins (margins); + + DefaultWidth = 1; + DefaultHeight = 1; + } + + /// Current Chrome Manager. + /// Palette of adjustable + /// + /// Determines modality of the dialog and live palette behaviour. If true, dialog will not block rest of app and will update + /// the current palette as the color is changed. + /// Title of the dialog. + public ColorPickerDialog (ChromeManager chrome, Color[] palette, int currentColorIndex, bool livePalette, string title) + { + original_colors = palette; + Colors = (Color[]) palette.Clone (); + color_index = currentColorIndex; + chrome_manager = chrome; + window_title = title; + show_swatches = !livePalette; + + + // Top part of the color picker. + // Includes palette, color surface, sliders/hex + // Basically, the not-swatches + top_box = new Gtk.Box { Spacing = spacing }; + + + // titlebar of color picker; mainly just contains the reset color button + #region Titlebar + + title_bar = new Gtk.HeaderBar (); + var reset_button = new Button (); + reset_button.Label = Translations.GetString ("Reset Color"); + reset_button.OnClicked += (button, args) => { + Colors = (Color[]) original_colors.Clone (); + UpdateView (); + }; + title_bar.PackStart (reset_button); + + var shrinkButton = new Gtk.Button (); + if (small_mode) + shrinkButton.SetIconName (Resources.StandardIcons.WindowMaximize); + else + shrinkButton.SetIconName (Resources.StandardIcons.WindowMinimize); + shrinkButton.OnClicked += (sender, args) => { + var contentArea = this.GetContentAreaBox (); + //contentArea.RemoveAll (); + SetSmallMode (!small_mode); + if (small_mode) + shrinkButton.SetIconName (Resources.StandardIcons.WindowMaximize); + else + shrinkButton.SetIconName (Resources.StandardIcons.WindowMinimize); + }; + + title_bar.PackStart (shrinkButton); + + Gtk.Button ok_button = new Button { Label = Translations.GetString ("OK") }; + ok_button.OnClicked += (sender, args) => { this.Response ((int) Gtk.ResponseType.Ok); this.Close (); }; + ok_button.AddCssClass (AdwaitaStyles.SuggestedAction); + + Gtk.Button cancel_button = new Button { Label = Translations.GetString ("Cancel") }; + cancel_button.OnClicked += (sender, args) => { this.Response ((int) Gtk.ResponseType.Ok); this.Close (); }; + + title_bar.PackEnd (ok_button); + title_bar.PackEnd (cancel_button); + + title_bar.SetShowTitleButtons (false); + this.SetTitlebar (title_bar); + + #endregion + + + // Active palette contains the primary/secondary colors on the left of the color picker + #region Color Display + + color_display_box = new Gtk.Box { Spacing = spacing }; + color_display_box.SetOrientation (Orientation.Vertical); + + var colorDisplayList = new Gtk.ListBox (); + + if (Colors.Length > 1) { + var colorDisplaySwap = new Gtk.Button (); + // technically this label would be wrong if you have >2 colors but there is no situation in which there are >2 colors in the palette + var label = Translations.GetString ("Click to switch between primary and secondary color."); + var shortcut_label = Translations.GetString ("Shortcut key"); + colorDisplaySwap.TooltipText = $"{label} {shortcut_label}: {"X"}"; + colorDisplaySwap.SetIconName (Resources.StandardIcons.EditSwap); + colorDisplaySwap.OnClicked += (sender, args) => { + CycleColors (); + }; + + color_display_box.Append (colorDisplaySwap); + } + + color_displays = new DrawingArea[original_colors.Length]; + for (int i = 0; i < original_colors.Length; i++) { + var display = new Gtk.DrawingArea (); + display.SetSizeRequest (palette_display_size, palette_display_size); + var pos = i; + display.SetDrawFunc ((area, context, width, height) => DrawPaletteDisplay (context, Colors[pos])); + colorDisplayList.Append (display); + color_displays[i] = display; + } + + // Set initial selected row + colorDisplayList.SetSelectionMode (SelectionMode.Single); + colorDisplayList.SelectRow (colorDisplayList.GetRowAtIndex (color_index)); + + // Handle on select; index 0 -> primary; index 1 -> secondary + colorDisplayList.OnRowSelected += ((sender, args) => { + color_index = args.Row?.GetIndex () ?? 0; + UpdateView (); + }); + + color_display_box.Append (colorDisplayList); + + #endregion + + + // Picker surface; either is Hue & Sat (Color circle) or Sat & Val (Square) + // Also contains picker surface switcher + options + #region Picker Surface + + var pickerSurfaceDrawSize = (picker_surface_radius + picker_surface_padding) * 2; + + picker_surface_box = new Gtk.Box { Spacing = spacing, WidthRequest = pickerSurfaceDrawSize }; + picker_surface_box.SetOrientation (Orientation.Vertical); + + picker_surface_selector_box = new Gtk.Box { Spacing = spacing, WidthRequest = pickerSurfaceDrawSize }; + picker_surface_selector_box.Homogeneous = true; + picker_surface_selector_box.Halign = Align.Center; + + // Show Value toggle for hue sat picker surface + picker_surface_option_draw_value = new CheckboxOption (spacing, true, Translations.GetString ("Show Value")); + picker_surface_option_draw_value.Button.OnToggled += (o, e) => { + picker_surface_option_draw_value.Toggle (); + UpdateView (); + }; + + // When Gir.Core supports it, this should probably be replaced with a toggle group. + var pickerSurfaceHueSat = Gtk.ToggleButton.NewWithLabel (Translations.GetString ("Hue & Sat")); + if (picker_surface_type == ColorSurfaceType.HueAndSat) + pickerSurfaceHueSat.Toggle (); + pickerSurfaceHueSat.OnToggled += (sender, args) => { + picker_surface_type = ColorSurfaceType.HueAndSat; + picker_surface_option_draw_value.SetVisible (true); + UpdateView (); + }; + + var pickerSurfaceSatVal = Gtk.ToggleButton.NewWithLabel (Translations.GetString ("Sat & Value")); + if (picker_surface_type == ColorSurfaceType.SatAndVal) + pickerSurfaceSatVal.Toggle (); + pickerSurfaceSatVal.OnToggled += (sender, args) => { + picker_surface_type = ColorSurfaceType.SatAndVal; + picker_surface_option_draw_value.SetVisible (false); + UpdateView (); + }; + + + pickerSurfaceHueSat.SetGroup (pickerSurfaceSatVal); + picker_surface_selector_box.Append (pickerSurfaceHueSat); + picker_surface_selector_box.Append (pickerSurfaceSatVal); + + picker_surface_box.Append (picker_surface_selector_box); + + picker_surface = new Gtk.DrawingArea (); + picker_surface.SetSizeRequest (pickerSurfaceDrawSize, pickerSurfaceDrawSize); + picker_surface.SetDrawFunc ((area, context, width, height) => DrawColorSurface (context)); + + // Cursor handles the square in the picker surface displaying where your selected color is + picker_surface_cursor = new Gtk.DrawingArea (); + picker_surface_cursor.SetSizeRequest (pickerSurfaceDrawSize, pickerSurfaceDrawSize); + picker_surface_cursor.SetDrawFunc ((area, context, width, height) => { + context.Antialias = Antialias.None; + var loc = HsvToPickerLocation (CurrentColor.ToHsv (), picker_surface_radius); + loc = new PointD (loc.X + picker_surface_radius + picker_surface_padding, loc.Y + picker_surface_radius + picker_surface_padding); + + context.FillRectangle (new RectangleD (loc.X - 5, loc.Y - 5, 10, 10), CurrentColor); + context.DrawRectangle (new RectangleD (loc.X - 5, loc.Y - 5, 10, 10), new Color (0, 0, 0), 4); + context.DrawRectangle (new RectangleD (loc.X - 5, loc.Y - 5, 10, 10), new Color (1, 1, 1), 1); + }); + + // Overlays the cursor on top of the surface + picker_surface_overlay = new Gtk.Overlay (); + picker_surface_overlay.AddOverlay (picker_surface); + picker_surface_overlay.AddOverlay (picker_surface_cursor); + picker_surface_overlay.SetSizeRequest (pickerSurfaceDrawSize, pickerSurfaceDrawSize); + + picker_surface_box.Append (picker_surface_overlay); + + picker_surface_box.Append (picker_surface_option_draw_value); + + #endregion + + + // Handles the ColorPickerSliders + Hex entry. + #region SliderAndHex + + sliders_box = new Gtk.Box { Spacing = spacing }; + sliders_box.SetOrientation (Orientation.Vertical); + + var hexBox = new Gtk.Box { Spacing = spacing }; + + hexBox.Append (new Label { Label_ = Translations.GetString ("Hex"), WidthRequest = 50 }); + hex_entry = new Entry { Text_ = CurrentColor.ToHex (), MaxWidthChars = 10 }; + hex_entry.OnChanged ((o, e) => { + if (GetFocus ()?.Parent == hex_entry) { + CurrentColor = Color.FromHex (hex_entry.GetText ()) ?? CurrentColor; + UpdateView (); + } + }); + + hexBox.Append (hex_entry); + + + sliders_box.Append (hexBox); + + + var cpsArgs = new ColorPickerSlider.ColorPickerSliderArgs { + Text = string.Empty, + TopWindow = this, + SliderPaddingHeight = cps_padding_height, + SliderPaddingWidth = cps_padding_width, + SliderWidth = cps_width + }; + + + hue_cps = new ColorPickerSlider (cpsArgs with { Upper = 360, Text = Translations.GetString ("Hue"), Val = CurrentColor.ToHsv ().Hue, }); + hue_cps.Gradient.SetDrawFunc ((_, c, w, h) => hue_cps.DrawGradient (c, w, h, new Color[] { + CurrentColor.CopyHsv (hue: 0), + CurrentColor.CopyHsv (hue: 60), + CurrentColor.CopyHsv (hue: 120), + CurrentColor.CopyHsv (hue: 180), + CurrentColor.CopyHsv (hue: 240), + CurrentColor.CopyHsv (hue: 300), + CurrentColor.CopyHsv (hue: 360) + })); + hue_cps.OnValueChange += (sender, args) => { + CurrentColor = CurrentColor.CopyHsv (hue: args.value); + UpdateView (); + }; + sliders_box.Append (hue_cps); + + + sat_cps = new ColorPickerSlider (cpsArgs with { Upper = 100, Text = Translations.GetString ("Sat"), Val = CurrentColor.ToHsv ().Sat * 100.0, }); + sat_cps.Gradient.SetDrawFunc ((_, c, w, h) => sat_cps.DrawGradient (c, w, h, new Color[] { + CurrentColor.CopyHsv (sat: 0), CurrentColor.CopyHsv (sat: 1) })); + sat_cps.OnValueChange += (sender, args) => { + CurrentColor = CurrentColor.CopyHsv (sat: args.value / 100.0); + UpdateView (); + }; + sliders_box.Append (sat_cps); + + + val_cps = new ColorPickerSlider (cpsArgs with { Upper = 100, Text = Translations.GetString ("Value"), Val = CurrentColor.ToHsv ().Val * 100.0 }); + val_cps.Gradient.SetDrawFunc ((_, c, w, h) => val_cps.DrawGradient (c, w, h, new Color[] { + CurrentColor.CopyHsv (value: 0), CurrentColor.CopyHsv (value: 1) })); + val_cps.OnValueChange += (sender, args) => { + CurrentColor = CurrentColor.CopyHsv (value: args.value / 100.0); + UpdateView (); + }; + sliders_box.Append (val_cps); + + + sliders_box.Append (new Gtk.Separator ()); + + + r_cps = new ColorPickerSlider (cpsArgs with { Upper = 255, Text = Translations.GetString ("Red"), Val = CurrentColor.R * 255.0, }); + r_cps.Gradient.SetDrawFunc ((_, c, w, h) => r_cps.DrawGradient (c, w, h, new Color[] { + CurrentColor with { R = 0 }, CurrentColor with { R = 1 } })); + r_cps.OnValueChange += (sender, args) => { + CurrentColor = CurrentColor with { R = args.value / 255.0 }; + UpdateView (); + }; + sliders_box.Append (r_cps); + + + g_cps = new ColorPickerSlider (cpsArgs with { Upper = 255, Text = Translations.GetString ("Green"), Val = CurrentColor.G * 255.0, }); + g_cps.Gradient.SetDrawFunc ((_, c, w, h) => g_cps.DrawGradient (c, w, h, new Color[] { + CurrentColor with { G = 0 }, CurrentColor with { G = 1 } })); + g_cps.OnValueChange += (sender, args) => { + CurrentColor = CurrentColor with { G = args.value / 255.0 }; + UpdateView (); + }; + sliders_box.Append (g_cps); + + + b_cps = new ColorPickerSlider (cpsArgs with { Upper = 255, Text = Translations.GetString ("Blue"), Val = CurrentColor.B * 255.0 }); + b_cps.Gradient.SetDrawFunc ((_, c, w, h) => b_cps.DrawGradient (c, w, h, new Color[] { + CurrentColor with { B = 0 }, CurrentColor with { B = 1 } })); + b_cps.OnValueChange += (sender, args) => { + CurrentColor = CurrentColor with { B = args.value / 255.0 }; + UpdateView (); + }; + sliders_box.Append (b_cps); + + + sliders_box.Append (new Gtk.Separator ()); + a_cps = new ColorPickerSlider (cpsArgs with { Upper = 255, Text = Translations.GetString ("Alpha"), Val = CurrentColor.A * 255.0 }); + a_cps.Gradient.SetDrawFunc ((_, c, w, h) => a_cps.DrawGradient (c, w, h, new Color[] { + CurrentColor with { A = 0 }, CurrentColor with { A = 1 } })); + a_cps.OnValueChange += (sender, args) => { + CurrentColor = CurrentColor with { A = args.value / 255.0 }; + UpdateView (); + }; + sliders_box.Append (a_cps); + #endregion + + + #region Swatch + swatch_box = new Gtk.Box { Spacing = spacing }; + swatch_box.SetOrientation (Orientation.Vertical); + + + // 90% taken from SatusBarColorPaletteWidget + // todo: merge both + + swatch_recent = new DrawingArea (); + swatch_recent.WidthRequest = 500; + swatch_recent.HeightRequest = StatusBarColorPaletteWidget.SWATCH_SIZE * StatusBarColorPaletteWidget.PALETTE_ROWS; + + swatch_recent.SetDrawFunc ((area, g, width, height) => { + var recent = PintaCore.Palette.RecentlyUsedColors; + var recent_cols = PintaCore.Palette.MaxRecentlyUsedColor / StatusBarColorPaletteWidget.PALETTE_ROWS; + var recent_palette_rect = new RectangleD (0, 0, StatusBarColorPaletteWidget.SWATCH_SIZE * recent_cols, + StatusBarColorPaletteWidget.SWATCH_SIZE * StatusBarColorPaletteWidget.PALETTE_ROWS); + + for (var i = 0; i < recent.Count (); i++) + g.FillRectangle (StatusBarColorPaletteWidget.GetSwatchBounds (i, recent_palette_rect, true), recent.ElementAt (i)); + }); + + swatch_box.Append (swatch_recent); + + + swatch_palette = new DrawingArea (); + + swatch_palette.WidthRequest = 500; + swatch_palette.HeightRequest = StatusBarColorPaletteWidget.SWATCH_SIZE * StatusBarColorPaletteWidget.PALETTE_ROWS; + + swatch_palette.SetDrawFunc ((area, g, width, height) => { + var palette_rect = new RectangleD (0, 0, + width - StatusBarColorPaletteWidget.PALETTE_MARGIN, + StatusBarColorPaletteWidget.SWATCH_SIZE * StatusBarColorPaletteWidget.PALETTE_ROWS); + + var palette = PintaCore.Palette.CurrentPalette; + for (var i = 0; i < palette.Count; i++) + g.FillRectangle (StatusBarColorPaletteWidget.GetSwatchBounds (i, palette_rect), palette[i]); + }); + swatch_box.Append (swatch_palette); + + if (!show_swatches) + swatch_box.SetVisible (false); + + #endregion + + + #region Mouse Handler + + var click_gesture = Gtk.GestureClick.New (); + click_gesture.SetButton (0); // Listen for all mouse buttons. + click_gesture.OnPressed += (_, e) => { + PointD absPos = new PointD (e.X, e.Y); + PointD relPos; + + if (picker_surface.IsMouseInDrawingArea (this, absPos, out relPos)) { + mouse_on_picker_surface = true; + SetColorFromPickerSurface (new PointD (e.X, e.Y)); + } else + + if (swatch_box.Visible && swatch_recent.IsMouseInDrawingArea (this, absPos, out relPos)) { + var recent_index = StatusBarColorPaletteWidget.GetSwatchAtLocation (relPos, new RectangleD (), true); + + if (recent_index >= 0) { + CurrentColor = PintaCore.Palette.RecentlyUsedColors.ElementAt (recent_index); + UpdateView (); + } + } else + + if (swatch_box.Visible && swatch_palette.IsMouseInDrawingArea (this, absPos, out relPos)) { + var index = StatusBarColorPaletteWidget.GetSwatchAtLocation (relPos, new RectangleD ()); + + if (index >= 0) { + CurrentColor = PintaCore.Palette.CurrentPalette[index]; + UpdateView (); + } + } + }; + click_gesture.OnReleased += (_, e) => { + mouse_on_picker_surface = false; + }; + AddController (click_gesture); + + var keyboard_gesture = Gtk.EventControllerKey.New (); + keyboard_gesture.OnKeyPressed += (_, e) => { + if (e.GetKey () == Key.x) + CycleColors (); + return true; + }; + AddController (keyboard_gesture); + + var motion_controller = Gtk.EventControllerMotion.New (); + motion_controller.OnMotion += (_, args) => { + if (mouse_on_picker_surface) + SetColorFromPickerSurface (new PointD (args.X, args.Y)); + }; + AddController (motion_controller); + + #endregion + + Gtk.Box mainVbox = new () { Spacing = spacing }; + mainVbox.SetOrientation (Gtk.Orientation.Vertical); + + top_box.Append (color_display_box); + top_box.Append (picker_surface_box); + top_box.Append (sliders_box); + + mainVbox.Append (top_box); + if (!small_mode) + mainVbox.Append (swatch_box); + + Title = Translations.GetString (window_title); + TransientFor = chrome_manager.MainWindow; + Modal = false; + IconName = Resources.Icons.ImageResizeCanvas; + DefaultWidth = 1; + DefaultHeight = 1; + + var contentArea = this.GetContentAreaBox (); + contentArea.SetAllMargins (margins); + contentArea.Append (mainVbox); + + + // incredibly silly workaround + // but if this is not done, it seems Wayland will assume the window will never be transparent, and thus opacity will break + this.SetOpacity (0.995f); + + // Handles on active / off active + // When user clicks off the color picker, we assign the color picker values to the palette + // we only do this on off active because otherwise the recent color palette would be spammed + // every time the color changes + this.OnNotify += (sender, args) => { + if (args.Pspec.GetName () == "is-active" && livePalette) { + if (!IsActive) { + this.SetOpacity (0.85f); + if (PintaCore.Palette.PrimaryColor != Colors[0]) + PintaCore.Palette.PrimaryColor = Colors[0]; + if (PintaCore.Palette.SecondaryColor != Colors[1]) + PintaCore.Palette.SecondaryColor = Colors[1]; + } else { + this.SetOpacity (1f); + } + } + }; + + if (livePalette) { + EventHandler PrimaryChangeHandler = (sender, args) => { + Colors[0] = ((PaletteManager) sender!).PrimaryColor; + + UpdateView (); + }; + EventHandler SecondaryChangeHandler = (sender, args) => { + Colors[1] = ((PaletteManager) sender!).SecondaryColor; + UpdateView (); + }; + + PintaCore.Palette.PrimaryColorChanged += PrimaryChangeHandler; + PintaCore.Palette.SecondaryColorChanged += SecondaryChangeHandler; + + this.OnResponse += (sender, args) => { + PintaCore.Palette.PrimaryColorChanged -= PrimaryChangeHandler; + PintaCore.Palette.SecondaryColorChanged -= SecondaryChangeHandler; + }; + } + + + this.SetDefaultResponse (Gtk.ResponseType.Cancel); + } + + private void CycleColors () + { + var swap = Colors[0]; + for (int i = 0; i < Colors.Length - 1; i++) + Colors[i] = Colors[i + 1]; + Colors[^1] = swap; + UpdateView (); + } + + + private void UpdateView () + { + // Redraw picker surfaces + picker_surface_cursor.QueueDraw (); + picker_surface.QueueDraw (); + + // Redraw cps + var hsv = CurrentColor.ToHsv (); + + hue_cps.SetValue (hsv.Hue); + sat_cps.SetValue (hsv.Sat * 100.0); + val_cps.SetValue (hsv.Val * 100.0); + + r_cps.SetValue (CurrentColor.R * 255.0); + g_cps.SetValue (CurrentColor.G * 255.0); + b_cps.SetValue (CurrentColor.B * 255.0); + a_cps.SetValue (CurrentColor.A * 255.0); + + + // Update hex + if (GetFocus ()?.Parent != hex_entry) + hex_entry.SetText (CurrentColor.ToHex ()); + + // Redraw palette displays + foreach (var display in color_displays) { + display.QueueDraw (); + } + } + + private void DrawPaletteDisplay (Context g, Color c) + { + int xy = palette_display_border_thickness; + int wh = palette_display_size - palette_display_border_thickness * 2; + g.Antialias = Antialias.None; + + // make checker pattern + if (c.A != 1) { + g.FillRectangle (new RectangleD (xy, xy, wh, wh), new Color (1, 1, 1)); + g.FillRectangle (new RectangleD (xy, xy, wh / 2, wh / 2), new Color (.8, .8, .8)); + g.FillRectangle (new RectangleD (xy + wh / 2, xy + wh / 2, wh / 2, wh / 2), new Color (.8, .8, .8)); + } + + g.FillRectangle (new RectangleD (xy, xy, wh, wh), c); + g.DrawRectangle (new RectangleD (xy, xy, wh, wh), new Color (0, 0, 0), palette_display_border_thickness); + } + + private void DrawColorSurface (Context g) + { + int rad = picker_surface_radius; + int x0 = picker_surface_padding; + int y0 = picker_surface_padding; + int draw_width = picker_surface_radius * 2; + int draw_height = picker_surface_radius * 2; + int x1 = x0 + picker_surface_padding; + int y1 = y0 + picker_surface_padding; + PointI center = new PointI (rad, rad); + + if (picker_surface_type == ColorSurfaceType.HueAndSat) { + var img = CairoExtensions.CreateImageSurface (Cairo.Format.Argb32, draw_width, draw_height); + var data = img.GetPixelData (); + + for (int y = 0; y < draw_height; y++) { + for (int x = 0; x < draw_width; x++) { + PointI pxl = new PointI (x, y); + PointI vec = pxl - center; + if (vec.Magnitude () <= rad) { + double h = (MathF.Atan2 (vec.Y, -vec.X) + MathF.PI) / (2f * MathF.PI) * 360f; + double s = Math.Min (vec.Magnitude () / rad, 1); + double v = picker_surface_option_draw_value.State ? CurrentColor.ToHsv ().Val : 1; + + double d = rad - vec.Magnitude (); + double a = d < 1 ? d : 1; + + var c = Color.FromHsv (h, s, v, a); + + data[draw_width * y + x] = c.ToColorBgra (); + } + } + } + + img.MarkDirty (); + g.SetSourceSurface (img, picker_surface_padding, picker_surface_padding); + g.Paint (); + } else if (picker_surface_type == ColorSurfaceType.SatAndVal) { + var img = CairoExtensions.CreateImageSurface (Cairo.Format.Argb32, draw_width, draw_height); + var data = img.GetPixelData (); + + for (int y = 0; y < draw_height; y++) { + double s = 1.0 - (double) y / (draw_height - 1); + for (int x = 0; x < draw_width; x++) { + double v = (double) x / (draw_width - 1); + var c = Color.FromHsv (CurrentColor.ToHsv ().Hue, s, v); + data[draw_width * y + x] = c.ToColorBgra (); + } + } + + img.MarkDirty (); + g.SetSourceSurface (img, picker_surface_padding, picker_surface_padding); + g.Paint (); + } + } + + // Takes in HSV values as tuple (h,s,v) and returns the position of that color in the picker surface. + private PointD HsvToPickerLocation (HsvColor hsv, int radius) + { + if (picker_surface_type == ColorSurfaceType.HueAndSat) { + var rad = hsv.Hue * (Math.PI / 180.0); + var mult = radius; + var mag = hsv.Sat * mult; + var x = Math.Cos (rad) * mag; + var y = Math.Sin (rad) * mag; + return new PointD (x, -y); + } else if (picker_surface_type == ColorSurfaceType.SatAndVal) { + int size = radius * 2; + var x = hsv.Val * (size - 1); + var y = size - hsv.Sat * (size - 1); + return new PointD (x - radius, y - radius); + } + + return new PointD (0, 0); + } + + void SetColorFromPickerSurface (PointD point) + { + picker_surface.TranslateCoordinates (this, picker_surface_padding, picker_surface_padding, out var x, out var y); + PointI centre = new PointI (picker_surface_radius, picker_surface_radius); + PointI cursor = new PointI ((int) (point.X - x), (int) (point.Y - y)); + + PointI vecCursor = cursor - centre; + + if (picker_surface_type == ColorSurfaceType.HueAndSat) { + var hue = (Math.Atan2 (vecCursor.Y, -vecCursor.X) + Math.PI) / (2f * Math.PI) * 360f; + + var sat = Math.Min (vecCursor.Magnitude () / picker_surface_radius, 1); + + CurrentColor = CurrentColor.CopyHsv (hue: hue, sat: sat); + } else if (picker_surface_type == ColorSurfaceType.SatAndVal) { + int size = picker_surface_radius * 2; + if (cursor.X > size - 1) + cursor = cursor with { X = size - 1 }; + if (cursor.X < 0) + cursor = cursor with { X = 0 }; + if (cursor.Y > size - 1) + cursor = cursor with { Y = size - 1 }; + if (cursor.Y < 0) + cursor = cursor with { Y = 0 }; + double s = 1f - (double) cursor.Y / (size - 1); + double v = (double) cursor.X / (size - 1); + CurrentColor = CurrentColor.CopyHsv (sat: s, value: v); + } + UpdateView (); + } +} diff --git a/Pinta.Gui.Widgets/Widgets/StatusBarColorPaletteWidget.cs b/Pinta.Gui.Widgets/Widgets/StatusBarColorPaletteWidget.cs index 3bb5c95bbf..690cd11a8d 100644 --- a/Pinta.Gui.Widgets/Widgets/StatusBarColorPaletteWidget.cs +++ b/Pinta.Gui.Widgets/Widgets/StatusBarColorPaletteWidget.cs @@ -1,21 +1,21 @@ -// +// // StatusBarColorPaletteWidget.cs -// +// // Author: // Jonathan Pobst -// +// // Copyright (c) 2020 Jonathan Pobst -// +// // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: -// +// // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. -// +// // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -33,6 +33,8 @@ namespace Pinta.Gui.Widgets; public sealed class StatusBarColorPaletteWidget : Gtk.DrawingArea { + private static ColorPickerDialog? active_color_picker; + private readonly RectangleD primary_rect = new (4, 3, 24, 24); private readonly RectangleD secondary_rect = new (17, 16, 24, 24); private readonly RectangleD swap_rect = new (27, 2, 15, 15); @@ -41,10 +43,10 @@ public sealed class StatusBarColorPaletteWidget : Gtk.DrawingArea private RectangleD palette_rect; private RectangleD recent_palette_rect; - const int PALETTE_ROWS = 2; - const int SWATCH_SIZE = 19; - const int WIDGET_HEIGHT = 42; - const int PALETTE_MARGIN = 10; + public const int PALETTE_ROWS = 2; + public const int SWATCH_SIZE = 19; + public const int WIDGET_HEIGHT = 42; + public const int PALETTE_MARGIN = 10; public StatusBarColorPaletteWidget () { @@ -73,12 +75,13 @@ public StatusBarColorPaletteWidget () private void HandleClick (PointD point, uint button) { - switch (GetElementAtPoint (point)) { + var element = GetElementAtPoint (point); + switch (element) { case WidgetElement.PrimaryColor: - PintaCore.Palette.PrimaryColor = GetUserChosenColor (PintaCore.Palette.PrimaryColor, Translations.GetString ("Choose Primary Color")); + RunColorPicker (0); break; case WidgetElement.SecondaryColor: - PintaCore.Palette.SecondaryColor = GetUserChosenColor (PintaCore.Palette.SecondaryColor, Translations.GetString ("Choose Secondary Color")); + RunColorPicker (1); break; case WidgetElement.SwapColors: var temp = PintaCore.Palette.PrimaryColor; @@ -95,30 +98,36 @@ private void HandleClick (PointD point, uint button) break; case WidgetElement.Palette: - var index = GetSwatchAtLocation (point); + var index = GetSwatchAtLocation (point, palette_rect); if (index < 0) break; - if (button == GtkExtensions.MouseRightButton) + if (button == GtkExtensions.MouseRightButton) { PintaCore.Palette.SecondaryColor = PintaCore.Palette.CurrentPalette[index]; - else if (button == GtkExtensions.MouseLeftButton) + } else if (button == GtkExtensions.MouseLeftButton) { PintaCore.Palette.PrimaryColor = PintaCore.Palette.CurrentPalette[index]; - else - PintaCore.Palette.CurrentPalette[index] = GetUserChosenColor (PintaCore.Palette.CurrentPalette[index], Translations.GetString ("Choose Palette Color")); + } else { + var color = GetUserChosenColor (new[] { PintaCore.Palette.CurrentPalette[index] }, 0, Translations.GetString ("Choose Palette Color"))?[0]; + if (color != null) + PintaCore.Palette.CurrentPalette[index] = color.Value; + } break; case WidgetElement.RecentColorsPalette: - var recent_index = GetSwatchAtLocation (point, true); + var recent_index = GetSwatchAtLocation (point, recent_palette_rect, true); if (recent_index < 0) break; - if (button == GtkExtensions.MouseRightButton) - PintaCore.Palette.SetColor (false, PintaCore.Palette.RecentlyUsedColors.ElementAt (recent_index), false); - else if (button == GtkExtensions.MouseLeftButton) - PintaCore.Palette.SetColor (true, PintaCore.Palette.RecentlyUsedColors.ElementAt (recent_index), false); + var recentColor = PintaCore.Palette.RecentlyUsedColors.ElementAt (recent_index); + if (button == GtkExtensions.MouseRightButton) { + PintaCore.Palette.SetColor (false, recentColor, false); + } else if (button == GtkExtensions.MouseLeftButton) { + PintaCore.Palette.SetColor (true, recentColor, false); + } + break; } @@ -149,13 +158,13 @@ private void Draw (Context g) var recent = PintaCore.Palette.RecentlyUsedColors; for (int i = 0; i < recent.Count; i++) - g.FillRectangle (GetSwatchBounds (i, true), recent.ElementAt (i)); + g.FillRectangle (GetSwatchBounds (i, recent_palette_rect, true), recent.ElementAt (i)); // Draw color swatches var palette = PintaCore.Palette.CurrentPalette; for (int i = 0; i < palette.Count; i++) - g.FillRectangle (GetSwatchBounds (i), palette[i]); + g.FillRectangle (GetSwatchBounds (i, palette_rect), palette[i]); g.Dispose (); } @@ -202,8 +211,9 @@ private void HandleSizeAllocated (Gtk.DrawingArea.ResizeSignalArgs e) palette_rect = new RectangleD (recent_palette_rect.Right + PALETTE_MARGIN, 2, width - recent_palette_rect.Right - PALETTE_MARGIN, SWATCH_SIZE * PALETTE_ROWS); } - private RectangleD GetSwatchBounds ( + public static RectangleD GetSwatchBounds ( int index, + RectangleD palette_bounds, bool recentColorPalette = false) { // Normal swatches are laid out like this: @@ -219,14 +229,13 @@ private RectangleD GetSwatchBounds ( int col = recentColorPalette ? index % recent_cols : index / PALETTE_ROWS; // Now we need to construct the bounds of that row/column - RectangleD palette_bounds = recentColorPalette ? recent_palette_rect : palette_rect; double x = palette_bounds.X + (col * SWATCH_SIZE); double y = palette_bounds.Y + (row * SWATCH_SIZE); return new (x, y, SWATCH_SIZE, SWATCH_SIZE); } - private int GetSwatchAtLocation (PointD point, bool recentColorPalette = false) + public static int GetSwatchAtLocation (PointD point, RectangleD palette_bounds, bool recentColorPalette = false) { int max = recentColorPalette @@ -235,7 +244,7 @@ private int GetSwatchAtLocation (PointD point, bool recentColorPalette = false) // This could be more efficient, but is good enough for now for (int i = 0; i < max; i++) - if (GetSwatchBounds (i, recentColorPalette).ContainsPoint (point)) + if (GetSwatchBounds (i, palette_bounds, recentColorPalette).ContainsPoint (point)) return i; return -1; @@ -251,11 +260,11 @@ private bool HandleQueryTooltip (object o, Gtk.Widget.QueryTooltipSignalArgs arg switch (GetElementAtPoint (point)) { case WidgetElement.Palette: - if (GetSwatchAtLocation (point) >= 0) + if (GetSwatchAtLocation (point, palette_rect) >= 0) text = Translations.GetString ("Left click to set primary color. Right click to set secondary color. Middle click to choose palette color."); break; case WidgetElement.RecentColorsPalette: - if (GetSwatchAtLocation (point, true) >= 0) + if (GetSwatchAtLocation (point, recent_palette_rect, true) >= 0) text = Translations.GetString ("Left click to set primary color. Right click to set secondary color."); break; case WidgetElement.PrimaryColor: @@ -286,21 +295,43 @@ private void Palette_ColorChanged (object? sender, EventArgs e) QueueDraw (); } - private static Color GetUserChosenColor (Color initialColor, string title) + + private static void RunColorPicker (int paletteIndex) { - var ccd = Gtk.ColorChooserDialog.New (title, PintaCore.Chrome.MainWindow); - ccd.UseAlpha = true; - ccd.SetColor (initialColor); + if (active_color_picker != null) + return; + active_color_picker = new ColorPickerDialog (PintaCore.Chrome, + new[] { PintaCore.Palette.PrimaryColor, PintaCore.Palette.SecondaryColor }, + paletteIndex, true, Translations.GetString ("Color Picker")); + active_color_picker.Show (); + active_color_picker.OnResponse += (sender, args) => { + if (args.ResponseId == (int) Gtk.ResponseType.Ok) { + if (PintaCore.Palette.PrimaryColor != active_color_picker.Colors[0]) + PintaCore.Palette.PrimaryColor = active_color_picker.Colors[0]; + if (PintaCore.Palette.SecondaryColor != active_color_picker.Colors[1]) + PintaCore.Palette.SecondaryColor = active_color_picker.Colors[1]; + } + + active_color_picker = null; + }; + } + - Cairo.Color result = initialColor; + private static Color[]? GetUserChosenColor (Color[] colors, int selectedColorIndex, string title) + { + ColorPickerDialog dialog = new ColorPickerDialog (PintaCore.Chrome, colors, selectedColorIndex, false, title); - var response = ccd.RunBlocking (); - if (response == Gtk.ResponseType.Ok) - ccd.GetColor (out result); + dialog.Show (); - ccd.Destroy (); + var response = dialog.RunBlocking (); + if (response == Gtk.ResponseType.Ok) { + Color[] result = dialog.Colors; + dialog.Destroy (); + return result; + } - return result; + dialog.Destroy (); + return null; } private WidgetElement GetElementAtPoint (PointD point) diff --git a/Pinta.Resources/Icons.cs b/Pinta.Resources/Icons.cs index 1459ff2066..8a2709d321 100644 --- a/Pinta.Resources/Icons.cs +++ b/Pinta.Resources/Icons.cs @@ -1,21 +1,21 @@ -// +// // Icons.cs -// +// // Author: // Jonathan Pobst -// +// // Copyright (c) 2010 Jonathan Pobst -// +// // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: -// +// // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. -// +// // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -52,6 +52,7 @@ public static class StandardIcons public const string EditRedo = "edit-redo-symbolic"; public const string EditSelectAll = "edit-select-all-symbolic"; public const string EditUndo = "edit-undo-symbolic"; + public const string EditSwap = "edit-swap-vert-symbolic"; public const string GoPrevious = "go-previous-symbolic"; diff --git a/Pinta.Resources/icons/hicolor/scalable/actions/edit-swap-vert-symbolic.svg b/Pinta.Resources/icons/hicolor/scalable/actions/edit-swap-vert-symbolic.svg new file mode 100644 index 0000000000..0dfdfd3745 --- /dev/null +++ b/Pinta.Resources/icons/hicolor/scalable/actions/edit-swap-vert-symbolic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tests/Pinta.Core.Tests/ColorTests.cs b/tests/Pinta.Core.Tests/ColorTests.cs new file mode 100644 index 0000000000..46fcfa20a0 --- /dev/null +++ b/tests/Pinta.Core.Tests/ColorTests.cs @@ -0,0 +1,46 @@ +using System; +using Gtk; +using NUnit.Framework; +using Pango; +using Color = Cairo.Color; + +namespace Pinta.Core.Tests; + +[TestFixture] +internal sealed class ColorTests +{ + [TestCase (1, 0, 0, 0, 1, 1)] + [TestCase (0, 1, 0, 120, 1, 1)] + [TestCase (0, 0, 1, 240, 1, 1)] + [TestCase (0, 0.5, 1, 210, 1, 1)] + [TestCase (0.2, 0.5, 0.25, 130, 0.6, 0.5)] + public void ColorToHsv (double r, double g, double b, double h, double s, double v) + { + Color c = new (r, g, b); + HsvColor hsv = c.ToHsv (); + Assert.That (hsv, Is.EqualTo (new HsvColor (h, s, v))); + Color c2 = hsv.ToColor (); + // assert reversibility; color > hsv > color retains same info + // floating point rounding + c2 = new (Math.Round (c2.R, 4), Math.Round (c2.G, 4), Math.Round (c2.B, 4)); + Assert.That (c2, Is.EqualTo (c)); + } + + [TestCase ("FFFFFF", 1, 1, 1, 1)] + [TestCase ("FFFF", 1, 1, 1, 1)] + [TestCase ("FFF", 1, 1, 1, 1)] + [TestCase ("#FFFFFF", 1, 1, 1, 1)] + [TestCase ("FFFF", 1, 1, 1, 1)] + [TestCase ("#FFF", 1, 1, 1, 1)] + [TestCase ("CC33AA99", 0.8, 0.2, 0.6667, 0.6)] + [TestCase ("#CC33AA99", 0.8, 0.2, 0.6667, 0.6)] + [TestCase ("C3A9", 0.8, 0.2, 0.6667, 0.6)] + [TestCase ("C3A", 0.8, 0.2, 0.6667, 1)] + public void Hex (string hex, double r, double g, double b, double a) + { + var hc = Color.FromHex (hex)!.Value; + hc = new (Math.Round (hc.R, 4), Math.Round (hc.G, 4), Math.Round (hc.B, 4)); + var c = new Color (r, g, b); + Assert.That (hc, Is.EqualTo (c)); + } +} diff --git a/tests/Pinta.Effects.Tests/Assets/huesaturation2.png b/tests/Pinta.Effects.Tests/Assets/huesaturation2.png index 76c7fc6d797030b36cbe4424ded2f1a1cbbfad5f..6160c3dccc036b68effca8a4db4937047ae0e901 100644 GIT binary patch literal 109113 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

k!~5Gec}evFxbJ3v!Y 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 Date: Tue, 24 Dec 2024 15:00:09 -0500 Subject: [PATCH 4/4] Update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3b1475804b..751ab96646 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ Thanks to the following contributors who worked on this release: - Upgraded the minimum required .NET version to 8.0 - Restored support for add-ins, which had been disabled in Pinta 2.0 due to technical limitations - Added a preference (in the `View` menu) for switching between a dark or light color scheme +- Added an improved color picker dialog (#570, #761, #1025) - Added a canvas grid with customizable size, replacing the previous pixel grid (#1028, #1105) - Added ability to choose tile type (#1051) and edge behavior (#1141) in tile reflection effect - Added a new "Dithering" effect (#457)