167 lines
6.6 KiB
C#
167 lines
6.6 KiB
C#
/*
|
|
* 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<T>(string strKind)
|
|
{
|
|
if (string.IsNullOrEmpty(strKind)) {
|
|
return default(T);
|
|
}
|
|
|
|
// 완전 일치
|
|
if (Enum.GetValues(typeof(T)).Cast<T>().Any(x => x.ToString().ToLower() == strKind.ToLower())) {
|
|
return Enum.GetValues(typeof(T)).Cast<T>().FirstOrDefault(x => x.ToString().ToLower() == strKind.ToLower());
|
|
}
|
|
|
|
// 포함된 string
|
|
if (Enum.GetValues(typeof(T)).Cast<T>().Any(x => x.ToString().ToLower().Contains(strKind.ToLower()))) {
|
|
return Enum.GetValues(typeof(T)).Cast<T>().FirstOrDefault(x => x.ToString().ToLower().Contains(strKind.ToLower()));
|
|
}
|
|
|
|
return default(T);
|
|
}
|
|
|
|
private static List<T> GetMatchingEnumList<T>(string strKind)
|
|
{
|
|
if (string.IsNullOrEmpty(strKind)) {
|
|
return Enum.GetValues(typeof(T)).Cast<T>().ToList();
|
|
}
|
|
|
|
return Enum.GetValues(typeof(T)).Cast<T>().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<PackIconUniconsKind>(strKind);
|
|
if (kind != default(PackIconUniconsKind)) {
|
|
return (kind.ToString(), GetIconFromMetro(kind, brush));
|
|
} else {
|
|
return (null, null);
|
|
}
|
|
}
|
|
|
|
public static List<string> GetMetroUniconsList(string strKind) // package reference dependency를 끊기 위해 string으로 제공
|
|
{
|
|
var newList = new List<string>();
|
|
GetMatchingEnumList<PackIconUniconsKind>(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<PackIconMaterialKind>(strKind);
|
|
if (kind != default(PackIconMaterialKind)) {
|
|
return (kind.ToString(), GetIconFromMetro(kind, brush));
|
|
} else {
|
|
return (null, null);
|
|
}
|
|
}
|
|
|
|
public static List<string> GetMetroMaterialList(string strKind) // package reference dependency를 끊기 위해 string으로 제공
|
|
{
|
|
var newList = new List<string>();
|
|
GetMatchingEnumList<PackIconMaterialKind>(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<PackIconRemixIconKind>(strKind);
|
|
if (kind != default(PackIconRemixIconKind)) {
|
|
return (kind.ToString(), GetIconFromMetro(kind, brush));
|
|
} else {
|
|
return (null, null);
|
|
}
|
|
}
|
|
|
|
public static List<string> GetMetroRemixIconList(string strKind) // package reference dependency를 끊기 위해 string으로 제공
|
|
{
|
|
var newList = new List<string>();
|
|
GetMatchingEnumList<PackIconRemixIconKind>(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<PackIconFontAwesomeKind>(strKind);
|
|
if (kind != default(PackIconFontAwesomeKind)) {
|
|
return (kind.ToString(), GetIconFromMetro(kind, brush));
|
|
} else {
|
|
return (null, null);
|
|
}
|
|
}
|
|
|
|
public static List<string> GetMetroFontAwesomeList(string strKind) // package reference dependency를 끊기 위해 string으로 제공
|
|
{
|
|
var newList = new List<string>();
|
|
GetMatchingEnumList<PackIconFontAwesomeKind>(strKind).ForEach(x => newList.Add(x.ToString()));
|
|
|
|
return newList;
|
|
}
|
|
|
|
}
|
|
}
|