diff --git a/CSScriptAddon/CSScriptAddon.vb b/CSScriptAddon/CSScriptAddon.vb index c191cd6..5df1b89 100644 --- a/CSScriptAddon/CSScriptAddon.vb +++ b/CSScriptAddon/CSScriptAddon.vb @@ -1,9 +1,9 @@ Imports System.ComponentModel.Composition Imports System.IO -Imports vbnet Imports mpvnet -Imports vbnet.UI.MainModule +Imports mpvnet.StaticUsing + Imports CSScriptLibrary @@ -11,7 +11,7 @@ Public Class CSScriptAddon Implements IAddon Sub New() - Dim scriptDir = Folder.AppDataRoaming + "mpv\scripts" + Dim scriptDir = mpv.mpvConfFolderPath + "scripts" If Not Directory.Exists(scriptDir) Then Return Dim csFiles = Directory.GetFiles(scriptDir, "*.cs") If csFiles.Count = 0 Then Return @@ -21,7 +21,7 @@ Public Class CSScriptAddon Try CSScriptLibrary.CSScript.Evaluator.LoadCode(File.ReadAllText(i)) Catch ex As Exception - MsgException(ex) + MsgError(ex.ToString) End Try Next End Sub diff --git a/RatingAddon/Rating.cs b/RatingAddon/Rating.cs index 2307798..bd61883 100644 --- a/RatingAddon/Rating.cs +++ b/RatingAddon/Rating.cs @@ -1,9 +1,9 @@ using System; using System.ComponentModel.Composition; using System.Collections.Generic; +using System.IO; using mpvnet; -using System.IO; namespace Rating { diff --git a/mpv.net.sln b/mpv.net.sln index d92e953..b28ef14 100644 --- a/mpv.net.sln +++ b/mpv.net.sln @@ -11,8 +11,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mpv.net", "mpvnet\mpv.net.c EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Rating", "RatingAddon\Rating.csproj", "{55C88710-539D-4402-84C8-31694841C731}" EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "vbnet", "vbnet\vbnet.vbproj", "{AF1B21C5-28FC-4D47-AD0B-54F6A38391A6}" -EndProject Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "CSScriptAddon", "CSScriptAddon\CSScriptAddon.vbproj", "{71808A87-8B1C-4DF8-957C-D79C3B164CCA}" EndProject Global @@ -49,18 +47,6 @@ Global {55C88710-539D-4402-84C8-31694841C731}.Release|x64.Build.0 = Release|x64 {55C88710-539D-4402-84C8-31694841C731}.Release|x86.ActiveCfg = Release|x86 {55C88710-539D-4402-84C8-31694841C731}.Release|x86.Build.0 = Release|x86 - {AF1B21C5-28FC-4D47-AD0B-54F6A38391A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AF1B21C5-28FC-4D47-AD0B-54F6A38391A6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AF1B21C5-28FC-4D47-AD0B-54F6A38391A6}.Debug|x64.ActiveCfg = Debug|Any CPU - {AF1B21C5-28FC-4D47-AD0B-54F6A38391A6}.Debug|x64.Build.0 = Debug|Any CPU - {AF1B21C5-28FC-4D47-AD0B-54F6A38391A6}.Debug|x86.ActiveCfg = Debug|Any CPU - {AF1B21C5-28FC-4D47-AD0B-54F6A38391A6}.Debug|x86.Build.0 = Debug|Any CPU - {AF1B21C5-28FC-4D47-AD0B-54F6A38391A6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AF1B21C5-28FC-4D47-AD0B-54F6A38391A6}.Release|Any CPU.Build.0 = Release|Any CPU - {AF1B21C5-28FC-4D47-AD0B-54F6A38391A6}.Release|x64.ActiveCfg = Release|Any CPU - {AF1B21C5-28FC-4D47-AD0B-54F6A38391A6}.Release|x64.Build.0 = Release|Any CPU - {AF1B21C5-28FC-4D47-AD0B-54F6A38391A6}.Release|x86.ActiveCfg = Release|Any CPU - {AF1B21C5-28FC-4D47-AD0B-54F6A38391A6}.Release|x86.Build.0 = Release|Any CPU {71808A87-8B1C-4DF8-957C-D79C3B164CCA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {71808A87-8B1C-4DF8-957C-D79C3B164CCA}.Debug|Any CPU.Build.0 = Debug|Any CPU {71808A87-8B1C-4DF8-957C-D79C3B164CCA}.Debug|x64.ActiveCfg = Debug|Any CPU diff --git a/mpvnet/Addon.cs b/mpvnet/Addon.cs index b10ffb8..a64099e 100644 --- a/mpvnet/Addon.cs +++ b/mpvnet/Addon.cs @@ -1,6 +1,6 @@ /** *mpv.net - *Copyright(C) 2017 stax76 + *Copyright(C) 2019 stax76 * *This program is free software: you can redistribute it and/or modify *it under the terms of the GNU General Public License as published by @@ -23,9 +23,7 @@ using System.ComponentModel.Composition.Hosting; using System.IO; using System.Windows.Forms; -using static vbnet.UI.MainModule; - -// MEF (Managed Extension Framework) +using static mpvnet.StaticUsing; namespace mpvnet { @@ -48,7 +46,7 @@ namespace mpvnet foreach (string i in Directory.GetDirectories(dir)) catalog.Catalogs.Add(new DirectoryCatalog(i, "*Addon.dll")); - dir = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\mpv\\Addons"; + dir = mpv.mpvConfFolderPath + "\\Addons"; if (Directory.Exists(dir)) foreach (string i in Directory.GetDirectories(dir)) @@ -62,7 +60,7 @@ namespace mpvnet } catch (Exception e) { - MsgException(e); + MsgError(e.ToString()); } } } diff --git a/mpvnet/Command.cs b/mpvnet/Command.cs index 60ead9f..efb7706 100644 --- a/mpvnet/Command.cs +++ b/mpvnet/Command.cs @@ -4,8 +4,7 @@ using System.Diagnostics; using System.IO; using System.Windows.Forms; -using vbnet; -using static vbnet.UI.MainModule; +using static mpvnet.StaticUsing; namespace mpvnet { @@ -58,22 +57,20 @@ namespace mpvnet public static void open_config_folder(string[] args) { - ProcessHelp.Start(Folder.AppDataRoaming + "mpv"); + Process.Start(mpv.mpvConfFolderPath); } public static void show_keys(string[] args) { - ProcessHelp.Start(OS.GetTextEditor(), '"' + mpv.InputConfPath + '"'); + Process.Start(mpv.InputConfPath); } private static void CreateMpvConf() { if (!File.Exists(mpv.mpvConfPath)) { - var dirPath = Folder.AppDataRoaming + "mpv\\"; - - if (!Directory.Exists(dirPath)) - Directory.CreateDirectory(dirPath); + if (!Directory.Exists(mpv.mpvConfFolderPath)) + Directory.CreateDirectory(mpv.mpvConfFolderPath); File.WriteAllText(mpv.mpvConfPath, "# https://mpv.io/manual/master/#configuration-files"); } @@ -82,17 +79,17 @@ namespace mpvnet public static void show_prefs(string[] args) { CreateMpvConf(); - ProcessHelp.Start(OS.GetTextEditor(), '"' + mpv.mpvConfPath + '"'); + Process.Start(mpv.mpvConfPath); } public static void history(string[] args) { - var fp = Folder.AppDataRoaming + "mpv\\history.txt"; + var fp = mpv.mpvConfFolderPath + "history.txt"; if (File.Exists(fp)) Process.Start(fp); else - if (MsgQuestion($"Create history.txt file in config folder?{BR2}mpv.net will write the date, time and filename of opened files to it.") == DialogResult.OK) + if (MsgQuestion("Create history.txt file in config folder?\r\n\r\nmpv.net will write the date, time and filename of opened files to it.") == DialogResult.OK) File.WriteAllText(fp, ""); } @@ -137,11 +134,11 @@ namespace mpvnet using (var mi = new MediaInfo(fi.FullName)) { - var w = mi.GetInfo(StreamKind.Video, "Width"); - var h = mi.GetInfo(StreamKind.Video, "Height"); + var w = mi.GetInfo(MediaInfoStreamKind.Video, "Width"); + var h = mi.GetInfo(MediaInfoStreamKind.Video, "Height"); var pos = TimeSpan.FromSeconds(mpv.GetIntProp("time-pos")); var dur = TimeSpan.FromSeconds(mpv.GetIntProp("duration")); - string mibr = mi.GetInfo(StreamKind.Video, "BitRate"); + string mibr = mi.GetInfo(MediaInfoStreamKind.Video, "BitRate"); if (mibr == "") mibr = "0"; @@ -151,7 +148,7 @@ namespace mpvnet var fn = fi.Name; if (fn.Length > 60) - fn = fn.Insert(59, BR); + fn = fn.Insert(59, "\r\n"); var info = FormatTime(pos.TotalMinutes) + ":" + diff --git a/mpvnet/MainForm.cs b/mpvnet/MainForm.cs index df259f7..1e51811 100644 --- a/mpvnet/MainForm.cs +++ b/mpvnet/MainForm.cs @@ -5,9 +5,7 @@ using System.Runtime.InteropServices; using System.Threading; using System.Windows.Forms; -using vbnet; -using vbnet.UI; -using static vbnet.UI.MainModule; +using static mpvnet.StaticUsing; namespace mpvnet { @@ -48,10 +46,8 @@ namespace mpvnet { if (!File.Exists(mpv.InputConfPath)) { - var dirPath = Folder.AppDataRoaming + "mpv\\"; - - if (!Directory.Exists(dirPath)) - Directory.CreateDirectory(dirPath); + if (!Directory.Exists(mpv.mpvConfFolderPath)) + Directory.CreateDirectory(mpv.mpvConfFolderPath); File.WriteAllText(mpv.InputConfPath, Properties.Resources.input_conf); } @@ -81,7 +77,7 @@ namespace mpvnet } catch (Exception e) { - MsgException(e); + MsgError(e.ToString()); } }); @@ -101,11 +97,11 @@ namespace mpvnet { var fn = mpv.GetStringProp("filename"); BeginInvoke(new Action(() => { Text = fn + " - mpv.net " + Application.ProductVersion; })); - var fp = Folder.AppDataRoaming + "mpv\\history.txt"; + var fp = mpv.mpvConfFolderPath + "history.txt"; if (LastHistory != fn && File.Exists(fp)) { - File.AppendAllText(fp, DateTime.Now.ToString() + " " + Path.GetFileNameWithoutExtension(fn) + BR); + File.AppendAllText(fp, DateTime.Now.ToString() + " " + Path.GetFileNameWithoutExtension(fn) + "\r\n"); LastHistory = fn; } } @@ -122,7 +118,7 @@ namespace mpvnet void HandleException(Exception e) { - MsgException(e); + MsgError(e.ToString()); } private void Mpv_VideoSizeChanged() diff --git a/mpvnet/MediaInfo.cs b/mpvnet/MediaInfo.cs new file mode 100644 index 0000000..b0dd48e --- /dev/null +++ b/mpvnet/MediaInfo.cs @@ -0,0 +1,84 @@ +using System; +using System.Runtime.InteropServices; + +public class MediaInfo : IDisposable +{ + private IntPtr Handle; + private static bool Loaded; + + public MediaInfo(string sourcepath) + { + if (!Loaded) + { + if (LoadLibrary("MediaInfo.dll") == IntPtr.Zero) + throw new Exception("Failed to load MediaInfo.dll."); + + Loaded = true; + } + + Handle = MediaInfo_New(); + MediaInfo_Open(Handle, sourcepath); + } + + public string GetInfo(MediaInfoStreamKind streamKind, string parameter) + { + return Marshal.PtrToStringUni(MediaInfo_Get(Handle, streamKind, 0, parameter, MediaInfoInfoKind.Text, MediaInfoInfoKind.Name)); + } + + private bool Disposed; + + public void Dispose() + { + if (!Disposed) + { + Disposed = true; + MediaInfo_Close(Handle); + MediaInfo_Delete(Handle); + } + } + + ~MediaInfo() + { + Dispose(); + } + + [DllImport("kernel32.dll", CharSet = CharSet.Unicode)] + private static extern IntPtr LoadLibrary(string path); + + [DllImport("MediaInfo.dll")] + private static extern IntPtr MediaInfo_New(); + + [DllImport("MediaInfo.dll")] + private static extern void MediaInfo_Delete(IntPtr Handle); + + [DllImport("MediaInfo.dll", CharSet = CharSet.Unicode)] + private static extern int MediaInfo_Open(IntPtr Handle, string FileName); + + [DllImport("MediaInfo.dll")] + private static extern int MediaInfo_Close(IntPtr Handle); + + [DllImport("MediaInfo.dll", CharSet = CharSet.Unicode)] + private static extern IntPtr MediaInfo_Get(IntPtr Handle, MediaInfoStreamKind StreamKind, int StreamNumber, string Parameter, MediaInfoInfoKind KindOfInfo, MediaInfoInfoKind KindOfSearch); +} + +public enum MediaInfoStreamKind +{ + General, + Video, + Audio, + Text, + Chapters, + Image +} + +public enum MediaInfoInfoKind +{ + Name, + Text, + Measure, + Options, + NameText, + MeasureText, + Info, + HowTo +} \ No newline at end of file diff --git a/mpvnet/Menu.cs b/mpvnet/Menu.cs new file mode 100644 index 0000000..e43f83c --- /dev/null +++ b/mpvnet/Menu.cs @@ -0,0 +1,520 @@ +using System; +using System.Linq; +using System.ComponentModel; +using System.Drawing.Drawing2D; +using System.Drawing.Text; +using Microsoft.Win32; +using System.Windows.Forms; +using System.Drawing; + +public class ContextMenuStripEx : ContextMenuStrip +{ + public ContextMenuStripEx() + { + } + + public ContextMenuStripEx(IContainer container) : base(container) + { + } + + protected override void OnHandleCreated(EventArgs e) + { + base.OnHandleCreated(e); + Renderer = new ToolStripRendererEx(); + } + + public ActionMenuItem Add(string path) + { + return Add(path, null); + } + + public ActionMenuItem Add(string path, Action action) + { + return Add(path, action, true); + } + + public ActionMenuItem Add(string path, Action action, bool enabled) + { + var ret = ActionMenuItem.Add(Items, path, action); + if (ret == null) + return null; + ret.Enabled = enabled; + return ret; + } + + public ActionMenuItem Add(string path, Action action, Func enabledFunc) + { + var ret = ActionMenuItem.Add(Items, path, action); + return ret; + } +} + +public class ActionMenuItem : MenuItemEx +{ + private Action Action; + + public ActionMenuItem() + { + } + + public ActionMenuItem(string text, Action action) + { + this.Text = text; + this.Action = action; + } + + protected override void OnClick(EventArgs e) + { + Application.DoEvents(); + if (Action != null) + Action(); + base.OnClick(e); + } + + public static ActionMenuItem Add(ToolStripItemCollection items, string path, Action action, T value) + { + return Add(items, path, () => action(value)); + } + + public static ActionMenuItem Add(ToolStripItemCollection items, string path, Action action) + { + var a = path.Split(new[] { " | " }, StringSplitOptions.RemoveEmptyEntries); + var l = items; + + for (var x = 0; x <= a.Length - 1; x++) + { + var found = false; + + foreach (var i in l.OfType()) + { + if (x < a.Length - 1) + { + if (i.Text == a[x]) + { + found = true; + l = i.DropDownItems; + } + } + } + + if (!found) + { + if (x == a.Length - 1) + { + if (a[x] == "-") + l.Add(new ToolStripSeparator()); + else + { + ActionMenuItem item = new ActionMenuItem(a[x], action); + l.Add(item); + l = item.DropDownItems; + return item; + } + } + else + { + ActionMenuItem item = new ActionMenuItem(); + item.Text = a[x]; + l.Add(item); + l = item.DropDownItems; + } + } + } + return null; + } +} + +public class MenuItemEx : ToolStripMenuItem +{ + public static bool UseTooltips { get; set; } + + public MenuItemEx() + { + } + + public MenuItemEx(string text) : base(text) + { + } + + public override Size GetPreferredSize(Size constrainingSize) + { + var ret = base.GetPreferredSize(constrainingSize); + ret.Height = Convert.ToInt32(Font.Height * 1.4); + return ret; + } + + public void CloseAll(object item) + { + if (item is ToolStripItem) + { + var d = (ToolStripItem)item; + CloseAll(d.Owner); + } + + if (item is ToolStripDropDown) + { + var d = (ToolStripDropDown)item; + d.Close(); + CloseAll(d.OwnerItem); + } + } + + protected override void OnClick(EventArgs e) + { + Application.DoEvents(); + base.OnClick(e); + } +} + +public class ToolStripRendererEx : ToolStripSystemRenderer +{ + public static Color ColorChecked { get; set; } + public static Color ColorBorder { get; set; } + public static Color ColorTop { get; set; } + public static Color ColorBottom { get; set; } + public static Color ColorBackground { get; set; } + + public static Color ColorToolStrip1 { get; set; } + public static Color ColorToolStrip2 { get; set; } + public static Color ColorToolStrip3 { get; set; } + public static Color ColorToolStrip4 { get; set; } + + private int TextOffset; + + public ToolStripRendererEx() + { + var argb = Convert.ToInt32(Registry.GetValue(@"HKEY_CURRENT_USER\Software\Microsoft\Windows\DWM", "ColorizationColor", 0)); + if (argb == 0) + argb = Color.LightBlue.ToArgb(); + InitColors(Color.FromArgb(argb)); + } + + public static void InitColors(Color c) + { + ColorBorder = HSLColor.Convert(c).ToColorSetLuminosity(100); + ColorChecked = HSLColor.Convert(c).ToColorSetLuminosity(200); + ColorBottom = HSLColor.Convert(c).ToColorSetLuminosity(220); + ColorBackground = HSLColor.Convert(c).ToColorSetLuminosity(230); + ColorTop = HSLColor.Convert(c).ToColorSetLuminosity(240); + + ColorToolStrip1 = ControlPaint.LightLight(ControlPaint.LightLight(ControlPaint.Light(ColorBorder, 1))); + ColorToolStrip2 = ControlPaint.LightLight(ControlPaint.LightLight(ControlPaint.Light(ColorBorder, 0.7f))); + ColorToolStrip3 = ControlPaint.LightLight(ControlPaint.LightLight(ControlPaint.Light(ColorBorder, 0.1f))); + ColorToolStrip4 = ControlPaint.LightLight(ControlPaint.LightLight(ControlPaint.Light(ColorBorder, 0.4f))); + } + + protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e) + { + ControlPaint.DrawBorder(e.Graphics, e.AffectedBounds, Color.FromArgb(160, 175, 195), ButtonBorderStyle.Solid); + } + + protected override void OnRenderItemText(ToolStripItemTextRenderEventArgs e) + { + e.Graphics.TextRenderingHint = TextRenderingHint.AntiAlias; + + if (e.Item is ToolStripMenuItem && !(e.Item.Owner is MenuStrip)) + { + var r = e.TextRectangle; + + var dropDown = e.ToolStrip as ToolStripDropDownMenu; + + if (dropDown == null || dropDown.ShowImageMargin || dropDown.ShowCheckMargin) + TextOffset = Convert.ToInt32(e.Item.Height * 1.1); + else + TextOffset = Convert.ToInt32(e.Item.Height * 0.2); + + e.TextRectangle = new Rectangle(TextOffset, Convert.ToInt32((e.Item.Height - r.Height) / 2.0), r.Width, r.Height); + } + + base.OnRenderItemText(e); + } + + protected override void OnRenderToolStripBackground(ToolStripRenderEventArgs e) + { + if (!(e.ToolStrip is ToolStripDropDownMenu) && !(e.ToolStrip.LayoutStyle == ToolStripLayoutStyle.VerticalStackWithOverflow)) + { + Rectangle r = new Rectangle(-1, -1, e.AffectedBounds.Width, e.AffectedBounds.Height); + + using (SolidBrush b = new SolidBrush(ColorToolStrip2)) + { + e.Graphics.FillRectangle(b, r); + } + } + } + + protected override void OnRenderMenuItemBackground(ToolStripItemRenderEventArgs e) + { + e.Item.ForeColor = Color.Black; + + var r = new Rectangle(Point.Empty, e.Item.Size); + var g = e.Graphics; + + if (!(e.Item.Owner is MenuStrip)) + g.Clear(ColorBackground); + + if (e.Item.Selected && e.Item.Enabled) + { + if (e.Item.Owner is MenuStrip) + DrawButton(e); + else + { + g.SmoothingMode = SmoothingMode.AntiAlias; + + var r2 = new Rectangle(r.X + 2, r.Y, r.Width - 4, r.Height - 1); + + using (Pen pen = new Pen(ColorBorder)) + { + g.DrawRectangle(pen, r2); + } + + r2.Inflate(-1, -1); + + using (SolidBrush b = new SolidBrush(ColorBottom)) + { + g.FillRectangle(b, r2); + } + } + } + } + + public void DrawButton(ToolStripItemRenderEventArgs e) + { + var g = e.Graphics; + var r = new Rectangle(Point.Empty, e.Item.Size); + var r2 = new Rectangle(r.X, r.Y, r.Width - 1, r.Height - 1); + + using (Pen pen = new Pen(ColorBorder)) + { + g.DrawRectangle(pen, r2); + } + + r2.Inflate(-1, -1); + + var tsb = e.Item as ToolStripButton; + + if (!(tsb == null) && tsb.Checked) + { + using (SolidBrush brush = new SolidBrush(ColorChecked)) + { + g.FillRectangle(brush, r2); + } + } + else + using (SolidBrush brush = new SolidBrush(ColorBottom)) + { + g.FillRectangle(brush, r2); + } + } + + protected override void OnRenderDropDownButtonBackground(ToolStripItemRenderEventArgs e) + { + if (e.Item.Selected) + DrawButton(e); + } + + protected override void OnRenderButtonBackground(ToolStripItemRenderEventArgs e) + { + var button = (ToolStripButton)e.Item; + if (e.Item.Selected || button.Checked) + DrawButton(e); + } + + protected override void OnRenderArrow(ToolStripArrowRenderEventArgs e) + { + var value = e.Direction == ArrowDirection.Down ? 0x36 : 0x34; + var s = Convert.ToChar(value).ToString(); + var font = new Font("Marlett", e.Item.Font.Size - 2); + var size = e.Graphics.MeasureString(s, font); + var x = Convert.ToInt32(e.Item.Width - size.Width); + var y = Convert.ToInt32((e.Item.Height - size.Height) / 2.0) + 1; + e.Graphics.DrawString(s, font, Brushes.Black, x, y); + } + + protected override void OnRenderItemCheck(ToolStripItemImageRenderEventArgs e) + { + var x = Convert.ToInt32(e.ImageRectangle.Height * 0.2); + e.Graphics.DrawImage(e.Image, new Point(x, x)); + } + + protected override void OnRenderSeparator(ToolStripSeparatorRenderEventArgs e) + { + if (e.Item.IsOnDropDown) + { + e.Graphics.Clear(ColorBackground); + var right = e.Item.Width - Convert.ToInt32(TextOffset / 5.0); + var top = e.Item.Height / 2; + top -= 1; + var b = e.Item.Bounds; + + using (Pen p = new Pen(Color.Gray)) + { + e.Graphics.DrawLine(p, new Point(TextOffset, top), new Point(right, top)); + } + } + else if (e.Vertical) + { + var b = e.Item.Bounds; + + using (Pen p = new Pen(SystemColors.ControlDarkDark)) + { + e.Graphics.DrawLine(p, + Convert.ToInt32(b.Width / 2.0), + Convert.ToInt32(b.Height * 0.15), + Convert.ToInt32(b.Width / 2.0), + Convert.ToInt32(b.Height * 0.85)); + } + } + } +} + +public struct HSLColor +{ + public HSLColor(Color color) : this() + { + SetRGB(color.R, color.G, color.B); + } + + public HSLColor(int h, int s, int l) : this() + { + Hue = h; + Saturation = s; + Luminosity = l; + } + + private double HueValue; + + public int Hue { + get { + return System.Convert.ToInt32(HueValue * 240); + } + set { + HueValue = CheckRange(value / 240.0); + } + } + + private double SaturationValue; + + public int Saturation { + get { + return System.Convert.ToInt32(SaturationValue * 240); + } + set { + SaturationValue = CheckRange(value / (double)240); + } + } + + private double LuminosityValue; + + public int Luminosity { + get { + return System.Convert.ToInt32(LuminosityValue * 240); + } + set { + LuminosityValue = CheckRange(value / (double)240); + } + } + + private double CheckRange(double value) + { + if (value < 0) + value = 0; + else if (value > 1) + value = 1; + + return value; + } + + public Color ToColorAddLuminosity(int luminosity) + { + this.Luminosity += luminosity; + return ToColor(); + } + + public Color ToColorSetLuminosity(int luminosity) + { + this.Luminosity = luminosity; + return ToColor(); + } + + public Color ToColor() + { + double r = 0, g = 0, b = 0; + + if (LuminosityValue != 0) + { + if (SaturationValue == 0) + { + b = LuminosityValue; + g = LuminosityValue; + r = LuminosityValue; + } + else + { + var temp2 = GetTemp2(this); + var temp1 = 2.0 * LuminosityValue - temp2; + + r = GetColorComponent(temp1, temp2, HueValue + 1.0 / 3.0); + g = GetColorComponent(temp1, temp2, HueValue); + b = GetColorComponent(temp1, temp2, HueValue - 1.0 / 3.0); + } + } + + return Color.FromArgb( + System.Convert.ToInt32(255 * r), + System.Convert.ToInt32(255 * g), + System.Convert.ToInt32(255 * b)); + } + + private static double GetColorComponent(double temp1, double temp2, double temp3) + { + temp3 = MoveIntoRange(temp3); + + if (temp3 < 1 / 6.0) + return temp1 + (temp2 - temp1) * 6.0 * temp3; + else if (temp3 < 0.5) + return temp2; + else if (temp3 < 2 / 3.0) + return temp1 + ((temp2 - temp1) * (2 / 3.0 - temp3) * 6); + else + return temp1; + } + + private static double MoveIntoRange(double temp3) + { + if (temp3 < 0) + temp3 += 1; + else if (temp3 > 1) + temp3 -= 1; + + return temp3; + } + + private static double GetTemp2(HSLColor hslColor) + { + double temp2; + + if (hslColor.LuminosityValue < 0.5) + temp2 = hslColor.LuminosityValue * (1.0 + hslColor.SaturationValue); + else + temp2 = hslColor.LuminosityValue + hslColor.SaturationValue - (hslColor.LuminosityValue * hslColor.SaturationValue); + + return temp2; + } + + public static HSLColor Convert(Color c) + { + HSLColor r = new HSLColor(); + r.HueValue = c.GetHue() / 360.0; + r.LuminosityValue = c.GetBrightness(); + r.SaturationValue = c.GetSaturation(); + return r; + } + + public void SetRGB(int red, int green, int blue) + { + var hc = HSLColor.Convert(Color.FromArgb(red, green, blue)); + HueValue = hc.HueValue; + SaturationValue = hc.SaturationValue; + LuminosityValue = hc.LuminosityValue; + } +} \ No newline at end of file diff --git a/mpvnet/Misc.cs b/mpvnet/Misc.cs index cd9aafa..95e950f 100644 --- a/mpvnet/Misc.cs +++ b/mpvnet/Misc.cs @@ -1,6 +1,7 @@ using System.Collections; using System.Collections.Generic; using System.Runtime.InteropServices; +using System.Windows.Forms; namespace mpvnet { @@ -24,4 +25,22 @@ namespace mpvnet int IComparerOfString_Compare(string x, string y) => StrCmpLogical(x, y); int IComparer.Compare(string x, string y) => IComparerOfString_Compare(x, y); } + + public class StaticUsing + { + public static void MsgInfo(string message) + { + MessageBox.Show(message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information); + } + + public static void MsgError(string message) + { + MessageBox.Show(message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error); + } + + public static DialogResult MsgQuestion(string message) + { + return MessageBox.Show(message, Application.ProductName, MessageBoxButtons.OKCancel, MessageBoxIcon.Question); + } + } } \ No newline at end of file diff --git a/mpvnet/mpv.cs b/mpvnet/mpv.cs index 014e5f2..5255bdb 100644 --- a/mpvnet/mpv.cs +++ b/mpvnet/mpv.cs @@ -1,18 +1,16 @@ using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Drawing; using System.IO; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; -using System.Collections.Generic; -using System.Drawing; using static mpvnet.libmpv; using static mpvnet.Native; - -using vbnet; -using static vbnet.UI.MainModule; -using System.Diagnostics; +using static mpvnet.StaticUsing; namespace mpvnet { @@ -31,9 +29,9 @@ namespace mpvnet public static Addon Addon; public static List> BoolPropChangeActions = new List>(); public static Size VideoSize = new Size(1920, 1080); - public static string InputConfPath = Folder.AppDataRoaming + "mpv\\input.conf"; - public static string mpvConfPath = Folder.AppDataRoaming + "mpv\\mpv.conf"; - public static StringPairList BindingList = new StringPairList(); + public static string mpvConfFolderPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\mpv\\"; + public static string InputConfPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\mpv\\input.conf"; + public static string mpvConfPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\mpv\\mpv.conf"; private static Dictionary _mpvConv; @@ -129,7 +127,7 @@ namespace mpvnet } catch (Exception ex) { - MsgError(ex.GetType().Name, ex.ToString()); + MsgError(ex.GetType().Name + "\r\n\r\n" + ex.ToString()); } ClientMessage?.Invoke(args); @@ -173,7 +171,7 @@ namespace mpvnet int err = mpv_command_string(MpvHandle, command); if (err < 0 && throwException) - throw new Exception($"{(mpv_error)err}" + BR2 + command); + throw new Exception($"{(mpv_error)err}\r\n\r\n" + command); } public static void SetStringProp(string name, string value, bool throwException = true) diff --git a/mpvnet/mpv.net.csproj b/mpvnet/mpv.net.csproj index 871a6ff..ab92935 100644 --- a/mpvnet/mpv.net.csproj +++ b/mpvnet/mpv.net.csproj @@ -105,6 +105,10 @@ + + + Component + @@ -153,12 +157,6 @@ - - - {af1b21c5-28fc-4d47-ad0b-54f6a38391a6} - vbnet - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/vbnet/My Project/Settings.Designer.vb b/vbnet/My Project/Settings.Designer.vb deleted file mode 100644 index 663aa6c..0000000 --- a/vbnet/My Project/Settings.Designer.vb +++ /dev/null @@ -1,73 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - - -Namespace My - - _ - Partial Friend NotInheritable Class MySettings - Inherits Global.System.Configuration.ApplicationSettingsBase - - Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) - -#Region "My.Settings Auto-Save Functionality" -#If _MyType = "WindowsForms" Then - Private Shared addedHandler As Boolean - - Private Shared addedHandlerLockObject As New Object - - _ - Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs) - If My.Application.SaveMySettingsOnExit Then - My.Settings.Save() - End If - End Sub -#End If -#End Region - - Public Shared ReadOnly Property [Default]() As MySettings - Get - -#If _MyType = "WindowsForms" Then - If Not addedHandler Then - SyncLock addedHandlerLockObject - If Not addedHandler Then - AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings - addedHandler = True - End If - End SyncLock - End If -#End If - Return defaultInstance - End Get - End Property - End Class -End Namespace - -Namespace My - - _ - Friend Module MySettingsProperty - - _ - Friend ReadOnly Property Settings() As Global.vbnet.My.MySettings - Get - Return Global.vbnet.My.MySettings.Default - End Get - End Property - End Module -End Namespace diff --git a/vbnet/My Project/Settings.settings b/vbnet/My Project/Settings.settings deleted file mode 100644 index 85b890b..0000000 --- a/vbnet/My Project/Settings.settings +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/vbnet/Native.vb b/vbnet/Native.vb deleted file mode 100644 index 7f1451d..0000000 --- a/vbnet/Native.vb +++ /dev/null @@ -1,278 +0,0 @@ -Imports System.Runtime.InteropServices -Imports System.Text - -Public Class Native - Public Delegate Function CallbackHandler(handle As IntPtr, parameter As Integer) As Boolean - - - Public Shared Function ExcludeClipRect(hdc As IntPtr, nLeftRect As Integer, nTopRect As Integer, nRightRect As Integer, nBottomRect As Integer) As Integer - End Function - -#Region "Constants" - - Friend Const EM_SETCUEBANNER As Integer = &H1501 - Friend Const CB_SETCUEBANNER As Integer = &H1703 - -#End Region - -#Region "Function" - -#Region "user32.dll" - - Shared Function SetWindowPos(hWnd As IntPtr, - hWndInsertAfter As IntPtr, - X As Integer, - Y As Integer, - cx As Integer, - cy As Integer, - uFlags As UInteger) As Boolean - End Function - - - Shared Function GetWindowLong(hWnd As IntPtr, nIndex As Integer) As Integer - End Function - - - Shared Function RegisterWindowMessage(id As String) As Integer - End Function - - - Shared Function RegisterHotKey(hWnd As IntPtr, id As Integer, fsModifiers As Integer, vk As Integer) As Boolean - End Function - - - Shared Function MapVirtualKey(wCode As Integer, wMapType As Integer) As Integer - End Function - - - Shared Function UnregisterHotKey(hWnd As IntPtr, id As Integer) As Boolean - End Function - - - Shared Function GetForegroundWindow() As IntPtr - End Function - - - Shared Function GetWindowThreadProcessId(hwnd As IntPtr, ByRef lpdwProcessId As Integer) As Integer - End Function - - - Shared Function SetForegroundWindow(handle As IntPtr) As Boolean - End Function - - - Shared Function GetWindowModuleFileName(hwnd As IntPtr, - lpszFileName As StringBuilder, - cchFileNameMax As UInteger) As UInteger - End Function - - - Shared Function SendMessage(handle As IntPtr, - message As Int32, - wParam As IntPtr, - lParam As IntPtr) As IntPtr - End Function - - - Shared Function SendMessage(hWnd As IntPtr, - Msg As Int32, - wParam As IntPtr, - lParam As String) As IntPtr - End Function - - - Shared Function SendMessage(hWnd As IntPtr, - Msg As Int32, - wParam As Integer, - lParam As Integer) As IntPtr - End Function - - - Shared Function SendMessage(hWnd As IntPtr, - Msg As Int32, - wParam As Integer, - lParam As String) As IntPtr - End Function - - - Shared Function SendMessage(hWnd As IntPtr, - Msg As Int32, - ByRef wParam As IntPtr, - lParam As StringBuilder) As IntPtr - End Function - - - Shared Function SendMessageTimeout(windowHandle As IntPtr, - msg As Integer, - wParam As IntPtr, - lParam As IntPtr, - flags As Integer, - timeout As Integer, - ByRef result As IntPtr) As IntPtr - End Function - - - Shared Function PostMessage(hwnd As IntPtr, - wMsg As Integer, - wParam As IntPtr, - lParam As IntPtr) As IntPtr - End Function - - - Shared Sub ReleaseCapture() - End Sub - - - Public Shared Function GetWindowRect(hWnd As IntPtr, ByRef lpRect As RECT) As Boolean - End Function - - - Public Shared Function GetWindowDC(hWnd As IntPtr) As IntPtr - End Function - - - Public Shared Function ReleaseDC(hWnd As IntPtr, hDC As IntPtr) As Integer - End Function - -#End Region - -#Region "kernel32.dll" - - - Shared Function LoadLibrary(path As String) As IntPtr - End Function - - - Shared Function FreeLibrary(hModule As IntPtr) As Boolean - End Function - - - Shared Function FormatMessage(dwFlags As Integer, - lpSource As IntPtr, - dwMessageId As Integer, - dwLanguageId As Integer, - ByRef lpBuffer As String, - nSize As Integer, - Arguments As IntPtr) As Integer - End Function - -#End Region - - - Shared Function SetWindowTheme(hWnd As IntPtr, - pszSubAppName As String, - pszSubIdList As String) As Integer - End Function - - - Shared Function AssocQueryString( - flags As UInteger, - str As UInteger, - pszAssoc As String, - pszExtra As String, - pszOut As StringBuilder, - ByRef pcchOut As UInteger) As UInteger - End Function - -#End Region - -#Region "Structures" - - Public Structure RECT - Public Left As Integer - Public Top As Integer - Public Right As Integer - Public Bottom As Integer - - Sub New(r As Rectangle) - Left = r.Left - Top = r.Top - Right = r.Right - Bottom = r.Bottom - End Sub - - Public Sub New(left As Integer, top As Integer, right As Integer, bottom As Integer) - Me.Left = left - Me.Top = top - Me.Right = right - Me.Bottom = bottom - End Sub - - Function ToRectangle() As Rectangle - Return Rectangle.FromLTRB(Left, Top, Right, Bottom) - End Function - End Structure - - Public Structure SHFILEINFO - Public hIcon As IntPtr - Public iIcon As Integer - Public dwAttributes As Integer - - Public szDisplayName As String - - Public szTypeName As String - End Structure - - Public Structure NMHDR - Public hwndFrom As Integer - Public idFrom As Integer - Public code As Integer - End Structure - - Public Structure NCCALCSIZE_PARAMS - Public rgrc0, rgrc1, rgrc2 As RECT - Public lppos As IntPtr - End Structure - -#End Region - -End Class - -Public Class Taskbar - Private Taskbar As ITaskbarList3 = DirectCast(New TaskBarCommunication(), ITaskbarList3) - - Property Handle As IntPtr - - Public Sub New(handle As IntPtr) - Me.Handle = handle - End Sub - - - - - Private Interface ITaskbarList3 - 'ITaskbarList - Sub HrInit() - Sub AddTab(hwnd As IntPtr) - Sub DeleteTab(hwnd As IntPtr) - Sub ActivateTab(hwnd As IntPtr) - Sub SetActiveAlt(hwnd As IntPtr) - 'ITaskbarList2 - Sub MarkFullscreenWindow(hwnd As IntPtr, fFullscreen As Boolean) - 'ITaskbarList3 - Sub SetProgressValue(hwnd As IntPtr, ullCompleted As UInt64, ullTotal As UInt64) - Sub SetProgressState(hwnd As IntPtr, state As TaskbarStates) - End Interface - - - - - Private Class TaskBarCommunication - End Class - - Public Sub SetState(taskbarState As TaskbarStates) - Taskbar.SetProgressState(Handle, taskbarState) - End Sub - - Public Sub SetValue(progressValue As Double, progressMax As Double) - Taskbar.SetProgressValue(Handle, CULng(Math.Truncate(progressValue)), CULng(Math.Truncate(progressMax))) - End Sub -End Class - -Public Enum TaskbarStates - NoProgress = 0 - Indeterminate = &H1 - Normal = &H2 - [Error] = &H4 - Paused = &H8 -End Enum \ No newline at end of file diff --git a/vbnet/TaskDialog.vb b/vbnet/TaskDialog.vb deleted file mode 100644 index 2f3bf9e..0000000 --- a/vbnet/TaskDialog.vb +++ /dev/null @@ -1,551 +0,0 @@ -Imports System.Runtime.InteropServices -Imports System.Text -Imports System.Text.RegularExpressions - -Namespace UI - Public Delegate Function PFTASKDIALOGCALLBACK(hwnd As IntPtr, - msg As UInteger, - wParam As IntPtr, - lParam As IntPtr, - lpRefData As IntPtr) As Integer - Public Class TaskDialog(Of T) - Inherits TaskDialog - Implements IDisposable - - Private IdValueDic As New Dictionary(Of Integer, T) - Private IdTextDic As New Dictionary(Of Integer, String) - Private CommandLinkShieldList As New List(Of Integer) - Private ButtonArray As IntPtr, RadioButtonArray As IntPtr - Private Buttons As New List(Of TASKDIALOG_BUTTON) - Private RadioButtons As New List(Of TASKDIALOG_BUTTON) - - Private Config As TASKDIALOGCONFIG - - Sub New() - Config = New TASKDIALOGCONFIG() - - Config.cbSize = CUInt(Marshal.SizeOf(Config)) - Config.hwndParent = GetHandle() - Config.hInstance = IntPtr.Zero - Config.dwFlags = Flags.TDF_ALLOW_DIALOG_CANCELLATION - Config.dwCommonButtons = TaskDialogButtons.None - Config.MainIcon = New TASKDIALOGCONFIG_ICON_UNION(0) - Config.FooterIcon = New TASKDIALOGCONFIG_ICON_UNION(0) - Config.cxWidth = 0 - - Config.cButtons = 0 - Config.cRadioButtons = 0 - Config.pButtons = IntPtr.Zero - Config.pRadioButtons = IntPtr.Zero - Config.nDefaultButton = 0 - Config.nDefaultRadioButton = 0 - - Config.pszWindowTitle = Application.ProductName - Config.pszMainInstruction = "" - Config.pszContent = "" - Config.pszVerificationText = Nothing - Config.pszExpandedInformation = Nothing - Config.pszExpandedControlText = Nothing - Config.pszCollapsedControlText = Nothing - Config.pszFooter = Nothing - - Config.pfCallback = New PFTASKDIALOGCALLBACK(AddressOf DialogProc) - End Sub - - Function GetHandle() As IntPtr - Dim r As New StringBuilder(260) - Dim h = GetForegroundWindow() - GetWindowModuleFileName(h, r, 260) - If r.ToString.Replace(".vshost", "").Base = Application.ExecutablePath.Base Then Return h - End Function - -#Region "Constants" - Const TDE_CONTENT As Integer = 0 - Const TDE_EXPANDED_INFORMATION As Integer = 1 - Const TDE_FOOTER As Integer = 2 - Const TDE_MAIN_INSTRUCTION As Integer = 3 - - Const TDN_CREATED As Integer = 0 - Const TDN_NAVIGATED As Integer = 1 - Const TDN_BUTTON_CLICKED As Integer = 2 - Const TDN_HYPERLINK_CLICKED As Integer = 3 - Const TDN_TIMER As Integer = 4 - Const TDN_DESTROYED As Integer = 5 - Const TDN_RADIO_BUTTON_CLICKED As Integer = 6 - Const TDN_DIALOG_CONSTRUCTED As Integer = 7 - Const TDN_VERIFICATION_CLICKED As Integer = 8 - Const TDN_HELP As Integer = 9 - Const TDN_EXPANDO_BUTTON_CLICKED As Integer = 10 - - Const TDM_NAVIGATE_PAGE As Integer = &H400 + 101 - Const TDM_CLICK_BUTTON As Integer = &H400 + 102 'wParam = Button ID - Const TDM_SET_MARQUEE_PROGRESS_BAR As Integer = &H400 + 103 'wParam = 0 (nonMarque) wParam != 0 (Marquee) - Const TDM_SET_PROGRESS_BAR_STATE As Integer = &H400 + 104 'wParam = new progress state - Const TDM_SET_PROGRESS_BAR_RANGE As Integer = &H400 + 105 'lParam = MAKELPARAM(nMinRange, nMaxRange) - Const TDM_SET_PROGRESS_BAR_POS As Integer = &H400 + 106 'wParam = new position - Const TDM_SET_PROGRESS_BAR_MARQUEE As Integer = &H400 + 107 'wParam = 0 (stop marquee), wParam != 0 (start marquee), lparam = speed (milliseconds between repaints) - Const TDM_SET_ELEMENT_TEXT As Integer = &H400 + 108 'wParam = element (TASKDIALOG_ELEMENTS), lParam = new element text (LPCWSTR) - Const TDM_CLICK_RADIO_BUTTON As Integer = &H400 + 110 'wParam = Radio Button ID - Const TDM_ENABLE_BUTTON As Integer = &H400 + 111 'lParam = 0 (disable), lParam != 0 (enable), wParam = Button ID - Const TDM_ENABLE_RADIO_BUTTON As Integer = &H400 + 112 'lParam = 0 (disable), lParam != 0 (enable), wParam = Radio Button ID - Const TDM_CLICK_VERIFICATION As Integer = &H400 + 113 'wParam = 0 (unchecked), 1 (checked), lParam = 1 (set key focus) - Const TDM_UPDATE_ELEMENT_TEXT As Integer = &H400 + 114 'wParam = element (TASKDIALOG_ELEMENTS), lParam = new element text (LPCWSTR) - Const TDM_SET_BUTTON_ELEVATION_REQUIRED_STATE As Integer = &H400 + 115 'wParam = Button ID, lParam = 0 (elevation not required), lParam != 0 (elevation required) - Const TDM_UPDATE_ICON As Integer = &H400 + 116 'wParam = icon element (TASKDIALOG_ICON_ELEMENTS), lParam = new icon (hIcon if TDF_USE_HICON_* was set, PCWSTR otherwise) -#End Region - -#Region "Properties" - - Private AllowCancelValue As Boolean - - WriteOnly Property AllowCancel() As Boolean - Set(Value As Boolean) - If Value Then - Config.dwFlags = Config.dwFlags Or Flags.TDF_ALLOW_DIALOG_CANCELLATION - ElseIf (Config.dwFlags And Flags.TDF_ALLOW_DIALOG_CANCELLATION) = Flags.TDF_ALLOW_DIALOG_CANCELLATION Then - Config.dwFlags = Config.dwFlags Xor Flags.TDF_ALLOW_DIALOG_CANCELLATION - End If - End Set - End Property - - Property MainInstruction() As String - Get - Return Config.pszMainInstruction - End Get - Set(Value As String) - Config.pszMainInstruction = Value - End Set - End Property - - Property Content() As String - Get - Return Config.pszContent - End Get - Set(Value As String) - Config.pszContent = ExpandWikiMarkup(Value) - End Set - End Property - - Property ExpandedInformation() As String - Get - Return Config.pszExpandedInformation - End Get - Set(Value As String) - Config.pszExpandedInformation = ExpandWikiMarkup(Value) - End Set - End Property - - Property VerificationText() As String - Get - Return Config.pszVerificationText - End Get - Set(Value As String) - Config.pszVerificationText = Value - End Set - End Property - - Property DefaultButton() As DialogResult - Get - Return CType(Config.nDefaultButton, DialogResult) - End Get - Set(Value As DialogResult) - Config.nDefaultButton = Value - End Set - End Property - - Property Footer() As String - Get - Return Config.pszFooter - End Get - Set(Value As String) - Config.pszFooter = ExpandWikiMarkup(Value) - End Set - End Property - - WriteOnly Property MainIcon() As TaskDialogIcon - Set(Value As TaskDialogIcon) - Config.MainIcon = New TASKDIALOGCONFIG_ICON_UNION(Value) - End Set - End Property - - Private SelectedIDValue As Integer = -1 - - Property SelectedID As Integer - Get - Return SelectedIDValue - End Get - Set(value As Integer) - For Each i In IdValueDic - If i.Key = value Then SelectedIDValue = value - Next - End Set - End Property - - Private SelectedValueValue As T - - Property SelectedValue() As T - Get - If IdValueDic.ContainsKey(SelectedID) Then Return IdValueDic(SelectedID) - Return SelectedValueValue - End Get - Set(value As T) - SelectedValueValue = value - End Set - End Property - - Private SelectedTextValue As String - - Property SelectedText() As String - Get - If IdTextDic.ContainsKey(SelectedID) Then Return IdTextDic(SelectedID) - Return SelectedTextValue - End Get - Set(value As String) - SelectedTextValue = value - End Set - End Property - - Property CheckBoxChecked() As Boolean - Get - Return (Config.dwFlags And Flags.TDF_VERIFICATION_FLAG_CHECKED) = Flags.TDF_VERIFICATION_FLAG_CHECKED - End Get - Set(value As Boolean) - If value Then - Config.dwFlags = Config.dwFlags Or Flags.TDF_VERIFICATION_FLAG_CHECKED - ElseIf CheckBoxChecked Then - Config.dwFlags = Config.dwFlags Xor Flags.TDF_VERIFICATION_FLAG_CHECKED - End If - End Set - End Property - - Private CommonButtonsValue As TaskDialogButtons - - Property CommonButtons() As TaskDialogButtons - Get - Return Config.dwCommonButtons - End Get - Set(Value As TaskDialogButtons) - Config.dwCommonButtons = Value - End Set - End Property - - Private TimeoutValue As Integer - - Property Timeout As Integer - Get - Return CInt(TimeoutValue / 1000) - End Get - Set(Value As Integer) - TimeoutValue = Value * 1000 - - If Value > 0 Then - Config.dwFlags = Config.dwFlags Or Flags.TDF_CALLBACK_TIMER - End If - End Set - End Property -#End Region - -#Region "Methods" - - Sub AddButton(text As String, value As T) - Dim id = 1000 + IdValueDic.Count + 1 - IdValueDic(id) = value - Buttons.Add(New TASKDIALOG_BUTTON(id, text)) - End Sub - - Function ExpandWikiMarkup(value As String) As String - If value.Contains("[") Then - Dim re As New Regex("\[(\w+?:.*?) (.+?)\]") - Dim m = re.Match(value) - - If m.Success Then - Config.dwFlags = Config.dwFlags Or Flags.TDF_ENABLE_HYPERLINKS - value = re.Replace(value, "$2") - End If - End If - - Return value - End Function - - Sub AddCommandLink(text As String, value As T) - Dim id = 1000 + IdValueDic.Count + 1 - IdValueDic(id) = value - IdTextDic(id) = text - Buttons.Add(New TASKDIALOG_BUTTON(id, text)) - Config.dwFlags = Config.dwFlags Or Flags.TDF_USE_COMMAND_LINKS - End Sub - - Sub AddCommandLink(text As String, - description As String, - value As T, - Optional setShield As Boolean = False) - - Dim id = 1000 + IdValueDic.Count + 1 - IdValueDic(id) = value - If setShield Then CommandLinkShieldList.Add(id) - If description <> "" Then text = text + BR + description - Buttons.Add(New TASKDIALOG_BUTTON(id, text)) - Config.dwFlags = Config.dwFlags Or Flags.TDF_USE_COMMAND_LINKS - End Sub - - Sub AddRadioButton(text As String, value As T) - Dim id = 1000 + IdValueDic.Count + 1 - IdValueDic(id) = value - RadioButtons.Add(New TASKDIALOG_BUTTON(id, text)) - End Sub - - Function Show() As T - MarshalDialogControlStructs() - Dim isChecked As Boolean - Dim hr = TaskDialogIndirect(Config, Nothing, Nothing, isChecked) - CheckBoxChecked = isChecked - If hr < 0 Then Marshal.ThrowExceptionForHR(hr) - If TypeOf SelectedValue Is DialogResult Then SelectedValue = DirectCast(CObj(SelectedID), T) - Return SelectedValue - End Function - - Private ExitTickCount As Integer - - Private Function DialogProc(hwnd As IntPtr, - msg As UInteger, - wParam As IntPtr, - lParam As IntPtr, - lpRefData As IntPtr) As Integer - Select Case msg - Case TDN_BUTTON_CLICKED, TDN_RADIO_BUTTON_CLICKED - If TypeOf SelectedValue Is DialogResult Then - SelectedIDValue = wParam.ToInt32 - Else - SelectedID = wParam.ToInt32 - End If - Case TDN_TIMER - If ExitTickCount = 0 Then - ExitTickCount = Environment.TickCount + Timeout * 1000 - End If - - If Environment.TickCount > ExitTickCount Then - SendMessage(hwnd, TDM_CLICK_BUTTON, DialogResult.OK, 0) - End If - Case TDN_HYPERLINK_CLICKED - Dim url = Marshal.PtrToStringUni(lParam) - - If url.StartsWith("mailto:") OrElse url Like "http*://*" Then - ProcessHelp.Start(url) - ElseIf url = "copymsg:" Then - Clipboard.SetText(MainInstruction + BR2 + Content + BR2 + ExpandedInformation) - MsgBox("Message was copied to clipboard.", MessageBoxIcon.Information) - End If - Case TDN_CREATED - For Each i In CommandLinkShieldList - SendMessage(hwnd, TDM_SET_BUTTON_ELEVATION_REQUIRED_STATE, i, 1) - Next - End Select - - Return 0 - End Function - - Private Sub MarshalDialogControlStructs() - If Not Buttons Is Nothing AndAlso Buttons.Count > 0 Then - ButtonArray = AllocateAndMarshalButtons(Buttons) - Config.pButtons = ButtonArray - Config.cButtons = CUInt(Buttons.Count) - End If - - If Not RadioButtons Is Nothing AndAlso RadioButtons.Count > 0 Then - RadioButtonArray = AllocateAndMarshalButtons(RadioButtons) - Config.pRadioButtons = RadioButtonArray - Config.cRadioButtons = CUInt(RadioButtons.Count) - End If - End Sub - - Private Shared Function AllocateAndMarshalButtons(structs As List(Of TASKDIALOG_BUTTON)) As IntPtr - Dim initialPtr = Marshal.AllocHGlobal(Marshal.SizeOf(GetType(TASKDIALOG_BUTTON)) * structs.Count) - Dim currentPtr = initialPtr - - For Each button In structs - Marshal.StructureToPtr(button, currentPtr, False) - currentPtr = CType((currentPtr.ToInt64 + Marshal.SizeOf(button)), IntPtr) - Next - - Return initialPtr - End Function - -#End Region - -#Region "IDispose Pattern" - - Private disposed As Boolean - - Sub Dispose() Implements IDisposable.Dispose - Dispose(True) - GC.SuppressFinalize(Me) - End Sub - - Protected Overrides Sub Finalize() - Try - Dispose(False) - Finally - MyBase.Finalize() - End Try - End Sub - - Protected Sub Dispose(disposing As Boolean) - If Not disposed Then - disposed = True - - If ButtonArray <> IntPtr.Zero Then - Marshal.FreeHGlobal(ButtonArray) - ButtonArray = IntPtr.Zero - End If - - If RadioButtonArray <> IntPtr.Zero Then - Marshal.FreeHGlobal(RadioButtonArray) - RadioButtonArray = IntPtr.Zero - End If - - If disposing Then - End If - End If - End Sub - -#End Region - - End Class - - Public Class TaskDialog - - Shared Function TaskDialogIndirect(<[In]()> pTaskConfig As TASKDIALOGCONFIG, - ByRef pnButton As Integer, - ByRef pnRadioButton As Integer, - ByRef pVerificationFlagChecked As Boolean) As Integer - End Function - - - Shared Function GetForegroundWindow() As IntPtr - End Function - - - Shared Function GetWindowModuleFileName(hwnd As IntPtr, - lpszFileName As StringBuilder, - cchFileNameMax As UInteger) As UInteger - End Function - - - Shared Function SendMessage(hWnd As IntPtr, - Msg As Int32, - wParam As Integer, - lParam As Integer) As IntPtr - End Function - - - Public Class TASKDIALOGCONFIG - Public cbSize As UInteger - Public hwndParent As IntPtr - Public hInstance As IntPtr - Public dwFlags As Flags - Public dwCommonButtons As TaskDialogButtons - - Public pszWindowTitle As String - Public MainIcon As TASKDIALOGCONFIG_ICON_UNION - - Public pszMainInstruction As String - - Public pszContent As String - Public cButtons As UInteger - Public pButtons As IntPtr - Public nDefaultButton As Integer - Public cRadioButtons As UInteger - Public pRadioButtons As IntPtr - Public nDefaultRadioButton As Integer - - Public pszVerificationText As String - - Public pszExpandedInformation As String - - Public pszExpandedControlText As String - - Public pszCollapsedControlText As String - Public FooterIcon As TASKDIALOGCONFIG_ICON_UNION - - Public pszFooter As String - Public pfCallback As PFTASKDIALOGCALLBACK - Public lpCallbackData As IntPtr - Public cxWidth As UInteger - End Class - - 'TASKDIALOG_FLAGS - Public Enum Flags - NONE = 0 - TDF_ENABLE_HYPERLINKS = &H1 - TDF_USE_HICON_MAIN = &H2 - TDF_USE_HICON_FOOTER = &H4 - TDF_ALLOW_DIALOG_CANCELLATION = &H8 - TDF_USE_COMMAND_LINKS = &H10 - TDF_USE_COMMAND_LINKS_NO_ICON = &H20 - TDF_EXPAND_FOOTER_AREA = &H40 - TDF_EXPANDED_BY_DEFAULT = &H80 - TDF_VERIFICATION_FLAG_CHECKED = &H100 - TDF_SHOW_PROGRESS_BAR = &H200 - TDF_SHOW_MARQUEE_PROGRESS_BAR = &H400 - TDF_CALLBACK_TIMER = &H800 - TDF_POSITION_RELATIVE_TO_WINDOW = &H1000 - TDF_RTL_LAYOUT = &H2000 - TDF_NO_DEFAULT_RADIO_BUTTON = &H4000 - End Enum - - - Public Structure TASKDIALOGCONFIG_ICON_UNION - Sub New(i As Integer) - spacer = IntPtr.Zero - pszIcon = 0 - hMainIcon = i - End Sub - - - Public hMainIcon As Integer - - Public pszIcon As Integer - - Public spacer As IntPtr - End Structure - - - Public Structure TASKDIALOG_BUTTON - Sub New(n As Integer, txt As String) - nButtonID = n - pszButtonText = txt - End Sub - - Public nButtonID As Integer - - Public pszButtonText As String - End Structure - End Class - - Public Enum TaskDialogButtons - None = &H0 - Ok = &H1 - Yes = &H2 - No = &H4 - Cancel = &H8 - Retry = &H10 - RetryCancel = Retry Or Cancel - Close = &H20 - OkCancel = Ok Or Cancel - YesNo = Yes Or No - YesNoCancel = YesNo Or Cancel - End Enum - - Public Enum TaskDialogIcon - Warning = 65535 'TD_WARNING_ICON - [Error] = 65534 'TD_ERROR_ICON - Info = 65533 'TD_INFORMATION_ICON - Shield = 65532 'TD_SHIELD_ICON - SecurityShieldBlue = 65531 - SecurityWarning = 65530 - SecurityError = 65529 - SecuritySuccess = 65528 - SecurityShieldGray = 65527 - End Enum -End Namespace \ No newline at end of file diff --git a/vbnet/ToolStripRendererEx.vb b/vbnet/ToolStripRendererEx.vb deleted file mode 100644 index ba81620..0000000 --- a/vbnet/ToolStripRendererEx.vb +++ /dev/null @@ -1,311 +0,0 @@ -Imports System.Drawing.Drawing2D -Imports System.Drawing.Text -Imports Microsoft.Win32 - -Namespace UI - Public Class ToolStripRendererEx - Inherits ToolStripSystemRenderer - - Shared RenderMode As ToolStripRenderModeEx - - Shared Property ColorChecked As Color - Shared Property ColorBorder As Color - Shared Property ColorTop As Color - Shared Property ColorBottom As Color - Shared Property ColorBackground As Color - - Shared Property ColorToolStrip1 As Color - Shared Property ColorToolStrip2 As Color - Shared Property ColorToolStrip3 As Color - Shared Property ColorToolStrip4 As Color - - Private TextOffset As Integer - - Sub New(mode As ToolStripRenderModeEx) - RenderMode = mode - InitColors(mode) - End Sub - - Shared Function IsAutoRenderMode() As Boolean - Return _ - RenderMode = ToolStripRenderModeEx.SystemAuto OrElse - RenderMode = ToolStripRenderModeEx.Win7Auto OrElse - RenderMode = ToolStripRenderModeEx.Win10Auto - End Function - - Shared Sub InitColors(renderMode As ToolStripRenderModeEx) - If ToolStripRendererEx.IsAutoRenderMode Then - Dim argb = CInt(Registry.GetValue("HKEY_CURRENT_USER\Software\Microsoft\Windows\DWM", "ColorizationColor", 0)) - If argb = 0 Then argb = Color.LightBlue.ToArgb - InitColors(Color.FromArgb(argb)) - Else - ColorBorder = Color.FromArgb(&HFF83ABDC) - ColorTop = Color.FromArgb(&HFFE7F0FB) - ColorBottom = Color.FromArgb(&HFFCCE1FB) - ColorBackground = SystemColors.Control - - ColorToolStrip1 = Color.FromArgb(&HFFFDFEFF) - ColorToolStrip2 = Color.FromArgb(&HFFE6F0FA) - ColorToolStrip3 = Color.FromArgb(&HFFDCE6F4) - ColorToolStrip4 = Color.FromArgb(&HFFDDE9F7) - End If - End Sub - - Shared Sub InitColors(c As Color) - ColorBorder = HSLColor.Convert(c).ToColorSetLuminosity(100) - ColorChecked = HSLColor.Convert(c).ToColorSetLuminosity(200) - ColorBottom = HSLColor.Convert(c).ToColorSetLuminosity(220) - ColorBackground = HSLColor.Convert(c).ToColorSetLuminosity(230) - ColorTop = HSLColor.Convert(c).ToColorSetLuminosity(240) - - ColorToolStrip1 = ControlPaint.LightLight(ControlPaint.LightLight(ControlPaint.Light(ColorBorder, 1))) - ColorToolStrip2 = ControlPaint.LightLight(ControlPaint.LightLight(ControlPaint.Light(ColorBorder, 0.7))) - ColorToolStrip3 = ControlPaint.LightLight(ControlPaint.LightLight(ControlPaint.Light(ColorBorder, 0.1))) - ColorToolStrip4 = ControlPaint.LightLight(ControlPaint.LightLight(ControlPaint.Light(ColorBorder, 0.4))) - End Sub - - Protected Overrides Sub OnRenderToolStripBorder(e As ToolStripRenderEventArgs) - ControlPaint.DrawBorder(e.Graphics, e.AffectedBounds, Color.FromArgb(160, 175, 195), ButtonBorderStyle.Solid) - End Sub - - Protected Overloads Overrides Sub OnRenderItemText(e As ToolStripItemTextRenderEventArgs) - e.Graphics.TextRenderingHint = TextRenderingHint.AntiAlias - - If TypeOf e.Item Is ToolStripMenuItem AndAlso Not TypeOf e.Item.Owner Is MenuStrip Then - Dim r = e.TextRectangle - - Dim dropDown = TryCast(e.ToolStrip, ToolStripDropDownMenu) - - If dropDown Is Nothing OrElse dropDown.ShowImageMargin OrElse dropDown.ShowCheckMargin Then - TextOffset = CInt(e.Item.Height * 1.1) - Else - TextOffset = CInt(e.Item.Height * 0.2) - End If - - e.TextRectangle = New Rectangle(TextOffset, CInt((e.Item.Height - r.Height) / 2), r.Width, r.Height) - End If - - MyBase.OnRenderItemText(e) - End Sub - - Protected Overrides Sub OnRenderToolStripBackground(e As ToolStripRenderEventArgs) - If Not TypeOf e.ToolStrip Is ToolStripDropDownMenu AndAlso - Not e.ToolStrip.LayoutStyle = ToolStripLayoutStyle.VerticalStackWithOverflow Then - - Dim r As New Rectangle(-1, -1, e.AffectedBounds.Width, e.AffectedBounds.Height) - - If IsFlat() Then - Using b As New SolidBrush(ColorToolStrip2) - e.Graphics.FillRectangle(b, r) - End Using - Else - Dim cb As New ColorBlend() - cb.Colors = {ColorToolStrip1, ColorToolStrip2, ColorToolStrip3, ColorToolStrip4} - cb.Positions = {0.0F, 0.5F, 0.5F, 1.0F} - - Using b As New LinearGradientBrush(r, ColorToolStrip1, ColorToolStrip4, 90) - b.InterpolationColors = cb - e.Graphics.FillRectangle(b, r) - End Using - End If - End If - End Sub - - Protected Overrides Sub OnRenderMenuItemBackground(e As ToolStripItemRenderEventArgs) - e.Item.ForeColor = Color.Black - - Dim left = 22 - Dim r = New Rectangle(Point.Empty, e.Item.Size) - Dim g = e.Graphics - - If Not TypeOf e.Item.Owner Is MenuStrip Then - g.Clear(ColorBackground) - End If - - If e.Item.Selected AndAlso e.Item.Enabled Then - If TypeOf e.Item.Owner Is MenuStrip Then - DrawButton(e) - Else - g.SmoothingMode = SmoothingMode.AntiAlias - - Dim r2 = New Rectangle(r.X + 2, r.Y, r.Width - 4, r.Height - 1) - - If IsFlat() Then - Using pen As New Pen(ColorBorder) - g.DrawRectangle(pen, r2) - End Using - - r2.Inflate(-1, -1) - - Using b As New SolidBrush(ColorBottom) - g.FillRectangle(b, r2) - End Using - Else - Using path = CreateRoundRectangle(r2, 3) - Using b As New LinearGradientBrush(r2, - ControlPaint.LightLight(ControlPaint.LightLight(ColorTop)), - ControlPaint.LightLight(ControlPaint.LightLight(ColorBottom)), - 90.0F) - g.FillPath(b, path) - End Using - - Using p As New Pen(ColorBorder) - g.DrawPath(p, path) - End Using - End Using - - r2.Inflate(-1, -1) - - Using path = CreateRoundRectangle(r2, 3) - Using b As New LinearGradientBrush(r2, ColorTop, ColorBottom, 90.0F) - g.FillPath(b, path) - End Using - End Using - End If - End If - End If - End Sub - - Sub DrawButton(e As ToolStripItemRenderEventArgs) - Dim g = e.Graphics - Dim r = New Rectangle(Point.Empty, e.Item.Size) - Dim r2 = New Rectangle(r.X, r.Y, r.Width - 1, r.Height - 1) - - If IsFlat() Then - Using pen As New Pen(ColorBorder) - g.DrawRectangle(pen, r2) - End Using - - r2.Inflate(-1, -1) - - Dim tsb = TryCast(e.Item, ToolStripButton) - - If Not tsb Is Nothing AndAlso tsb.Checked Then - Using brush As New SolidBrush(ColorChecked) - g.FillRectangle(brush, r2) - End Using - Else - Using brush As New SolidBrush(ColorBottom) - g.FillRectangle(brush, r2) - End Using - End If - Else - g.SmoothingMode = SmoothingMode.AntiAlias - - Dim c1 = HSLColor.Convert(ColorToolStrip1).ToColorAddLuminosity(15) - Dim c2 = HSLColor.Convert(ColorToolStrip2).ToColorAddLuminosity(15) - Dim c3 = HSLColor.Convert(ColorToolStrip3).ToColorAddLuminosity(15) - Dim c4 = HSLColor.Convert(ColorToolStrip4).ToColorAddLuminosity(15) - - Dim cb As New ColorBlend() - - cb.Colors = {c1, c2, c3, c4} - cb.Positions = {0.0F, 0.5F, 0.5F, 1.0F} - - Using path = CreateRoundRectangle(r2, 3) - Using b As New LinearGradientBrush(r2, c1, c4, 90) - b.InterpolationColors = cb - g.FillPath(b, path) - End Using - - Using p As New Pen(ColorBorder) - g.DrawPath(p, path) - End Using - End Using - - r2.Inflate(-1, -1) - - c1 = HSLColor.Convert(ColorToolStrip1).ToColorAddLuminosity(5) - c2 = HSLColor.Convert(ColorToolStrip2).ToColorAddLuminosity(5) - c3 = HSLColor.Convert(ColorToolStrip3).ToColorAddLuminosity(-10) - c4 = HSLColor.Convert(ColorToolStrip4).ToColorAddLuminosity(-10) - - cb.Colors = {c1, c2, c3, c4} - cb.Positions = {0.0F, 0.5F, 0.5F, 1.0F} - - Using b As New LinearGradientBrush(r2, c1, c4, 90) - b.InterpolationColors = cb - - Using path = CreateRoundRectangle(r2, 3) - g.FillPath(b, path) - End Using - End Using - End If - End Sub - - Protected Overrides Sub OnRenderDropDownButtonBackground(e As ToolStripItemRenderEventArgs) - If e.Item.Selected Then DrawButton(e) - End Sub - - Protected Overrides Sub OnRenderButtonBackground(e As ToolStripItemRenderEventArgs) - Dim button = DirectCast(e.Item, ToolStripButton) - If e.Item.Selected OrElse button.Checked Then DrawButton(e) - End Sub - - Protected Overloads Overrides Sub OnRenderArrow(e As ToolStripArrowRenderEventArgs) - Dim value = If(e.Direction = ArrowDirection.Down, &H36, &H34) - Dim s = Convert.ToChar(value).ToString - Dim font = New Font("Marlett", e.Item.Font.Size - 2) - Dim size = e.Graphics.MeasureString(s, font) - Dim x = CInt(e.Item.Width - size.Width) - Dim y = CInt((e.Item.Height - size.Height) / 2) + 1 - e.Graphics.DrawString(s, font, Brushes.Black, x, y) - End Sub - - Protected Overrides Sub OnRenderItemCheck(e As ToolStripItemImageRenderEventArgs) - Dim x = CInt(e.ImageRectangle.Height * 0.2) - e.Graphics.DrawImage(e.Image, New Point(x, x)) - End Sub - - Protected Overloads Overrides Sub OnRenderSeparator(e As ToolStripSeparatorRenderEventArgs) - If e.Item.IsOnDropDown Then - e.Graphics.Clear(ColorBackground) - Dim right = e.Item.Width - CInt(TextOffset / 5) - Dim top = e.Item.Height \ 2 - top -= 1 - Dim b = e.Item.Bounds - - Using p As New Pen(Color.Gray) - e.Graphics.DrawLine(p, New Point(TextOffset, top), New Point(right, top)) - End Using - ElseIf e.Vertical Then - Dim b = e.Item.Bounds - - Using p As New Pen(SystemColors.ControlDarkDark) - e.Graphics.DrawLine(p, CInt(b.Width / 2), CInt(b.Height * 0.15), CInt(b.Width / 2), CInt(b.Height * 0.85)) - End Using - End If - End Sub - - Public Shared Function CreateRoundRectangle(r As Rectangle, radius As Integer) As GraphicsPath - Dim path As New GraphicsPath() - - Dim l = r.Left - Dim t = r.Top - Dim w = r.Width - Dim h = r.Height - Dim d = radius << 1 - - path.AddArc(l, t, d, d, 180, 90) - path.AddLine(l + radius, t, l + w - radius, t) - path.AddArc(l + w - d, t, d, d, 270, 90) - path.AddLine(l + w, t + radius, l + w, t + h - radius) - path.AddArc(l + w - d, t + h - d, d, d, 0, 90) - path.AddLine(l + w - radius, t + h, l + radius, t + h) - path.AddArc(l, t + h - d, d, d, 90, 90) - path.AddLine(l, t + h - radius, l, t + radius) - path.CloseFigure() - - Return path - End Function - - Shared Function IsFlat() As Boolean - If RenderMode = ToolStripRenderModeEx.Win10Default Then Return True - If RenderMode = ToolStripRenderModeEx.Win10Auto Then Return True - - If (RenderMode = ToolStripRenderModeEx.SystemDefault OrElse - RenderMode = ToolStripRenderModeEx.SystemAuto) AndAlso - OSVersion.Current >= OSVersion.Windows8 Then Return True - End Function - End Class -End Namespace diff --git a/vbnet/UI.vb b/vbnet/UI.vb deleted file mode 100644 index 3435b64..0000000 --- a/vbnet/UI.vb +++ /dev/null @@ -1,2108 +0,0 @@ -Imports System.Drawing.Text -Imports System.IO - -Namespace UI - Public Class ImageHelp - Private Shared Coll As PrivateFontCollection - Private Shared AwesomePath As String = Folder.Startup + "FontAwesome.ttf" - Private Shared SegoePath As String = Folder.Startup + "Segoe-MDL2-Assets.ttf" - Private Shared FontFilesExist As Boolean = File.Exists(AwesomePath) AndAlso File.Exists(SegoePath) - - Shared Async Function GetSymbolImageAsync(symbol As Symbol) As Task(Of Image) - Return Await Task.Run(Of Image)(Function() GetSymbolImage(symbol)) - End Function - - Shared Function GetSymbolImage(symbol As Symbol) As Image - If Not FontFilesExist Then Return Nothing - Dim legacy = OSVersion.Current < OSVersion.Windows10 - - If Coll Is Nothing Then - Coll = New PrivateFontCollection - Coll.AddFontFile(AwesomePath) - If legacy Then Coll.AddFontFile(SegoePath) - End If - - Dim family As FontFamily - - If CInt(symbol) > 61400 Then - If Coll.Families.Count > 0 Then family = Coll.Families(0) - Else - If legacy Then - If Coll.Families.Count > 1 Then family = Coll.Families(1) - Else - family = New FontFamily("Segoe MDL2 Assets") - End If - End If - - If family Is Nothing Then Return Nothing - Dim font As New Font(family, 12) - Dim fontHeight = font.Height - Dim bitmap As New Bitmap(CInt(fontHeight * 1.1F), CInt(fontHeight * 1.1F)) - Dim graphics = Drawing.Graphics.FromImage(bitmap) - 'graphics.Clear(Color.Orange) - graphics.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAlias - graphics.DrawString(Convert.ToChar(CInt(symbol)), font, Brushes.Black, -fontHeight * 0.1F, fontHeight * 0.07F) - graphics.Dispose() - font.Dispose() - - Return bitmap - End Function - End Class - - Public Enum Symbol - None = 0 - [Error] = &HE783 - [Like] = &HE8E1 - [Next] = &HE893 - [Stop] = &HE71A - Accept = &HE8FB - AcceptLegacy = &HE10B - Accident = &HE81F - AccidentSolid = &HEA8E - Accounts = &HE910 - AccountsLegacy = &HE168 - ActionCenter = &HE91C - ActionCenterAsterisk = &HEA21 - ActionCenterMirrored = &HED0D - ActionCenterNotification = &HE7E7 - ActionCenterNotificationMirrored = &HED0C - ActionCenterQuiet = &HEE79 - ActionCenterQuietNotification = &HEE7A - Add = &HE710 - AddFriend = &HE8FA - AddFriendLegacy = &HE1E2 - AddLegacy = &HE109 - AddRemoteDevice = &HE836 - AddSurfaceHub = &HECC4 - AddTo = &HECC8 - AdjustHologram = &HEBD2 - Admin = &HE7EF - AdminLegacy = &HE1A7 - Airplane = &HE709 - AirplaneSolid = &HEB4C - AlignCenter = &HE8E3 - AlignCenterLegacy = &HE1A1 - AlignLeft = &HE8E4 - AlignLeftLegacy = &HE1A2 - AlignRight = &HE8E2 - AlignRightLegacy = &HE1A0 - AllApps = &HE71D - AllAppsLegacy = &HE179 - AllAppsLegacyMirrored = &HE1EC - AllAppsMirrored = &HEA40 - Annotation = &HE924 - AppIconDefault = &HECAA - ArrowHTMLLegacy = &HED5 - ArrowHTMLLegacyMirrored = &HEAE - AspectRatio = &HE799 - Asterisk = &HEA38 - AsteriskBadge12 = &HEDAD - Attach = &HE723 - AttachCamera = &HE8A2 - AttachCameraLegacy = &HE12D - AttachLegacy = &HE16C - Audio = &HE8D6 - AudioLegacy = &HE189 - Back = &HE72B - BackBttnArrow20Legacy = &HEC4 - BackBttnArrow42Legacy = &HEA6 - BackBttnMirroredArrow20Legacy = &HEAD - BackBttnMirroredArrow42Legacy = &HEAB - BackgroundToggle = &HEF1F - BackLegacy = &HE112 - BackSpaceQWERTY = &HE750 - BackSpaceQWERTYLg = &HEB96 - BackSpaceQWERTYMd = &HE926 - BackSpaceQWERTYSm = &HE925 - BackToWindow = &HE73F - BackToWindowLegacy = &HE1D8 - Badge = &HEC1B - Bank = &HE825 - BarcodeScanner = &HEC5A - Battery0 = &HE850 - Battery1 = &HE851 - Battery10 = &HE83F - Battery2 = &HE852 - Battery3 = &HE853 - Battery4 = &HE854 - Battery5 = &HE855 - Battery6 = &HE856 - Battery7 = &HE857 - Battery8 = &HE858 - Battery9 = &HE859 - BatteryCharging0 = &HE85A - BatteryCharging1 = &HE85B - BatteryCharging10 = &HEA93 - BatteryCharging2 = &HE85C - BatteryCharging3 = &HE85D - BatteryCharging4 = &HE85E - BatteryCharging5 = &HE85F - BatteryCharging6 = &HE860 - BatteryCharging7 = &HE861 - BatteryCharging8 = &HE862 - BatteryCharging9 = &HE83E - BatterySaver0 = &HE863 - BatterySaver1 = &HE864 - BatterySaver10 = &HEA95 - BatterySaver2 = &HE865 - BatterySaver3 = &HE866 - BatterySaver4 = &HE867 - BatterySaver5 = &HE868 - BatterySaver6 = &HE869 - BatterySaver7 = &HE86A - BatterySaver8 = &HE86B - BatterySaver9 = &HEA94 - BatteryUnknown = &HE996 - Beta = &HEA24 - BidiLtr = &HE9AA - BidiRtl = &HE9AB - BlockContact = &HE8F8 - BlockContactLegacy = &HE1E0 - BlockedLegacy = &HE25B - Bluetooth = &HE702 - BodyCam = &HEC80 - Bold = &HE8DD - BoldFLegacy = &HE1B3 - BoldGLegacy = &HE1B1 - BoldKoreanLegacy = &HE1BD - BoldLegacy = &HE19B - BoldNLegacy = &HE1B7 - BoldRussionLegacy = &HE1B9 - Bookmarks = &HE8A4 - BookmarksLegacy = &HE12F - BookmarksLegacyMirrored = &HE1EE - BookmarksMirrored = &HEA41 - Brightness = &HE706 - Broom = &HEA99 - BrowsePhotos = &HE7C5 - BrowsePhotosLegacy = &HE155 - BrushSize = &HEDA8 - BuildingEnergy = &HEC0B - BulletedList = &HE8FD - BulletedListLegacy = &HE292 - BulletedListLegacyMirrored = &HE299 - BulletedListMirrored = &HEA42 - Bus = &HE806 - BusSolid = &HEB47 - Calculator = &HE8EF - CalculatorAddition = &HE948 - CalculatorBackspace = &HE94F - CalculatorDivide = &HE94A - CalculatorEqualTo = &HE94E - CalculatorLegacy = &HE1D0 - CalculatorMultiply = &HE947 - CalculatorNegate = &HE94D - CalculatorPercentage = &HE94C - CalculatorSquareroot = &HE94B - CalculatorSubtract = &HE949 - Calendar = &HE787 - CalendarDay = &HE8BF - CalendarDayLegacy = &HE161 - CalendarLegacy = &HE163 - CalendarLegacyMirrored = &HE1DC - CalendarMirrored = &HED28 - CalendarReply = &HE8F5 - CalendarReplyLegacy = &HE1DB - CalendarSolid = &HEA89 - CalendarWeek = &HE8C0 - CalendarWeekLegacy = &HE162 - CaligraphyPen = &HEDFB - CallForwarding = &HE7F2 - CallForwardingMirrored = &HEA97 - CallForwardInternational = &HE87A - CallForwardInternationalMirrored = &HEA43 - CallForwardRoaming = &HE87B - CallForwardRoamingMirrored = &HEA44 - Camera = &HE722 - CameraLegacy = &HE114 - Cancel = &HE711 - CancelLegacy = &HE10A - Caption = &HE8BA - CaptionLegacy = &HE15A - Car = &HE804 - CashDrawer = &HEC59 - CC = &HE7F0 - CCEuroLegacy = &HE18F - CCJapanLegacy = &HE18E - CCLegacy = &HE190 - CellPhone = &HE8EA - CellPhoneLegacy = &HE1C9 - Certificate = &HEB95 - Characters = &HE8C1 - CharactersLegacy = &HE164 - ChatBubbles = &HE8F2 - Checkbox = &HE739 - CheckboxComposite = &HE73A - CheckboxCompositeLegacy = &HEA2 - CheckboxCompositeReversed = &HE73D - CheckboxCompositeReversedLegacy = &HE5 - CheckboxFill = &HE73B - CheckboxFillLegacy = &HE2 - CheckboxFillZeroWidthLegacy = &HE9 - CheckboxIndeterminate = &HE73C - CheckboxIndeterminateLegacy = &HE4 - CheckboxLegacy = &HE3 - CheckMark = &HE73E - CheckMarkLegacy = &HE1 - CheckmarkListviewLegacy = &HE81 - CheckmarkMenuLegacy = &HEE7 - CheckMarkZeroWidthLegacy = &HE8 - ChevronDown = &HE70D - ChevronDown1Legacy = &HE99 - ChevronDown2Legacy = &HE9D - ChevronDown3Legacy = &HE15 - ChevronDown4Legacy = &HEA1 - ChevronDownMed = &HE972 - ChevronDownSmall = &HE96E - ChevronDownSmLegacy = &HE228 - ChevronFlipDownLegacy = &HEE5 - ChevronFlipLeftLegacy = &HEE2 - ChevronFlipRightLegacy = &HEE3 - ChevronFlipUpLegacy = &HEE4 - ChevronLeft = &HE76B - ChevronLeft1Legacy = &HE96 - ChevronLeft2Legacy = &HE9A - ChevronLeft3Legacy = &HE12 - ChevronLeft4Legacy = &HE9E - ChevronLeftMed = &HE973 - ChevronLeftSmall = &HE96F - ChevronLeftSmLegacy = &HE26C - ChevronRight = &HE76C - ChevronRight1Legacy = &HE97 - ChevronRight2Legacy = &HE9B - ChevronRight3Legacy = &HE13 - ChevronRight4Legacy = &HE9F - ChevronRightMed = &HE974 - ChevronRightSmall = &HE970 - ChevronRightSmLegacy = &HE26B - ChevronUp = &HE70E - ChevronUp1Legacy = &HE98 - ChevronUp2Legacy = &HE9C - ChevronUp3Legacy = &HE14 - ChevronUp4Legacy = &HEA0 - ChevronUpMed = &HE971 - ChevronUpSmall = &HE96D - ChineseBoPoMoFo = &HE989 - ChineseChangjie = &HE981 - ChinesePinyin = &HE98A - ChineseQuick = &HE984 - ChromeAnnotate = &HE931 - ChromeBack = &HE830 - ChromeBackMirrored = &HEA47 - ChromeBackToWindow = &HE92C - ChromeClose = &HE8BB - ChromeFullScreen = &HE92D - ChromeMaximize = &HE922 - ChromeMinimize = &HE921 - ChromeRestore = &HE923 - CircleFill = &HEA3B - CircleFillBadge12 = &HEDB0 - CircleRing = &HEA3A - CircleRingBadge12 = &HEDAF - CityNext = &HEC06 - CityNext2 = &HEC07 - Clear = &HE894 - ClearAllInk = &HED62 - ClearAllInkMirrored = &HEF19 - ClearLegacy = &HE106 - ClearSelection = &HE8E6 - ClearSelectionLegacy = &HE1C5 - ClearSelectionLegacyMirrored = &HE1F4 - ClearSelectionMirrored = &HEA48 - Click = &HE8B0 - ClockLegacy = &HE121 - ClosePane = &HE89F - ClosePaneLegacy = &HE126 - ClosePaneLegacyMirrored = &HE1BF - ClosePaneMirrored = &HEA49 - Cloud = &HE753 - CloudPrinter = &HEDA6 - Code = &HE943 - Color = &HE790 - ColorLegacy = &HE2B1 - CommaKey = &HE9AD - CommandPrompt = &HE756 - Comment = &HE90A - CommentInlineLegacy = &HE206 - CommentLegacy = &HE134 - Communications = &HE95A - CompanionApp = &HEC64 - CompanionDeviceFramework = &HED5D - Completed = &HE930 - CompletedSolid = &HEC61 - Component = &HE950 - Connect = &HE703 - ConnectApp = &HED5C - Construction = &HE822 - ConstructionCone = &HE98F - ConstructionSolid = &HEA8D - Contact = &HE77B - Contact2 = &HE8D4 - Contact2Legacy = &HE187 - Contact3Legacy = &HE2AF - ContactInfo = &HE779 - ContactInfoLegacy = &HE136 - ContactInfoMirrored = &HEA4A - ContactLegacy = &HE13D - ContactPresence = &HE8CF - ContactPresenceLegacy = &HE181 - ContactSolid = &HEA8C - Copy = &HE8C8 - CopyLegacy = &HE16F - Courthouse = &HEC08 - Crop = &HE7A8 - CropLegacy = &HE123 - Cut = &HE8C6 - CutLegacy = &HE16B - DashKey = &HE9AE - DataSense = &HE791 - DataSenseBar = &HE7A5 - DateTime = &HEC92 - DateTimeMirrored = &HEE93 - DecreaseIndentLegacy = &HE290 - DecreaseIndentLegacyMirrored = &HE297 - DefenderApp = &HE83D - Delete = &HE74D - DeleteLegacy = &HE107 - DeveloperTools = &HEC7A - DeviceDiscovery = &HEBDE - DeviceLaptopNoPic = &HE7F8 - DeviceLaptopPic = &HE7F7 - DeviceMonitorLeftPic = &HE7FA - DeviceMonitorNoPic = &HE7FB - DeviceMonitorRightPic = &HE7F9 - Devices = &HE772 - Devices2 = &HE975 - Devices3 = &HEA6C - Devices4 = &HEB66 - DevicesLegacy = &HE212 - DevUpdate = &HECC5 - Diagnostic = &HE9D9 - Dialpad = &HE75F - DialUp = &HE83C - Dictionary = &HE82D - DictionaryAdd = &HE82E - DictionaryCloud = &HEBC3 - DirectAccess = &HE83B - Directions = &HE8F0 - DirectionsLegacy = &HE1D1 - DisableUpdates = &HE8D8 - DisableUpdatesLegacy = &HE194 - DisconnectDisplay = &HEA14 - DisconnectDrive = &HE8CD - DisconnectDriveLegacy = &HE17A - Dislike = &HE8E0 - DislikeLegacy = &HE19E - DMC = &HE951 - Dock = &HE952 - DockBottom = &HE90E - DockBottomLegacy = &HE147 - DockLeft = &HE90C - DockLeftLegacy = &HE145 - DockLeftLegacyMirrored = &HE1AB - DockLeftMirrored = &HEA4C - DockRight = &HE90D - DockRightLegacy = &HE146 - DockRightLegacyMirrored = &HE1AC - DockRightMirrored = &HEA4B - Document = &HE8A5 - DocumentLegacy = &HE130 - Down = &HE74B - DownLegacy = &HE1FD - Download = &HE896 - DownloadLegacy = &HE118 - DownloadMap = &HE826 - DownShiftKey = &HE84A - Draw = &HEC87 - DrawSolid = &HEC88 - DrivingMode = &HE7EC - Drop = &HEB42 - DullSound = &HE911 - DullSoundKey = &HE9AF - EaseOfAccess = &HE776 - EaseOfAccessLegacy = &HE7F - Edit = &HE70F - EditLegacy = &HE104 - EditLegacyMirrored = &HE1C2 - EditMirrored = &HEB7E - Education = &HE7BE - Emoji = &HE899 - Emoji2 = &HE76E - Emoji2Legacy = &HE170 - EmojiLegacy = &HE11D - EmojiSwatch = &HED5B - EmojiTabCelebrationObjects = &HED55 - EmojiTabFavorites = &HED5A - EmojiTabFoodPlants = &HED56 - EmojiTabPeople = &HED53 - EmojiTabSmilesAnimals = &HED54 - EmojiTabSymbols = &HED58 - EmojiTabTextSmiles = &HED59 - EmojiTabTransitPlaces = &HED57 - EndPoint = &HE81B - EndPointSolid = &HEB4B - EraseTool = &HE75C - EraseToolFill = &HE82B - EraseToolFill2 = &HE82C - ErrorBadge = &HEA39 - ErrorBadge12 = &HEDAE - eSIM = &HED2A - eSIMBusy = &HED2D - eSIMLocked = &HED2C - eSIMNoProfile = &HED2B - Ethernet = &HE839 - EthernetError = &HEB55 - EthernetWarning = &HEB56 - ExpandTile = &HE976 - ExpandTileLegacy = &HE13F - ExpandTileLegacyMirrored = &HE176 - ExpandTileMirrored = &HEA4E - ExploreContent = &HECCD - Export = &HEDE1 - ExportMirrored = &HEDE2 - FastForward = &HEB9D - Favorite2Legacy = &HE249 - FavoriteInlineLegacy = &HE208 - FavoriteLegacy = &HE113 - FavoriteList = &HE728 - FavoriteStar = &HE734 - FavoriteStarFill = &HE735 - Feedback = &HED15 - FeedbackApp = &HE939 - Ferry = &HE7E3 - FerrySolid = &HEB48 - FileExplorer = &HEC50 - FileExplorerApp = &HEC51 - Filter = &HE71C - FilterLegacy = &HE16E - FindLegacy = &HE11A - FingerInking = &HED5F - Fingerprint = &HE928 - Flag = &HE7C1 - FlagLegacy = &HE129 - Flashlight = &HE754 - FlickDown = &HE935 - FlickLeft = &HE937 - FlickRight = &HE938 - FlickUp = &HE936 - Folder = &HE8B7 - FolderFill = &HE8D5 - FolderLegacy = &HE188 - Font = &HE8D2 - FontColor = &HE8D3 - FontColorKoreanLegacy = &HE1BE - FontColorLegacy = &HE186 - FontDecrease = &HE8E7 - FontDecreaseLegacy = &HE1C6 - FontIncrease = &HE8E8 - FontIncreaseLegacy = &HE1C7 - FontLegacy = &HE185 - FontSize = &HE8E9 - FontSizeLegacy = &HE1C8 - FontStyleKoreanLegacy = &HE1BA - Forward = &HE72A - ForwardLegacy = &HE111 - ForwardSm = &HE9AC - FourBars = &HE908 - FourBarsLegacy = &HE1E9 - Frigid = &HE9CA - FullAlpha = &HE97F - FullCircleMask = &HE91F - FullHiragana = &HE986 - FullKatakana = &HE987 - FullScreen = &HE740 - FullScreenLegacy = &HE1D9 - Game = &HE7FC - GameConsole = &HE967 - GlobalNavButton = &HE700 - Globe = &HE774 - GlobeLegacy = &HE12B - Go = &HE8AD - GoLegacy = &HE143 - GoLegacyMirrored = &HE1AA - GoMirrored = &HEA4F - GoToStart = &HE8FC - GoToStartLegacy = &HE1E4 - GotoToday = &HE8D1 - GotoTodayLegacy = &HE184 - GripperBarHorizontal = &HE76F - GripperBarVertical = &HE784 - GripperResize = &HE788 - GripperResizeMirrored = &HEA50 - GripperTool = &HE75E - Groceries = &HEC09 - GuestUser = &HEE57 - HalfAlpha = &HE97E - HalfDullSound = &HE9B0 - HalfKatakana = &HE988 - HalfStarLeft = &HE7C6 - HalfStarRight = &HE7C7 - Handwriting = &HE929 - HangUp = &HE778 - HangUpLegacy = &HE137 - HardDrive = &HEDA2 - Headphone = &HE7F6 - Headphone0 = &HED30 - Headphone1 = &HED31 - Headphone2 = &HED32 - Headphone3 = &HED33 - Headset = &HE95B - Health = &HE95E - Heart = &HEB51 - HeartBroken = &HEA92 - HeartBrokenLegacy = &HE7 - HeartBrokenZeroWidthLegacy = &HEC - HeartFill = &HEB52 - HeartFillLegacy = &HEA5 - HeartFillZeroWidthLegacy = &HEB - HeartLegacy = &HE6 - Help = &HE897 - HelpLegacy = &HE11B - HelpLegacyMirrored = &HE1F3 - HelpMirrored = &HEA51 - HideBcc = &HE8C5 - HideBccLegacy = &HE16A - Highlight = &HE7E6 - HighlightFill = &HE891 - HighlightFill2 = &HE82A - HighlightLegacy = &HE193 - History = &HE81C - Home = &HE80F - HomeGroup = &HEC26 - HomeLegacy = &HE10F - HomeSolid = &HEA8A - HorizontalTabKey = &HE7FD - IBeam = &HE933 - IBeamOutline = &HE934 - ImageExport = &HEE71 - Import = &HE8B5 - ImportAll = &HE8B6 - ImportAllLegacy = &HE151 - ImportAllLegacyMirrored = &HE1AE - ImportAllMirrored = &HEA53 - Important = &HE8C9 - ImportantBadge12 = &HEDB1 - ImportantLegacy = &HE171 - ImportLegacy = &HE150 - ImportLegacyMirrored = &HE1AD - ImportMirrored = &HEA52 - IncidentTriangle = &HE814 - IncreaseIndentLegacy = &HE291 - IncreaseIndentLegacyMirrored = &HE298 - Info = &HE946 - Info2 = &HEA1F - InkingCaret = &HED65 - InkingColorFill = &HED67 - InkingColorOutline = &HED66 - InkingTool = &HE76D - InkingToolFill = &HE88F - InkingToolFill2 = &HE829 - InPrivate = &HE727 - Input = &HE961 - InsiderHubApp = &HEC24 - InternetSharing = &HE704 - Italic = &HE8DB - ItalicCLegacy = &HE1B0 - ItalicILegacy = &HE1B6 - ItalicKLegacy = &HE1B4 - ItalicKoreanLegacy = &HE1BC - ItalicLegacy = &HE199 - ItalicRussianLegacy = &HE1EA - Japanese = &HE985 - JpnRomanji = &HE87C - JpnRomanjiLock = &HE87D - JpnRomanjiShift = &HE87E - JpnRomanjiShiftLock = &HE87F - Key12On = &HE980 - KeyboardBrightness = &HED39 - KeyboardClassic = &HE765 - KeyboardDismiss = &HE92F - KeyboardFull = &HEC31 - KeyboardLeftHanded = &HE763 - KeyBoardLegacy = &HE144 - KeyboardLowerBrightness = &HED3A - KeyboardOneHanded = &HED4C - KeyboardRightHanded = &HE764 - KeyboardShortcut = &HEDA7 - KeyboardSplit = &HE766 - KeyboardSplitLegacy = &HE8F - KeyboardStandard = &HE92E - KeyboardStandardLegacy = &HE87 - Korean = &HE97D - Label = &HE932 - LangJPN = &HE7DE - LanguageChs = &HE88D - LanguageCht = &HE88C - LanguageJpn = &HEC45 - LanguageKor = &HE88B - LaptopSelected = &HEC76 - LayoutLegacy = &HE2AE - Leaf = &HE8BE - LeaveChat = &HE89B - LeaveChatLegacy = &HE11F - LeaveChatMirrored = &HEA54 - LEDLight = &HE781 - LeftArrowKeyTime0 = &HEC52 - LeftDoubleQuote = &HE9B2 - LeftQuote = &HE848 - LengthLegacy = &HE2AD - Library = &HE8F1 - LibraryLegacy = &HE1D3 - Light = &HE793 - Lightbulb = &HEA80 - LightningBolt = &HE945 - LikeDislike = &HE8DF - LikeDislikeLegacy = &HE19D - LikeInlineLegacy = &HE209 - LikeLegacy = &HE19F - Link = &HE71B - LinkLegacy = &HE167 - List = &HEA37 - ListLegacy = &HE14C - ListLegacyMirrored = &HE175 - ListMirrored = &HEA55 - Location = &HE81D - LocationLegacy = &HE1D2 - Lock = &HE72E - LockLegacy = &HE1F6 - LockscreenDesktop = &HEE3F - LockScreenGlance = &HEE65 - LowerBrightness = &HEC8A - MagStripeReader = &HEC5C - Mail = &HE715 - MailBadge12 = &HEDB3 - MailFill = &HE8A8 - MailFillLegacy = &HE135 - MailForward = &HE89C - MailForwardLegacy = &HE120 - MailForwardLegacyMirrored = &HE1A8 - MailForwardMirrored = &HEA56 - MailLegacy = &HE119 - MailMessageLegacy = &HE20B - MailReply = &HE8CA - MailReplyAll = &HE8C2 - MailReplyAllLegacy = &HE165 - MailReplyAllLegacyMirrored = &HE1F2 - MailReplyAllMirrored = &HEA58 - MailReplyLegacy = &HE172 - MailReplyLegacyMirrored = &HE1AF - MailReplyMirrored = &HEA57 - Manage = &HE912 - ManageLegacy = &HE178 - MapCompassBottom = &HE813 - MapCompassTop = &HE812 - MapDirections = &HE816 - MapDrive = &HE8CE - MapDriveLegacy = &HE17B - MapLayers = &HE81E - MapLegacy = &HE1C4 - MapPin = &HE707 - MapPin2 = &HE7B7 - MapPinLegacy = &HE139 - Marker = &HED64 - Marquee = &HEF20 - Media = &HEA69 - MediaStorageTower = &HE965 - Megaphone = &HE789 - Memo = &HE77C - MemoLegacy = &HE1D5 - Message = &HE8BD - MessageLegacy = &HE15F - MicClipping = &HEC72 - MicError = &HEC56 - MicOff = &HEC54 - MicOn = &HEC71 - Microphone = &HE720 - MicrophoneLegacy = &HE1D6 - MicSleep = &HEC55 - MiracastLogoLarge = &HEC16 - MiracastLogoSmall = &HEC15 - MobActionCenter = &HEC42 - MobAirplane = &HEC40 - MobBattery0 = &HEBA0 - MobBattery1 = &HEBA1 - MobBattery10 = &HEBAA - MobBattery2 = &HEBA2 - MobBattery3 = &HEBA3 - MobBattery4 = &HEBA4 - MobBattery5 = &HEBA5 - MobBattery6 = &HEBA6 - MobBattery7 = &HEBA7 - MobBattery8 = &HEBA8 - MobBattery9 = &HEBA9 - MobBatteryCharging0 = &HEBAB - MobBatteryCharging1 = &HEBAC - MobBatteryCharging10 = &HEBB5 - MobBatteryCharging2 = &HEBAD - MobBatteryCharging3 = &HEBAE - MobBatteryCharging4 = &HEBAF - MobBatteryCharging5 = &HEBB0 - MobBatteryCharging6 = &HEBB1 - MobBatteryCharging7 = &HEBB2 - MobBatteryCharging8 = &HEBB3 - MobBatteryCharging9 = &HEBB4 - MobBatterySaver0 = &HEBB6 - MobBatterySaver1 = &HEBB7 - MobBatterySaver10 = &HEBC0 - MobBatterySaver2 = &HEBB8 - MobBatterySaver3 = &HEBB9 - MobBatterySaver4 = &HEBBA - MobBatterySaver5 = &HEBBB - MobBatterySaver6 = &HEBBC - MobBatterySaver7 = &HEBBD - MobBatterySaver8 = &HEBBE - MobBatterySaver9 = &HEBBF - MobBatteryUnknown = &HEC02 - MobBluetooth = &HEC41 - MobCallForwarding = &HEC7E - MobCallForwardingMirrored = &HEC7F - MobDrivingMode = &HEC47 - MobileContactLegacy = &HE25A - MobileLocked = &HEC20 - MobileSelected = &HEC75 - MobileTablet = &HE8CC - MobLocation = &HEC43 - MobQuietHours = &HEC46 - MobSignal1 = &HEC37 - MobSignal2 = &HEC38 - MobSignal3 = &HEC39 - MobSignal4 = &HEC3A - MobSignal5 = &HEC3B - MobWifi1 = &HEC3C - MobWifi2 = &HEC3D - MobWifi3 = &HEC3E - MobWifi4 = &HEC3F - MobWifiHotspot = &HEC44 - More = &HE712 - MoreLegacy = &HE10C - Mouse = &HE962 - MoveToFolder = &HE8DE - MoveToFolderLegacy = &HE19C - Movies = &HE8B2 - MultimediaDMP = &HED47 - MultimediaDMS = &HE953 - MultimediaDVR = &HE954 - MultimediaPMP = &HE955 - MultiSelect = &HE762 - MultiSelectLegacy = &HE133 - MultiSelectLegacyMirrored = &HE1EF - MultiSelectMirrored = &HEA98 - Multitask = &HE7C4 - Multitask16 = &HEE40 - MultitaskExpanded = &HEB91 - MusicAlbum = &HE93C - MusicInfo = &HE90B - MusicInfoLegacy = &HE142 - MusicNote = &HEC4F - Mute = &HE74F - MuteLegacy = &HE198 - MyNetwork = &HEC27 - Narrator = &HED4D - NarratorForward = &HEDA9 - NarratorForwardMirrored = &HEDAA - Network = &HE968 - NetworkAdapter = &HEDA3 - NetworkPrinter = &HEDA5 - NetworkTower = &HEC05 - NewFolder = &HE8F4 - NewFolderLegacy = &HE1DA - NewWindow = &HE78B - NewWindowLegacy = &HE17C - NextLegacy = &HE101 - NUIFace = &HEB68 - NUIFPContinueSlideAction = &HEB85 - NUIFPContinueSlideHand = &HEB84 - NUIFPPressAction = &HEB8B - NUIFPPressHand = &HEB8A - NUIFPPressRepeatAction = &HEB8D - NUIFPPressRepeatHand = &HEB8C - NUIFPRollLeftAction = &HEB89 - NUIFPRollLeftHand = &HEB88 - NUIFPRollRightHand = &HEB86 - NUIFPRollRightHandAction = &HEB87 - NUIFPStartSlideAction = &HEB83 - NUIFPStartSlideHand = &HEB82 - NUIIris = &HEB67 - OEM = &HE74C - OneBar = &HE905 - OneBarLegacy = &HE1E6 - OpenFile = &HE8E5 - OpenFileLegacy = &HE1A5 - OpenInNewWindow = &HE8A7 - OpenInNewWindowLegacy = &HE2B4 - OpenLocal = &HE8DA - OpenLocalLegacy = &HE197 - OpenPane = &HE8A0 - OpenPaneLegacy = &HE127 - OpenPaneLegacyMirrored = &HE1C0 - OpenPaneMirrored = &HEA5B - OpenWith = &HE7AC - OpenWithLegacy = &HE17D - OpenWithLegacyMirrored = &HE1ED - OpenWithMirrored = &HEA5C - Orientation = &HE8B4 - OrientationLegacy = &HE14F - OtherUser = &HE7EE - OtherUserLegacy = &HE1A6 - OutlineStarLegacy = &HE1CE - Package = &HE7B8 - Page = &HE7C3 - PageFillLegacy = &HE132 - PageLeft = &HE760 - PageLegacy = &HE160 - PageRight = &HE761 - PageSolid = &HE729 - PanMode = &HECE9 - ParkingLocation = &HE811 - ParkingLocationMirrored = &HEA5E - ParkingLocationSolid = &HEA8B - PartyLeader = &HECA7 - PasswordKeyHide = &HE9A9 - PasswordKeyShow = &HE9A8 - Paste = &HE77F - PasteLegacy = &HE16D - Pause = &HE769 - PauseBadge12 = &HEDB4 - PauseLegacy = &HE103 - PC1 = &HE977 - PC1Legacy = &HE211 - Pencil = &HED63 - PenPalette = &HEE56 - PenPaletteMirrored = &HEF16 - PenWorkspace = &HEDC6 - PenWorkspaceMirrored = &HEF15 - People = &HE716 - PeopleLegacy = &HE125 - PeriodKey = &HE843 - Permissions = &HE8D7 - PermissionsLegacy = &HE192 - PersonalFolder = &HEC25 - Personalize = &HE771 - Phone = &HE717 - PhoneBook = &HE780 - PhoneBookLegacy = &HE1D4 - PhoneLegacy = &HE13A - Photo = &HE91B - Photo2 = &HEB9F - Picture = &HE8B9 - PictureLegacy = &HE158 - PieSingle = &HEB05 - Pin = &HE718 - PinFill = &HE841 - PinLegacy = &HE141 - Pinned = &HE840 - PinnedFill = &HE842 - PlaceFolderLegacy = &HE18A - PLAP = &HEC19 - Play = &HE768 - Play36 = &HEE4A - PlaybackRate1x = &HEC57 - PlaybackRateOther = &HEC58 - PlayBadge12 = &HEDB5 - PlayLegacy = &HE102 - PlayOnLegacy = &HE29B - PointErase = &HED61 - PointEraseMirrored = &HEF18 - PoliceCar = &HEC81 - PostUpdate = &HE8F3 - PostUpdateLegacy = &HE1D7 - PowerButton = &HE7E8 - PresenceChicklet = &HE978 - PresenceChickletLegacy = &HE25E - PresenceChickletVideo = &HE979 - PresenceChickletVideoLegacy = &HE25D - Preview = &HE8FF - PreviewLegacy = &HE295 - PreviewLink = &HE8A1 - PreviewLinkLegacy = &HE12A - Previous = &HE892 - PreviousLegacy = &HE100 - Print = &HE749 - Printer3D = &HE914 - Printer3DLegacy = &HE2F7 - PrintfaxPrinterFile = &HE956 - PrintLegacy = &HE2F6 - Priority = &HE8D0 - PriorityLegacy = &HE182 - Process = &HE9F3 - Project = &HEBC6 - Projector = &HE95D - ProtectedDocument = &HE8A6 - ProtectedDocumentLegacy = &HE131 - ProvisioningPackage = &HE835 - PuncKey = &HE844 - PuncKey0 = &HE84C - PuncKey1 = &HE9B4 - PuncKey2 = &HE9B5 - PuncKey3 = &HE9B6 - PuncKey4 = &HE9B7 - PuncKey5 = &HE9B8 - PuncKey6 = &HE9B9 - PuncKey7 = &HE9BB - PuncKey8 = &HE9BC - PuncKey9 = &HE9BA - PuncKeyLeftBottom = &HE84D - PuncKeyRightBottom = &HE9B3 - Puzzle = &HEA86 - QuickNote = &HE70B - QuietHours = &HE708 - QWERTYOff = &HE983 - QWERTYOn = &HE982 - RadioBtnOff = &HECCA - RadioBtnOn = &HECCB - RadioBullet = &HE915 - RadioBullet2 = &HECCC - RatingStarFillLegacy = &HEB4 - RatingStarFillReducedPaddingHTMLLegacy = &HE82 - RatingStarFillSmallLegacy = &HEB5 - RatingStarFillZeroWidthLegacy = &HEA - RatingStarLegacy = &HE224 - Read = &HE8C3 - ReadingList = &HE7BC - ReadLegacy = &HE166 - ReceiptPrinter = &HEC5B - Recent = &HE823 - Record = &HE7C8 - RecordLegacy = &HE1F5 - Redo = &HE7A6 - RedoLegacy = &HE10D - ReduceTileLegacy = &HE140 - ReduceTileLegacyMirrored = &HE177 - Refresh = &HE72C - RefreshLegacy = &HE149 - RememberedDevice = &HE70C - Reminder = &HEB50 - ReminderFill = &HEB4F - Remote = &HE8AF - RemoteLegacy = &HE148 - Remove = &HE738 - RemoveFrom = &HECC9 - RemoveLegacy = &HE108 - Rename = &HE8AC - RenameLegacy = &HE13E - Repair = &HE90F - RepairLegacy = &HE15E - RepeatAll = &HE8EE - RepeatAllLegacy = &HE1CD - RepeatOne = &HE8ED - RepeatOneLegacy = &HE1CC - Reply = &HE97A - ReplyLegacy = &HE248 - ReplyMirrored = &HEE35 - ReportHacked = &HE730 - ReportHackedLegacy = &HE1DE - ResetDevice = &HED10 - ResetDrive = &HEBC4 - Reshare = &HE8EB - ReshareLegacy = &HE1CA - ResizeMouseLarge = &HE747 - ResizeMouseMedium = &HE744 - ResizeMouseMediumMirrored = &HEA5F - ResizeMouseSmall = &HE743 - ResizeMouseSmallMirrored = &HEA60 - ResizeMouseTall = &HE746 - ResizeMouseTallMirrored = &HEA61 - ResizeMouseWide = &HE745 - ResizeTouchLarger = &HE741 - ResizeTouchNarrower = &HE7EA - ResizeTouchNarrowerMirrored = &HEA62 - ResizeTouchShorter = &HE7EB - ResizeTouchSmaller = &HE742 - ResolutionLegacy = &HE2AC - ReturnKey = &HE751 - ReturnKeyLg = &HEB97 - ReturnKeySm = &HE966 - ReturnToWindow = &HE944 - ReturnToWindowLegacy = &HE2B3 - RevealPasswordLegacy = &HE52 - RevToggleKey = &HE845 - Rewind = &HEB9E - RightArrowKeyTime0 = &HEBE7 - RightArrowKeyTime1 = &HE846 - RightArrowKeyTime2 = &HE847 - RightArrowKeyTime3 = &HE84E - RightArrowKeyTime4 = &HE84F - RightDoubleQuote = &HE9B1 - RightQuote = &HE849 - Ringer = &HEA8F - RingerBadge12 = &HEDAC - RingerSilent = &HE7ED - RoamingDomestic = &HE879 - RoamingInternational = &HE878 - Robot = &HE99A - Rotate = &HE7AD - RotateCamera = &HE89E - RotateCameraLegacy = &HE124 - RotateLegacy = &HE14A - RotateMapLeft = &HE80D - RotateMapRight = &HE80C - RotationLock = &HE755 - Ruler = &HED5E - Save = &HE74E - SaveAs = &HE792 - SaveAsLegacy = &HE28F - SaveCopy = &HEA35 - SaveLegacy = &HE105 - SaveLocal = &HE78C - SaveLocalLegacy = &HE159 - Scan = &HE8FE - ScanLegacy = &HE294 - ScrollChevronDownBoldLegacy = &HE19 - ScrollChevronDownLegacy = &HE11 - ScrollChevronLeftBoldLegacy = &HE16 - ScrollChevronLeftLegacy = &HEE - ScrollChevronRightBoldLegacy = &HE17 - ScrollChevronRightLegacy = &HEF - ScrollChevronUpBoldLegacy = &HE18 - ScrollChevronUpLegacy = &HE10 - ScrollMode = &HECE7 - ScrollUpDown = &HEC8F - SDCard = &HE7F1 - Search = &HE721 - SearchAndApps = &HE773 - SearchboxLegacy = &HE94 - SelectAll = &HE8B3 - SelectAllLegacy = &HE14E - SemanticZoomLegacy = &HEB8 - Send = &HE724 - SendFill = &HE725 - SendFillMirrored = &HEA64 - SendLegacy = &HE122 - SendMirrored = &HEA63 - Sensor = &HE957 - SetlockScreen = &HE7B5 - SetlockScreenLegacy = &HE18C - SetTile = &HE97B - SetTileLegacy = &HE18D - Settings = &HE713 - SettingsBattery = &HEE63 - SettingsDisplaySound = &HE7F3 - SettingsLegacy = &HE115 - Share = &HE72D - ShareBroadband = &HE83A - Shop = &HE719 - ShopLegacy = &HE14D - ShoppingCart = &HE7BF - ShowAllFiles1Legacy = &HE153 - ShowAllFiles3Legacy = &HE152 - ShowAllFilesLegacy = &HE154 - ShowBcc = &HE8C4 - ShowBccLegacy = &HE169 - ShowResults = &HE8BC - ShowResultsLegacy = &HE15C - ShowResultsLegacyMirrored = &HE1F1 - ShowResultsMirrored = &HEA65 - Shuffle = &HE8B1 - ShuffleLegacy = &HE14B - SignalBars1 = &HE86C - SignalBars2 = &HE86D - SignalBars3 = &HE86E - SignalBars4 = &HE86F - SignalBars5 = &HE870 - SignalError = &HED2E - SignalNotConnected = &HE871 - SignalRoaming = &HEC1E - SIMLock = &HE875 - SIMMissing = &HE876 - SIPMove = &HE759 - SIPRedock = &HE75B - SIPUndock = &HE75A - SizeLegacy = &HE2B2 - SkipBack10 = &HED3C - SkipForward30 = &HED3D - SliderThumb = &HEC13 - Slideshow = &HE786 - SlideshowLegacy = &HE173 - Smartcard = &HE963 - SmartcardVirtual = &HE964 - SolidStarLegacy = &HE1CF - Sort = &HE8CB - SortLegacy = &HE174 - Speakers = &HE7F5 - SpeedHigh = &HEC4A - SpeedMedium = &HEC49 - SpeedOff = &HEC48 - StartPoint = &HE819 - StartPointSolid = &HEB49 - StatusCircle = &HEA81 - StatusCircleLeft = &HEBFD - StatusConnecting1 = &HEB57 - StatusConnecting2 = &HEB58 - StatusDataTransfer = &HE880 - StatusDataTransferVPN = &HE881 - StatusDualSIM1 = &HE884 - StatusDualSIM1VPN = &HE885 - StatusDualSIM2 = &HE882 - StatusDualSIM2VPN = &HE883 - StatusError = &HEA83 - StatusErrorFull = &HEB90 - StatusErrorLeft = &HEBFF - StatusSGLTE = &HE886 - StatusSGLTECell = &HE887 - StatusSGLTEDataVPN = &HE888 - StatusTriangle = &HEA82 - StatusTriangleLeft = &HEBFE - StatusUnsecure = &HEB59 - StatusVPN = &HE889 - StatusWarning = &HEA84 - StatusWarningLeft = &HEC00 - StockDown = &HEB0F - StockUp = &HEB11 - StopLegacy = &HE15B - StopPoint = &HE81A - StopPointSolid = &HEB4A - StopSlideshowLegacy = &HE191 - Stopwatch = &HE916 - StorageNetworkWireless = &HE969 - StorageOptical = &HE958 - StorageTape = &HE96A - Streaming = &HE93E - StreamingEnterprise = &HED2F - Street = &HE913 - StreetLegacy = &HE1C3 - StreetsideSplitExpand = &HE803 - StreetsideSplitMinimize = &HE802 - StrokeErase = &HED60 - StrokeEraseMirrored = &HEF17 - Subtitles = &HED1E - SubtitlesAudio = &HED1F - SurfaceHub = &HE8AE - Sustainable = &HEC0A - Swipe = &HE927 - SwipeRevealArt = &HEC6D - Switch = &HE8AB - SwitchApps = &HE8F9 - SwitchAppsLegacy = &HE1E1 - SwitchLegacy = &HE13C - SwitchUser = &HE748 - Sync = &HE895 - SyncBadge12 = &HEDAB - SyncError = &HEA6A - SyncFolder = &HE8F7 - SyncFolderLegacy = &HE1DF - SyncLegacy = &HE117 - System = &HE770 - Tablet = &HE70A - TabletMode = &HEBFC - TabletSelected = &HEC74 - Tag = &HE8EC - TagLegacy = &HE1CB - TapAndSend = &HE9A1 - TaskbarPhone = &HEE64 - ThisPC = &HEC4E - ThoughtBubble = &HEA91 - ThreeBars = &HE907 - ThreeBarsLegacy = &HE1E8 - Tiles = &HECA5 - TiltDown = &HE80A - TiltUp = &HE809 - TimeLanguage = &HE775 - ToggleBorder = &HEC12 - ToggleFilled = &HEC11 - ToggleThumb = &HEC14 - ToolTip = &HE82F - Touch = &HE815 - TouchPointer = &HE7C9 - TouchPointerLegacy = &HE1E3 - Touchscreen = &HEDA4 - Trackers = &HEADF - TrackersMirrored = &HEE92 - Train = &HE7C0 - TrainSolid = &HEB4D - TreeFolderFolder = &HED41 - TreeFolderFolderFill = &HED42 - TreeFolderFolderOpen = &HED43 - TreeFolderFolderOpenFill = &HED44 - Trim = &HE78A - TrimLegacy = &HE12C - TVMonitor = &HE7F4 - TVMonitorSelected = &HEC77 - TwoBars = &HE906 - TwoBarsLegacy = &HE1E7 - TwoPage = &HE89A - TwoPageLegacy = &HE11E - Type = &HE97C - TypeLegacy = &HE2B0 - TypingIndicatorLegacy = &HE25C - Underline = &HE8DC - UnderlineLegacy = &HE19A - UnderlineLKoreanLegacy = &HE1BB - UnderlineRussianLegacy = &HE1B8 - UnderlineSLegacy = &HE1B2 - UnderlineULegacy = &HE1B5 - UnderscoreSpace = &HE75D - Undo = &HE7A7 - UndoLegacy = &HE10E - Unfavorite = &HE8D9 - Unfavorite2Legacy = &HE24A - UnfavoriteLegacy = &HE195 - Unit = &HECC6 - Unlock = &HE785 - UnlockLegacy = &HE1F7 - Unpin = &HE77A - UnpinLegacy = &HE196 - UnsyncFolder = &HE8F6 - UnsyncFolderLegacy = &HE1DD - Up = &HE74A - UpArrowShiftKey = &HE752 - UpdateRestore = &HE777 - UpLegacy = &HE110 - Upload = &HE898 - UploadLegacy = &HE11C - UploadSkyDriveLegacy = &HE183 - UpShiftKey = &HE84B - USB = &HE88E - USBSafeConnect = &HECF3 - Vibrate = &HE877 - Video = &HE714 - VideoChat = &HE8AA - VideoChatLegacy = &HE13B - VideoInlineLegacy = &HE20A - VideoLegacy = &HE116 - View = &HE890 - ViewAll = &HE8A9 - ViewAllLegacy = &HE138 - ViewLegacy = &HE18B - Volume = &HE767 - Volume0 = &HE992 - Volume1 = &HE993 - Volume2 = &HE994 - Volume3 = &HE995 - VolumeBars = &HEBC5 - VolumeLegacy = &HE15D - VPN = &HE705 - Walk = &HE805 - WalkSolid = &HE726 - Warning = &HE7BA - Webcam = &HE8B8 - Webcam2 = &HE960 - WebcamLegacy = &HE156 - Wheel = &HEE94 - Wifi = &HE701 - Wifi1 = &HE872 - Wifi2 = &HE873 - Wifi3 = &HE874 - WifiAttentionOverlay = &HE998 - WifiCall0 = &HEBD5 - WifiCall1 = &HEBD6 - WifiCall2 = &HEBD7 - WifiCall3 = &HEBD8 - WifiCall4 = &HEBD9 - WifiCallBars = &HEBD4 - WifiError0 = &HEB5A - WifiError1 = &HEB5B - WifiError2 = &HEB5C - WifiError3 = &HEB5D - WifiError4 = &HEB5E - WifiEthernet = &HEE77 - WifiHotspot = &HE88A - WifiWarning0 = &HEB5F - WifiWarning1 = &HEB60 - WifiWarning2 = &HEB61 - WifiWarning3 = &HEB62 - WifiWarning4 = &HEB63 - WindDirection = &HEBE6 - WiredUSB = &HECF0 - WirelessUSB = &HECF1 - Work = &HE821 - WorkSolid = &HEB4E - World = &HE909 - WorldLegacy = &HE128 - XboxOneConsole = &HE990 - ZeroBars = &HE904 - ZeroBarsLegacy = &HE1E5 - Zoom = &HE71E - ZoomIn = &HE8A3 - ZoomInLegacy = &HE12E - ZoomLegacy = &HE1A3 - ZoomMode = &HECE8 - ZoomOut = &HE71F - ZoomOutLegacy = &HE1A4 - fa_500px = &HF26E - fa_address_book = &HF2B9 - fa_address_book_o = &HF2BA - fa_address_card = &HF2BB - fa_address_card_o = &HF2BC - fa_adjust = &HF042 - fa_adn = &HF170 - fa_align_center = &HF037 - fa_align_justify = &HF039 - fa_align_left = &HF036 - fa_align_right = &HF038 - fa_amazon = &HF270 - fa_ambulance = &HF0F9 - fa_american_sign_language_interpreting = &HF2A3 - fa_anchor = &HF13D - fa_android = &HF17B - fa_angellist = &HF209 - fa_angle_double_down = &HF103 - fa_angle_double_left = &HF100 - fa_angle_double_right = &HF101 - fa_angle_double_up = &HF102 - fa_angle_down = &HF107 - fa_angle_left = &HF104 - fa_angle_right = &HF105 - fa_angle_up = &HF106 - fa_apple = &HF179 - fa_archive = &HF187 - fa_area_chart = &HF1FE - fa_arrow_circle_down = &HF0AB - fa_arrow_circle_left = &HF0A8 - fa_arrow_circle_o_down = &HF01A - fa_arrow_circle_o_left = &HF190 - fa_arrow_circle_o_right = &HF18E - fa_arrow_circle_o_up = &HF01B - fa_arrow_circle_right = &HF0A9 - fa_arrow_circle_up = &HF0AA - fa_arrow_down = &HF063 - fa_arrow_left = &HF060 - fa_arrow_right = &HF061 - fa_arrow_up = &HF062 - fa_arrows = &HF047 - fa_arrows_alt = &HF0B2 - fa_arrows_h = &HF07E - fa_arrows_v = &HF07D - fa_asl_interpreting = &HF2A3 - fa_assistive_listening_systems = &HF2A2 - fa_asterisk = &HF069 - fa_at = &HF1FA - fa_audio_description = &HF29E - fa_automobile = &HF1B9 - fa_backward = &HF04A - fa_balance_scale = &HF24E - fa_ban = &HF05E - fa_bandcamp = &HF2D5 - fa_bank = &HF19C - fa_bar_chart = &HF080 - fa_bar_chart_o = &HF080 - fa_barcode = &HF02A - fa_bars = &HF0C9 - fa_bath = &HF2CD - fa_bathtub = &HF2CD - fa_battery = &HF240 - fa_battery_0 = &HF244 - fa_battery_1 = &HF243 - fa_battery_2 = &HF242 - fa_battery_3 = &HF241 - fa_battery_4 = &HF240 - fa_battery_empty = &HF244 - fa_battery_full = &HF240 - fa_battery_half = &HF242 - fa_battery_quarter = &HF243 - fa_battery_three_quarters = &HF241 - fa_bed = &HF236 - fa_beer = &HF0FC - fa_behance = &HF1B4 - fa_behance_square = &HF1B5 - fa_bell = &HF0F3 - fa_bell_o = &HF0A2 - fa_bell_slash = &HF1F6 - fa_bell_slash_o = &HF1F7 - fa_bicycle = &HF206 - fa_binoculars = &HF1E5 - fa_birthday_cake = &HF1FD - fa_bitbucket = &HF171 - fa_bitbucket_square = &HF172 - fa_bitcoin = &HF15A - fa_black_tie = &HF27E - fa_blind = &HF29D - fa_bluetooth = &HF293 - fa_bluetooth_b = &HF294 - fa_bold = &HF032 - fa_bolt = &HF0E7 - fa_bomb = &HF1E2 - fa_book = &HF02D - fa_bookmark = &HF02E - fa_bookmark_o = &HF097 - fa_braille = &HF2A1 - fa_briefcase = &HF0B1 - fa_btc = &HF15A - fa_bug = &HF188 - fa_building = &HF1AD - fa_building_o = &HF0F7 - fa_bullhorn = &HF0A1 - fa_bullseye = &HF140 - fa_bus = &HF207 - fa_buysellads = &HF20D - fa_cab = &HF1BA - fa_calculator = &HF1EC - fa_calendar = &HF073 - fa_calendar_check_o = &HF274 - fa_calendar_minus_o = &HF272 - fa_calendar_o = &HF133 - fa_calendar_plus_o = &HF271 - fa_calendar_times_o = &HF273 - fa_camera = &HF030 - fa_camera_retro = &HF083 - fa_car = &HF1B9 - fa_caret_down = &HF0D7 - fa_caret_left = &HF0D9 - fa_caret_right = &HF0DA - fa_caret_square_o_down = &HF150 - fa_caret_square_o_left = &HF191 - fa_caret_square_o_right = &HF152 - fa_caret_square_o_up = &HF151 - fa_caret_up = &HF0D8 - fa_cart_arrow_down = &HF218 - fa_cart_plus = &HF217 - fa_cc = &HF20A - fa_cc_amex = &HF1F3 - fa_cc_diners_club = &HF24C - fa_cc_discover = &HF1F2 - fa_cc_jcb = &HF24B - fa_cc_mastercard = &HF1F1 - fa_cc_paypal = &HF1F4 - fa_cc_stripe = &HF1F5 - fa_cc_visa = &HF1F0 - fa_certificate = &HF0A3 - fa_chain = &HF0C1 - fa_chain_broken = &HF127 - fa_check = &HF00C - fa_check_circle = &HF058 - fa_check_circle_o = &HF05D - fa_check_square = &HF14A - fa_check_square_o = &HF046 - fa_chevron_circle_down = &HF13A - fa_chevron_circle_left = &HF137 - fa_chevron_circle_right = &HF138 - fa_chevron_circle_up = &HF139 - fa_chevron_down = &HF078 - fa_chevron_left = &HF053 - fa_chevron_right = &HF054 - fa_chevron_up = &HF077 - fa_child = &HF1AE - fa_chrome = &HF268 - fa_circle = &HF111 - fa_circle_o = &HF10C - fa_circle_o_notch = &HF1CE - fa_circle_thin = &HF1DB - fa_clipboard = &HF0EA - fa_clock_o = &HF017 - fa_clone = &HF24D - fa_close = &HF00D - fa_cloud = &HF0C2 - fa_cloud_download = &HF0ED - fa_cloud_upload = &HF0EE - fa_cny = &HF157 - fa_code = &HF121 - fa_code_fork = &HF126 - fa_codepen = &HF1CB - fa_codiepie = &HF284 - fa_coffee = &HF0F4 - fa_cog = &HF013 - fa_cogs = &HF085 - fa_columns = &HF0DB - fa_comment = &HF075 - fa_comment_o = &HF0E5 - fa_commenting = &HF27A - fa_commenting_o = &HF27B - fa_comments = &HF086 - fa_comments_o = &HF0E6 - fa_compass = &HF14E - fa_compress = &HF066 - fa_connectdevelop = &HF20E - fa_contao = &HF26D - fa_copy = &HF0C5 - fa_copyright = &HF1F9 - fa_creative_commons = &HF25E - fa_credit_card = &HF09D - fa_credit_card_alt = &HF283 - fa_crop = &HF125 - fa_crosshairs = &HF05B - fa_css3 = &HF13C - fa_cube = &HF1B2 - fa_cubes = &HF1B3 - fa_cut = &HF0C4 - fa_cutlery = &HF0F5 - fa_dashboard = &HF0E4 - fa_dashcube = &HF210 - fa_database = &HF1C0 - fa_deaf = &HF2A4 - fa_deafness = &HF2A4 - fa_dedent = &HF03B - fa_delicious = &HF1A5 - fa_desktop = &HF108 - fa_deviantart = &HF1BD - fa_diamond = &HF219 - fa_digg = &HF1A6 - fa_dollar = &HF155 - fa_dot_circle_o = &HF192 - fa_download = &HF019 - fa_dribbble = &HF17D - fa_drivers_license = &HF2C2 - fa_drivers_license_o = &HF2C3 - fa_dropbox = &HF16B - fa_drupal = &HF1A9 - fa_edge = &HF282 - fa_edit = &HF044 - fa_eercast = &HF2DA - fa_eject = &HF052 - fa_ellipsis_h = &HF141 - fa_ellipsis_v = &HF142 - fa_empire = &HF1D1 - fa_envelope = &HF0E0 - fa_envelope_o = &HF003 - fa_envelope_open = &HF2B6 - fa_envelope_open_o = &HF2B7 - fa_envelope_square = &HF199 - fa_envira = &HF299 - fa_eraser = &HF12D - fa_etsy = &HF2D7 - fa_eur = &HF153 - fa_euro = &HF153 - fa_exchange = &HF0EC - fa_exclamation = &HF12A - fa_exclamation_circle = &HF06A - fa_exclamation_triangle = &HF071 - fa_expand = &HF065 - fa_expeditedssl = &HF23E - fa_external_link = &HF08E - fa_external_link_square = &HF14C - fa_eye = &HF06E - fa_eye_slash = &HF070 - fa_eyedropper = &HF1FB - fa_fa = &HF2B4 - fa_facebook = &HF09A - fa_facebook_f = &HF09A - fa_facebook_official = &HF230 - fa_facebook_square = &HF082 - fa_fast_backward = &HF049 - fa_fast_forward = &HF050 - fa_fax = &HF1AC - fa_feed = &HF09E - fa_female = &HF182 - fa_fighter_jet = &HF0FB - fa_file = &HF15B - fa_file_archive_o = &HF1C6 - fa_file_audio_o = &HF1C7 - fa_file_code_o = &HF1C9 - fa_file_excel_o = &HF1C3 - fa_file_image_o = &HF1C5 - fa_file_movie_o = &HF1C8 - fa_file_o = &HF016 - fa_file_pdf_o = &HF1C1 - fa_file_photo_o = &HF1C5 - fa_file_picture_o = &HF1C5 - fa_file_powerpoint_o = &HF1C4 - fa_file_sound_o = &HF1C7 - fa_file_text = &HF15C - fa_file_text_o = &HF0F6 - fa_file_video_o = &HF1C8 - fa_file_word_o = &HF1C2 - fa_file_zip_o = &HF1C6 - fa_files_o = &HF0C5 - fa_film = &HF008 - fa_filter = &HF0B0 - fa_fire = &HF06D - fa_fire_extinguisher = &HF134 - fa_firefox = &HF269 - fa_first_order = &HF2B0 - fa_flag = &HF024 - fa_flag_checkered = &HF11E - fa_flag_o = &HF11D - fa_flash = &HF0E7 - fa_flask = &HF0C3 - fa_flickr = &HF16E - fa_floppy_o = &HF0C7 - fa_folder = &HF07B - fa_folder_o = &HF114 - fa_folder_open = &HF07C - fa_folder_open_o = &HF115 - fa_font = &HF031 - fa_font_awesome = &HF2B4 - fa_fonticons = &HF280 - fa_fort_awesome = &HF286 - fa_forumbee = &HF211 - fa_forward = &HF04E - fa_foursquare = &HF180 - fa_free_code_camp = &HF2C5 - fa_frown_o = &HF119 - fa_futbol_o = &HF1E3 - fa_gamepad = &HF11B - fa_gavel = &HF0E3 - fa_gbp = &HF154 - fa_ge = &HF1D1 - fa_gear = &HF013 - fa_gears = &HF085 - fa_genderless = &HF22D - fa_get_pocket = &HF265 - fa_gg = &HF260 - fa_gg_circle = &HF261 - fa_gift = &HF06B - fa_git = &HF1D3 - fa_git_square = &HF1D2 - fa_github = &HF09B - fa_github_alt = &HF113 - fa_github_square = &HF092 - fa_gitlab = &HF296 - fa_gittip = &HF184 - fa_glass = &HF000 - fa_glide = &HF2A5 - fa_glide_g = &HF2A6 - fa_globe = &HF0AC - fa_google = &HF1A0 - fa_google_plus = &HF0D5 - fa_google_plus_circle = &HF2B3 - fa_google_plus_official = &HF2B3 - fa_google_plus_square = &HF0D4 - fa_google_wallet = &HF1EE - fa_graduation_cap = &HF19D - fa_gratipay = &HF184 - fa_grav = &HF2D6 - fa_group = &HF0C0 - fa_h_square = &HF0FD - fa_hacker_news = &HF1D4 - fa_hand_grab_o = &HF255 - fa_hand_lizard_o = &HF258 - fa_hand_o_down = &HF0A7 - fa_hand_o_left = &HF0A5 - fa_hand_o_right = &HF0A4 - fa_hand_o_up = &HF0A6 - fa_hand_paper_o = &HF256 - fa_hand_peace_o = &HF25B - fa_hand_pointer_o = &HF25A - fa_hand_rock_o = &HF255 - fa_hand_scissors_o = &HF257 - fa_hand_spock_o = &HF259 - fa_hand_stop_o = &HF256 - fa_handshake_o = &HF2B5 - fa_hard_of_hearing = &HF2A4 - fa_hashtag = &HF292 - fa_hdd_o = &HF0A0 - fa_header = &HF1DC - fa_headphones = &HF025 - fa_heart = &HF004 - fa_heart_o = &HF08A - fa_heartbeat = &HF21E - fa_history = &HF1DA - fa_home = &HF015 - fa_hospital_o = &HF0F8 - fa_hotel = &HF236 - fa_hourglass = &HF254 - fa_hourglass_1 = &HF251 - fa_hourglass_2 = &HF252 - fa_hourglass_3 = &HF253 - fa_hourglass_end = &HF253 - fa_hourglass_half = &HF252 - fa_hourglass_o = &HF250 - fa_hourglass_start = &HF251 - fa_houzz = &HF27C - fa_html5 = &HF13B - fa_i_cursor = &HF246 - fa_id_badge = &HF2C1 - fa_id_card = &HF2C2 - fa_id_card_o = &HF2C3 - fa_ils = &HF20B - fa_image = &HF03E - fa_imdb = &HF2D8 - fa_inbox = &HF01C - fa_indent = &HF03C - fa_industry = &HF275 - fa_info = &HF129 - fa_info_circle = &HF05A - fa_inr = &HF156 - fa_instagram = &HF16D - fa_institution = &HF19C - fa_internet_explorer = &HF26B - fa_intersex = &HF224 - fa_ioxhost = &HF208 - fa_italic = &HF033 - fa_joomla = &HF1AA - fa_jpy = &HF157 - fa_jsfiddle = &HF1CC - fa_key = &HF084 - fa_keyboard_o = &HF11C - fa_krw = &HF159 - fa_language = &HF1AB - fa_laptop = &HF109 - fa_lastfm = &HF202 - fa_lastfm_square = &HF203 - fa_leaf = &HF06C - fa_leanpub = &HF212 - fa_legal = &HF0E3 - fa_lemon_o = &HF094 - fa_level_down = &HF149 - fa_level_up = &HF148 - fa_life_bouy = &HF1CD - fa_life_buoy = &HF1CD - fa_life_ring = &HF1CD - fa_life_saver = &HF1CD - fa_lightbulb_o = &HF0EB - fa_line_chart = &HF201 - fa_link = &HF0C1 - fa_linkedin = &HF0E1 - fa_linkedin_square = &HF08C - fa_linode = &HF2B8 - fa_linux = &HF17C - fa_list = &HF03A - fa_list_alt = &HF022 - fa_list_ol = &HF0CB - fa_list_ul = &HF0CA - fa_location_arrow = &HF124 - fa_lock = &HF023 - fa_long_arrow_down = &HF175 - fa_long_arrow_left = &HF177 - fa_long_arrow_right = &HF178 - fa_long_arrow_up = &HF176 - fa_low_vision = &HF2A8 - fa_magic = &HF0D0 - fa_magnet = &HF076 - fa_mail_forward = &HF064 - fa_mail_reply = &HF112 - fa_mail_reply_all = &HF122 - fa_male = &HF183 - fa_map = &HF279 - fa_map_marker = &HF041 - fa_map_o = &HF278 - fa_map_pin = &HF276 - fa_map_signs = &HF277 - fa_mars = &HF222 - fa_mars_double = &HF227 - fa_mars_stroke = &HF229 - fa_mars_stroke_h = &HF22B - fa_mars_stroke_v = &HF22A - fa_maxcdn = &HF136 - fa_meanpath = &HF20C - fa_medium = &HF23A - fa_medkit = &HF0FA - fa_meetup = &HF2E0 - fa_meh_o = &HF11A - fa_mercury = &HF223 - fa_microchip = &HF2DB - fa_microphone = &HF130 - fa_microphone_slash = &HF131 - fa_minus = &HF068 - fa_minus_circle = &HF056 - fa_minus_square = &HF146 - fa_minus_square_o = &HF147 - fa_mixcloud = &HF289 - fa_mobile = &HF10B - fa_mobile_phone = &HF10B - fa_modx = &HF285 - fa_money = &HF0D6 - fa_moon_o = &HF186 - fa_mortar_board = &HF19D - fa_motorcycle = &HF21C - fa_mouse_pointer = &HF245 - fa_music = &HF001 - fa_navicon = &HF0C9 - fa_neuter = &HF22C - fa_newspaper_o = &HF1EA - fa_object_group = &HF247 - fa_object_ungroup = &HF248 - fa_odnoklassniki = &HF263 - fa_odnoklassniki_square = &HF264 - fa_opencart = &HF23D - fa_openid = &HF19B - fa_opera = &HF26A - fa_optin_monster = &HF23C - fa_outdent = &HF03B - fa_pagelines = &HF18C - fa_paint_brush = &HF1FC - fa_paper_plane = &HF1D8 - fa_paper_plane_o = &HF1D9 - fa_paperclip = &HF0C6 - fa_paragraph = &HF1DD - fa_paste = &HF0EA - fa_pause = &HF04C - fa_pause_circle = &HF28B - fa_pause_circle_o = &HF28C - fa_paw = &HF1B0 - fa_paypal = &HF1ED - fa_pencil = &HF040 - fa_pencil_square = &HF14B - fa_pencil_square_o = &HF044 - fa_percent = &HF295 - fa_phone = &HF095 - fa_phone_square = &HF098 - fa_photo = &HF03E - fa_picture_o = &HF03E - fa_pie_chart = &HF200 - fa_pied_piper = &HF2AE - fa_pied_piper_alt = &HF1A8 - fa_pied_piper_pp = &HF1A7 - fa_pinterest = &HF0D2 - fa_pinterest_p = &HF231 - fa_pinterest_square = &HF0D3 - fa_plane = &HF072 - fa_play = &HF04B - fa_play_circle = &HF144 - fa_play_circle_o = &HF01D - fa_plug = &HF1E6 - fa_plus = &HF067 - fa_plus_circle = &HF055 - fa_plus_square = &HF0FE - fa_plus_square_o = &HF196 - fa_podcast = &HF2CE - fa_power_off = &HF011 - fa_print = &HF02F - fa_product_hunt = &HF288 - fa_puzzle_piece = &HF12E - fa_qq = &HF1D6 - fa_qrcode = &HF029 - fa_question = &HF128 - fa_question_circle = &HF059 - fa_question_circle_o = &HF29C - fa_quora = &HF2C4 - fa_quote_left = &HF10D - fa_quote_right = &HF10E - fa_ra = &HF1D0 - fa_random = &HF074 - fa_ravelry = &HF2D9 - fa_rebel = &HF1D0 - fa_recycle = &HF1B8 - fa_reddit = &HF1A1 - fa_reddit_alien = &HF281 - fa_reddit_square = &HF1A2 - fa_refresh = &HF021 - fa_registered = &HF25D - fa_remove = &HF00D - fa_renren = &HF18B - fa_reorder = &HF0C9 - fa_repeat = &HF01E - fa_reply = &HF112 - fa_reply_all = &HF122 - fa_resistance = &HF1D0 - fa_retweet = &HF079 - fa_rmb = &HF157 - fa_road = &HF018 - fa_rocket = &HF135 - fa_rotate_left = &HF0E2 - fa_rotate_right = &HF01E - fa_rouble = &HF158 - fa_rss = &HF09E - fa_rss_square = &HF143 - fa_rub = &HF158 - fa_ruble = &HF158 - fa_rupee = &HF156 - fa_s15 = &HF2CD - fa_safari = &HF267 - fa_save = &HF0C7 - fa_scissors = &HF0C4 - fa_scribd = &HF28A - fa_search = &HF002 - fa_search_minus = &HF010 - fa_search_plus = &HF00E - fa_sellsy = &HF213 - fa_send = &HF1D8 - fa_send_o = &HF1D9 - fa_server = &HF233 - fa_share = &HF064 - fa_share_alt = &HF1E0 - fa_share_alt_square = &HF1E1 - fa_share_square = &HF14D - fa_share_square_o = &HF045 - fa_shekel = &HF20B - fa_sheqel = &HF20B - fa_shield = &HF132 - fa_ship = &HF21A - fa_shirtsinbulk = &HF214 - fa_shopping_bag = &HF290 - fa_shopping_basket = &HF291 - fa_shopping_cart = &HF07A - fa_shower = &HF2CC - fa_sign_in = &HF090 - fa_sign_language = &HF2A7 - fa_sign_out = &HF08B - fa_signal = &HF012 - fa_signing = &HF2A7 - fa_simplybuilt = &HF215 - fa_sitemap = &HF0E8 - fa_skyatlas = &HF216 - fa_skype = &HF17E - fa_slack = &HF198 - fa_sliders = &HF1DE - fa_slideshare = &HF1E7 - fa_smile_o = &HF118 - fa_snapchat = &HF2AB - fa_snapchat_ghost = &HF2AC - fa_snapchat_square = &HF2AD - fa_snowflake_o = &HF2DC - fa_soccer_ball_o = &HF1E3 - fa_sort = &HF0DC - fa_sort_alpha_asc = &HF15D - fa_sort_alpha_desc = &HF15E - fa_sort_amount_asc = &HF160 - fa_sort_amount_desc = &HF161 - fa_sort_asc = &HF0DE - fa_sort_desc = &HF0DD - fa_sort_down = &HF0DD - fa_sort_numeric_asc = &HF162 - fa_sort_numeric_desc = &HF163 - fa_sort_up = &HF0DE - fa_soundcloud = &HF1BE - fa_space_shuttle = &HF197 - fa_spinner = &HF110 - fa_spoon = &HF1B1 - fa_spotify = &HF1BC - fa_square = &HF0C8 - fa_square_o = &HF096 - fa_stack_exchange = &HF18D - fa_stack_overflow = &HF16C - fa_star = &HF005 - fa_star_half = &HF089 - fa_star_half_empty = &HF123 - fa_star_half_full = &HF123 - fa_star_half_o = &HF123 - fa_star_o = &HF006 - fa_steam = &HF1B6 - fa_steam_square = &HF1B7 - fa_step_backward = &HF048 - fa_step_forward = &HF051 - fa_stethoscope = &HF0F1 - fa_sticky_note = &HF249 - fa_sticky_note_o = &HF24A - fa_stop = &HF04D - fa_stop_circle = &HF28D - fa_stop_circle_o = &HF28E - fa_street_view = &HF21D - fa_strikethrough = &HF0CC - fa_stumbleupon = &HF1A4 - fa_stumbleupon_circle = &HF1A3 - fa_subscript = &HF12C - fa_subway = &HF239 - fa_suitcase = &HF0F2 - fa_sun_o = &HF185 - fa_superpowers = &HF2DD - fa_superscript = &HF12B - fa_support = &HF1CD - fa_table = &HF0CE - fa_tablet = &HF10A - fa_tachometer = &HF0E4 - fa_tag = &HF02B - fa_tags = &HF02C - fa_tasks = &HF0AE - fa_taxi = &HF1BA - fa_telegram = &HF2C6 - fa_television = &HF26C - fa_tencent_weibo = &HF1D5 - fa_terminal = &HF120 - fa_text_height = &HF034 - fa_text_width = &HF035 - fa_th = &HF00A - fa_th_large = &HF009 - fa_th_list = &HF00B - fa_themeisle = &HF2B2 - fa_thermometer = &HF2C7 - fa_thermometer_0 = &HF2CB - fa_thermometer_1 = &HF2CA - fa_thermometer_2 = &HF2C9 - fa_thermometer_3 = &HF2C8 - fa_thermometer_4 = &HF2C7 - fa_thermometer_empty = &HF2CB - fa_thermometer_full = &HF2C7 - fa_thermometer_half = &HF2C9 - fa_thermometer_quarter = &HF2CA - fa_thermometer_three_quarters = &HF2C8 - fa_thumb_tack = &HF08D - fa_thumbs_down = &HF165 - fa_thumbs_o_down = &HF088 - fa_thumbs_o_up = &HF087 - fa_thumbs_up = &HF164 - fa_ticket = &HF145 - fa_times = &HF00D - fa_times_circle = &HF057 - fa_times_circle_o = &HF05C - fa_times_rectangle = &HF2D3 - fa_times_rectangle_o = &HF2D4 - fa_tint = &HF043 - fa_toggle_down = &HF150 - fa_toggle_left = &HF191 - fa_toggle_off = &HF204 - fa_toggle_on = &HF205 - fa_toggle_right = &HF152 - fa_toggle_up = &HF151 - fa_trademark = &HF25C - fa_train = &HF238 - fa_transgender = &HF224 - fa_transgender_alt = &HF225 - fa_trash = &HF1F8 - fa_trash_o = &HF014 - fa_tree = &HF1BB - fa_trello = &HF181 - fa_tripadvisor = &HF262 - fa_trophy = &HF091 - fa_truck = &HF0D1 - fa_try = &HF195 - fa_tty = &HF1E4 - fa_tumblr = &HF173 - fa_tumblr_square = &HF174 - fa_turkish_lira = &HF195 - fa_tv = &HF26C - fa_twitch = &HF1E8 - fa_twitter = &HF099 - fa_twitter_square = &HF081 - fa_umbrella = &HF0E9 - fa_underline = &HF0CD - fa_undo = &HF0E2 - fa_universal_access = &HF29A - fa_university = &HF19C - fa_unlink = &HF127 - fa_unlock = &HF09C - fa_unlock_alt = &HF13E - fa_unsorted = &HF0DC - fa_upload = &HF093 - fa_usb = &HF287 - fa_usd = &HF155 - fa_user = &HF007 - fa_user_circle = &HF2BD - fa_user_circle_o = &HF2BE - fa_user_md = &HF0F0 - fa_user_o = &HF2C0 - fa_user_plus = &HF234 - fa_user_secret = &HF21B - fa_user_times = &HF235 - fa_users = &HF0C0 - fa_vcard = &HF2BB - fa_vcard_o = &HF2BC - fa_venus = &HF221 - fa_venus_double = &HF226 - fa_venus_mars = &HF228 - fa_viacoin = &HF237 - fa_viadeo = &HF2A9 - fa_viadeo_square = &HF2AA - fa_video_camera = &HF03D - fa_vimeo = &HF27D - fa_vimeo_square = &HF194 - fa_vine = &HF1CA - fa_vk = &HF189 - fa_volume_control_phone = &HF2A0 - fa_volume_down = &HF027 - fa_volume_off = &HF026 - fa_volume_up = &HF028 - fa_warning = &HF071 - fa_wechat = &HF1D7 - fa_weibo = &HF18A - fa_weixin = &HF1D7 - fa_whatsapp = &HF232 - fa_wheelchair = &HF193 - fa_wheelchair_alt = &HF29B - fa_wifi = &HF1EB - fa_wikipedia_w = &HF266 - fa_window_close = &HF2D3 - fa_window_close_o = &HF2D4 - fa_window_maximize = &HF2D0 - fa_window_minimize = &HF2D1 - fa_window_restore = &HF2D2 - fa_windows = &HF17A - fa_won = &HF159 - fa_wordpress = &HF19A - fa_wpbeginner = &HF297 - fa_wpexplorer = &HF2DE - fa_wpforms = &HF298 - fa_wrench = &HF0AD - fa_xing = &HF168 - fa_xing_square = &HF169 - fa_y_combinator = &HF23B - fa_y_combinator_square = &HF1D4 - fa_yahoo = &HF19E - fa_yc = &HF23B - fa_yc_square = &HF1D4 - fa_yelp = &HF1E9 - fa_yen = &HF157 - fa_yoast = &HF2B1 - fa_youtube = &HF167 - fa_youtube_play = &HF16A - fa_youtube_square = &HF166 - End Enum -End Namespace \ No newline at end of file diff --git a/vbnet/vbnet.vbproj b/vbnet/vbnet.vbproj deleted file mode 100644 index 29f2677..0000000 --- a/vbnet/vbnet.vbproj +++ /dev/null @@ -1,123 +0,0 @@ - - - - - Debug - AnyCPU - {AF1B21C5-28FC-4D47-AD0B-54F6A38391A6} - Library - vbnet - vbnet - 512 - Windows - v4.7.2 - - - - true - full - true - true - bin\Debug\ - - - 42030,42104,42105,42106,42107,42108,42109,42353,42354,42355 - 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036 - - - pdbonly - false - true - true - bin\Release\ - - - 42030,42104,42105,42106,42107,42108,42109,42353,42354,42355 - 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036 - - - On - - - Binary - - - On - - - On - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Component - - - - - True - Application.myapp - - - True - True - Resources.resx - - - True - Settings.settings - True - - - - - - - - - VbMyResourcesResXFileCodeGenerator - Resources.Designer.vb - My.Resources - Designer - - - - - MyApplicationCodeGenerator - Application.Designer.vb - - - SettingsSingleFileGenerator - My - Settings.Designer.vb - - - - \ No newline at end of file