Jake Volynko 5 years ago
parent
commit
530c5b7635
44 changed files with 523 additions and 293 deletions
  1. BIN
      .vs/quick-color-picker/v16/.suo
  2. BIN
      .vs/quick-color-picker/v16/Server/sqlite3/storage.ide
  3. BIN
      .vs/quick-color-picker/v16/Server/sqlite3/storage.ide-shm
  4. BIN
      .vs/quick-color-picker/v16/Server/sqlite3/storage.ide-wal
  5. 7 27
      QuickColorPicker-Setup/QuickColorPicker-Setup.vdproj
  6. BIN
      QuickColorPicker-Setup/Release/QuickColorPicker-Setup.msi
  7. 1 1
      README.md
  8. BIN
      docs/screenshots/about.png
  9. BIN
      docs/screenshots/format.png
  10. BIN
      docs/screenshots/main.png
  11. 37 33
      quick-color-picker/AboutForm.Designer.cs
  12. 27 27
      quick-color-picker/AboutForm.resx
  13. 15 0
      quick-color-picker/App.config
  14. 71 0
      quick-color-picker/ColorManager.cs
  15. 203 95
      quick-color-picker/MainForm.Designer.cs
  16. 54 65
      quick-color-picker/MainForm.cs
  17. 15 6
      quick-color-picker/MainForm.resx
  18. 2 2
      quick-color-picker/Properties/AssemblyInfo.cs
  19. 39 19
      quick-color-picker/Properties/Settings.Designer.cs
  20. 11 6
      quick-color-picker/Properties/Settings.settings
  21. 0 10
      quick-color-picker/bin/Debug/color-list.txt
  22. BIN
      quick-color-picker/bin/Debug/quick-color-picker.exe
  23. 15 0
      quick-color-picker/bin/Debug/quick-color-picker.exe.config
  24. BIN
      quick-color-picker/bin/Debug/quick-color-picker.pdb
  25. 10 2
      quick-color-picker/bin/Release/color-list.txt
  26. BIN
      quick-color-picker/bin/Release/quick-color-picker.exe
  27. 15 0
      quick-color-picker/bin/Release/quick-color-picker.exe.config
  28. BIN
      quick-color-picker/bin/Release/quick-color-picker.pdb
  29. BIN
      quick-color-picker/obj/Debug/DesignTimeResolveAssemblyReferences.cache
  30. BIN
      quick-color-picker/obj/Debug/quick-color-picker.csproj.GenerateResource.cache
  31. BIN
      quick-color-picker/obj/Debug/quick-color-picker.csprojAssemblyReference.cache
  32. BIN
      quick-color-picker/obj/Debug/quick-color-picker.exe
  33. BIN
      quick-color-picker/obj/Debug/quick-color-picker.pdb
  34. BIN
      quick-color-picker/obj/Debug/quick_color_picker.MainForm.resources
  35. BIN
      quick-color-picker/obj/Debug/quick_color_picker.Properties.Resources.resources
  36. BIN
      quick-color-picker/obj/Release/TempPE/Properties.Resources.Designer.cs.dll
  37. BIN
      quick-color-picker/obj/Release/quick-color-picker.csproj.GenerateResource.cache
  38. BIN
      quick-color-picker/obj/Release/quick-color-picker.exe
  39. BIN
      quick-color-picker/obj/Release/quick-color-picker.pdb
  40. BIN
      quick-color-picker/obj/Release/quick_color_picker.MainForm.resources
  41. BIN
      quick-color-picker/obj/Release/quick_color_picker.Properties.Resources.resources
  42. 1 0
      quick-color-picker/quick-color-picker.csproj
  43. BIN
      quick-color-picker/resources/imgs/dark/black-about.png
  44. BIN
      quick-color-picker/resources/imgs/light/white-about.png

BIN
.vs/quick-color-picker/v16/.suo


BIN
.vs/quick-color-picker/v16/Server/sqlite3/storage.ide


BIN
.vs/quick-color-picker/v16/Server/sqlite3/storage.ide-shm


BIN
.vs/quick-color-picker/v16/Server/sqlite3/storage.ide-wal


+ 7 - 27
QuickColorPicker-Setup/QuickColorPicker-Setup.vdproj

@@ -82,13 +82,13 @@
         "Entry"
         {
         "MsmKey" = "8:_UNDEFINED"
-        "OwnerKey" = "8:_EFE069039AD4B6DA733D547CDD64B8C8"
+        "OwnerKey" = "8:_AB402BA3D08386C004B3D13444827BC5"
         "MsmSig" = "8:_UNDEFINED"
         }
         "Entry"
         {
         "MsmKey" = "8:_UNDEFINED"
-        "OwnerKey" = "8:_B4642CAD627F9383DFD215DD66BB57C8"
+        "OwnerKey" = "8:_BF57E0CBB28BCA74671101FE09DC693E"
         "MsmSig" = "8:_UNDEFINED"
         }
         "Entry"
@@ -100,13 +100,13 @@
         "Entry"
         {
         "MsmKey" = "8:_UNDEFINED"
-        "OwnerKey" = "8:_BF57E0CBB28BCA74671101FE09DC693E"
+        "OwnerKey" = "8:_B4642CAD627F9383DFD215DD66BB57C8"
         "MsmSig" = "8:_UNDEFINED"
         }
         "Entry"
         {
         "MsmKey" = "8:_UNDEFINED"
-        "OwnerKey" = "8:_AB402BA3D08386C004B3D13444827BC5"
+        "OwnerKey" = "8:_EFE069039AD4B6DA733D547CDD64B8C8"
         "MsmSig" = "8:_UNDEFINED"
         }
     }
@@ -251,11 +251,6 @@
             "AssemblyAsmDisplayName" = "8:Octokit, Version=0.3.4.0, Culture=neutral, processorArchitecture=MSIL"
                 "ScatterAssemblies"
                 {
-                    "_737284792620041AA725AC471B11769A"
-                    {
-                    "Name" = "8:Octokit.dll"
-                    "Attributes" = "3:512"
-                    }
                 }
             "SourcePath" = "8:Octokit.dll"
             "TargetName" = "8:"
@@ -282,11 +277,6 @@
             "AssemblyAsmDisplayName" = "8:System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
                 "ScatterAssemblies"
                 {
-                    "_AB402BA3D08386C004B3D13444827BC5"
-                    {
-                    "Name" = "8:System.Net.Http.dll"
-                    "Attributes" = "3:512"
-                    }
                 }
             "SourcePath" = "8:System.Net.Http.dll"
             "TargetName" = "8:"
@@ -313,11 +303,6 @@
             "AssemblyAsmDisplayName" = "8:Semver, Version=1.1.2.0, Culture=neutral, processorArchitecture=MSIL"
                 "ScatterAssemblies"
                 {
-                    "_B4642CAD627F9383DFD215DD66BB57C8"
-                    {
-                    "Name" = "8:Semver.dll"
-                    "Attributes" = "3:512"
-                    }
                 }
             "SourcePath" = "8:Semver.dll"
             "TargetName" = "8:"
@@ -375,11 +360,6 @@
             "AssemblyAsmDisplayName" = "8:GitHubUpdate, Version=1.2.0.0, Culture=neutral, processorArchitecture=MSIL"
                 "ScatterAssemblies"
                 {
-                    "_EFE069039AD4B6DA733D547CDD64B8C8"
-                    {
-                    "Name" = "8:GitHubUpdate.dll"
-                    "Attributes" = "3:512"
-                    }
                 }
             "SourcePath" = "8:GitHubUpdate.dll"
             "TargetName" = "8:"
