From efe03cb642b6215303a241fc30bd578b75953645 Mon Sep 17 00:00:00 2001 From: LarsBrubaker Date: Thu, 4 Oct 2018 10:17:57 -0700 Subject: [PATCH] Make flatten only copy appropriate properties by default issue: MatterHackers/MCCentral#4229 Merge on align should not clear the colors that were on the objects refactor apply and merge => flatten --- .../DesignTools/Obsolete/FitToBoundsObject3D.cs | 2 +- .../DesignTools/Operations/AlignObject3D.cs | 2 +- .../Operations/ArrayAdvancedObject3D.cs | 6 +++--- .../DesignTools/Operations/ArrayLinearObject3D.cs | 6 +++--- .../DesignTools/Operations/ArrayRadialObject3D.cs | 6 +++--- .../Operations/FitToBoundsObject3D_2.cs | 2 +- .../DesignTools/Operations/GroupObject3D.cs | 2 +- .../Operations/Image/LinearExtrudeObject3D.cs | 4 ++-- .../DesignTools/Operations/RotateObject3D_2.cs | 2 +- .../DesignTools/Operations/ScaleObject3D.cs | 2 +- .../Operations/TransformWrapperObject3D.cs | 2 +- .../DesignTools/Operations/TranslateObject3D.cs | 2 +- .../DesignTools/Primitives/BaseObject3D.cs | 6 +++--- .../DesignTools/Primitives/ComponentObject3D.cs | 4 ++-- .../DesignTools/Primitives/TextObject3D.cs | 4 ++-- .../PartPreviewWindow/SelectedObjectPanel.cs | 14 +++++++------- .../View3D/Actions/MeshWrapperObject3D.cs | 6 +++--- Submodules/agg-sharp | 2 +- 18 files changed, 37 insertions(+), 37 deletions(-) diff --git a/MatterControlLib/DesignTools/Obsolete/FitToBoundsObject3D.cs b/MatterControlLib/DesignTools/Obsolete/FitToBoundsObject3D.cs index f1f753f65..3292cd608 100644 --- a/MatterControlLib/DesignTools/Obsolete/FitToBoundsObject3D.cs +++ b/MatterControlLib/DesignTools/Obsolete/FitToBoundsObject3D.cs @@ -76,7 +76,7 @@ namespace MatterHackers.MatterControl.DesignTools.Operations Name = "Fit to Bounds".Localize(); } - public override void Apply(UndoBuffer undoBuffer) + public override void Flatten(UndoBuffer undoBuffer) { using (RebuildLock()) { diff --git a/MatterControlLib/DesignTools/Operations/AlignObject3D.cs b/MatterControlLib/DesignTools/Operations/AlignObject3D.cs index 70bfa4571..28f9811ea 100644 --- a/MatterControlLib/DesignTools/Operations/AlignObject3D.cs +++ b/MatterControlLib/DesignTools/Operations/AlignObject3D.cs @@ -188,7 +188,7 @@ namespace MatterHackers.MatterControl.DesignTools.Operations [DisplayName("Offset Z")] public double ZOffset { get; set; } = 0; - public override bool CanApply => true; + public override bool CanFlatten => true; private List CurrentChildrenBounds { diff --git a/MatterControlLib/DesignTools/Operations/ArrayAdvancedObject3D.cs b/MatterControlLib/DesignTools/Operations/ArrayAdvancedObject3D.cs index ee0689688..3a1da3d58 100644 --- a/MatterControlLib/DesignTools/Operations/ArrayAdvancedObject3D.cs +++ b/MatterControlLib/DesignTools/Operations/ArrayAdvancedObject3D.cs @@ -42,7 +42,7 @@ namespace MatterHackers.MatterControl.DesignTools.Operations Name = "Advanced Array".Localize(); } - public override bool CanApply => true; + public override bool CanFlatten => true; public int Count { get; set; } = 3; @@ -56,11 +56,11 @@ namespace MatterHackers.MatterControl.DesignTools.Operations public bool ScaleOffset { get; set; } = true; - public override void Apply(UndoBuffer undoBuffer) + public override void Flatten(UndoBuffer undoBuffer) { OperationSourceObject3D.Apply(this); - base.Apply(undoBuffer); + base.Flatten(undoBuffer); } public override void OnInvalidate(InvalidateArgs invalidateType) diff --git a/MatterControlLib/DesignTools/Operations/ArrayLinearObject3D.cs b/MatterControlLib/DesignTools/Operations/ArrayLinearObject3D.cs index 3194762df..76b38a934 100644 --- a/MatterControlLib/DesignTools/Operations/ArrayLinearObject3D.cs +++ b/MatterControlLib/DesignTools/Operations/ArrayLinearObject3D.cs @@ -44,16 +44,16 @@ namespace MatterHackers.MatterControl.DesignTools.Operations Name = "Linear Array".Localize(); } - public override bool CanApply => true; + public override bool CanFlatten => true; public int Count { get; set; } = 3; public DirectionVector Direction { get; set; } = new DirectionVector { Normal = new Vector3(1, 0, 0) }; public double Distance { get; set; } = 30; - public override void Apply(UndoBuffer undoBuffer) + public override void Flatten(UndoBuffer undoBuffer) { OperationSourceObject3D.Apply(this); - base.Apply(undoBuffer); + base.Flatten(undoBuffer); } public override void OnInvalidate(InvalidateArgs invalidateType) diff --git a/MatterControlLib/DesignTools/Operations/ArrayRadialObject3D.cs b/MatterControlLib/DesignTools/Operations/ArrayRadialObject3D.cs index e0f4b4b3d..2ccc24052 100644 --- a/MatterControlLib/DesignTools/Operations/ArrayRadialObject3D.cs +++ b/MatterControlLib/DesignTools/Operations/ArrayRadialObject3D.cs @@ -50,7 +50,7 @@ namespace MatterHackers.MatterControl.DesignTools.Operations [DisplayName("Rotate About")] public DirectionAxis Axis { get; set; } = new DirectionAxis() { Origin = Vector3.NegativeInfinity, Normal = Vector3.UnitZ }; - public override bool CanApply => true; + public override bool CanFlatten => true; public int Count { get; set; } = 3; @@ -65,11 +65,11 @@ namespace MatterHackers.MatterControl.DesignTools.Operations [Description("Keep the entire extents of the part within the angle described.")] private bool KeepInAngle { get; set; } = false; - public override void Apply(UndoBuffer undoBuffer) + public override void Flatten(UndoBuffer undoBuffer) { OperationSourceObject3D.Apply(this); - base.Apply(undoBuffer); + base.Flatten(undoBuffer); } public override void OnInvalidate(InvalidateArgs invalidateType) diff --git a/MatterControlLib/DesignTools/Operations/FitToBoundsObject3D_2.cs b/MatterControlLib/DesignTools/Operations/FitToBoundsObject3D_2.cs index 3ae7956f2..7d64da3d2 100644 --- a/MatterControlLib/DesignTools/Operations/FitToBoundsObject3D_2.cs +++ b/MatterControlLib/DesignTools/Operations/FitToBoundsObject3D_2.cs @@ -57,7 +57,7 @@ namespace MatterHackers.MatterControl.DesignTools.Operations Name = "Fit to Bounds".Localize(); } - public override bool CanApply => true; + public override bool CanFlatten => true; private IObject3D FitBounds => Children.Last(); public static FitToBoundsObject3D_2 Create(IObject3D itemToFit) diff --git a/MatterControlLib/DesignTools/Operations/GroupObject3D.cs b/MatterControlLib/DesignTools/Operations/GroupObject3D.cs index ba3f088b0..5c00c84dc 100644 --- a/MatterControlLib/DesignTools/Operations/GroupObject3D.cs +++ b/MatterControlLib/DesignTools/Operations/GroupObject3D.cs @@ -34,7 +34,7 @@ namespace MatterHackers.MatterControl.DesignTools.Operations { public class GroupObject3D : Object3D { - public override bool CanApply => true; + public override bool CanFlatten => true; public GroupObject3D() { diff --git a/MatterControlLib/DesignTools/Operations/Image/LinearExtrudeObject3D.cs b/MatterControlLib/DesignTools/Operations/Image/LinearExtrudeObject3D.cs index 98e895d25..964586d56 100644 --- a/MatterControlLib/DesignTools/Operations/Image/LinearExtrudeObject3D.cs +++ b/MatterControlLib/DesignTools/Operations/Image/LinearExtrudeObject3D.cs @@ -46,7 +46,7 @@ namespace MatterHackers.MatterControl.DesignTools { public double Height { get; set; } = 5; - public override bool CanApply => true; + public override bool CanFlatten => true; [JsonIgnore] private IVertexSource VertexSource @@ -63,7 +63,7 @@ namespace MatterHackers.MatterControl.DesignTools } } - public override void Apply(UndoBuffer undoBuffer) + public override void Flatten(UndoBuffer undoBuffer) { // only keep the mesh and get rid of everything else using (RebuildLock()) diff --git a/MatterControlLib/DesignTools/Operations/RotateObject3D_2.cs b/MatterControlLib/DesignTools/Operations/RotateObject3D_2.cs index 638175291..662071ab6 100644 --- a/MatterControlLib/DesignTools/Operations/RotateObject3D_2.cs +++ b/MatterControlLib/DesignTools/Operations/RotateObject3D_2.cs @@ -66,7 +66,7 @@ namespace MatterHackers.MatterControl.DesignTools.Operations { } - public override bool CanApply => true; + public override bool CanFlatten => true; #region // editable properties public DirectionAxis RotateAbout { get; set; } = new DirectionAxis() { Origin = Vector3.NegativeInfinity, Normal = Vector3.UnitZ }; diff --git a/MatterControlLib/DesignTools/Operations/ScaleObject3D.cs b/MatterControlLib/DesignTools/Operations/ScaleObject3D.cs index 4acaf9783..ecf1378aa 100644 --- a/MatterControlLib/DesignTools/Operations/ScaleObject3D.cs +++ b/MatterControlLib/DesignTools/Operations/ScaleObject3D.cs @@ -73,7 +73,7 @@ namespace MatterHackers.MatterControl.DesignTools.Operations Rebuild(null); } - public override bool CanApply => true; + public override bool CanFlatten => true; // this is the size we actually serialize public Vector3 ScaleRatio = Vector3.One; diff --git a/MatterControlLib/DesignTools/Operations/TransformWrapperObject3D.cs b/MatterControlLib/DesignTools/Operations/TransformWrapperObject3D.cs index 5a9111fc3..964372ba5 100644 --- a/MatterControlLib/DesignTools/Operations/TransformWrapperObject3D.cs +++ b/MatterControlLib/DesignTools/Operations/TransformWrapperObject3D.cs @@ -77,7 +77,7 @@ namespace MatterHackers.MatterControl.DesignTools.Operations Name = "Transform Wrapper".Localize(); } - public override void Apply(UndoBuffer undoBuffer) + public override void Flatten(UndoBuffer undoBuffer) { using (RebuildLock()) { diff --git a/MatterControlLib/DesignTools/Operations/TranslateObject3D.cs b/MatterControlLib/DesignTools/Operations/TranslateObject3D.cs index b2e9e0c09..2c9a1daa3 100644 --- a/MatterControlLib/DesignTools/Operations/TranslateObject3D.cs +++ b/MatterControlLib/DesignTools/Operations/TranslateObject3D.cs @@ -60,7 +60,7 @@ namespace MatterHackers.MatterControl.DesignTools.Operations Rebuild(null); } - public override bool CanApply => true; + public override bool CanFlatten => true; public static TranslateObject3D Create(IObject3D itemToTranslate) { diff --git a/MatterControlLib/DesignTools/Primitives/BaseObject3D.cs b/MatterControlLib/DesignTools/Primitives/BaseObject3D.cs index 7f59b4dc2..ff324ebae 100644 --- a/MatterControlLib/DesignTools/Primitives/BaseObject3D.cs +++ b/MatterControlLib/DesignTools/Primitives/BaseObject3D.cs @@ -55,16 +55,16 @@ namespace MatterHackers.MatterControl.DesignTools Name = "Base".Localize(); } - public override bool CanApply => true; + public override bool CanFlatten => true; public BaseTypes BaseType { get; set; } = BaseTypes.Circle; public double BaseSize { get; set; } = 3; public double InfillAmount { get; set; } = 3; public double ExtrusionHeight { get; set; } = 5; - public override void Apply(UndoBuffer undoBuffer) + public override void Flatten(UndoBuffer undoBuffer) { - base.Apply(undoBuffer); + base.Flatten(undoBuffer); } public override void Remove(UndoBuffer undoBuffer) diff --git a/MatterControlLib/DesignTools/Primitives/ComponentObject3D.cs b/MatterControlLib/DesignTools/Primitives/ComponentObject3D.cs index 1ca311439..5611e8e70 100644 --- a/MatterControlLib/DesignTools/Primitives/ComponentObject3D.cs +++ b/MatterControlLib/DesignTools/Primitives/ComponentObject3D.cs @@ -48,12 +48,12 @@ namespace MatterHackers.MatterControl.DesignTools { } - public override bool CanApply => Finalized; + public override bool CanFlatten => Finalized; public bool Finalized { get; set; } = true; public List SurfacedEditors { get; set; } = new List(); public string ComponentID { get; set; } - public override void Apply(UndoBuffer undoBuffer) + public override void Flatten(UndoBuffer undoBuffer) { // we want to end up with just a group of all the visible mesh objects using (RebuildLock()) diff --git a/MatterControlLib/DesignTools/Primitives/TextObject3D.cs b/MatterControlLib/DesignTools/Primitives/TextObject3D.cs index ee5ba855e..cbf1f8ede 100644 --- a/MatterControlLib/DesignTools/Primitives/TextObject3D.cs +++ b/MatterControlLib/DesignTools/Primitives/TextObject3D.cs @@ -72,9 +72,9 @@ namespace MatterHackers.MatterControl.DesignTools [JsonConverter(typeof(StringEnumConverter))] public NamedTypeFace Font { get; set; } = new NamedTypeFace(); - public override bool CanApply => true; + public override bool CanFlatten => true; - public override void Apply(UndoBuffer undoBuffer) + public override void Flatten(UndoBuffer undoBuffer) { // change this from a text object to a group var newContainer = new GroupObject3D(); diff --git a/MatterControlLib/PartPreviewWindow/SelectedObjectPanel.cs b/MatterControlLib/PartPreviewWindow/SelectedObjectPanel.cs index dcc9be7c4..1c149b00f 100644 --- a/MatterControlLib/PartPreviewWindow/SelectedObjectPanel.cs +++ b/MatterControlLib/PartPreviewWindow/SelectedObjectPanel.cs @@ -95,18 +95,18 @@ namespace MatterHackers.MatterControl.PartPreviewWindow // put in a make permanent button var icon = AggContext.StaticData.LoadIcon("noun_766157.png", 16, 16, theme.InvertIcons).SetPreMultiply(); - var applyButton = new IconButton(icon, theme) + var flattenButton = new IconButton(icon, theme) { Margin = theme.ButtonSpacing, - ToolTipText = "Merge".Localize(), - Enabled = scene.SelectedItem?.CanApply == true + ToolTipText = "Flatten".Localize(), + Enabled = scene.SelectedItem?.CanFlatten == true }; - applyButton.Click += (s, e) => + flattenButton.Click += (s, e) => { - this.item.Apply(view3DWidget.Scene.UndoBuffer); + this.item.Flatten(view3DWidget.Scene.UndoBuffer); scene.SelectedItem = null; }; - toolbar.AddChild(applyButton); + toolbar.AddChild(flattenButton); // put in a remove button var removeButton = new IconButton(AggContext.StaticData.LoadIcon("remove.png", 16, 16, theme.InvertIcons), theme) @@ -185,7 +185,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow itemColorButton.Enabled = selectedItem != null; itemMaterialButton.Enabled = selectedItem != null; - applyButton.Enabled = selectedItem?.CanApply == true; + flattenButton.Enabled = selectedItem?.CanFlatten == true; removeButton.Enabled = selectedItem != null; overflowButton.Enabled = selectedItem != null; }; diff --git a/MatterControlLib/PartPreviewWindow/View3D/Actions/MeshWrapperObject3D.cs b/MatterControlLib/PartPreviewWindow/View3D/Actions/MeshWrapperObject3D.cs index 9e2a25651..a9bd75a32 100644 --- a/MatterControlLib/PartPreviewWindow/View3D/Actions/MeshWrapperObject3D.cs +++ b/MatterControlLib/PartPreviewWindow/View3D/Actions/MeshWrapperObject3D.cs @@ -45,9 +45,9 @@ namespace MatterHackers.MatterControl.PartPreviewWindow.View3D { } - public override bool CanApply => true; + public override bool CanFlatten => true; - public override void Apply(UndoBuffer undoBuffer) + public override void Flatten(UndoBuffer undoBuffer) { var meshWrappers = this.Descendants().Where(o => o.OwnerID == this.ID).ToList(); @@ -70,7 +70,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow.View3D parent.Children.Remove(meshWrapper); } - base.Apply(undoBuffer); + base.Flatten(undoBuffer); } /// diff --git a/Submodules/agg-sharp b/Submodules/agg-sharp index 027c057a0..335221f34 160000 --- a/Submodules/agg-sharp +++ b/Submodules/agg-sharp @@ -1 +1 @@ -Subproject commit 027c057a0bb91bc75c8230c14c863908ce040abd +Subproject commit 335221f3421a0ddd076ef1da63caaed8554a5349