/* * Copyright (c) 2022 LG Electronics Inc. * SPDX-License-Identifier: LicenseRef-LGE-Proprietary */ using MahApps.Metro.IconPacks; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Media; namespace AuroraUIComponent.Util { public class IconUtil { private static T GetMatchingEnum(string strKind) { if (string.IsNullOrEmpty(strKind)) { return default(T); } // 완전 일치 if (Enum.GetValues(typeof(T)).Cast().Any(x => x.ToString().ToLower() == strKind.ToLower())) { return Enum.GetValues(typeof(T)).Cast().FirstOrDefault(x => x.ToString().ToLower() == strKind.ToLower()); } // 포함된 string if (Enum.GetValues(typeof(T)).Cast().Any(x => x.ToString().ToLower().Contains(strKind.ToLower()))) { return Enum.GetValues(typeof(T)).Cast().FirstOrDefault(x => x.ToString().ToLower().Contains(strKind.ToLower())); } return default(T); } private static List GetMatchingEnumList(string strKind) { if (string.IsNullOrEmpty(strKind)) { return Enum.GetValues(typeof(T)).Cast().ToList(); } return Enum.GetValues(typeof(T)).Cast().Where(x => x.ToString().ToLower().Contains(strKind.ToLower())).ToList(); } public static DrawingImage GetIconFromMetro(PackIconUniconsKind kind, SolidColorBrush brush) { var packIcon = new MahApps.Metro.IconPacks.PackIconUnicons() { Kind = kind }; GeometryDrawing gd = new GeometryDrawing(); gd.Geometry = Geometry.Parse(packIcon.Data); gd.Brush = brush; DrawingImage image = new DrawingImage(gd); image.Freeze(); return image; } public static (string, DrawingImage) GetIconFromMetroUnicons(string strKind, SolidColorBrush brush) // package reference dependency를 끊기 위해 string으로 제공 { PackIconUniconsKind kind = GetMatchingEnum(strKind); if (kind != default(PackIconUniconsKind)) { return (kind.ToString(), GetIconFromMetro(kind, brush)); } else { return (null, null); } } public static List GetMetroUniconsList(string strKind) // package reference dependency를 끊기 위해 string으로 제공 { var newList = new List(); GetMatchingEnumList(strKind).ForEach(x => newList.Add(x.ToString())); return newList; } public static DrawingImage GetIconFromMetro(PackIconMaterialKind kind, SolidColorBrush brush) { var packIcon = new MahApps.Metro.IconPacks.PackIconMaterial() { Kind = kind }; GeometryDrawing gd = new GeometryDrawing(); gd.Geometry = Geometry.Parse(packIcon.Data); gd.Brush = brush; DrawingImage image = new DrawingImage(gd); image.Freeze(); return image; } public static (string, DrawingImage) GetIconFromMetroMaterial(string strKind, SolidColorBrush brush) // package reference dependency를 끊기 위해 string으로 제공 { PackIconMaterialKind kind = GetMatchingEnum(strKind); if (kind != default(PackIconMaterialKind)) { return (kind.ToString(), GetIconFromMetro(kind, brush)); } else { return (null, null); } } public static List GetMetroMaterialList(string strKind) // package reference dependency를 끊기 위해 string으로 제공 { var newList = new List(); GetMatchingEnumList(strKind).ForEach(x => newList.Add(x.ToString())); return newList; } public static DrawingImage GetIconFromMetro(PackIconRemixIconKind kind, SolidColorBrush brush) { var packIcon = new MahApps.Metro.IconPacks.PackIconRemixIcon() { Kind = kind }; GeometryDrawing gd = new GeometryDrawing(); gd.Geometry = Geometry.Parse(packIcon.Data); gd.Brush = brush; DrawingImage image = new DrawingImage(gd); image.Freeze(); return image; } public static (string, DrawingImage) GetIconFromMetroRemix(string strKind, SolidColorBrush brush) // package reference dependency를 끊기 위해 string으로 제공 { PackIconRemixIconKind kind = GetMatchingEnum(strKind); if (kind != default(PackIconRemixIconKind)) { return (kind.ToString(), GetIconFromMetro(kind, brush)); } else { return (null, null); } } public static List GetMetroRemixIconList(string strKind) // package reference dependency를 끊기 위해 string으로 제공 { var newList = new List(); GetMatchingEnumList(strKind).ForEach(x => newList.Add(x.ToString())); return newList; } public static DrawingImage GetIconFromMetro(PackIconFontAwesomeKind kind, SolidColorBrush brush) { var packIcon = new MahApps.Metro.IconPacks.PackIconFontAwesome() { Kind = kind }; GeometryDrawing gd = new GeometryDrawing(); gd.Geometry = Geometry.Parse(packIcon.Data); gd.Brush = brush; DrawingImage image = new DrawingImage(gd); image.Freeze(); return image; } public static (string, DrawingImage) GetIconFromMetroFontAwesome(string strKind, SolidColorBrush brush) // package reference dependency를 끊기 위해 string으로 제공 { PackIconFontAwesomeKind kind = GetMatchingEnum(strKind); if (kind != default(PackIconFontAwesomeKind)) { return (kind.ToString(), GetIconFromMetro(kind, brush)); } else { return (null, null); } } public static List GetMetroFontAwesomeList(string strKind) // package reference dependency를 끊기 위해 string으로 제공 { var newList = new List(); GetMatchingEnumList(strKind).ForEach(x => newList.Add(x.ToString())); return newList; } } }