@@ -455,15 +435,15 @@
         {
         "Name" = "8:Microsoft Visual Studio"
         "ProductName" = "8:Quick Color Picker"
-        "ProductCode" = "8:{4E25DB7F-8ECD-4C69-8228-731B26BCD98E}"
-        "PackageCode" = "8:{D6C7937A-DF58-4B1F-BBAE-55575C180D8C}"
+        "ProductCode" = "8:{39B0DA17-ED06-4546-89D8-E055AF0CE53D}"
+        "PackageCode" = "8:{499313E6-1C46-402C-9251-0293A2C7A1B9}"
         "UpgradeCode" = "8:{B447EAAB-B636-490E-8AC4-266A6136D6BF}"
         "AspNetVersion" = "8:2.0.50727.0"
         "RestartWWWService" = "11:FALSE"
         "RemovePreviousVersions" = "11:TRUE"
         "DetectNewerInstalledVersion" = "11:TRUE"
         "InstallAllUsers" = "11:FALSE"
-        "ProductVersion" = "8:1.1.0"
+        "ProductVersion" = "8:1.2.0"
         "Manufacturer" = "8:Module Art"
         "ARPHELPTELEPHONE" = "8:"
         "ARPHELPLINK" = "8:"

BIN
QuickColorPicker-Setup/Release/QuickColorPicker-Setup.msi


+ 1 - 1
README.md

@@ -22,7 +22,7 @@
 
 <h2 align="center">Install</h2>
 <p align="center">
-  Windows 7, 8.1, 10  |  Size: 0.9 MB | v1.1.0 |  <a href="https://github.com/ModuleArt/quick-color-picker/releases/download/v1.1.0/QuickColorPicker-Setup.msi">Download</a><br>
+  Windows 7, 8.1, 10  |  Size: 0.9 MB | v1.2.0 |  <a href="https://github.com/ModuleArt/quick-color-picker/releases/download/v1.2.0/QuickColorPicker-Setup.msi">Download</a><br>
   Uses <a href="https://dotnet.microsoft.com/download/dotnet-framework/net472">.Net 4.7.2</a>
 </p>
 

BIN
docs/screenshots/about.png


BIN
docs/screenshots/format.png


BIN
docs/screenshots/main.png


+ 37 - 33
quick-color-picker/AboutForm.Designer.cs

@@ -60,60 +60,61 @@
 			// productLabel
 			// 
 			this.productLabel.AutoSize = true;
-			this.productLabel.Location = new System.Drawing.Point(6, 26);
-			this.productLabel.Margin = new System.Windows.Forms.Padding(3, 10, 3, 3);
+			this.productLabel.Location = new System.Drawing.Point(4, 28);
+			this.productLabel.Margin = new System.Windows.Forms.Padding(3, 19, 3, 3);
 			this.productLabel.Name = "productLabel";
-			this.productLabel.Size = new System.Drawing.Size(95, 13);
+			this.productLabel.Size = new System.Drawing.Size(105, 15);
 			this.productLabel.TabIndex = 27;
 			this.productLabel.Text = "Quick Color Picker";
 			// 
 			// versionLabel
 			// 
 			this.versionLabel.AutoSize = true;
-			this.versionLabel.Location = new System.Drawing.Point(6, 45);
+			this.versionLabel.Location = new System.Drawing.Point(6, 49);
 			this.versionLabel.Margin = new System.Windows.Forms.Padding(3);
 			this.versionLabel.Name = "versionLabel";
-			this.versionLabel.Size = new System.Drawing.Size(42, 13);
+			this.versionLabel.Size = new System.Drawing.Size(45, 15);
 			this.versionLabel.TabIndex = 28;
 			this.versionLabel.Text = "Version";
 			// 
 			// companyLabel
 			// 
 			this.companyLabel.AutoSize = true;
-			this.companyLabel.Location = new System.Drawing.Point(6, 97);
-			this.companyLabel.Margin = new System.Windows.Forms.Padding(3, 10, 3, 3);
+			this.companyLabel.Location = new System.Drawing.Point(6, 103);
+			this.companyLabel.Margin = new System.Windows.Forms.Padding(3, 9, 3, 3);
 			this.companyLabel.Name = "companyLabel";
-			this.companyLabel.Size = new System.Drawing.Size(72, 13);
+			this.companyLabel.Size = new System.Drawing.Size(83, 15);
 			this.companyLabel.TabIndex = 29;
 			this.companyLabel.Text = "by Module Art";
 			// 
 			// authorLabel
 			// 
 			this.authorLabel.AutoSize = true;
-			this.authorLabel.Location = new System.Drawing.Point(6, 116);
+			this.authorLabel.Location = new System.Drawing.Point(6, 124);
 			this.authorLabel.Margin = new System.Windows.Forms.Padding(3);
 			this.authorLabel.Name = "authorLabel";
-			this.authorLabel.Size = new System.Drawing.Size(122, 13);
+			this.authorLabel.Size = new System.Drawing.Size(134, 15);
 			this.authorLabel.TabIndex = 30;
 			this.authorLabel.Text = "Author: Eugene Volynko";
 			// 
 			// descriptionLabel
 			// 
 			this.descriptionLabel.AutoSize = true;
-			this.descriptionLabel.Location = new System.Drawing.Point(6, 142);
-			this.descriptionLabel.Margin = new System.Windows.Forms.Padding(3, 10, 3, 3);
+			this.descriptionLabel.Location = new System.Drawing.Point(6, 151);
+			this.descriptionLabel.Margin = new System.Windows.Forms.Padding(3, 9, 3, 3);
 			this.descriptionLabel.Name = "descriptionLabel";
-			this.descriptionLabel.Size = new System.Drawing.Size(181, 13);
+			this.descriptionLabel.Size = new System.Drawing.Size(242, 45);
 			this.descriptionLabel.TabIndex = 31;
-			this.descriptionLabel.Text = "Lightweight color picker for Windows";
+			this.descriptionLabel.Text = "Lightweight desktop color picker and color \r\neditor utility to get and save color" +
+    "s quickly \r\nfor Windows, build on top of WinForms (C#)";
 			// 
 			// developerLink
 			// 
 			this.developerLink.AutoSize = true;
-			this.developerLink.Location = new System.Drawing.Point(6, 26);
-			this.developerLink.Margin = new System.Windows.Forms.Padding(3, 10, 3, 3);
+			this.developerLink.Location = new System.Drawing.Point(6, 28);
+			this.developerLink.Margin = new System.Windows.Forms.Padding(3, 9, 3, 3);
 			this.developerLink.Name = "developerLink";
-			this.developerLink.Size = new System.Drawing.Size(58, 13);
+			this.developerLink.Size = new System.Drawing.Size(67, 15);
 			this.developerLink.TabIndex = 32;
 			this.developerLink.TabStop = true;
 			this.developerLink.Text = "Module Art";
@@ -122,10 +123,10 @@
 			// projectLink
 			// 
 			this.projectLink.AutoSize = true;
-			this.projectLink.Location = new System.Drawing.Point(70, 26);
+			this.projectLink.Location = new System.Drawing.Point(79, 29);
 			this.projectLink.Margin = new System.Windows.Forms.Padding(3, 10, 3, 3);
 			this.projectLink.Name = "projectLink";
-			this.projectLink.Size = new System.Drawing.Size(67, 13);
+			this.projectLink.Size = new System.Drawing.Size(73, 15);
 			this.projectLink.TabIndex = 33;
 			this.projectLink.TabStop = true;
 			this.projectLink.Text = "Project page";
@@ -134,15 +135,17 @@
 			// okButton
 			// 
 			this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+			this.okButton.BackColor = System.Drawing.SystemColors.ControlLight;
 			this.okButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
 			this.okButton.FlatAppearance.BorderSize = 0;
 			this.okButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
-			this.okButton.Location = new System.Drawing.Point(190, 357);
+			this.okButton.Location = new System.Drawing.Point(9, 408);
 			this.okButton.Margin = new System.Windows.Forms.Padding(0);
 			this.okButton.Name = "okButton";
-			this.okButton.Size = new System.Drawing.Size(75, 23);
+			this.okButton.Size = new System.Drawing.Size(256, 23);
 			this.okButton.TabIndex = 21;
-			this.okButton.Text = "&OK";
+			this.okButton.Text = "Close";
+			this.okButton.UseVisualStyleBackColor = false;
 			// 
 			// infoGroup
 			// 
@@ -152,10 +155,10 @@
 			this.infoGroup.Controls.Add(this.productLabel);
 			this.infoGroup.Controls.Add(this.descriptionLabel);
 			this.infoGroup.Controls.Add(this.authorLabel);
-			this.infoGroup.Location = new System.Drawing.Point(9, 109);
-			this.infoGroup.Margin = new System.Windows.Forms.Padding(0);
+			this.infoGroup.Location = new System.Drawing.Point(9, 118);
+			this.infoGroup.Margin = new System.Windows.Forms.Padding(0, 9, 0, 0);
 			this.infoGroup.Name = "infoGroup";
-			this.infoGroup.Size = new System.Drawing.Size(256, 173);
+			this.infoGroup.Size = new System.Drawing.Size(256, 213);
 			this.infoGroup.TabIndex = 34;
 			this.infoGroup.TabStop = false;
 			this.infoGroup.Text = "Info";
@@ -163,10 +166,10 @@
 			// updatesLink
 			// 
 			this.updatesLink.AutoSize = true;
-			this.updatesLink.Location = new System.Drawing.Point(6, 71);
-			this.updatesLink.Margin = new System.Windows.Forms.Padding(3, 10, 3, 3);
+			this.updatesLink.Location = new System.Drawing.Point(6, 76);
+			this.updatesLink.Margin = new System.Windows.Forms.Padding(3, 9, 3, 3);
 			this.updatesLink.Name = "updatesLink";
-			this.updatesLink.Size = new System.Drawing.Size(94, 13);
+			this.updatesLink.Size = new System.Drawing.Size(103, 15);
 			this.updatesLink.TabIndex = 35;
 			this.updatesLink.TabStop = true;
 			this.updatesLink.Text = "Check for updates";
@@ -175,10 +178,10 @@
 			// issuesLink
 			// 
 			this.issuesLink.AutoSize = true;
-			this.issuesLink.Location = new System.Drawing.Point(143, 26);
+			this.issuesLink.Location = new System.Drawing.Point(158, 29);
 			this.issuesLink.Margin = new System.Windows.Forms.Padding(3, 10, 3, 3);
 			this.issuesLink.Name = "issuesLink";
-			this.issuesLink.Size = new System.Drawing.Size(37, 13);
+			this.issuesLink.Size = new System.Drawing.Size(38, 15);
 			this.issuesLink.TabIndex = 34;
 			this.issuesLink.TabStop = true;
 			this.issuesLink.Text = "Issues";
@@ -189,10 +192,10 @@
 			this.pagesGroup.Controls.Add(this.developerLink);
 			this.pagesGroup.Controls.Add(this.projectLink);
 			this.pagesGroup.Controls.Add(this.issuesLink);
-			this.pagesGroup.Location = new System.Drawing.Point(9, 291);
+			this.pagesGroup.Location = new System.Drawing.Point(9, 340);
 			this.pagesGroup.Margin = new System.Windows.Forms.Padding(0, 9, 0, 0);
 			this.pagesGroup.Name = "pagesGroup";
-			this.pagesGroup.Size = new System.Drawing.Size(256, 58);
+			this.pagesGroup.Size = new System.Drawing.Size(256, 60);
 			this.pagesGroup.TabIndex = 37;
 			this.pagesGroup.TabStop = false;
 			this.pagesGroup.Text = "Links";
@@ -202,11 +205,12 @@
 			this.AcceptButton = this.okButton;
 			this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
 			this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
-			this.ClientSize = new System.Drawing.Size(274, 389);
+			this.ClientSize = new System.Drawing.Size(274, 440);
 			this.Controls.Add(this.pagesGroup);
 			this.Controls.Add(this.infoGroup);
 			this.Controls.Add(this.okButton);
 			this.Controls.Add(this.logoPictureBox);
+			this.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
 			this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
 			this.KeyPreview = true;
 			this.MaximizeBox = false;

+ 27 - 27
quick-color-picker/AboutForm.resx

@@ -120,33 +120,33 @@
   <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
   <data name="logoPictureBox.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
-        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
-        2azIlgAAAABJRU5ErkJggg==
+        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
+        QmCC
 </value>
   </data>
 </root>

+ 15 - 0
quick-color-picker/App.config

@@ -1,6 +1,21 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <configuration>
+    <configSections>
+        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
+            <section name="quick_color_picker.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
+        </sectionGroup>
+    </configSections>
     <startup> 
         <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
     </startup>
+    <userSettings>
+        <quick_color_picker.Properties.Settings>
+            <setting name="AlwaysOnTop" serializeAs="String">
+                <value>True</value>
+            </setting>
+            <setting name="AnotherFormat" serializeAs="String">
+                <value>False</value>
+            </setting>
+        </quick_color_picker.Properties.Settings>
+    </userSettings>
 </configuration>

+ 71 - 0
quick-color-picker/ColorManager.cs

@@ -0,0 +1,71 @@
+using System;
+using System.Drawing;
+
+namespace quick_color_picker
+{
+	public static class ColorManager
+	{
+		public static int[] ColorToHSV(Color color)
+		{
+			int max = Math.Max(color.R, Math.Max(color.G, color.B));
+			int min = Math.Min(color.R, Math.Min(color.G, color.B));
+
+			double hue = color.GetHue();
+			double saturation = (max == 0) ? 0 : 1d - (1d * min / max);
+			double value = max / 255d;
+
+			int h = Convert.ToInt32(hue);
+			int s = Convert.ToInt32(saturation * 100);
+			int v = Convert.ToInt32(value * 100);
+
+			return new int[] { h, s, v };
+		}
+
+		public static int[] ColorToHSL(Color color)
+		{
+			float hue = color.GetHue();
+			float saturation = color.GetSaturation();
+			float lightness = color.GetBrightness();
+
+			int intHue = Convert.ToInt32(hue);
+			int intSaturation = Convert.ToInt32(saturation * 100);
+			int intLightness = Convert.ToInt32(lightness * 100);
+
+			return new int[] { intHue, intSaturation, intLightness };
+		}
+
+		public static int[] ColorToCMYK(Color color)
+		{
+			double c, m, y, k;
+			double r = color.R, g = color.G, b = color.B;
+			double r1 = r / 255, g1 = g / 255, b1 = b / 255;
+
+			k = 1 - Math.Max(Math.Max(r1, g1), b1);
+
+			if (k == 1)
+			{
+				return new int[] { 0, 0, 0, 1 };
+			}
+			else
+			{
+				c = (1 - r1 - k) / (1 - k);
+				m = (1 - g1 - k) / (1 - k);
+				y = (1 - b1 - k) / (1 - k);
+
+				int intC = Convert.ToInt32(c * 100);
+				int intM = Convert.ToInt32(m * 100);
+				int intY = Convert.ToInt32(y * 100);
+				int intK = Convert.ToInt32(k * 100);
+
+				return new int[] { intC, intM, intY, intK };
+			}
+		}
+
+		public static Color TextToColor(string text)
+		{
+			string[] strArr = text.Split(',');
+			int[] arr = Array.ConvertAll(strArr, s => int.Parse(s));
+			return Color.FromArgb(arr[0], arr[1], arr[2]);
+		}
+	}
+}

+ 203 - 95
quick-color-picker/MainForm.Designer.cs

@@ -28,6 +28,7 @@
 		/// </summary>
 		private void InitializeComponent()
 		{
+			this.components = new System.ComponentModel.Container();
 			System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
 			this.colorPanel = new System.Windows.Forms.Panel();
 			this.rgbTextBox = new System.Windows.Forms.TextBox();
@@ -44,25 +45,33 @@
 			this.rgbOneTextBox = new System.Windows.Forms.TextBox();
 			this.rgbOneLabel = new System.Windows.Forms.Label();
 			this.toolStrip1 = new System.Windows.Forms.ToolStrip();
+			this.onTopButton = new System.Windows.Forms.ToolStripButton();
+			this.formatButton = new System.Windows.Forms.ToolStripButton();
+			this.clearListButton = new System.Windows.Forms.ToolStripButton();
+			this.deleteButton = new System.Windows.Forms.ToolStripButton();
+			this.aboutButton = new System.Windows.Forms.ToolStripButton();
 			this.label1 = new System.Windows.Forms.Label();
 			this.gradPanel1 = new System.Windows.Forms.Panel();
 			this.gradPanel2 = new System.Windows.Forms.Panel();
 			this.gradPanel3 = new System.Windows.Forms.Panel();
 			this.gradPanel4 = new System.Windows.Forms.Panel();
 			this.gradPanel = new System.Windows.Forms.Panel();
-			this.onTopButton = new System.Windows.Forms.ToolStripButton();
-			this.formatButton = new System.Windows.Forms.ToolStripButton();
-			this.clearListButton = new System.Windows.Forms.ToolStripButton();
-			this.deleteButton = new System.Windows.Forms.ToolStripButton();
-			this.aboutButton = new System.Windows.Forms.ToolStripButton();
+			this.copyTooltip = new System.Windows.Forms.ToolTip(this.components);
 			this.rgbOneCopyButton = new System.Windows.Forms.Button();
 			this.hslCopyButton = new System.Windows.Forms.Button();
 			this.cmykCopyButton = new System.Windows.Forms.Button();
 			this.htmlCopyButton = new System.Windows.Forms.Button();
 			this.rgbCopyButton = new System.Windows.Forms.Button();
 			this.pictureBox1 = new System.Windows.Forms.PictureBox();
+			this.hsvTextBox = new System.Windows.Forms.TextBox();
+			this.hsvLabel = new System.Windows.Forms.Label();
+			this.hsvCopyButton = new System.Windows.Forms.Button();
+			this.ratioPanel = new System.Windows.Forms.Panel();
+			this.ratioBlackLabel = new System.Windows.Forms.Label();
+			this.ratioWhiteLabel = new System.Windows.Forms.Label();
 			this.toolStrip1.SuspendLayout();
 			((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
+			this.ratioPanel.SuspendLayout();
 			this.SuspendLayout();
 			// 
 			// colorPanel
@@ -79,20 +88,22 @@
 			this.rgbTextBox.BackColor = System.Drawing.SystemColors.Window;
 			this.rgbTextBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
 			this.rgbTextBox.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
-			this.rgbTextBox.Location = new System.Drawing.Point(138, 31);
-			this.rgbTextBox.Margin = new System.Windows.Forms.Padding(10, 3, 3, 10);
+			this.rgbTextBox.Location = new System.Drawing.Point(138, 28);
+			this.rgbTextBox.Margin = new System.Windows.Forms.Padding(9, 0, 9, 9);
 			this.rgbTextBox.Multiline = true;
 			this.rgbTextBox.Name = "rgbTextBox";
 			this.rgbTextBox.ReadOnly = true;
 			this.rgbTextBox.Size = new System.Drawing.Size(153, 20);
 			this.rgbTextBox.TabIndex = 3;
-			this.rgbTextBox.Text = "255,255,255";
+			this.rgbTextBox.Text = "255, 255, 255";
+			this.rgbTextBox.WordWrap = false;
 			// 
 			// rgbLabel
 			// 
 			this.rgbLabel.AutoSize = true;
 			this.rgbLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
-			this.rgbLabel.Location = new System.Drawing.Point(135, 11);
+			this.rgbLabel.Location = new System.Drawing.Point(135, 10);
+			this.rgbLabel.Margin = new System.Windows.Forms.Padding(3);
 			this.rgbLabel.Name = "rgbLabel";
 			this.rgbLabel.Size = new System.Drawing.Size(32, 15);
 			this.rgbLabel.TabIndex = 4;
@@ -102,7 +113,8 @@
 			// 
 			this.htmlLabel.AutoSize = true;
 			this.htmlLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
-			this.htmlLabel.Location = new System.Drawing.Point(135, 63);
+			this.htmlLabel.Location = new System.Drawing.Point(135, 60);
+			this.htmlLabel.Margin = new System.Windows.Forms.Padding(3);
 			this.htmlLabel.Name = "htmlLabel";
 			this.htmlLabel.Size = new System.Drawing.Size(32, 15);
 			this.htmlLabel.TabIndex = 5;
@@ -113,14 +125,15 @@
 			this.htmlTextBox.BackColor = System.Drawing.SystemColors.Window;
 			this.htmlTextBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
 			this.htmlTextBox.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
-			this.htmlTextBox.Location = new System.Drawing.Point(138, 83);
-			this.htmlTextBox.Margin = new System.Windows.Forms.Padding(10, 3, 10, 10);
+			this.htmlTextBox.Location = new System.Drawing.Point(138, 78);
+			this.htmlTextBox.Margin = new System.Windows.Forms.Padding(9, 0, 9, 9);
 			this.htmlTextBox.Multiline = true;
 			this.htmlTextBox.Name = "htmlTextBox";
 			this.htmlTextBox.ReadOnly = true;
 			this.htmlTextBox.Size = new System.Drawing.Size(153, 20);
 			this.htmlTextBox.TabIndex = 6;
 			this.htmlTextBox.Text = "#FFFFFF";
+			this.htmlTextBox.WordWrap = false;
 			// 
 			// xLabel
 			// 
@@ -151,10 +164,10 @@
 			this.colorList.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
 			this.colorList.FormattingEnabled = true;
 			this.colorList.ItemHeight = 17;
-			this.colorList.Location = new System.Drawing.Point(325, 36);
+			this.colorList.Location = new System.Drawing.Point(325, 41);
 			this.colorList.Margin = new System.Windows.Forms.Padding(0);
 			this.colorList.Name = "colorList";
-			this.colorList.Size = new System.Drawing.Size(130, 223);
+			this.colorList.Size = new System.Drawing.Size(130, 257);
 			this.colorList.TabIndex = 1;
 			this.colorList.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.colorList_DrawItem);
 			this.colorList.SelectedIndexChanged += new System.EventHandler(this.colorList_SelectedIndexChanged);
@@ -164,20 +177,22 @@
 			this.cmykTextBox.BackColor = System.Drawing.SystemColors.Window;
 			this.cmykTextBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
 			this.cmykTextBox.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
-			this.cmykTextBox.Location = new System.Drawing.Point(138, 135);
-			this.cmykTextBox.Margin = new System.Windows.Forms.Padding(10, 3, 10, 10);
+			this.cmykTextBox.Location = new System.Drawing.Point(138, 128);
+			this.cmykTextBox.Margin = new System.Windows.Forms.Padding(9, 0, 9, 9);
 			this.cmykTextBox.Multiline = true;
 			this.cmykTextBox.Name = "cmykTextBox";
 			this.cmykTextBox.ReadOnly = true;
 			this.cmykTextBox.Size = new System.Drawing.Size(153, 20);
 			this.cmykTextBox.TabIndex = 12;
-			this.cmykTextBox.Text = "0,0,0,0";
+			this.cmykTextBox.Text = "0, 0, 0, 0";
+			this.cmykTextBox.WordWrap = false;
 			// 
 			// cmykLabel
 			// 
 			this.cmykLabel.AutoSize = true;
 			this.cmykLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
-			this.cmykLabel.Location = new System.Drawing.Point(135, 115);
+			this.cmykLabel.Location = new System.Drawing.Point(135, 110);
+			this.cmykLabel.Margin = new System.Windows.Forms.Padding(3);
 			this.cmykLabel.Name = "cmykLabel";
 			this.cmykLabel.Size = new System.Drawing.Size(64, 15);
 			this.cmykLabel.TabIndex = 11;
@@ -188,44 +203,48 @@
 			this.hslTextBox.BackColor = System.Drawing.SystemColors.Window;
 			this.hslTextBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
 			this.hslTextBox.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
-			this.hslTextBox.Location = new System.Drawing.Point(138, 187);
-			this.hslTextBox.Margin = new System.Windows.Forms.Padding(10, 3, 10, 10);
+			this.hslTextBox.Location = new System.Drawing.Point(138, 178);
+			this.hslTextBox.Margin = new System.Windows.Forms.Padding(9, 0, 9, 9);
 			this.hslTextBox.Multiline = true;
 			this.hslTextBox.Name = "hslTextBox";
 			this.hslTextBox.ReadOnly = true;
 			this.hslTextBox.Size = new System.Drawing.Size(153, 20);
 			this.hslTextBox.TabIndex = 16;
-			this.hslTextBox.Text = "0,0,100";
+			this.hslTextBox.Text = "0, 0, 100";
+			this.hslTextBox.WordWrap = false;
 			// 
 			// hslLabel
 			// 
 			this.hslLabel.AutoSize = true;
 			this.hslLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
-			this.hslLabel.Location = new System.Drawing.Point(135, 167);
+			this.hslLabel.Location = new System.Drawing.Point(135, 160);
+			this.hslLabel.Margin = new System.Windows.Forms.Padding(3);
 			this.hslLabel.Name = "hslLabel";
-			this.hslLabel.Size = new System.Drawing.Size(52, 15);
+			this.hslLabel.Size = new System.Drawing.Size(31, 15);
 			this.hslLabel.TabIndex = 15;
-			this.hslLabel.Text = "HSL (%):";
+			this.hslLabel.Text = "HSL:";
 			// 
 			// rgbOneTextBox
 			// 
 			this.rgbOneTextBox.BackColor = System.Drawing.SystemColors.Window;
 			this.rgbOneTextBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
 			this.rgbOneTextBox.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
-			this.rgbOneTextBox.Location = new System.Drawing.Point(138, 239);
-			this.rgbOneTextBox.Margin = new System.Windows.Forms.Padding(10, 3, 10, 10);
+			this.rgbOneTextBox.Location = new System.Drawing.Point(138, 228);
+			this.rgbOneTextBox.Margin = new System.Windows.Forms.Padding(9, 0, 9, 9);
 			this.rgbOneTextBox.Multiline = true;
 			this.rgbOneTextBox.Name = "rgbOneTextBox";
 			this.rgbOneTextBox.ReadOnly = true;
 			this.rgbOneTextBox.Size = new System.Drawing.Size(153, 20);
 			this.rgbOneTextBox.TabIndex = 19;
-			this.rgbOneTextBox.Text = "1/1/1";
+			this.rgbOneTextBox.Text = "1; 1; 1";
+			this.rgbOneTextBox.WordWrap = false;
 			// 
 			// rgbOneLabel
 			// 
 			this.rgbOneLabel.AutoSize = true;
 			this.rgbOneLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
-			this.rgbOneLabel.Location = new System.Drawing.Point(135, 219);
+			this.rgbOneLabel.Location = new System.Drawing.Point(135, 210);
+			this.rgbOneLabel.Margin = new System.Windows.Forms.Padding(3);
 			this.rgbOneLabel.Name = "rgbOneLabel";
 			this.rgbOneLabel.Size = new System.Drawing.Size(61, 15);
 			this.rgbOneLabel.TabIndex = 18;
@@ -251,6 +270,67 @@
 			this.toolStrip1.TabIndex = 24;
 			this.toolStrip1.Text = "toolStrip1";
 			// 
+			// onTopButton
+			// 
+			this.onTopButton.AutoSize = false;
+			this.onTopButton.Checked = true;
+			this.onTopButton.CheckState = System.Windows.Forms.CheckState.Checked;
+			this.onTopButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+			this.onTopButton.Image = ((System.Drawing.Image)(resources.GetObject("onTopButton.Image")));
+			this.onTopButton.ImageTransparentColor = System.Drawing.Color.Magenta;
+			this.onTopButton.Name = "onTopButton";
+			this.onTopButton.Size = new System.Drawing.Size(24, 25);
+			this.onTopButton.Text = "Toggle always on top | Ctrl + T";
+			this.onTopButton.ToolTipText = "Always on top | Ctrl + T";
+			this.onTopButton.Click += new System.EventHandler(this.onTopButton_Click);
+			// 
+			// formatButton
+			// 
+			this.formatButton.AutoSize = false;
+			this.formatButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+			this.formatButton.Image = ((System.Drawing.Image)(resources.GetObject("formatButton.Image")));
+			this.formatButton.ImageTransparentColor = System.Drawing.Color.Magenta;
+			this.formatButton.Name = "formatButton";
+			this.formatButton.Size = new System.Drawing.Size(24, 25);
+			this.formatButton.Text = "Clear color list | Ctrl + L";
+			this.formatButton.ToolTipText = "Another format | Ctrl + F";
+			this.formatButton.Click += new System.EventHandler(this.formatButton_Click);
+			// 
+			// clearListButton
+			// 
+			this.clearListButton.AutoSize = false;
+			this.clearListButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+			this.clearListButton.Image = ((System.Drawing.Image)(resources.GetObject("clearListButton.Image")));
+			this.clearListButton.ImageTransparentColor = System.Drawing.Color.Magenta;
+			this.clearListButton.Name = "clearListButton";
+			this.clearListButton.Size = new System.Drawing.Size(24, 25);
+			this.clearListButton.Text = "Clear color list | Ctrl + L";
+			this.clearListButton.Click += new System.EventHandler(this.clearListButton_Click);
+			// 
+			// deleteButton
+			// 
+			this.deleteButton.AutoSize = false;
+			this.deleteButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+			this.deleteButton.Enabled = false;
+			this.deleteButton.Image = ((System.Drawing.Image)(resources.GetObject("deleteButton.Image")));
+			this.deleteButton.ImageTransparentColor = System.Drawing.Color.Magenta;
+			this.deleteButton.Name = "deleteButton";
+			this.deleteButton.Size = new System.Drawing.Size(24, 25);
+			this.deleteButton.Text = "Remove selected color | Delete";
+			this.deleteButton.Click += new System.EventHandler(this.deleteButton_Click);
+			// 
+			// aboutButton
+			// 
+			this.aboutButton.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
+			this.aboutButton.AutoSize = false;
+			this.aboutButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+			this.aboutButton.Image = ((System.Drawing.Image)(resources.GetObject("aboutButton.Image")));
+			this.aboutButton.ImageTransparentColor = System.Drawing.Color.Magenta;
+			this.aboutButton.Name = "aboutButton";
+			this.aboutButton.Size = new System.Drawing.Size(24, 25);
+			this.aboutButton.Text = "About | F1";
+			this.aboutButton.Click += new System.EventHandler(this.aboutButton_Click);
+			// 
 			// label1
 			// 
 			this.label1.AutoSize = true;
@@ -317,73 +397,12 @@
 			this.gradPanel.TabIndex = 28;
 			this.gradPanel.Click += new System.EventHandler(this.gradPanel_Click);
 			// 
-			// onTopButton
-			// 
-			this.onTopButton.AutoSize = false;
-			this.onTopButton.Checked = true;
-			this.onTopButton.CheckState = System.Windows.Forms.CheckState.Checked;
-			this.onTopButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
-			this.onTopButton.Image = ((System.Drawing.Image)(resources.GetObject("onTopButton.Image")));
-			this.onTopButton.ImageTransparentColor = System.Drawing.Color.Magenta;
-			this.onTopButton.Name = "onTopButton";
-			this.onTopButton.Size = new System.Drawing.Size(24, 25);
-			this.onTopButton.Text = "Toggle always on top | Ctrl + T";
-			this.onTopButton.ToolTipText = "Always on top | Ctrl + T";
-			this.onTopButton.Click += new System.EventHandler(this.onTopButton_Click);
-			// 
-			// formatButton
-			// 
-			this.formatButton.AutoSize = false;
-			this.formatButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
-			this.formatButton.Image = ((System.Drawing.Image)(resources.GetObject("formatButton.Image")));
-			this.formatButton.ImageTransparentColor = System.Drawing.Color.Magenta;
-			this.formatButton.Name = "formatButton";
-			this.formatButton.Size = new System.Drawing.Size(24, 25);
-			this.formatButton.Text = "Clear color list | Ctrl + L";
-			this.formatButton.ToolTipText = "Another format | Ctrl + F";
-			this.formatButton.Click += new System.EventHandler(this.formatButton_Click);
-			// 
-			// clearListButton
-			// 
-			this.clearListButton.AutoSize = false;
-			this.clearListButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
-			this.clearListButton.Image = ((System.Drawing.Image)(resources.GetObject("clearListButton.Image")));
-			this.clearListButton.ImageTransparentColor = System.Drawing.Color.Magenta;
-			this.clearListButton.Name = "clearListButton";
-			this.clearListButton.Size = new System.Drawing.Size(24, 25);
-			this.clearListButton.Text = "Clear color list | Ctrl + L";
-			this.clearListButton.Click += new System.EventHandler(this.clearListButton_Click);
-			// 
-			// deleteButton
-			// 
-			this.deleteButton.AutoSize = false;
-			this.deleteButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
-			this.deleteButton.Enabled = false;
-			this.deleteButton.Image = ((System.Drawing.Image)(resources.GetObject("deleteButton.Image")));
-			this.deleteButton.ImageTransparentColor = System.Drawing.Color.Magenta;
-			this.deleteButton.Name = "deleteButton";
-			this.deleteButton.Size = new System.Drawing.Size(24, 25);
-			this.deleteButton.Text = "Remove selected color | Delete";
-			this.deleteButton.Click += new System.EventHandler(this.deleteButton_Click);
-			// 
-			// aboutButton
-			// 
-			this.aboutButton.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
-			this.aboutButton.AutoSize = false;
-			this.aboutButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
-			this.aboutButton.Image = ((System.Drawing.Image)(resources.GetObject("aboutButton.Image")));
-			this.aboutButton.ImageTransparentColor = System.Drawing.Color.Magenta;
-			this.aboutButton.Name = "aboutButton";
-			this.aboutButton.Size = new System.Drawing.Size(24, 25);
-			this.aboutButton.Text = "About | F1";
-			this.aboutButton.Click += new System.EventHandler(this.aboutButton_Click);
-			// 
 			// rgbOneCopyButton
 			// 
 			this.rgbOneCopyButton.FlatAppearance.BorderSize = 0;
 			this.rgbOneCopyButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
 			this.rgbOneCopyButton.Image = ((System.Drawing.Image)(resources.GetObject("rgbOneCopyButton.Image")));
-			this.rgbOneCopyButton.Location = new System.Drawing.Point(293, 236);
+			this.rgbOneCopyButton.Location = new System.Drawing.Point(293, 225);
 			this.rgbOneCopyButton.Name = "rgbOneCopyButton";
 			this.rgbOneCopyButton.Size = new System.Drawing.Size(25, 25);
 			this.rgbOneCopyButton.TabIndex = 20;
@@ -395,7 +414,7 @@
 			this.hslCopyButton.FlatAppearance.BorderSize = 0;
 			this.hslCopyButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
 			this.hslCopyButton.Image = ((System.Drawing.Image)(resources.GetObject("hslCopyButton.Image")));
-			this.hslCopyButton.Location = new System.Drawing.Point(293, 184);
+			this.hslCopyButton.Location = new System.Drawing.Point(293, 175);
 			this.hslCopyButton.Name = "hslCopyButton";
 			this.hslCopyButton.Size = new System.Drawing.Size(25, 25);
 			this.hslCopyButton.TabIndex = 17;
@@ -407,7 +426,7 @@
 			this.cmykCopyButton.FlatAppearance.BorderSize = 0;
 			this.cmykCopyButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
 			this.cmykCopyButton.Image = ((System.Drawing.Image)(resources.GetObject("cmykCopyButton.Image")));
-			this.cmykCopyButton.Location = new System.Drawing.Point(293, 132);
+			this.cmykCopyButton.Location = new System.Drawing.Point(293, 125);
 			this.cmykCopyButton.Name = "cmykCopyButton";
 			this.cmykCopyButton.Size = new System.Drawing.Size(25, 25);
 			this.cmykCopyButton.TabIndex = 14;
@@ -419,7 +438,7 @@
 			this.htmlCopyButton.FlatAppearance.BorderSize = 0;
 			this.htmlCopyButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
 			this.htmlCopyButton.Image = ((System.Drawing.Image)(resources.GetObject("htmlCopyButton.Image")));
-			this.htmlCopyButton.Location = new System.Drawing.Point(293, 80);
+			this.htmlCopyButton.Location = new System.Drawing.Point(293, 75);
 			this.htmlCopyButton.Name = "htmlCopyButton";
 			this.htmlCopyButton.Size = new System.Drawing.Size(25, 25);
 			this.htmlCopyButton.TabIndex = 10;
@@ -431,7 +450,7 @@
 			this.rgbCopyButton.FlatAppearance.BorderSize = 0;
 			this.rgbCopyButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
 			this.rgbCopyButton.Image = ((System.Drawing.Image)(resources.GetObject("rgbCopyButton.Image")));
-			this.rgbCopyButton.Location = new System.Drawing.Point(293, 28);
+			this.rgbCopyButton.Location = new System.Drawing.Point(293, 25);
 			this.rgbCopyButton.Name = "rgbCopyButton";
 			this.rgbCopyButton.Size = new System.Drawing.Size(25, 25);
 			this.rgbCopyButton.TabIndex = 9;
@@ -448,11 +467,91 @@
 			this.pictureBox1.TabIndex = 0;
 			this.pictureBox1.TabStop = false;
 			// 
+			// hsvTextBox
+			// 
+			this.hsvTextBox.BackColor = System.Drawing.SystemColors.Window;
+			this.hsvTextBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+			this.hsvTextBox.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
+			this.hsvTextBox.Location = new System.Drawing.Point(138, 278);
+			this.hsvTextBox.Margin = new System.Windows.Forms.Padding(9, 0, 9, 9);
+			this.hsvTextBox.Multiline = true;
+			this.hsvTextBox.Name = "hsvTextBox";
+			this.hsvTextBox.ReadOnly = true;
+			this.hsvTextBox.Size = new System.Drawing.Size(153, 20);
+			this.hsvTextBox.TabIndex = 30;
+			this.hsvTextBox.Text = "0, 0, 100";
+			this.hsvTextBox.WordWrap = false;
+			// 
+			// hsvLabel
+			// 
+			this.hsvLabel.AutoSize = true;
+			this.hsvLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
+			this.hsvLabel.Location = new System.Drawing.Point(135, 260);
+			this.hsvLabel.Margin = new System.Windows.Forms.Padding(3);
+			this.hsvLabel.Name = "hsvLabel";
+			this.hsvLabel.Size = new System.Drawing.Size(65, 15);
+			this.hsvLabel.TabIndex = 29;
+			this.hsvLabel.Text = "HSB / HSV:";
+			// 
+			// hsvCopyButton
+			// 
+			this.hsvCopyButton.FlatAppearance.BorderSize = 0;
+			this.hsvCopyButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+			this.hsvCopyButton.Image = ((System.Drawing.Image)(resources.GetObject("hsvCopyButton.Image")));
+			this.hsvCopyButton.Location = new System.Drawing.Point(293, 275);
+			this.hsvCopyButton.Name = "hsvCopyButton";
+			this.hsvCopyButton.Size = new System.Drawing.Size(25, 25);
+			this.hsvCopyButton.TabIndex = 31;
+			this.hsvCopyButton.UseVisualStyleBackColor = true;
+			this.hsvCopyButton.Click += new System.EventHandler(this.hsvCopyButton_Click);
+			// 
+			// ratioPanel
+			// 
+			this.ratioPanel.BackColor = System.Drawing.Color.White;
+			this.ratioPanel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+			this.ratioPanel.Controls.Add(this.ratioWhiteLabel);
+			this.ratioPanel.Controls.Add(this.ratioBlackLabel);
+			this.ratioPanel.Location = new System.Drawing.Point(9, 265);
+			this.ratioPanel.Margin = new System.Windows.Forms.Padding(3, 6, 3, 3);
+			this.ratioPanel.Name = "ratioPanel";
+			this.ratioPanel.Size = new System.Drawing.Size(120, 33);
+			this.ratioPanel.TabIndex = 32;
+			// 
+			// ratioBlackLabel
+			// 
+			this.ratioBlackLabel.AutoSize = true;
+			this.ratioBlackLabel.BackColor = System.Drawing.Color.Transparent;
+			this.ratioBlackLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
+			this.ratioBlackLabel.ForeColor = System.Drawing.Color.Black;
+			this.ratioBlackLabel.Location = new System.Drawing.Point(13, 8);
+			this.ratioBlackLabel.Margin = new System.Windows.Forms.Padding(3);
+			this.ratioBlackLabel.Name = "ratioBlackLabel";
+			this.ratioBlackLabel.Size = new System.Drawing.Size(37, 15);
+			this.ratioBlackLabel.TabIndex = 33;
+			this.ratioBlackLabel.Text = "Black";
+			// 
+			// ratioWhiteLabel
+			// 
+			this.ratioWhiteLabel.AutoSize = true;
+			this.ratioWhiteLabel.BackColor = System.Drawing.Color.Transparent;
+			this.ratioWhiteLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
+			this.ratioWhiteLabel.ForeColor = System.Drawing.Color.White;
+			this.ratioWhiteLabel.Location = new System.Drawing.Point(65, 8);
+			this.ratioWhiteLabel.Margin = new System.Windows.Forms.Padding(3);
+			this.ratioWhiteLabel.Name = "ratioWhiteLabel";
+			this.ratioWhiteLabel.Size = new System.Drawing.Size(41, 15);
+			this.ratioWhiteLabel.TabIndex = 34;
+			this.ratioWhiteLabel.Text = "White";
+			// 
 			// MainForm
 			// 
 			this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
 			this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
-			this.ClientSize = new System.Drawing.Size(464, 268);
+			this.ClientSize = new System.Drawing.Size(464, 307);
+			this.Controls.Add(this.ratioPanel);
+			this.Controls.Add(this.hsvCopyButton);
+			this.Controls.Add(this.hsvTextBox);
+			this.Controls.Add(this.hsvLabel);
 			this.Controls.Add(this.gradPanel);
 			this.Controls.Add(this.gradPanel4);
 			this.Controls.Add(this.gradPanel3);
@@ -494,6 +593,8 @@
 			this.toolStrip1.ResumeLayout(false);
 			this.toolStrip1.PerformLayout();
 			((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
+			this.ratioPanel.ResumeLayout(false);
+			this.ratioPanel.PerformLayout();
 			this.ResumeLayout(false);
 			this.PerformLayout();
 
@@ -533,6 +634,13 @@
 		private System.Windows.Forms.Panel gradPanel4;
 		private System.Windows.Forms.Panel gradPanel;
 		private System.Windows.Forms.ToolStripButton formatButton;
+		private System.Windows.Forms.ToolTip copyTooltip;
+		private System.Windows.Forms.TextBox hsvTextBox;
+		private System.Windows.Forms.Label hsvLabel;
+		private System.Windows.Forms.Button hsvCopyButton;
+		private System.Windows.Forms.Panel ratioPanel;
+		private System.Windows.Forms.Label ratioBlackLabel;
+		private System.Windows.Forms.Label ratioWhiteLabel;
 	}
 }
 

+ 54 - 65
quick-color-picker/MainForm.cs

@@ -18,9 +18,28 @@ namespace quick_color_picker
 		private bool alwaysOnTop = true;
 		private bool anotherFormat = false;
 
+		private enum KeyModifier
+		{
+			None = 0,
+			Alt = 1,
+			Control = 2,
+			Shift = 4,
+			WinKey = 8
+		}
+
 		public MainForm()
 		{
 			InitializeComponent();
+
+			copyTooltip.SetToolTip(rgbCopyButton, "Copy value");
+			copyTooltip.SetToolTip(htmlCopyButton, "Copy value");
+			copyTooltip.SetToolTip(cmykCopyButton, "Copy value");
+			copyTooltip.SetToolTip(hslCopyButton, "Copy value");
+			copyTooltip.SetToolTip(rgbOneCopyButton, "Copy value");
+			copyTooltip.SetToolTip(hsvCopyButton, "Copy value");
+
+			setAlwaysOnTop(Properties.Settings.Default.AlwaysOnTop, false);
+			setAnotherFormat(Properties.Settings.Default.AnotherFormat, false);
 		}
 
 		private void CaptureScreen()
@@ -102,15 +121,6 @@ namespace quick_color_picker
 			checkForUpdates(false);
 		}
 
-		enum KeyModifier
-		{
-			None = 0,
-			Alt = 1,
-			Control = 2,
-			Shift = 4,
-			WinKey = 8
-		}
-
 		protected override void WndProc(ref Message m)
 		{
 			base.WndProc(ref m);
@@ -146,7 +156,7 @@ namespace quick_color_picker
 		{
 			try
 			{
-				textToColor(s);
+				ColorManager.TextToColor(s);
 				colorList.Items.Add(s);
 			}
 			catch
@@ -168,7 +178,7 @@ namespace quick_color_picker
 				{
 					Graphics g = e.Graphics;
 
-					Color c = textToColor(itemText);
+					Color c = ColorManager.TextToColor(itemText);
 
 					// Background color
 					SolidBrush backgroundColorBrush = new SolidBrush(c);
@@ -212,11 +222,12 @@ namespace quick_color_picker
 				deleteButton.Enabled = true;
 
 				string t = colorList.Items[colorList.SelectedIndex].ToString();
-				Color c = textToColor(t);
+				Color c = ColorManager.TextToColor(t);
 
 				string htmlText = ColorTranslator.ToHtml(c).ToString();
-				int[] cmyk = RgbToCmyk(c.R, c.G, c.B);
-				int[] hsl = ColorToHsl(c);
+				int[] cmyk = ColorManager.ColorToCMYK(c);
+				int[] hsl = ColorManager.ColorToHSL(c);
+				int[] hsv = ColorManager.ColorToHSV(c);
 
 				double rOne = c.R / (double)255;
 				double gOne = c.G / (double)255;
@@ -229,6 +240,7 @@ namespace quick_color_picker
 					cmykTextBox.Text = "cmyk(" + cmyk[0] + "%, " + cmyk[1] + "%, " + cmyk[2] + "%, " + cmyk[3] + "%)";
 					hslTextBox.Text = "hsl(" + hsl[0] + ", " + hsl[1] + "%, " + hsl[2] + "%)";
 					rgbOneTextBox.Text = rOne.ToString("0.####") + " / " + gOne.ToString("0.####") + " / " + bOne.ToString("0.####");
+					hsvTextBox.Text = hsv[0] + "°, " + hsv[1] + "%, " + hsv[2] + "%";
 				}
 				else
 				{
@@ -237,9 +249,11 @@ namespace quick_color_picker
 					cmykTextBox.Text = cmyk[0] + ", " + cmyk[1] + ", " + cmyk[2] + ", " + cmyk[3];
 					hslTextBox.Text = hsl[0] + ", " + hsl[1] + ", " + hsl[2];
 					rgbOneTextBox.Text = rOne.ToString("0.##") + "; " + gOne.ToString("0.##") + "; " + bOne.ToString("0.##");
+					hsvTextBox.Text = hsv[0] + ", " + hsv[1] + ", " + hsv[2];
 				}
 
 				gradPanel.BackColor = c;
+				ratioPanel.BackColor = c;
 
 				int r1 = c.R - 50;
 				int g1 = c.G - 50;
@@ -301,53 +315,6 @@ namespace quick_color_picker
 			colorList.Refresh();
 		}
 
-		private Color textToColor(string text)
-		{
-			string[] strArr = text.Split(',');
-			int[] arr = Array.ConvertAll(strArr, s => int.Parse(s));
-			return Color.FromArgb(arr[0], arr[1], arr[2]);
-		}
-
-		private int[] RgbToCmyk(int intR, int intG, int intB)
-		{
-			double c, m, y, k;
-			double r = intR, g = intG, b = intB;
-			double r1 = r / 255, g1 = g / 255, b1 = b / 255;
-
-			k = 1 - Math.Max(Math.Max(r1, g1), b1);
-
-			if (k == 1)
-			{
-				return new int[] { 0, 0, 0, 1 };
-			}
-			else
-			{
-				c = (1 - r1 - k) / (1 - k);
-				m = (1 - g1 - k) / (1 - k);
-				y = (1 - b1 - k) / (1 - k);
-
-				int intC = Convert.ToInt32(c * 100);
-				int intM = Convert.ToInt32(m * 100);
-				int intY = Convert.ToInt32(y * 100);
-				int intK = Convert.ToInt32(k * 100);
-
-				return new int[] { intC, intM, intY, intK };
-			}
-		}
-
-		private int[] ColorToHsl(Color color)
-		{
-			float hue = color.GetHue();
-			float saturation = color.GetSaturation();
-			float lightness = color.GetBrightness();
-
-			int intHue = Convert.ToInt32(hue);
-			int intSaturation = Convert.ToInt32(saturation * 100);
-			int intLightness = Convert.ToInt32(lightness * 100);
-
-			return new int[] { intHue, intSaturation, intLightness }; 
-		}
-
 		private void rgbCopyButton_Click(object sender, EventArgs e)
 		{
 			Clipboard.SetText(rgbTextBox.Text);
@@ -385,11 +352,15 @@ namespace quick_color_picker
 			rgbOneTextBox.BackColor = ThemeManager.SecondColorDark;
 			rgbOneTextBox.ForeColor = Color.White;
 
+			hsvTextBox.BackColor = ThemeManager.SecondColorDark;
+			hsvTextBox.ForeColor = Color.White;
+
 			rgbCopyButton.Image = Properties.Resources.white_copy;
 			htmlCopyButton.Image = Properties.Resources.white_copy;
 			cmykCopyButton.Image = Properties.Resources.white_copy;
 			hslCopyButton.Image = Properties.Resources.white_copy;
 			rgbOneCopyButton.Image = Properties.Resources.white_copy;
+			hsvCopyButton.Image = Properties.Resources.white_copy;
 
 			onTopButton.Image = Properties.Resources.white_ontop;
 			clearListButton.Image = Properties.Resources.white_broom;
@@ -410,17 +381,23 @@ namespace quick_color_picker
 
 		private void onTopButton_Click(object sender, EventArgs e)
 		{
-			setAlwaysOnTop(!alwaysOnTop);
+			setAlwaysOnTop(!alwaysOnTop, true);
 		}
 
-		private void setAlwaysOnTop(bool b)
+		private void setAlwaysOnTop(bool b, bool saveToDisk)
 		{
 			alwaysOnTop = b;
 			this.TopMost = b;
 			onTopButton.Checked = b;
+
+			if (saveToDisk)
+			{
+				Properties.Settings.Default.AlwaysOnTop = b;
+				Properties.Settings.Default.Save();
+			}
 		}
 
-		private void setAnotherFormat(bool b)
+		private void setAnotherFormat(bool b, bool saveToDisk)
 		{
 			anotherFormat = b;
 			formatButton.Checked = b;
@@ -429,6 +406,12 @@ namespace quick_color_picker
 			{
 				colorList.SetSelected(colorList.SelectedIndex, true);
 			}
+
+			if (saveToDisk)
+			{
+				Properties.Settings.Default.AnotherFormat = b;
+				Properties.Settings.Default.Save();
+			}
 		}
 
 		private void MainForm_KeyDown(object sender, KeyEventArgs e)
@@ -465,6 +448,7 @@ namespace quick_color_picker
 		{
 			colorList.Items.Clear();
 			SaveColorList();
+			deleteButton.Enabled = false;
 		}
 
 		private void deleteButton_Click(object sender, EventArgs e)
@@ -600,7 +584,12 @@ namespace quick_color_picker
 
 		private void formatButton_Click(object sender, EventArgs e)
 		{
-			setAnotherFormat(!anotherFormat);
+			setAnotherFormat(!anotherFormat, true);
+		}
+
+		private void hsvCopyButton_Click(object sender, EventArgs e)
+		{
+			Clipboard.SetText(hsvTextBox.Text);
 		}
 	}
 }

+ 15 - 6
quick-color-picker/MainForm.resx

@@ -158,14 +158,15 @@
   <data name="aboutButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEFSURBVDhPxdMxSwMxHIbxDEoHW6qLgwUXN5fOBcUvo2JH
-        6RcRRFCkW1sodepWWv0ELo4KShXpIgg66SD6vLn7c0cM51R84EcSKCXJ3bl5tIMLvOA1HQfYRmGLOMMt
-        9lDDSjru4w4nWEC0c4yw5Fe/K2OCU78K0rYfUPEr50po4w03qENV8Ygtv8rVh7ZpHWII7WYX17Ca6CXT
-        rBl0VmsTtl7FezL1reM5mWZ9QpcYtoEr5M+t430k06xwB5bO20L+z6M7CO+gqOgd6FbvYU/B+k5HS09h
-        ioZfBR1jDP0o1jIuceRXkexN1Ll1nDUojQd4QuGbaOml6kJb/UrHDv78Fv4j534AH4kvf7euet0AAAAA
-        SUVORK5CYII=
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACrSURBVDhPxdI7CsJAFEbh2YEGtLEwpXvQykoLVyJYB8U1
+        iK5AULGWLEcUUUiCz8LKTs8vFna5ESQHPiYJZLgT4v5VFTNEeGAJH6ZqSNBDGQX0cYBpkxWGaOIITdGC
+        NlkgtTumWKOONvaoIEZqXQSfVXWwQwlnPbDmIcQGDQwwhzmddwyNPoKOpGtzN2iKLSYoIlNXPHF53+XR
+        CZpA/8JP6eXvNXP5fwNDzr0APQwmIg+0GKQAAAAASUVORK5CYII=
 </value>
   </data>
+  <metadata name="copyTooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>122, 17</value>
+  </metadata>
   <data name="rgbOneCopyButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
@@ -204,6 +205,14 @@
         wwAADsMBx2+oZAAAAGZJREFUOE9joBboAuLvQPwfDwbJtwMxVvATiEUhTJxADIh/QJiYAGQDMQCna0gx
         AAQwXEOqASCAomfUAEg6EIIwcQJhIEYOeRQDQCnxNxCDBHFhkDxy3IPEsAJyXIMCyHHNgAEGBgClKjy3
         W3VLWwAAAABJRU5ErkJggg==
+</value>
+  </data>
+  <data name="hsvCopyButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
+        wwAADsMBx2+oZAAAAGZJREFUOE9joBboAuLvQPwfDwbJtwMxVvATiEUhTJxADIh/QJiYAGQDMQCna0gx
+        AAQwXEOqASCAomfUAEg6EIIwcQJhIEYOeRQDQCnxNxCDBHFhkDxy3IPEsAJyXIMCyHHNgAEGBgClKjy3
+        W3VLWwAAAABJRU5ErkJggg==
 </value>
   </data>
   <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">

+ 2 - 2
quick-color-picker/Properties/AssemblyInfo.cs

@@ -33,6 +33,6 @@ using System.Runtime.InteropServices;
 // You can specify all the values or you can default the Build and Revision Numbers
 // by using the '*' as shown below:
 // [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.1.0")]
-[assembly: AssemblyFileVersion("1.1.0")]
+[assembly: AssemblyVersion("1.2.0")]
+[assembly: AssemblyFileVersion("1.2.0")]
 [assembly: NeutralResourcesLanguage("en")]

+ 39 - 19
quick-color-picker/Properties/Settings.Designer.cs

@@ -8,23 +8,43 @@
 // </auto-generated>
 //------------------------------------------------------------------------------
 
-namespace quick_color_picker.Properties
-{
-
-
-	[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
-	[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
-	internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
-	{
-
-		private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
-
-		public static Settings Default
-		{
-			get
-			{
-				return defaultInstance;
-			}
-		}
-	}
+namespace quick_color_picker.Properties {
+    
+    
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.3.0.0")]
+    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+        
+        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+        
+        public static Settings Default {
+            get {
+                return defaultInstance;
+            }
+        }
+        
+        [global::System.Configuration.UserScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("True")]
+        public bool AlwaysOnTop {
+            get {
+                return ((bool)(this["AlwaysOnTop"]));
+            }
+            set {
+                this["AlwaysOnTop"] = value;
+            }
+        }
+        
+        [global::System.Configuration.UserScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("False")]
+        public bool AnotherFormat {
+            get {
+                return ((bool)(this["AnotherFormat"]));
+            }
+            set {
+                this["AnotherFormat"] = value;
+            }
+        }
+    }
 }

+ 11 - 6
quick-color-picker/Properties/Settings.settings

@@ -1,7 +1,12 @@
 <?xml version='1.0' encoding='utf-8'?>
-<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
-  <Profiles>
-    <Profile Name="(Default)" />
-  </Profiles>
-  <Settings />
-</SettingsFile>
+<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="quick_color_picker.Properties" GeneratedClassName="Settings">
+  <Profiles />
+  <Settings>
+    <Setting Name="AlwaysOnTop" Type="System.Boolean" Scope="User">
+      <Value Profile="(Default)">True</Value>
+    </Setting>
+    <Setting Name="AnotherFormat" Type="System.Boolean" Scope="User">
+      <Value Profile="(Default)">False</Value>
+    </Setting>
+  </Settings>
+</SettingsFile>

+ 0 - 10
quick-color-picker/bin/Debug/color-list.txt

@@ -1,10 +0,0 @@
-62, 185, 204
-255, 163, 0
-255, 74, 0
-223, 16, 0
-188, 9, 0
-96, 35, 25
-204, 185, 62
-102, 92, 31
-224, 162, 153
-92, 45, 145

BIN
quick-color-picker/bin/Debug/quick-color-picker.exe


+ 15 - 0
quick-color-picker/bin/Debug/quick-color-picker.exe.config

@@ -1,6 +1,21 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <configuration>
+    <configSections>
+        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
+            <section name="quick_color_picker.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
+        </sectionGroup>
+    </configSections>
     <startup> 
         <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
     </startup>
+    <userSettings>
+        <quick_color_picker.Properties.Settings>
+            <setting name="AlwaysOnTop" serializeAs="String">
+                <value>True</value>
+            </setting>
+            <setting name="AnotherFormat" serializeAs="String">
+                <value>False</value>
+            </setting>
+        </quick_color_picker.Properties.Settings>
+    </userSettings>
 </configuration>

BIN
quick-color-picker/bin/Debug/quick-color-picker.pdb


+ 10 - 2
quick-color-picker/bin/Release/color-list.txt

@@ -1,2 +1,10 @@
-30, 30, 30
-0, 122, 204
+62, 185, 204
+255, 163, 0
+255, 74, 0
+223, 16, 0
+188, 9, 0
+96, 35, 25
+204, 185, 62
+102, 92, 31
+224, 162, 153
+92, 45, 145

BIN
quick-color-picker/bin/Release/quick-color-picker.exe


+ 15 - 0
quick-color-picker/bin/Release/quick-color-picker.exe.config

@@ -1,6 +1,21 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <configuration>
+    <configSections>
+        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
+            <section name="quick_color_picker.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
+        </sectionGroup>
+    </configSections>
     <startup> 
         <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
     </startup>
+    <userSettings>
+        <quick_color_picker.Properties.Settings>
+            <setting name="AlwaysOnTop" serializeAs="String">
+                <value>True</value>
+            </setting>
+            <setting name="AnotherFormat" serializeAs="String">
+                <value>False</value>
+            </setting>
+        </quick_color_picker.Properties.Settings>
+    </userSettings>
 </configuration>

BIN
quick-color-picker/bin/Release/quick-color-picker.pdb


BIN
quick-color-picker/obj/Debug/DesignTimeResolveAssemblyReferences.cache


BIN
quick-color-picker/obj/Debug/quick-color-picker.csproj.GenerateResource.cache


BIN
quick-color-picker/obj/Debug/quick-color-picker.csprojAssemblyReference.cache


BIN
quick-color-picker/obj/Debug/quick-color-picker.exe


BIN
quick-color-picker/obj/Debug/quick-color-picker.pdb


BIN
quick-color-picker/obj/Debug/quick_color_picker.MainForm.resources


BIN
quick-color-picker/obj/Debug/quick_color_picker.Properties.Resources.resources


BIN
quick-color-picker/obj/Release/TempPE/Properties.Resources.Designer.cs.dll


BIN
quick-color-picker/obj/Release/quick-color-picker.csproj.GenerateResource.cache


BIN
quick-color-picker/obj/Release/quick-color-picker.exe


BIN
quick-color-picker/obj/Release/quick-color-picker.pdb


BIN
quick-color-picker/obj/Release/quick_color_picker.MainForm.resources


BIN
quick-color-picker/obj/Release/quick_color_picker.Properties.Resources.resources


+ 1 - 0
quick-color-picker/quick-color-picker.csproj

@@ -67,6 +67,7 @@
     <Compile Include="AboutForm.Designer.cs">
       <DependentUpon>AboutForm.cs</DependentUpon>
     </Compile>
+    <Compile Include="ColorManager.cs" />
     <Compile Include="Properties\Resources.Designer.cs">
       <AutoGen>True</AutoGen>
       <DesignTime>True</DesignTime>

BIN
quick-color-picker/resources/imgs/dark/black-about.png


BIN
quick-color-picker/resources/imgs/light/white-about.png