From 1b14b136dfd89e2ae6ae623b744ce1e69738b839 Mon Sep 17 00:00:00 2001 From: John Lewin Date: Mon, 29 Oct 2018 17:35:03 -0700 Subject: [PATCH] Consolidate library extension methods classes --- MatterControlLib/Library/ExtensionMethods.cs | 95 ------------------- .../Interfaces/LibraryExtensionMethods.cs | 37 +++++++- 2 files changed, 36 insertions(+), 96 deletions(-) delete mode 100644 MatterControlLib/Library/ExtensionMethods.cs diff --git a/MatterControlLib/Library/ExtensionMethods.cs b/MatterControlLib/Library/ExtensionMethods.cs deleted file mode 100644 index a11197563..000000000 --- a/MatterControlLib/Library/ExtensionMethods.cs +++ /dev/null @@ -1,95 +0,0 @@ -/* -Copyright (c) 2017, John Lewin -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -The views and conclusions contained in the software and documentation are those -of the authors and should not be interpreted as representing official policies, -either expressed or implied, of the FreeBSD Project. -*/ - -using System; -using System.Collections.Generic; -using System.Threading.Tasks; -using MatterHackers.Agg.Image; -using MatterHackers.Agg.UI; -using MatterHackers.DataConverters3D; -using MatterHackers.ImageProcessing; - -namespace MatterHackers.MatterControl.Library -{ - public static class ExtensionMethods - { - // Container ExtensionMethods - public static IEnumerable Ancestors(this ILibraryContainer item) - { - var context = item.Parent; - while (context != null) - { - yield return context; - context = context.Parent; - } - } - - public static IEnumerable AncestorsAndSelf(this ILibraryContainer item) - { - var container = item; - while (container != null) - { - yield return container; - container = container.Parent; - } - } - - public static void Add(this Dictionary list, IEnumerable extensions, IContentProvider provider) - { - foreach (var extension in extensions) - { - list.Add(extension, provider); - } - } - - public static Task CreateContent(this ILibraryAssetStream item, Action reporter = null) - { - var contentProvider = ApplicationController.Instance.Library.GetContentProvider(item) as ISceneContentProvider; - return contentProvider?.CreateItem(item, reporter); - } - - // Color ExtensionMethods - public static ImageBuffer MultiplyWithPrimaryAccent(this ImageBuffer sourceImage) - { - return sourceImage.Multiply(ApplicationController.Instance.Theme.PrimaryAccentColor); - } - - public static ImageBuffer SetPreMultiply(this ImageBuffer sourceImage) - { - sourceImage.SetRecieveBlender(new BlenderPreMultBGRA()); - - return sourceImage; - } - - public static ImageBuffer AlphaToPrimaryAccent(this ImageBuffer sourceImage) - { - return sourceImage.AnyAlphaToColor(ApplicationController.Instance.Theme.PrimaryAccentColor); - } - } -} diff --git a/MatterControlLib/Library/Interfaces/LibraryExtensionMethods.cs b/MatterControlLib/Library/Interfaces/LibraryExtensionMethods.cs index 3497e5abe..af6f87e14 100644 --- a/MatterControlLib/Library/Interfaces/LibraryExtensionMethods.cs +++ b/MatterControlLib/Library/Interfaces/LibraryExtensionMethods.cs @@ -1,5 +1,5 @@ /* -Copyright (c) 2017, John Lewin +Copyright (c) 2018, John Lewin All rights reserved. Redistribution and use in source and binary forms, with or without @@ -28,6 +28,7 @@ either expressed or implied, of the FreeBSD Project. */ using System; +using System.Collections.Generic; using System.Threading.Tasks; using MatterHackers.DataConverters3D; @@ -59,5 +60,39 @@ namespace MatterHackers.MatterControl.Library return item is ILibraryAssetStream contentStream && ApplicationController.Instance.Library.IsMeshFileType(contentStream.FileName); } + + public static IEnumerable Ancestors(this ILibraryContainer item) + { + var context = item.Parent; + while (context != null) + { + yield return context; + context = context.Parent; + } + } + + public static IEnumerable AncestorsAndSelf(this ILibraryContainer item) + { + var container = item; + while (container != null) + { + yield return container; + container = container.Parent; + } + } + + public static void Add(this Dictionary list, IEnumerable extensions, IContentProvider provider) + { + foreach (var extension in extensions) + { + list.Add(extension, provider); + } + } + + public static Task CreateContent(this ILibraryAssetStream item, Action reporter = null) + { + var contentProvider = ApplicationController.Instance.Library.GetContentProvider(item) as ISceneContentProvider; + return contentProvider?.CreateItem(item, reporter); + } } }