First commit
This commit is contained in:
		
							
								
								
									
										6
									
								
								ColGen/App.config
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ColGen/App.config
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8" ?>
 | 
			
		||||
<configuration>
 | 
			
		||||
    <startup> 
 | 
			
		||||
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
 | 
			
		||||
    </startup>
 | 
			
		||||
</configuration>
 | 
			
		||||
							
								
								
									
										65
									
								
								ColGen/ColGen.csproj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								ColGen/ColGen.csproj
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,65 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 | 
			
		||||
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
 | 
			
		||||
  <PropertyGroup>
 | 
			
		||||
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
 | 
			
		||||
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
 | 
			
		||||
    <ProjectGuid>{B5240A73-56EE-44C1-88BE-BDD99DA3AC71}</ProjectGuid>
 | 
			
		||||
    <OutputType>Exe</OutputType>
 | 
			
		||||
    <AppDesignerFolder>Properties</AppDesignerFolder>
 | 
			
		||||
    <RootNamespace>ColGen</RootNamespace>
 | 
			
		||||
    <AssemblyName>ColGen</AssemblyName>
 | 
			
		||||
    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
 | 
			
		||||
    <FileAlignment>512</FileAlignment>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
 | 
			
		||||
    <PlatformTarget>AnyCPU</PlatformTarget>
 | 
			
		||||
    <DebugSymbols>true</DebugSymbols>
 | 
			
		||||
    <DebugType>full</DebugType>
 | 
			
		||||
    <Optimize>false</Optimize>
 | 
			
		||||
    <OutputPath>bin\Debug\</OutputPath>
 | 
			
		||||
    <DefineConstants>DEBUG;TRACE</DefineConstants>
 | 
			
		||||
    <ErrorReport>prompt</ErrorReport>
 | 
			
		||||
    <WarningLevel>4</WarningLevel>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
 | 
			
		||||
    <PlatformTarget>AnyCPU</PlatformTarget>
 | 
			
		||||
    <DebugType>pdbonly</DebugType>
 | 
			
		||||
    <Optimize>true</Optimize>
 | 
			
		||||
    <OutputPath>bin\Release\</OutputPath>
 | 
			
		||||
    <DefineConstants>TRACE</DefineConstants>
 | 
			
		||||
    <ErrorReport>prompt</ErrorReport>
 | 
			
		||||
    <WarningLevel>4</WarningLevel>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <Reference Include="System" />
 | 
			
		||||
    <Reference Include="System.Core" />
 | 
			
		||||
    <Reference Include="System.Drawing" />
 | 
			
		||||
    <Reference Include="System.Xml.Linq" />
 | 
			
		||||
    <Reference Include="System.Data.DataSetExtensions" />
 | 
			
		||||
    <Reference Include="Microsoft.CSharp" />
 | 
			
		||||
    <Reference Include="System.Data" />
 | 
			
		||||
    <Reference Include="System.Xml" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <Compile Include="func.cs">
 | 
			
		||||
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="HSL.cs">
 | 
			
		||||
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="Program.cs" />
 | 
			
		||||
    <Compile Include="Properties\AssemblyInfo.cs" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <None Include="App.config" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
 | 
			
		||||
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
 | 
			
		||||
       Other similar extension points exist, see Microsoft.Common.targets.
 | 
			
		||||
  <Target Name="BeforeBuild">
 | 
			
		||||
  </Target>
 | 
			
		||||
  <Target Name="AfterBuild">
 | 
			
		||||
  </Target>
 | 
			
		||||
  -->
 | 
			
		||||
</Project>
 | 
			
		||||
							
								
								
									
										296
									
								
								ColGen/HSL.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										296
									
								
								ColGen/HSL.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,296 @@
 | 
			
		||||
//----------------------------------------------------------------------
 | 
			
		||||
// Namespace Christo.GFX.Conversion
 | 
			
		||||
// Author: Christo Greeff
 | 
			
		||||
// Date: 24/June/2008
 | 
			
		||||
//----------------------------------------------------------------------
 | 
			
		||||
// 24/June/2008 : New: GFXConversionException, HSL
 | 
			
		||||
//----------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
using System;
 | 
			
		||||
using System.Drawing;
 | 
			
		||||
 | 
			
		||||
namespace Christo.GFX.Conversion
 | 
			
		||||
{
 | 
			
		||||
	/// <summary>
 | 
			
		||||
	/// Color Util Exception
 | 
			
		||||
	/// </summary>
 | 
			
		||||
	public class GFXConversionException : Exception
 | 
			
		||||
	{
 | 
			
		||||
		public GFXConversionException(string message, Exception innerException)
 | 
			
		||||
			: base(message, innerException)
 | 
			
		||||
		{
 | 
			
		||||
			//ToDo: Implement if needed
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/// <summary>
 | 
			
		||||
	/// HSL (Hue/Saturation/Luminance) Class
 | 
			
		||||
	/// </summary>
 | 
			
		||||
	public class HSL
 | 
			
		||||
	{
 | 
			
		||||
		#region Private members
 | 
			
		||||
 | 
			
		||||
		/// <summary>
 | 
			
		||||
		/// private hue
 | 
			
		||||
		/// </summary>
 | 
			
		||||
		private double _h;
 | 
			
		||||
 | 
			
		||||
		/// <summary>
 | 
			
		||||
		/// private saturation
 | 
			
		||||
		/// </summary>
 | 
			
		||||
		private double _s;
 | 
			
		||||
 | 
			
		||||
		/// <summary>
 | 
			
		||||
		/// private luminance
 | 
			
		||||
		/// </summary>
 | 
			
		||||
		private double _l;
 | 
			
		||||
 | 
			
		||||
		#endregion
 | 
			
		||||
 | 
			
		||||
		/// <summary>
 | 
			
		||||
		/// Constructor
 | 
			
		||||
		/// </summary>
 | 
			
		||||
		public HSL()
 | 
			
		||||
		{
 | 
			
		||||
			try
 | 
			
		||||
			{
 | 
			
		||||
				this.HSLHelper(0, 0, 0);
 | 
			
		||||
			}
 | 
			
		||||
			catch (Exception ee)
 | 
			
		||||
			{
 | 
			
		||||
				throw new GFXConversionException("HSL Constructor Error", ee);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		/// <summary>
 | 
			
		||||
		/// Constructor with ARGB color
 | 
			
		||||
		/// </summary>
 | 
			
		||||
		/// <param name="color">System.Drawing.Color value</param>
 | 
			
		||||
		public HSL(Color color)
 | 
			
		||||
		{
 | 
			
		||||
			try
 | 
			
		||||
			{
 | 
			
		||||
				this.HSLHelper(color.GetHue() / 360.0, color.GetSaturation(), color.GetBrightness());
 | 
			
		||||
			}
 | 
			
		||||
			catch (Exception ee)
 | 
			
		||||
			{
 | 
			
		||||
				throw new GFXConversionException("HSL Constructor Error", ee);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		/// <summary>
 | 
			
		||||
		/// Constructor with RGB color
 | 
			
		||||
		/// </summary>
 | 
			
		||||
		/// <param name="R">Red component with a value from 0 to 255</param>
 | 
			
		||||
		/// <param name="G">Green component with a value from 0 to 255</param>
 | 
			
		||||
		/// <param name="B">Blue component with a value from 0 to 255</param>
 | 
			
		||||
		public HSL(byte R, byte G, byte B)
 | 
			
		||||
		{
 | 
			
		||||
			try
 | 
			
		||||
			{
 | 
			
		||||
				Color temp = Color.FromArgb(R, G, B);
 | 
			
		||||
				this.HSLHelper(temp.GetHue() / 360.0, temp.GetSaturation(), temp.GetBrightness());
 | 
			
		||||
			}
 | 
			
		||||
			catch (Exception ee)
 | 
			
		||||
			{
 | 
			
		||||
				throw new GFXConversionException("HSL Constructor Error", ee);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		/// <summary>
 | 
			
		||||
		/// Constructor with HSL
 | 
			
		||||
		/// </summary>
 | 
			
		||||
		/// <param name="Hue">Varies from magenta - red - yellow - green - cyan - blue - magenta, described as an angle around a circle from 0.0 - 360.0 degrees</param>
 | 
			
		||||
		/// <param name="Saturation">Varies from 0.0 and 1.0 and describes how "grey" the colour is, with 0 being completely unsaturated (grey, white or black) and 1 being completely saturated</param>
 | 
			
		||||
		/// <param name="Luminance">Varies from 0.0 and 1.0 and ranges from black at 0.0, through the standard colour itself at 0.5 to white at 1.0</param>
 | 
			
		||||
		public HSL(double Hue, double Saturation, double Luminance)
 | 
			
		||||
		{
 | 
			
		||||
			try
 | 
			
		||||
			{
 | 
			
		||||
				this.HSLHelper(Hue, Saturation, Luminance);
 | 
			
		||||
			}
 | 
			
		||||
			catch (Exception ee)
 | 
			
		||||
			{
 | 
			
		||||
				throw new GFXConversionException("HSL Constructor Error", ee);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		/// <summary>
 | 
			
		||||
		/// HSL Helper
 | 
			
		||||
		/// </summary>
 | 
			
		||||
		/// <param name="Hue">Varies from magenta - red - yellow - green - cyan - blue - magenta, described as an angle around a circle from 0.0 - 360.0 degrees</param>
 | 
			
		||||
		/// <param name="Saturation">Varies from 0.0 and 1.0 and describes how "grey" the colour is, with 0 being completely unsaturated (grey, white or black) and 1 being completely saturated</param>
 | 
			
		||||
		/// <param name="Luminance">Varies from 0.0 and 1.0 and ranges from black at 0.0, through the standard colour itself at 0.5 to white at 1.0</param>
 | 
			
		||||
		private void HSLHelper(double Hue, double Saturation, double Luminance)
 | 
			
		||||
		{
 | 
			
		||||
			try
 | 
			
		||||
			{
 | 
			
		||||
				this.H = Hue;
 | 
			
		||||
				this.S = Saturation;
 | 
			
		||||
				this.L = Luminance;
 | 
			
		||||
			}
 | 
			
		||||
			catch (Exception ee)
 | 
			
		||||
			{
 | 
			
		||||
				throw new GFXConversionException("HSL HSLHelper Error", ee);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		/// <summary>
 | 
			
		||||
		/// Set helper function
 | 
			
		||||
		/// </summary>
 | 
			
		||||
		/// <param name="value">value that must be between 0 and 1</param>
 | 
			
		||||
		/// <returns>double value</returns>
 | 
			
		||||
		private double SetHelper(double value)
 | 
			
		||||
		{
 | 
			
		||||
			try
 | 
			
		||||
			{
 | 
			
		||||
				return (value > 1) ? 1.0 : (value < 0) ? 0 : value;
 | 
			
		||||
			}
 | 
			
		||||
			catch (Exception ee)
 | 
			
		||||
			{
 | 
			
		||||
				throw new GFXConversionException("HSL SetHelper Error", ee);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		/// <summary>
 | 
			
		||||
		/// Gets or sets the Hue value
 | 
			
		||||
		/// </summary>
 | 
			
		||||
		public double H
 | 
			
		||||
		{
 | 
			
		||||
			get
 | 
			
		||||
			{
 | 
			
		||||
				return this._h;
 | 
			
		||||
			}
 | 
			
		||||
			set
 | 
			
		||||
			{
 | 
			
		||||
				this._h = this.SetHelper(value);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		/// <summary>
 | 
			
		||||
		/// Gets or sets the Saturation value
 | 
			
		||||
		/// </summary>
 | 
			
		||||
		public double S
 | 
			
		||||
		{
 | 
			
		||||
			get
 | 
			
		||||
			{
 | 
			
		||||
				return this._s;
 | 
			
		||||
			}
 | 
			
		||||
			set
 | 
			
		||||
			{
 | 
			
		||||
				this._s = this.SetHelper(value);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		/// <summary>
 | 
			
		||||
		/// Gets or sets the Luminance value
 | 
			
		||||
		/// </summary>
 | 
			
		||||
		public double L
 | 
			
		||||
		{
 | 
			
		||||
			get
 | 
			
		||||
			{
 | 
			
		||||
				return this._l;
 | 
			
		||||
			}
 | 
			
		||||
			set
 | 
			
		||||
			{
 | 
			
		||||
				this._l = this.SetHelper(value);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		/// <summary>
 | 
			
		||||
		/// <para>Convert from the current HSL to RGB</para>
 | 
			
		||||
		/// <para>http://en.wikipedia.org/wiki/HSV_color_space#Conversion_from_HSL_to_RGB</para>
 | 
			
		||||
		/// </summary>
 | 
			
		||||
		public Color Color
 | 
			
		||||
		{
 | 
			
		||||
			get
 | 
			
		||||
			{
 | 
			
		||||
				double[] t = new double[] { 0, 0, 0 };
 | 
			
		||||
 | 
			
		||||
				try
 | 
			
		||||
				{
 | 
			
		||||
					double tH = this._h;
 | 
			
		||||
					double tS = this._s;
 | 
			
		||||
					double tL = this._l;
 | 
			
		||||
 | 
			
		||||
					if (tS.Equals(0))
 | 
			
		||||
					{
 | 
			
		||||
						t[0] = t[1] = t[2] = tL;
 | 
			
		||||
					}
 | 
			
		||||
					else
 | 
			
		||||
					{
 | 
			
		||||
						double q, p;
 | 
			
		||||
 | 
			
		||||
						q = tL < 0.5 ? tL * (1 + tS) : tL + tS - (tL * tS);
 | 
			
		||||
						p = 2 * tL - q;
 | 
			
		||||
 | 
			
		||||
						t[0] = tH + (1.0 / 3.0);
 | 
			
		||||
						t[1] = tH;
 | 
			
		||||
						t[2] = tH - (1.0 / 3.0);
 | 
			
		||||
 | 
			
		||||
						for (byte i = 0; i < 3; i++)
 | 
			
		||||
						{
 | 
			
		||||
							t[i] = t[i] < 0 ? t[i] + 1.0 : t[i] > 1 ? t[i] - 1.0 : t[i];
 | 
			
		||||
 | 
			
		||||
							if (t[i] * 6.0 < 1.0)
 | 
			
		||||
								t[i] = p + ((q - p) * 6 * t[i]);
 | 
			
		||||
							else
 | 
			
		||||
								if (t[i] * 2.0 < 1.0)
 | 
			
		||||
									t[i] = q;
 | 
			
		||||
								else
 | 
			
		||||
									if (t[i] * 3.0 < 2.0)
 | 
			
		||||
										t[i] = p + ((q - p) * 6 * ((2.0 / 3.0) - t[i]));
 | 
			
		||||
									else
 | 
			
		||||
										t[i] = p;
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
				catch (Exception ee)
 | 
			
		||||
				{
 | 
			
		||||
					throw new GFXConversionException("HSL Color Error", ee);
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				return Color.FromArgb((int)(t[0] * 255), (int)(t[1] * 255), (int)(t[2] * 255));
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		/// <summary>
 | 
			
		||||
		/// Modify the current HSL brightness
 | 
			
		||||
		/// </summary>
 | 
			
		||||
		/// <param name="brightness">brightness value</param>
 | 
			
		||||
		/// <returns>HSL</returns>
 | 
			
		||||
		private HSL BrightnessHelper(double brightness)
 | 
			
		||||
		{
 | 
			
		||||
			try
 | 
			
		||||
			{
 | 
			
		||||
				this.L = this.L * brightness;
 | 
			
		||||
			}
 | 
			
		||||
			catch (Exception ee)
 | 
			
		||||
			{
 | 
			
		||||
				throw new GFXConversionException("HSL BrightnessHelper Error", ee);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			return new HSL(H, S, L);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		/// <summary>
 | 
			
		||||
		/// Modify the current HSL brightness
 | 
			
		||||
		/// </summary>
 | 
			
		||||
		/// <param name="brightness">brightness value</param>
 | 
			
		||||
		/// <returns>HSL</returns>
 | 
			
		||||
		public HSL Brightness(double brightness)
 | 
			
		||||
		{
 | 
			
		||||
			return this.BrightnessHelper(brightness);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		/// <summary>
 | 
			
		||||
		/// Modify the current HSL brightness
 | 
			
		||||
		/// </summary>
 | 
			
		||||
		/// <param name="brightness">brightness value</param>
 | 
			
		||||
		/// <returns>Color</returns>
 | 
			
		||||
		public Color BrightnessC(double brightness)
 | 
			
		||||
		{
 | 
			
		||||
			return this.BrightnessHelper(brightness).Color;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										430
									
								
								ColGen/Program.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										430
									
								
								ColGen/Program.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,430 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Drawing;
 | 
			
		||||
using System.IO;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Text;
 | 
			
		||||
using System.Threading;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
 | 
			
		||||
namespace ColGen
 | 
			
		||||
{
 | 
			
		||||
	class Program
 | 
			
		||||
	{
 | 
			
		||||
		static void Main(string[] args)
 | 
			
		||||
		{
 | 
			
		||||
			Program z = new Program();
 | 
			
		||||
			int choice,version;
 | 
			
		||||
			List<string> traits = new List<string>();
 | 
			
		||||
			List<string> options = new List<string>
 | 
			
		||||
			{
 | 
			
		||||
				"1)Uniform",
 | 
			
		||||
				"2)RandomWalk",
 | 
			
		||||
				"3)RandomMix",
 | 
			
		||||
				"4)RandomMix",
 | 
			
		||||
				"5)RandomMix",
 | 
			
		||||
				"6)RandomMix",
 | 
			
		||||
				"7)RandomMix",
 | 
			
		||||
				"8)RandomMix",
 | 
			
		||||
				"9)RandomAdd",
 | 
			
		||||
				"10)RandomAdd",
 | 
			
		||||
				"11)RandomAdd",
 | 
			
		||||
				"12)Offset",
 | 
			
		||||
				"13)Hue",
 | 
			
		||||
				"14)Saturation",
 | 
			
		||||
				"15)Luminance",
 | 
			
		||||
				"16)SaturationLuminance",
 | 
			
		||||
				"17)GoldenRatioRainbow",
 | 
			
		||||
				"18)GoldenRatioGradient",
 | 
			
		||||
				"19)JitteredRainbow",
 | 
			
		||||
				"20)JitteredRainbow",
 | 
			
		||||
				"21)JitteredRainbow",
 | 
			
		||||
				"22)HueRange",
 | 
			
		||||
				"23)Harmony",
 | 
			
		||||
				"24)Harmony2"
 | 
			
		||||
			};
 | 
			
		||||
			foreach (var option in options)
 | 
			
		||||
			{
 | 
			
		||||
				Console.WriteLine(option);
 | 
			
		||||
			}
 | 
			
		||||
			choice = int.Parse(Console.ReadLine());
 | 
			
		||||
			Console.WriteLine("Version?(if any)");
 | 
			
		||||
			version = int.Parse(Console.ReadLine());
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
			for (int i = 0; i < 4; i++)
 | 
			
		||||
			{
 | 
			
		||||
				if (i % 2 == 0)
 | 
			
		||||
				{
 | 
			
		||||
					var rand1 = new Random(DateTime.Now.Millisecond);
 | 
			
		||||
					traits.Add(z.Type1(z.ToSingleColour(rand1,choice,version)));
 | 
			
		||||
					Thread.Sleep(100);
 | 
			
		||||
					var rand2 = new Random(DateTime.Now.Millisecond);
 | 
			
		||||
					traits.Add(z.Type2(z.ToSingleColour(rand2, choice, version)));
 | 
			
		||||
					Thread.Sleep(100);
 | 
			
		||||
					var rand3 = new Random(DateTime.Now.Millisecond);
 | 
			
		||||
					traits.Add(z.Type1(z.ToSingleColour(rand3, choice, version)));
 | 
			
		||||
					Thread.Sleep(100);
 | 
			
		||||
					var rand4 = new Random(DateTime.Now.Millisecond);
 | 
			
		||||
					traits.Add(z.Type2(z.ToSingleColour(rand4, choice, version)));
 | 
			
		||||
				}
 | 
			
		||||
				else
 | 
			
		||||
				{
 | 
			
		||||
					var rand1 = new Random(DateTime.Now.Millisecond);
 | 
			
		||||
					traits.Add(z.Type3(z.ToSingleColour(rand1, choice, version)));
 | 
			
		||||
					Thread.Sleep(100);
 | 
			
		||||
					var rand2 = new Random(DateTime.Now.Millisecond);
 | 
			
		||||
					traits.Add(z.Type4(z.ToSingleColour(rand2, choice, version)));
 | 
			
		||||
					Thread.Sleep(100);
 | 
			
		||||
					var rand3 = new Random(DateTime.Now.Millisecond);
 | 
			
		||||
					traits.Add(z.Type3(z.ToSingleColour(rand3, choice, version)));
 | 
			
		||||
					Thread.Sleep(100);
 | 
			
		||||
					var rand4 = new Random(DateTime.Now.Millisecond);
 | 
			
		||||
					traits.Add(z.Type4(z.ToSingleColour(rand4, choice, version)));
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			if (File.Exists("html.txt"))
 | 
			
		||||
				File.Delete("html.txt");
 | 
			
		||||
			File.AppendAllLines("html.txt", traits);
 | 
			
		||||
			Console.WriteLine("DONE");
 | 
			
		||||
			Console.ReadLine();
 | 
			
		||||
		}
 | 
			
		||||
		public string ToSingleColour(Random rand,int choice,int version)
 | 
			
		||||
		{
 | 
			
		||||
			string colour, temp;
 | 
			
		||||
			Color a = this.GetColour(rand,choice,version);
 | 
			
		||||
			temp = a.Name;
 | 
			
		||||
			colour = "#" + temp.Substring(2, 6);
 | 
			
		||||
			return colour;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public string RandColor(Random rand)
 | 
			
		||||
		{
 | 
			
		||||
			double offset = 1.0;
 | 
			
		||||
			double value = (rand.Next(0, 255) + rand.Next(0, 255) + rand.Next(0, 255)) / 3;
 | 
			
		||||
			double value2 = (rand.Next(0, 255) + rand.Next(0, 255) + rand.Next(0, 255)) / 3;
 | 
			
		||||
			double value3 = (rand.Next(0, 255) + rand.Next(0, 255) + rand.Next(0, 255)) / 3;
 | 
			
		||||
			double newValue = value + 2 * rand.Next() * offset - offset;
 | 
			
		||||
			double valueRatio = (newValue / value);
 | 
			
		||||
			var color = String.Format("#FA{0:X2}01", rand.Next(0, 255)/*, rand.Next(0, 255), rand.Next(0, 255)*/);
 | 
			
		||||
			return color;
 | 
			
		||||
		}
 | 
			
		||||
		public string Type1(string onlyColor)
 | 
			
		||||
		{
 | 
			
		||||
			//string onlyColor = this.RandColor(rand);
 | 
			
		||||
			string type1 = string.Format("<div id=\"Trait1\" style=\"box-shadow:5px 5px 5px 0 {0}\">\n", onlyColor);
 | 
			
		||||
			type1 = string.Concat(type1, "\t<table id=\"table\">\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t<tr><th colspan=\"2\">TraitName</th></tr>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t<tr>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t<td class=\"toRight iRBL iRTR pdd2 bgColorGray\">Sincere:</td>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t<td class=\"iRTL iRBR bgColorGray pdd3\">\n");
 | 
			
		||||
			type1 = string.Concat(type1, string.Format("\t\t\t\t<input class=\"iRTLl inWid\" name=\"True\" type=\"number\" max=\"100\" min=\"0\" value=\"0\" style=\"border: 1px solid {0};box-shadow: 0 0 7px 0 {0} inset\"><span class=\"fR\">(0-100)</span><br>\n", onlyColor));
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t\t<input type=\"radio\" name=\"true\" value=\"100\">True<span class=\"fR\">(100)</span><br>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t\t<input type=\"radio\" name=\"false\" value=\"0\">False<span class=\"fR\">(0)</span>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t</td>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t</tr>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t<tr>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t<td class=\"toRight iRTL pdd2 bgColorGray\">Dissimulated:</td>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t<td class=\"iRTR bgColorGray pdd3\">\n");
 | 
			
		||||
			type1 = string.Concat(type1, string.Format("\t\t\t\t<input class=\"inWid\" name=\"True\" type=\"number\" max=\"100\" min=\"0\" value=\"100\" style=\"border: 1px solid {0};box-shadow: 0 0 7px 0 {0} inset\"><span class=\"fR\">(0-100)</span><br>\n", onlyColor));
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t\t<input type=\"radio\" name=\"true\" value=\"100\">True<span class=\"fR\">(100)</span><br>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t\t<input type=\"radio\" name=\"false\" value=\"0\">False<span class=\"fR\">(0)</span>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t</td>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t</tr>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t<tr>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t<td class=\"toRight iRBLb pdd2 bgColorGray\">Opinion:</td>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t<td class=\"pdd0\">\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t\t<select name=\"selection\" class=\"bSN selFix\">\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t\t\t<option value=\"positive\">Positive</option>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t\t\t<option value=\"neutral\">Neutral</option>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t\t\t<option value=\"negative\">Negative</option>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t\t</select>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t</td>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t</tr>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t</table>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "</div>");
 | 
			
		||||
 | 
			
		||||
			return type1;
 | 
			
		||||
		}
 | 
			
		||||
		public string Type2(string onlyColor)
 | 
			
		||||
		{
 | 
			
		||||
			//string onlyColor = this.RandColor(rand);
 | 
			
		||||
			string type1 = string.Format("<div id=\"Trait2\" style=\"box-shadow:-5px 5px 5px 0 {0}\">\n", onlyColor);
 | 
			
		||||
			type1 = string.Concat(type1, "\t<table id=\"table\">\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t<tr><th colspan=\"2\">TraitName</th></tr>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t<tr>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t<td class=\"toRight iRBL iRTR pdd2 bgColorGray\">Sincere:</td>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t<td class=\"iRTL iRBR bgColorGray pdd3\">\n");
 | 
			
		||||
			type1 = string.Concat(type1, string.Format("\t\t\t\t<input class=\"iRTLl inWid\" name=\"True\" type=\"number\" max=\"100\" min=\"0\" value=\"0\" style=\"border: 1px solid {0};box-shadow: 0 0 7px 0 {0} inset\"><span class=\"fR\">(0-100)</span><br>\n", onlyColor));
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t\t<input type=\"radio\" name=\"true\" value=\"100\">True<span class=\"fR\">(100)</span><br>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t\t<input type=\"radio\" name=\"false\" value=\"0\">False<span class=\"fR\">(0)</span>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t</td>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t</tr>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t<tr>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t<td class=\"toRight iRTL pdd2 bgColorGray\">Dissimulated:</td>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t<td class=\"iRTR bgColorGray pdd3\">\n");
 | 
			
		||||
			type1 = string.Concat(type1, string.Format("\t\t\t\t<input class=\"inWid\" name=\"True\" type=\"number\" max=\"100\" min=\"0\" value=\"100\" style=\"border: 1px solid {0};box-shadow: 0 0 7px 0 {0} inset\"><span class=\"fR\">(0-100)</span><br>\n", onlyColor));
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t\t<input type=\"radio\" name=\"true\" value=\"100\">True<span class=\"fR\">(100)</span><br>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t\t<input type=\"radio\" name=\"false\" value=\"0\">False<span class=\"fR\">(0)</span>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t</td>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t</tr>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t<tr>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t<td class=\"toRight pdd2 bgColorGray\">Opinion:</td>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t<td class=\"pdd0\">\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t\t<select name=\"selection\" class=\"bSN iRBRb selFix\">\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t\t\t<option value=\"positive\">Positive</option>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t\t\t<option value=\"neutral\">Neutral</option>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t\t\t<option value=\"negative\">Negative</option>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t\t</select>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t</td>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t</tr>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t</table>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "</div>");
 | 
			
		||||
 | 
			
		||||
			return type1;
 | 
			
		||||
		}
 | 
			
		||||
		public string Type3(string onlyColor)
 | 
			
		||||
		{
 | 
			
		||||
			//string onlyColor = this.RandColor(rand);
 | 
			
		||||
			string type1 = string.Format("<div id=\"Trait3\" style=\"box-shadow:5px -5px 5px 0 {0}\">\n", onlyColor);
 | 
			
		||||
			type1 = string.Concat(type1, "\t<table id=\"table\">\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t<tr><th colspan=\"2\">TraitName</th></tr>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t<tr>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t<td class=\"toRight iRBL iRTR pdd2 bgColorGray\">Sincere:</td>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t<td class=\"iRTL iRBR bgColorGray pdd3\">\n");
 | 
			
		||||
			type1 = string.Concat(type1, string.Format("\t\t\t\t<input class=\"iRTLl inWid\" name=\"True\" type=\"number\" max=\"100\" min=\"0\" value=\"0\" style=\"border: 1px solid {0};box-shadow: 0 0 7px 0 {0} inset\"><span class=\"fR\">(0-100)</span><br>\n", onlyColor));
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t\t<input type=\"radio\" name=\"true\" value=\"100\">True<span class=\"fR\">(100)</span><br>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t\t<input type=\"radio\" name=\"false\" value=\"0\">False<span class=\"fR\">(0)</span>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t</td>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t</tr>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t<tr>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t<td class=\"toRight iRTL pdd2 bgColorGray\">Dissimulated:</td>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t<td class=\"iRTR bgColorGray pdd3\">\n");
 | 
			
		||||
			type1 = string.Concat(type1, string.Format("\t\t\t\t<input class=\"inWid\" name=\"True\" type=\"number\" max=\"100\" min=\"0\" value=\"100\" style=\"border: 1px solid {0};box-shadow: 0 0 7px 0 {0} inset\"><span class=\"fR\">(0-100)</span><br>\n", onlyColor));
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t\t<input type=\"radio\" name=\"true\" value=\"100\">True<span class=\"fR\">(100)</span><br>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t\t<input type=\"radio\" name=\"false\" value=\"0\">False<span class=\"fR\">(0)</span>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t</td>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t</tr>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t<tr>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t<td class=\"toRight pdd2 bgColorGray\">Opinion:</td>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t<td class=\"pdd0\">\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t\t<select name=\"selection\" class=\"bSN iRBRb selFix\">\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t\t\t<option value=\"positive\">Positive</option>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t\t\t<option value=\"neutral\">Neutral</option>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t\t\t<option value=\"negative\">Negative</option>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t\t</select>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t</td>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t</tr>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t</table>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "</div>");
 | 
			
		||||
 | 
			
		||||
			return type1;
 | 
			
		||||
		}
 | 
			
		||||
		public string Type4(string onlyColor)
 | 
			
		||||
		{
 | 
			
		||||
			//string onlyColor = this.RandColor(rand);
 | 
			
		||||
			string type1 = string.Format("<div id=\"Trait4\" style=\"box-shadow:-5px -5px 5px 0 {0}\">\n", onlyColor);
 | 
			
		||||
			type1 = string.Concat(type1, "\t<table id=\"table\">\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t<tr><th colspan=\"2\">TraitName</th></tr>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t<tr>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t<td class=\"toRight iRBL iRTR pdd2 bgColorGray\">Sincere:</td>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t<td class=\"iRTL iRBR bgColorGray pdd3\">\n");
 | 
			
		||||
			type1 = string.Concat(type1, string.Format("\t\t\t\t<input class=\"iRTLl inWid\" name=\"True\" type=\"number\" max=\"100\" min=\"0\" value=\"0\" style=\"border: 1px solid {0};box-shadow: 0 0 7px 0 {0} inset\"><span class=\"fR\">(0-100)</span><br>\n", onlyColor));
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t\t<input type=\"radio\" name=\"true\" value=\"100\">True<span class=\"fR\">(100)</span><br>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t\t<input type=\"radio\" name=\"false\" value=\"0\">False<span class=\"fR\">(0)</span>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t</td>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t</tr>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t<tr>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t<td class=\"toRight iRTL pdd2 bgColorGray\">Dissimulated:</td>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t<td class=\"iRTR bgColorGray pdd3\">\n");
 | 
			
		||||
			type1 = string.Concat(type1, string.Format("\t\t\t\t<input class=\"inWid\" name=\"True\" type=\"number\" max=\"100\" min=\"0\" value=\"100\" style=\"border: 1px solid {0};box-shadow: 0 0 7px 0 {0} inset\"><span class=\"fR\">(0-100)</span><br>\n", onlyColor));
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t\t<input type=\"radio\" name=\"true\" value=\"100\">True<span class=\"fR\">(100)</span><br>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t\t<input type=\"radio\" name=\"false\" value=\"0\">False<span class=\"fR\">(0)</span>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t</td>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t</tr>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t<tr>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t<td class=\"toRight iRBLb pdd2 bgColorGray\">Opinion:</td>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t<td class=\"pdd0\">\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t\t<select name=\"selection\" class=\"bSN selFix\">\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t\t\t<option value=\"positive\">Positive</option>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t\t\t<option value=\"neutral\">Neutral</option>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t\t\t<option value=\"negative\">Negative</option>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t\t</select>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t\t</td>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t\t</tr>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "\t</table>\n");
 | 
			
		||||
			type1 = string.Concat(type1, "</div>");
 | 
			
		||||
 | 
			
		||||
			return type1;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public Color GetColour(Random random, int outerSel = 1, int version = 0)
 | 
			
		||||
		{
 | 
			
		||||
			//random = new Random(15);//15
 | 
			
		||||
			//Random random = new Random(12);//15
 | 
			
		||||
			Color color = new Color();
 | 
			
		||||
			//int versionCount = 3;
 | 
			
		||||
			int colorCount = 1;
 | 
			
		||||
 | 
			
		||||
			//int imageWidth = 680;
 | 
			
		||||
			//int imageHeight = 100;
 | 
			
		||||
			//int spacing = 2;
 | 
			
		||||
 | 
			
		||||
			Color[] baseColors = {
 | 
			
		||||
				Color.FromArgb(255, 128, 0),
 | 
			
		||||
				Color.FromArgb(128, 255, 64),
 | 
			
		||||
				Color.FromArgb(64, 128, 255)};
 | 
			
		||||
 | 
			
		||||
			float[] saturation = { 1.0f, 0.7f, 0.3f };
 | 
			
		||||
			float[] luminance = { 0.45f, 0.7f, 0.4f };
 | 
			
		||||
 | 
			
		||||
			float[] hueStart = { 0.9f, 0.2f, 0.6f };
 | 
			
		||||
			float[] hueEnd = { 0.1f, 0.5f, 0.9f };
 | 
			
		||||
 | 
			
		||||
			Color[] mixColor1 =
 | 
			
		||||
			{
 | 
			
		||||
				Color.FromArgb(255, 0, 33),
 | 
			
		||||
				Color.FromArgb(255, 100, 33),
 | 
			
		||||
				Color.FromArgb(128, 0, 33),
 | 
			
		||||
			};
 | 
			
		||||
 | 
			
		||||
			Color[] mixColor2 =
 | 
			
		||||
			{
 | 
			
		||||
				Color.FromArgb(255, 255, 0),
 | 
			
		||||
				Color.FromArgb(255, 255, 100),
 | 
			
		||||
				Color.FromArgb(255, 128, 0),
 | 
			
		||||
			};
 | 
			
		||||
 | 
			
		||||
			Color[] mixColor3 = 
 | 
			
		||||
			{
 | 
			
		||||
				Color.FromArgb(0, 100, 255),
 | 
			
		||||
				Color.FromArgb(100, 150, 255),
 | 
			
		||||
				Color.FromArgb(0, 80, 128),
 | 
			
		||||
			};
 | 
			
		||||
 | 
			
		||||
			Color[] addColor1 =
 | 
			
		||||
			{
 | 
			
		||||
				Color.FromArgb(150, 0, 0),
 | 
			
		||||
				Color.FromArgb(200, 20, 0),
 | 
			
		||||
				Color.FromArgb(128, 0, 33),
 | 
			
		||||
			};
 | 
			
		||||
 | 
			
		||||
			Color[] addColor2 =
 | 
			
		||||
			{
 | 
			
		||||
				Color.FromArgb(0, 150, 0),
 | 
			
		||||
				Color.FromArgb(200, 200, 20),
 | 
			
		||||
				Color.FromArgb(255, 128, 0),
 | 
			
		||||
			};
 | 
			
		||||
 | 
			
		||||
			Color[] addColor3 = 
 | 
			
		||||
			{
 | 
			
		||||
				Color.FromArgb(0, 0, 150),
 | 
			
		||||
				Color.FromArgb(20, 20, 200),
 | 
			
		||||
				Color.FromArgb(0, 80, 128),
 | 
			
		||||
			};
 | 
			
		||||
 | 
			
		||||
			Color[][] gradients = 
 | 
			
		||||
			{
 | 
			
		||||
				new Color[]
 | 
			
		||||
				{
 | 
			
		||||
					Color.FromArgb(255, 0, 128),
 | 
			
		||||
					Color.FromArgb(255, 255, 0),
 | 
			
		||||
					Color.FromArgb(0, 255, 255),
 | 
			
		||||
				},
 | 
			
		||||
 | 
			
		||||
				new Color[]
 | 
			
		||||
				{
 | 
			
		||||
					Color.FromArgb(200, 0, 33),
 | 
			
		||||
					Color.FromArgb(255, 200, 0),
 | 
			
		||||
					Color.FromArgb(0, 100, 200),
 | 
			
		||||
				},
 | 
			
		||||
 | 
			
		||||
				new Color[]
 | 
			
		||||
				{
 | 
			
		||||
					Color.FromArgb(255, 0, 33),
 | 
			
		||||
					Color.FromArgb(255, 255, 0),
 | 
			
		||||
					Color.FromArgb(0, 255, 0),
 | 
			
		||||
					Color.FromArgb(255, 255, 0),
 | 
			
		||||
				}
 | 
			
		||||
			};
 | 
			
		||||
 | 
			
		||||
			float[] offsetAngles1 = { 15, 180, 120 };
 | 
			
		||||
 | 
			
		||||
			float[] offsetAngles2 = { 30, 0, 240 };
 | 
			
		||||
 | 
			
		||||
			float[] angleRanges1 = { 15, 40f, 40 };
 | 
			
		||||
 | 
			
		||||
			float[] angleRanges2 = { 15, 40f, 40 };
 | 
			
		||||
 | 
			
		||||
			float[] angleRanges3 = { 15, 0, 40 };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
			switch (outerSel)
 | 
			
		||||
			{
 | 
			
		||||
				case 1:
 | 
			
		||||
					{ color = ProceduralPalette.ProceduralPalette.GenerateColors_Uniform(colorCount).First(); } break;
 | 
			
		||||
				case 2:
 | 
			
		||||
					{ color = ProceduralPalette.ProceduralPalette.GenerateColors_RandomWalk(colorCount, baseColors[version], 0.2f, 0.4f).First(); } break;
 | 
			
		||||
				case 3:
 | 
			
		||||
					{ color = ProceduralPalette.ProceduralPalette.GenerateColors_RandomMix(colorCount, mixColor1[version], mixColor2[version], mixColor3[version], 0.1f, true).First(); } break;
 | 
			
		||||
				case 4:
 | 
			
		||||
					{ color = ProceduralPalette.ProceduralPalette.GenerateColors_RandomMix(colorCount, mixColor1[version], mixColor2[version], mixColor3[version], 0.5f, true).First(); } break;
 | 
			
		||||
				case 5:
 | 
			
		||||
					{ color = ProceduralPalette.ProceduralPalette.GenerateColors_RandomMix(colorCount, mixColor1[version], mixColor2[version], mixColor3[version], 0.9f, true).First(); } break;
 | 
			
		||||
				case 6:
 | 
			
		||||
					{ color = ProceduralPalette.ProceduralPalette.GenerateColors_RandomMix(colorCount, mixColor1[version], mixColor2[version], mixColor3[version], 0.1f, false).First(); } break;
 | 
			
		||||
				case 7:
 | 
			
		||||
					{ color = ProceduralPalette.ProceduralPalette.GenerateColors_RandomMix(colorCount, mixColor1[version], mixColor2[version], mixColor3[version], 0.5f, false).First(); } break;
 | 
			
		||||
				case 8:
 | 
			
		||||
					{ color = ProceduralPalette.ProceduralPalette.GenerateColors_RandomMix(colorCount, mixColor1[version], mixColor2[version], mixColor3[version], 0.9f, false).First(); } break;
 | 
			
		||||
				case 9:
 | 
			
		||||
					{ color = ProceduralPalette.ProceduralPalette.GenerateColors_RandomAdd(colorCount, addColor1[version], addColor2[version], addColor3[version], 0.1f).First(); } break;
 | 
			
		||||
				case 10:
 | 
			
		||||
					{ color = ProceduralPalette.ProceduralPalette.GenerateColors_RandomAdd(colorCount, addColor1[version], addColor2[version], addColor3[version], 0.5f).First(); } break;
 | 
			
		||||
				case 11:
 | 
			
		||||
					{ color = ProceduralPalette.ProceduralPalette.GenerateColors_RandomAdd(colorCount, addColor1[version], addColor2[version], addColor3[version], 0.9f).First(); } break;
 | 
			
		||||
				case 12:
 | 
			
		||||
					{ color = ProceduralPalette.ProceduralPalette.GenerateColors_Offset(colorCount, baseColors[version], 0.4f).First(); } break;
 | 
			
		||||
				case 13:
 | 
			
		||||
					{ color = ProceduralPalette.ProceduralPalette.GenerateColors_Hue(colorCount, saturation[version], luminance[version]).First(); } break;
 | 
			
		||||
				case 14:
 | 
			
		||||
					{ color = ProceduralPalette.ProceduralPalette.GenerateColors_Saturation(colorCount, hueStart[version], luminance[version]).First(); } break;
 | 
			
		||||
				case 15:
 | 
			
		||||
					{ color = ProceduralPalette.ProceduralPalette.GenerateColors_Luminance(colorCount, hueStart[version], saturation[version]).First(); } break;
 | 
			
		||||
				case 16:
 | 
			
		||||
					{ color = ProceduralPalette.ProceduralPalette.GenerateColors_SaturationLuminance(colorCount, hueStart[version]).First(); } break;
 | 
			
		||||
				case 17:
 | 
			
		||||
					{ color = ProceduralPalette.ProceduralPalette.GenerateColors_GoldenRatioRainbow(colorCount, saturation[version], luminance[version]).First(); } break;
 | 
			
		||||
				case 18:
 | 
			
		||||
					{ color = ProceduralPalette.ProceduralPalette.GenerateColors_GoldenRatioGradient(colorCount, gradients[0], saturation[0], luminance[0]).First(); } break;
 | 
			
		||||
				case 19:
 | 
			
		||||
					{ color = ProceduralPalette.ProceduralPalette.GenerateColors_JitteredRainbow(colorCount, 0, 1, saturation[version], luminance[version], true).First(); } break;
 | 
			
		||||
				case 20:
 | 
			
		||||
					{ color = ProceduralPalette.ProceduralPalette.GenerateColors_JitteredRainbow(colorCount, hueStart[version], hueEnd[version], saturation[version], luminance[version], true).First(); } break;
 | 
			
		||||
				case 21:
 | 
			
		||||
					{ color = ProceduralPalette.ProceduralPalette.GenerateColors_JitteredRainbow(colorCount, 0, 1, saturation[version], luminance[version], false).First(); } break;
 | 
			
		||||
				case 22:
 | 
			
		||||
					{ color = ProceduralPalette.ProceduralPalette.GenerateColors_HueRange(colorCount, hueStart[version], hueEnd[version], saturation[version], luminance[version]).First(); } break;
 | 
			
		||||
				case 23:
 | 
			
		||||
					{
 | 
			
		||||
						color = ProceduralPalette.ProceduralPalette.GenerateColors_Harmony(colorCount,
 | 
			
		||||
										offsetAngles1[version], offsetAngles2[version],
 | 
			
		||||
										angleRanges1[version], angleRanges2[version], angleRanges3[version],
 | 
			
		||||
										saturation[version], luminance[version]).First();
 | 
			
		||||
					} break;
 | 
			
		||||
				case 24:
 | 
			
		||||
					{
 | 
			
		||||
						color = ProceduralPalette.ProceduralPalette.GenerateColors_Harmony2(colorCount,
 | 
			
		||||
										offsetAngles1[version], offsetAngles2[version],
 | 
			
		||||
										angleRanges1[version], angleRanges2[version], angleRanges3[version],
 | 
			
		||||
										saturation[version], 0.2f,
 | 
			
		||||
										luminance[version], 0.5f).First();
 | 
			
		||||
					} break;
 | 
			
		||||
				default:
 | 
			
		||||
					break;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			return color;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										36
									
								
								ColGen/Properties/AssemblyInfo.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								ColGen/Properties/AssemblyInfo.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,36 @@
 | 
			
		||||
using System.Reflection;
 | 
			
		||||
using System.Runtime.CompilerServices;
 | 
			
		||||
using System.Runtime.InteropServices;
 | 
			
		||||
 | 
			
		||||
// General Information about an assembly is controlled through the following 
 | 
			
		||||
// set of attributes. Change these attribute values to modify the information
 | 
			
		||||
// associated with an assembly.
 | 
			
		||||
[assembly: AssemblyTitle("ColGen")]
 | 
			
		||||
[assembly: AssemblyDescription("")]
 | 
			
		||||
[assembly: AssemblyConfiguration("")]
 | 
			
		||||
[assembly: AssemblyCompany("")]
 | 
			
		||||
[assembly: AssemblyProduct("ColGen")]
 | 
			
		||||
[assembly: AssemblyCopyright("Copyright ©  2017")]
 | 
			
		||||
[assembly: AssemblyTrademark("")]
 | 
			
		||||
[assembly: AssemblyCulture("")]
 | 
			
		||||
 | 
			
		||||
// Setting ComVisible to false makes the types in this assembly not visible 
 | 
			
		||||
// to COM components.  If you need to access a type in this assembly from 
 | 
			
		||||
// COM, set the ComVisible attribute to true on that type.
 | 
			
		||||
[assembly: ComVisible(false)]
 | 
			
		||||
 | 
			
		||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
 | 
			
		||||
[assembly: Guid("fac98cd8-dbc0-4d93-899c-4105aebde85e")]
 | 
			
		||||
 | 
			
		||||
// Version information for an assembly consists of the following four values:
 | 
			
		||||
//
 | 
			
		||||
//      Major Version
 | 
			
		||||
//      Minor Version 
 | 
			
		||||
//      Build Number
 | 
			
		||||
//      Revision
 | 
			
		||||
//
 | 
			
		||||
// 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.0.0.0")]
 | 
			
		||||
[assembly: AssemblyFileVersion("1.0.0.0")]
 | 
			
		||||
							
								
								
									
										757
									
								
								ColGen/func.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										757
									
								
								ColGen/func.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,757 @@
 | 
			
		||||
/**
 | 
			
		||||
	This is tutorial code that goes with the article http://devmag.org.za/2012/07/29/how-to-choose-colours-procedurally-algorithms/.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Drawing;
 | 
			
		||||
using System.Drawing.Imaging;
 | 
			
		||||
 | 
			
		||||
using Christo.GFX.Conversion;
 | 
			
		||||
 | 
			
		||||
namespace ProceduralPalette
 | 
			
		||||
{
 | 
			
		||||
	public static class RandomExtensions
 | 
			
		||||
	{
 | 
			
		||||
		public static int NextByte(this Random random)
 | 
			
		||||
		{
 | 
			
		||||
			return ProceduralPalette.FloatToByte(random.NextDouble());
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public static float NextFloat(this Random random)
 | 
			
		||||
		{
 | 
			
		||||
			return (float) random.NextDouble();
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	class ProceduralPalette
 | 
			
		||||
	{
 | 
			
		||||
 | 
			
		||||
		private static Random random = new Random();
 | 
			
		||||
 | 
			
		||||
		public static List<Color> GenerateColors_Uniform(int colorCount)
 | 
			
		||||
		{
 | 
			
		||||
			List<Color> colors = new List<Color>();
 | 
			
		||||
 | 
			
		||||
			for (int i = 0; i < colorCount; i++)
 | 
			
		||||
			{
 | 
			
		||||
				Color newColor = Color.FromArgb(
 | 
			
		||||
					255,
 | 
			
		||||
					random.NextByte(),
 | 
			
		||||
					random.NextByte(),
 | 
			
		||||
					random.NextByte());
 | 
			
		||||
 | 
			
		||||
				colors.Add(newColor);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			return colors;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public static List<Color> GenerateColors_Harmony(
 | 
			
		||||
			int colorCount,
 | 
			
		||||
			float offsetAngle1,
 | 
			
		||||
			float offsetAngle2,
 | 
			
		||||
			float rangeAngle0,
 | 
			
		||||
			float rangeAngle1,
 | 
			
		||||
			float rangeAngle2,
 | 
			
		||||
			float saturation, float luminance)
 | 
			
		||||
		{
 | 
			
		||||
			List<Color> colors = new List<Color>();
 | 
			
		||||
 | 
			
		||||
			float referenceAngle = random.NextFloat() * 360;
 | 
			
		||||
 | 
			
		||||
			for (int i = 0; i < colorCount; i++)
 | 
			
		||||
			{
 | 
			
		||||
				float randomAngle = random.NextFloat() * (rangeAngle0 + rangeAngle1 + rangeAngle2);
 | 
			
		||||
				
 | 
			
		||||
				if (randomAngle > rangeAngle0)
 | 
			
		||||
				{
 | 
			
		||||
					if (randomAngle < rangeAngle0 + rangeAngle1)
 | 
			
		||||
					{
 | 
			
		||||
						randomAngle += offsetAngle1;
 | 
			
		||||
					}
 | 
			
		||||
					else
 | 
			
		||||
					{
 | 
			
		||||
						randomAngle += offsetAngle2;
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				HSL hslColor = new HSL(((referenceAngle + randomAngle) / 360.0f) % 1.0f, saturation, luminance);
 | 
			
		||||
 | 
			
		||||
				colors.Add(hslColor.Color);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			return colors;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public static List<Color> GenerateColors_Harmony2(
 | 
			
		||||
			int colorCount,
 | 
			
		||||
			float offsetAngle1,
 | 
			
		||||
			float offsetAngle2,
 | 
			
		||||
			float rangeAngle0,
 | 
			
		||||
			float rangeAngle1,
 | 
			
		||||
			float rangeAngle2,
 | 
			
		||||
			float saturation, float saturationRange,
 | 
			
		||||
			float luminance, float luminanceRange)
 | 
			
		||||
		{
 | 
			
		||||
			List<Color> colors = new List<Color>();
 | 
			
		||||
 | 
			
		||||
			float referenceAngle = random.NextFloat() * 360;
 | 
			
		||||
 | 
			
		||||
			for (int i = 0; i < colorCount; i++)
 | 
			
		||||
			{
 | 
			
		||||
				float randomAngle = random.NextFloat() * (rangeAngle0 + rangeAngle1 + rangeAngle2);
 | 
			
		||||
 | 
			
		||||
				if (randomAngle > rangeAngle0)
 | 
			
		||||
				{
 | 
			
		||||
					if (randomAngle < rangeAngle0 + rangeAngle1)
 | 
			
		||||
					{
 | 
			
		||||
						randomAngle += offsetAngle1;
 | 
			
		||||
					}
 | 
			
		||||
					else
 | 
			
		||||
					{
 | 
			
		||||
						randomAngle += offsetAngle2;
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				float newSaturation = saturation + (random.NextFloat() - 0.5f) * saturationRange;
 | 
			
		||||
				float newLuminance = luminance + +(random.NextFloat() - 0.5f) * luminanceRange;
 | 
			
		||||
 | 
			
		||||
				HSL hslColor = new HSL(((referenceAngle + randomAngle) / 360.0f) % 1.0f, newSaturation, newLuminance);
 | 
			
		||||
 | 
			
		||||
				colors.Add(hslColor.Color);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			return colors;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		public static List<Color> GenerateColors_RandomWalk(int colorCount, Color startColor, float min, float max)
 | 
			
		||||
		{
 | 
			
		||||
			List<Color> colors = new List<Color>();
 | 
			
		||||
 | 
			
		||||
			Color newColor = startColor;
 | 
			
		||||
 | 
			
		||||
			float range = max - min;
 | 
			
		||||
 | 
			
		||||
			for (int i = 0; i < colorCount; i++)
 | 
			
		||||
			{
 | 
			
		||||
				int rSign = random.Next(2) % 2 == 0 ? 1 : -1;
 | 
			
		||||
				int gSign = random.Next(2) % 2 == 0 ? 1 : -1;
 | 
			
		||||
				int bSign = random.Next(2) % 2 == 0 ? 1 : -1;
 | 
			
		||||
 | 
			
		||||
				newColor = Color.FromArgb(
 | 
			
		||||
					255,
 | 
			
		||||
					FloatToByte(ByteToFloat(newColor.R) + rSign * (min + random.NextDouble() * range)),
 | 
			
		||||
					FloatToByte(ByteToFloat(newColor.G) + rSign * (min + random.NextDouble() * range)),
 | 
			
		||||
					FloatToByte(ByteToFloat(newColor.B) + rSign * (min + random.NextDouble() * range)));
 | 
			
		||||
 | 
			
		||||
				colors.Add(newColor);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			return colors;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public static List<Color> GenerateColors_RandomMix(int colorCount, Color color1, Color color2, Color color3, float greyControl, bool paint)
 | 
			
		||||
		{
 | 
			
		||||
			List<Color> colors = new List<Color>();
 | 
			
		||||
 | 
			
		||||
			for (int i = 0; i < colorCount; i++)
 | 
			
		||||
			{
 | 
			
		||||
				Color newColor;
 | 
			
		||||
				if (paint)
 | 
			
		||||
				{
 | 
			
		||||
					newColor = RandomMixHSL(color1, color2, color3, greyControl);
 | 
			
		||||
				}
 | 
			
		||||
				else
 | 
			
		||||
				{
 | 
			
		||||
					newColor = RandomMix(color1, color2, color3, greyControl);
 | 
			
		||||
				}
 | 
			
		||||
				colors.Add(newColor);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			return colors;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public static List<Color> GenerateColors_RandomAdd(int colorCount, Color color1, Color color2, Color color3, float nonGrayBias)
 | 
			
		||||
		{
 | 
			
		||||
			List<Color> colors = new List<Color>();
 | 
			
		||||
 | 
			
		||||
			for (int i = 0; i < colorCount; i++)
 | 
			
		||||
			{
 | 
			
		||||
				Color newColor = RandomAdd(color1, color2, color3, nonGrayBias);
 | 
			
		||||
 | 
			
		||||
				colors.Add(newColor);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			return colors;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public static List<Color> GenerateColors_Offset(int colorCount, Color color, float maxRange)
 | 
			
		||||
		{
 | 
			
		||||
			List<Color> colors = new List<Color>();
 | 
			
		||||
 | 
			
		||||
			for (int i = 0; i < colorCount; i++)
 | 
			
		||||
			{
 | 
			
		||||
				Color newColor = Color.FromArgb(
 | 
			
		||||
					255,
 | 
			
		||||
					FloatToByte((ByteToFloat(color.R) + random.NextDouble() * 2 * maxRange - maxRange)),
 | 
			
		||||
					FloatToByte((ByteToFloat(color.G) + random.NextDouble() * 2 * maxRange - maxRange)),
 | 
			
		||||
					FloatToByte((ByteToFloat(color.B) + random.NextDouble() * 2 * maxRange - maxRange)));
 | 
			
		||||
 | 
			
		||||
				colors.Add(newColor);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			return colors;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public static List<Color> GenerateColors_Hue(int colorCount, float saturation, float luminance)
 | 
			
		||||
		{
 | 
			
		||||
			List<Color> colors = new List<Color>();
 | 
			
		||||
 | 
			
		||||
			for (int i = 0; i < colorCount; i++)
 | 
			
		||||
			{
 | 
			
		||||
				HSL hslColor = new HSL(random.NextDouble(), saturation, luminance);
 | 
			
		||||
 | 
			
		||||
				colors.Add(hslColor.Color);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			return colors;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public static List<Color> GenerateColors_Saturation(int colorCount, float hue, float luminance)
 | 
			
		||||
		{
 | 
			
		||||
			List<Color> colors = new List<Color>();
 | 
			
		||||
 | 
			
		||||
			for (int i = 0; i < colorCount; i++)
 | 
			
		||||
			{
 | 
			
		||||
				HSL hslColor = new HSL(hue, random.NextDouble(), luminance);
 | 
			
		||||
 | 
			
		||||
				colors.Add(hslColor.Color);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			return colors;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public static List<Color> GenerateColors_Luminance(int colorCount, float hue, float saturation)
 | 
			
		||||
		{
 | 
			
		||||
			List<Color> colors = new List<Color>();
 | 
			
		||||
 | 
			
		||||
			for (int i = 0; i < colorCount; i++)
 | 
			
		||||
			{
 | 
			
		||||
				HSL hslColor = new HSL(hue, saturation, random.NextDouble());
 | 
			
		||||
 | 
			
		||||
				colors.Add(hslColor.Color);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			return colors;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public static List<Color> GenerateColors_SaturationLuminance(int colorCount, float hue)
 | 
			
		||||
		{
 | 
			
		||||
			List<Color> colors = new List<Color>();
 | 
			
		||||
 | 
			
		||||
			for (int i = 0; i < colorCount; i++)
 | 
			
		||||
			{
 | 
			
		||||
				HSL hslColor = new HSL(hue, random.NextDouble(), random.NextDouble());
 | 
			
		||||
 | 
			
		||||
				colors.Add(hslColor.Color);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			return colors;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public static List<Color> GenerateColors_GoldenRatioRainbow(int colorCount, float saturation, float luminance)
 | 
			
		||||
		{
 | 
			
		||||
			List<Color> colors = new List<Color>();
 | 
			
		||||
 | 
			
		||||
			float goldenRatioConjugate = 0.618033988749895f;
 | 
			
		||||
			float currentHue = (float) random.NextDouble();
 | 
			
		||||
 | 
			
		||||
			
 | 
			
		||||
			for (int i = 0; i < colorCount; i++)
 | 
			
		||||
			{
 | 
			
		||||
				HSL hslColor = new HSL(currentHue, saturation, luminance);
 | 
			
		||||
 | 
			
		||||
				colors.Add(hslColor.Color);
 | 
			
		||||
 | 
			
		||||
				currentHue += goldenRatioConjugate;
 | 
			
		||||
				currentHue %= 1.0f;
 | 
			
		||||
				
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			return colors;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public static List<Color> GenerateColors_GoldenRatioGradient(int colorCount, Color[] gradient, float saturation, float luminance)
 | 
			
		||||
		{
 | 
			
		||||
			List<Color> colors = new List<Color>();
 | 
			
		||||
 | 
			
		||||
			float goldenRatioConjugate = 0.618033988749895f;
 | 
			
		||||
			float currentHue = (float)random.NextDouble();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
			for (int i = 0; i < colorCount; i++)
 | 
			
		||||
			{
 | 
			
		||||
				HSL hslColor = new HSL(currentHue, saturation, luminance);
 | 
			
		||||
 | 
			
		||||
				Color newColor = SampleLinearGradient(gradient, currentHue);
 | 
			
		||||
 | 
			
		||||
				colors.Add(newColor);
 | 
			
		||||
 | 
			
		||||
				currentHue += goldenRatioConjugate;
 | 
			
		||||
				currentHue %= 1.0f;
 | 
			
		||||
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			return colors;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public static List<Color> GenerateColors_HueRange(int colorCount, float startHue, float endHue, float saturation, float luminance)
 | 
			
		||||
		{
 | 
			
		||||
			List<Color> colors = new List<Color>();
 | 
			
		||||
			float hueRange = endHue - startHue;
 | 
			
		||||
 | 
			
		||||
			if(hueRange < 0)
 | 
			
		||||
			{
 | 
			
		||||
				hueRange += 1.0f;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			for (int i = 0; i < colorCount; i++)
 | 
			
		||||
			{
 | 
			
		||||
				float newHue = (float) (hueRange * random.NextDouble() + startHue);
 | 
			
		||||
 | 
			
		||||
				if(newHue > 1.0)
 | 
			
		||||
				{
 | 
			
		||||
					newHue -= 1.0f;
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				HSL hslColor = new HSL(newHue, saturation, luminance);
 | 
			
		||||
 | 
			
		||||
				colors.Add(hslColor.Color);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			return colors;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public static List<Color> GenerateColors_JitteredRainbow(int colorCount, float startHue, float endHue, float saturation, float luminance, bool jitter)
 | 
			
		||||
		{
 | 
			
		||||
			List<Color> colors = new List<Color>();
 | 
			
		||||
			float hueRange = endHue - startHue;
 | 
			
		||||
 | 
			
		||||
			if (hueRange < 0)
 | 
			
		||||
			{
 | 
			
		||||
				hueRange = 1 + hueRange;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			float cellRange = hueRange / colorCount;
 | 
			
		||||
			float cellOffset = (float) (random.NextDouble() * cellRange);
 | 
			
		||||
 | 
			
		||||
			for (int i = 0; i < colorCount; i++)
 | 
			
		||||
			{
 | 
			
		||||
				float newHue;
 | 
			
		||||
				if (jitter)
 | 
			
		||||
				{
 | 
			
		||||
					newHue = (float)(cellRange * i + random.NextDouble() * cellRange + startHue);
 | 
			
		||||
				}
 | 
			
		||||
				else
 | 
			
		||||
				{
 | 
			
		||||
					newHue = (cellRange * i + cellOffset + startHue);
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				if(newHue > 1)
 | 
			
		||||
				{
 | 
			
		||||
					newHue -= 1.0f;
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				HSL hslColor = new HSL(newHue, saturation, luminance);
 | 
			
		||||
 | 
			
		||||
				colors.Add(hslColor.Color);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			return colors;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public static int FloatToByte(double value)
 | 
			
		||||
		{
 | 
			
		||||
			int byteValue = (int)(value * 256);
 | 
			
		||||
 | 
			
		||||
			byteValue = SaturateByte(byteValue);
 | 
			
		||||
 | 
			
		||||
			return byteValue;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		private static int SaturateByte(int byteValue)
 | 
			
		||||
		{
 | 
			
		||||
			if (byteValue > 255)
 | 
			
		||||
			{
 | 
			
		||||
				byteValue = 255;
 | 
			
		||||
			}
 | 
			
		||||
			else if (byteValue < 0)
 | 
			
		||||
			{
 | 
			
		||||
				byteValue = 0;
 | 
			
		||||
			}
 | 
			
		||||
			return byteValue;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public static float ByteToFloat(int byteValue)
 | 
			
		||||
		{
 | 
			
		||||
			float floatValue = byteValue / 256.0f;
 | 
			
		||||
 | 
			
		||||
			return floatValue;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public static Color RandomMix(Color color1, Color color2, Color color3, float greyControl)
 | 
			
		||||
		{
 | 
			
		||||
			int randomIndex = random.NextByte() % 3;
 | 
			
		||||
 | 
			
		||||
			float mixRatio1 = (randomIndex == 0) ? random.NextFloat() * greyControl : random.NextFloat();
 | 
			
		||||
			float mixRatio2 = (randomIndex == 1) ? random.NextFloat() * greyControl : random.NextFloat();
 | 
			
		||||
			float mixRatio3 = (randomIndex == 2) ? random.NextFloat() * greyControl : random.NextFloat();
 | 
			
		||||
 | 
			
		||||
			float sum = mixRatio1 + mixRatio2 + mixRatio3;
 | 
			
		||||
 | 
			
		||||
			mixRatio1 /= sum;
 | 
			
		||||
			mixRatio2 /= sum;
 | 
			
		||||
			mixRatio3 /= sum;
 | 
			
		||||
 | 
			
		||||
			return Color.FromArgb(
 | 
			
		||||
				255,
 | 
			
		||||
				(byte)(mixRatio1 * color1.R + mixRatio2 * color2.R + mixRatio3 * color3.R),
 | 
			
		||||
				(byte)(mixRatio1 * color1.G + mixRatio2 * color2.G + mixRatio3 * color3.G),
 | 
			
		||||
				(byte)(mixRatio1 * color1.B + mixRatio2 * color2.B + mixRatio3 * color3.B));
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public static Color RandomMixHSL(Color color1, Color color2, Color color3, float greyControl)
 | 
			
		||||
		{
 | 
			
		||||
			int randomIndex = random.NextByte() % 3;
 | 
			
		||||
 | 
			
		||||
			float mixRatio1 = (randomIndex == 0) ? random.NextFloat() * greyControl : random.NextFloat();
 | 
			
		||||
			float mixRatio2 = (randomIndex == 1) ? random.NextFloat() * greyControl : random.NextFloat();
 | 
			
		||||
			float mixRatio3 = (randomIndex == 2) ? random.NextFloat() * greyControl : random.NextFloat();
 | 
			
		||||
 | 
			
		||||
			float sum = mixRatio1 + mixRatio2 + mixRatio3;
 | 
			
		||||
 | 
			
		||||
			mixRatio1 /= sum;
 | 
			
		||||
			mixRatio2 /= sum;
 | 
			
		||||
			mixRatio3 /= sum;
 | 
			
		||||
 | 
			
		||||
			HSL hsl1 = new HSL(color1);
 | 
			
		||||
			HSL hsl2 = new HSL(color2);
 | 
			
		||||
			HSL hsl3 = new HSL(color3);
 | 
			
		||||
 | 
			
		||||
			return new HSL(
 | 
			
		||||
				(mixRatio1 * hsl1.H + mixRatio2 * hsl2.H + mixRatio3 * hsl3.H),
 | 
			
		||||
				(mixRatio1 * hsl1.S + mixRatio2 * hsl2.S + mixRatio3 * hsl3.S),
 | 
			
		||||
				(mixRatio1 * hsl1.L + mixRatio2 * hsl2.L + mixRatio3 * hsl3.L)).Color;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public static Color RandomMixPaint(Color color1, Color color2, Color color3, float greyControl)
 | 
			
		||||
		{
 | 
			
		||||
			int randomIndex = random.NextByte() % 3;
 | 
			
		||||
 | 
			
		||||
			float mixRatio1 = (randomIndex == 0) ? random.NextFloat() * greyControl : random.NextFloat();
 | 
			
		||||
			float mixRatio2 = (randomIndex == 1) ? random.NextFloat() * greyControl : random.NextFloat();
 | 
			
		||||
			float mixRatio3 = (randomIndex == 2) ? random.NextFloat() * greyControl : random.NextFloat();
 | 
			
		||||
 | 
			
		||||
			float sum = mixRatio1 + mixRatio2 + mixRatio3;
 | 
			
		||||
 | 
			
		||||
			mixRatio1 /= sum;
 | 
			
		||||
			mixRatio2 /= sum;
 | 
			
		||||
			mixRatio3 /= sum;
 | 
			
		||||
 | 
			
		||||
			return Color.FromArgb(
 | 
			
		||||
				255,
 | 
			
		||||
				255 - (byte)(mixRatio1 * (255 - color1.R) + mixRatio2 * (255 - color2.R) + mixRatio3 * (255 - color3.R)),
 | 
			
		||||
				255 - (byte)(mixRatio1 * (255 - color1.G) + mixRatio2 * (255 - color2.G) + mixRatio3 * (255 - color3.G)),
 | 
			
		||||
				255 - (byte)(mixRatio1 * (255 - color1.B) + mixRatio2 * (255 - color2.B) + mixRatio3 * (255 - color3.B)));
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public static Color RandomAdd(Color color1, Color color2, Color color3, float nonGrayBias)
 | 
			
		||||
		{
 | 
			
		||||
			int rIndex = random.NextByte() % 3;
 | 
			
		||||
 | 
			
		||||
			float r1 = (rIndex == 0) ? random.NextFloat() * nonGrayBias : random.NextFloat();
 | 
			
		||||
			float r2 = (rIndex == 1) ? random.NextFloat() * nonGrayBias : random.NextFloat();
 | 
			
		||||
			float r3 = (rIndex == 2) ? random.NextFloat() * nonGrayBias : random.NextFloat();
 | 
			
		||||
 | 
			
		||||
			float p = 20;
 | 
			
		||||
			float sum = (float) Math.Pow(
 | 
			
		||||
				Math.Pow(r1, p) +
 | 
			
		||||
				Math.Pow(r2, p) +
 | 
			
		||||
				Math.Pow(r3, p), 1 / p);
 | 
			
		||||
 | 
			
		||||
			
 | 
			
		||||
 | 
			
		||||
			r1 /= sum;
 | 
			
		||||
			r2 /= sum;
 | 
			
		||||
			r3 /= sum;
 | 
			
		||||
 | 
			
		||||
			return Color.FromArgb(
 | 
			
		||||
				255,
 | 
			
		||||
				SaturateToByte(r1 * color1.R + r2 * color2.R + r3 * color3.R),
 | 
			
		||||
				SaturateToByte(r1 * color1.G + r2 * color2.G + r3 * color3.G),
 | 
			
		||||
				SaturateToByte(r1 * color1.B + r2 * color2.B + r3 * color3.B));
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public static int SaturateToByte(float floatValue)
 | 
			
		||||
		{
 | 
			
		||||
			int intValue = (int)floatValue;
 | 
			
		||||
 | 
			
		||||
			if (intValue > 255)
 | 
			
		||||
			{
 | 
			
		||||
				intValue = 255;
 | 
			
		||||
			}
 | 
			
		||||
			else if( intValue < 0)
 | 
			
		||||
			{
 | 
			
		||||
				intValue = 0;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			return intValue;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public static Color SampleLinearGradient(Color [] colors, float t)
 | 
			
		||||
		{
 | 
			
		||||
			int colorCount = colors.Length;
 | 
			
		||||
			int leftIndex = (int) (t * colorCount);
 | 
			
		||||
 | 
			
		||||
			float cellRange = 1.0f / colorCount;
 | 
			
		||||
			float alpha = (t - leftIndex * cellRange) / cellRange;
 | 
			
		||||
 | 
			
		||||
			Color leftColor = colors[leftIndex];
 | 
			
		||||
			Color rightColor = colors[(leftIndex + 1) % colorCount];
 | 
			
		||||
 | 
			
		||||
			return Color.FromArgb(
 | 
			
		||||
				255,
 | 
			
		||||
				(byte) (leftColor.R * (1 - alpha) + rightColor.R * (alpha)),
 | 
			
		||||
				(byte) (leftColor.G * (1 - alpha) + rightColor.G * (alpha)),
 | 
			
		||||
				(byte) (leftColor.B * (1 - alpha) + rightColor.B * (alpha)));
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public static Bitmap GeneratePaletteImage(List<Color> colors, int width, int height, int spacing)
 | 
			
		||||
		{
 | 
			
		||||
			Bitmap image = new Bitmap(width, height);
 | 
			
		||||
			int colorCount = colors.Count;
 | 
			
		||||
			int blockWidth = (width - ((colorCount - 1) * spacing)) / colorCount;
 | 
			
		||||
 | 
			
		||||
			for (int i = 0; i < colorCount; i++)
 | 
			
		||||
			{
 | 
			
		||||
				DrawBlock(image, i * (blockWidth + spacing), 0, blockWidth, height, colors[i]);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			return image;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		public static void DrawBlock(Bitmap image, int x, int y, int width, int height, Color color)
 | 
			
		||||
		{
 | 
			
		||||
			for (int i = x; i < x + width; i++)
 | 
			
		||||
			{
 | 
			
		||||
				for (int j = y; j < y + height; j++)
 | 
			
		||||
				{
 | 
			
		||||
					image.SetPixel(i, j, color);
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		//static void Main(string[] args)
 | 
			
		||||
		//{
 | 
			
		||||
		//	//random = new Random(15);//15
 | 
			
		||||
		//	random = new Random(12);//15
 | 
			
		||||
		//	List<Color> colors;
 | 
			
		||||
		//	int versionCount = 3;
 | 
			
		||||
		//	int colorCount = 20;
 | 
			
		||||
 | 
			
		||||
		//	int imageWidth = 680;
 | 
			
		||||
		//	int imageHeight = 100;
 | 
			
		||||
		//	int spacing = 2;
 | 
			
		||||
 | 
			
		||||
		//	Color[] baseColors = {
 | 
			
		||||
		//		Color.FromArgb(255, 128, 0),
 | 
			
		||||
		//		Color.FromArgb(128, 255, 64),
 | 
			
		||||
		//		Color.FromArgb(64, 128, 255)};
 | 
			
		||||
 | 
			
		||||
		//	float[] saturation = {1.0f, 0.7f, 0.3f};
 | 
			
		||||
		//	float[] luminance = {0.45f, 0.7f, 0.4f};
 | 
			
		||||
 | 
			
		||||
		//	float[] hueStart = {0.9f, 0.2f, 0.6f };
 | 
			
		||||
		//	float[] hueEnd = { 0.1f, 0.5f, 0.9f };
 | 
			
		||||
 | 
			
		||||
		//	Color[] mixColor1 =
 | 
			
		||||
		//	{
 | 
			
		||||
		//		Color.FromArgb(255, 0, 33),
 | 
			
		||||
		//		Color.FromArgb(255, 100, 33),
 | 
			
		||||
		//		Color.FromArgb(128, 0, 33),
 | 
			
		||||
		//	};
 | 
			
		||||
 | 
			
		||||
		//	Color[] mixColor2 =
 | 
			
		||||
		//	{
 | 
			
		||||
		//		Color.FromArgb(255, 255, 0),
 | 
			
		||||
		//		Color.FromArgb(255, 255, 100),
 | 
			
		||||
		//		Color.FromArgb(255, 128, 0),
 | 
			
		||||
		//	};
 | 
			
		||||
 | 
			
		||||
		//	Color[] mixColor3 = 
 | 
			
		||||
		//	{
 | 
			
		||||
		//		Color.FromArgb(0, 100, 255),
 | 
			
		||||
		//		Color.FromArgb(100, 150, 255),
 | 
			
		||||
		//		Color.FromArgb(0, 80, 128),
 | 
			
		||||
		//	};
 | 
			
		||||
 | 
			
		||||
		//	Color[] addColor1 =
 | 
			
		||||
		//	{
 | 
			
		||||
		//		Color.FromArgb(150, 0, 0),
 | 
			
		||||
		//		Color.FromArgb(200, 20, 0),
 | 
			
		||||
		//		Color.FromArgb(128, 0, 33),
 | 
			
		||||
		//	};
 | 
			
		||||
 | 
			
		||||
		//	Color[] addColor2 =
 | 
			
		||||
		//	{
 | 
			
		||||
		//		Color.FromArgb(0, 150, 0),
 | 
			
		||||
		//		Color.FromArgb(200, 200, 20),
 | 
			
		||||
		//		Color.FromArgb(255, 128, 0),
 | 
			
		||||
		//	};
 | 
			
		||||
 | 
			
		||||
		//	Color[] addColor3 = 
 | 
			
		||||
		//	{
 | 
			
		||||
		//		Color.FromArgb(0, 0, 150),
 | 
			
		||||
		//		Color.FromArgb(20, 20, 200),
 | 
			
		||||
		//		Color.FromArgb(0, 80, 128),
 | 
			
		||||
		//	};
 | 
			
		||||
 | 
			
		||||
		//	Color[][] gradients = 
 | 
			
		||||
		//	{
 | 
			
		||||
		//		new Color[]
 | 
			
		||||
		//		{
 | 
			
		||||
		//			Color.FromArgb(255, 0, 128),
 | 
			
		||||
		//			Color.FromArgb(255, 255, 0),
 | 
			
		||||
		//			Color.FromArgb(0, 255, 255),
 | 
			
		||||
		//		},
 | 
			
		||||
 | 
			
		||||
		//		new Color[]
 | 
			
		||||
		//		{
 | 
			
		||||
		//			Color.FromArgb(200, 0, 33),
 | 
			
		||||
		//			Color.FromArgb(255, 200, 0),
 | 
			
		||||
		//			Color.FromArgb(0, 100, 200),
 | 
			
		||||
		//		},
 | 
			
		||||
 | 
			
		||||
		//		new Color[]
 | 
			
		||||
		//		{
 | 
			
		||||
		//			Color.FromArgb(255, 0, 33),
 | 
			
		||||
		//			Color.FromArgb(255, 255, 0),
 | 
			
		||||
		//			Color.FromArgb(0, 255, 0),
 | 
			
		||||
		//			Color.FromArgb(255, 255, 0),
 | 
			
		||||
		//		}
 | 
			
		||||
		//	};
 | 
			
		||||
 | 
			
		||||
		//	float[] offsetAngles1 = 
 | 
			
		||||
		//	{
 | 
			
		||||
		//		15, 180, 120
 | 
			
		||||
		//	};
 | 
			
		||||
 | 
			
		||||
		//	float[] offsetAngles2 = 
 | 
			
		||||
		//	{
 | 
			
		||||
		//		30, 0, 240
 | 
			
		||||
		//	};
 | 
			
		||||
 | 
			
		||||
		//	float[] angleRanges1 = 
 | 
			
		||||
		//	{
 | 
			
		||||
		//		15, 40f, 40
 | 
			
		||||
		//	};
 | 
			
		||||
 | 
			
		||||
		//	float[] angleRanges2 = 
 | 
			
		||||
		//	{
 | 
			
		||||
		//		15, 40f, 40
 | 
			
		||||
		//	};
 | 
			
		||||
 | 
			
		||||
		//	float[] angleRanges3 = 
 | 
			
		||||
		//	{
 | 
			
		||||
		//		15, 0, 40
 | 
			
		||||
		//	};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		//	for (int version = 0; version < versionCount; version++)
 | 
			
		||||
		//	{
 | 
			
		||||
		//		colors = GenerateColors_Uniform(colorCount);
 | 
			
		||||
		//		GeneratePaletteImage(colors, imageWidth, imageHeight, spacing).Save("Uniform_5_" + version + ".png");
 | 
			
		||||
 | 
			
		||||
		//		colors = GenerateColors_RandomWalk(colorCount, baseColors[version], 0.2f, 0.4f);
 | 
			
		||||
		//		GeneratePaletteImage(colors, imageWidth, imageHeight, spacing).Save("RandomWalk_5_" + version + ".png");
 | 
			
		||||
 | 
			
		||||
		//		colors = GenerateColors_RandomMix(colorCount, mixColor1[version], mixColor2[version], mixColor3[version], 0.1f, true);
 | 
			
		||||
		//		GeneratePaletteImage(colors, imageWidth, imageHeight, spacing).Save("MixPaint1_5_" + version + ".png");
 | 
			
		||||
 | 
			
		||||
		//		colors = GenerateColors_RandomMix(colorCount, mixColor1[version], mixColor2[version], mixColor3[version], 0.5f, true);
 | 
			
		||||
		//		GeneratePaletteImage(colors, imageWidth, imageHeight, spacing).Save("MixPaint5_5_" + version + ".png");
 | 
			
		||||
 | 
			
		||||
		//		colors = GenerateColors_RandomMix(colorCount, mixColor1[version], mixColor2[version], mixColor3[version], 0.9f, true);
 | 
			
		||||
		//		GeneratePaletteImage(colors, imageWidth, imageHeight, spacing).Save("MixPaint9_5_" + version + ".png");
 | 
			
		||||
 | 
			
		||||
		//		colors = GenerateColors_RandomMix(colorCount, mixColor1[version], mixColor2[version], mixColor3[version], 0.1f, false);
 | 
			
		||||
		//		GeneratePaletteImage(colors, imageWidth, imageHeight, spacing).Save("Mix1_5_" + version + ".png");
 | 
			
		||||
 | 
			
		||||
		//		colors = GenerateColors_RandomMix(colorCount, mixColor1[version], mixColor2[version], mixColor3[version], 0.5f, false);
 | 
			
		||||
		//		GeneratePaletteImage(colors, imageWidth, imageHeight, spacing).Save("Mix5_5_" + version + ".png");
 | 
			
		||||
 | 
			
		||||
		//		colors = GenerateColors_RandomMix(colorCount, mixColor1[version], mixColor2[version], mixColor3[version], 0.9f, false);
 | 
			
		||||
		//		GeneratePaletteImage(colors, imageWidth, imageHeight, spacing).Save("Mix9_5_" + version + ".png");
 | 
			
		||||
 | 
			
		||||
		//		colors = GenerateColors_RandomAdd(colorCount, addColor1[version], addColor2[version], addColor3[version], 0.1f);
 | 
			
		||||
		//		GeneratePaletteImage(colors, imageWidth, imageHeight, spacing).Save("Add1_5_" + version + ".png");
 | 
			
		||||
 | 
			
		||||
		//		colors = GenerateColors_RandomAdd(colorCount, addColor1[version], addColor2[version], addColor3[version], 0.5f);
 | 
			
		||||
		//		GeneratePaletteImage(colors, imageWidth, imageHeight, spacing).Save("Add5_5_" + version + ".png");
 | 
			
		||||
 | 
			
		||||
		//		colors = GenerateColors_RandomAdd(colorCount, addColor1[version], addColor2[version], addColor3[version], 0.9f);
 | 
			
		||||
		//		GeneratePaletteImage(colors, imageWidth, imageHeight, spacing).Save("Add9_5_" + version + ".png");
 | 
			
		||||
 | 
			
		||||
		//		colors = GenerateColors_Offset(colorCount, baseColors[version], 0.4f);
 | 
			
		||||
		//		GeneratePaletteImage(colors, imageWidth, imageHeight, spacing).Save("Offset_5_" + version + ".png");
 | 
			
		||||
 | 
			
		||||
		//		colors = GenerateColors_Hue(colorCount, saturation[version], luminance[version]);
 | 
			
		||||
		//		GeneratePaletteImage(colors, imageWidth, imageHeight, spacing).Save("Hue_5_" + version + ".png");
 | 
			
		||||
 | 
			
		||||
		//		colors = GenerateColors_Saturation(colorCount, hueStart[version], luminance[version]);
 | 
			
		||||
		//		GeneratePaletteImage(colors, imageWidth, imageHeight, spacing).Save("Saturation_5_" + version + ".png");
 | 
			
		||||
 | 
			
		||||
		//		colors = GenerateColors_Luminance(colorCount, hueStart[version], saturation[version]);
 | 
			
		||||
		//		GeneratePaletteImage(colors, imageWidth, imageHeight, spacing).Save("Luminance_5_" + version + ".png");
 | 
			
		||||
 | 
			
		||||
		//		colors = GenerateColors_SaturationLuminance(colorCount, hueStart[version]);
 | 
			
		||||
		//		GeneratePaletteImage(colors, imageWidth, imageHeight, spacing).Save("Saturation_Luminance_5_" + version + ".png");
 | 
			
		||||
 | 
			
		||||
		//		colors = GenerateColors_GoldenRatioRainbow(colorCount, saturation[version], luminance[version]);
 | 
			
		||||
		//		GeneratePaletteImage(colors, imageWidth, imageHeight, spacing).Save("GoldenRatioRainbow_5_" + version + ".png");
 | 
			
		||||
 | 
			
		||||
		//		colors = GenerateColors_GoldenRatioGradient(colorCount, gradients[version], saturation[version], luminance[version]);
 | 
			
		||||
		//		GeneratePaletteImage(colors, imageWidth, imageHeight, spacing).Save("GoldenRatioGradient_5_" + version + ".png");
 | 
			
		||||
 | 
			
		||||
		//		colors = GenerateColors_JitteredRainbow(colorCount, 0, 1, saturation[version], luminance[version], true);
 | 
			
		||||
		//		GeneratePaletteImage(colors, imageWidth, imageHeight, spacing).Save("JitteredRainbow_5_" + version + ".png");
 | 
			
		||||
 | 
			
		||||
		//		colors = GenerateColors_JitteredRainbow(colorCount, hueStart[version], hueEnd[version], saturation[version], luminance[version], true);
 | 
			
		||||
		//		GeneratePaletteImage(colors, imageWidth, imageHeight, spacing).Save("JitteredRainbowRange_5_" + version + ".png");
 | 
			
		||||
 | 
			
		||||
		//		colors = GenerateColors_JitteredRainbow(colorCount, 0, 1, saturation[version], luminance[version], false);
 | 
			
		||||
		//		GeneratePaletteImage(colors, imageWidth, imageHeight, spacing).Save("Grid_Rainbow_5_" + version + ".png");
 | 
			
		||||
 | 
			
		||||
		//		colors = GenerateColors_HueRange(colorCount, hueStart[version], hueEnd[version], saturation[version], luminance[version]);
 | 
			
		||||
		//		GeneratePaletteImage(colors, imageWidth, imageHeight, spacing).Save("HueRange_5_" + version + ".png");
 | 
			
		||||
 | 
			
		||||
		//		colors = GenerateColors_Harmony(colorCount, 
 | 
			
		||||
		//			offsetAngles1[version], offsetAngles2[version],
 | 
			
		||||
		//			angleRanges1[version], angleRanges2[version], angleRanges3[version],
 | 
			
		||||
		//			saturation[version], luminance[version]);
 | 
			
		||||
		//		GeneratePaletteImage(colors, imageWidth, imageHeight, spacing).Save("Harmony_5_" + version + ".png");
 | 
			
		||||
 | 
			
		||||
		//		colors = GenerateColors_Harmony2(colorCount,
 | 
			
		||||
		//			offsetAngles1[version], offsetAngles2[version],
 | 
			
		||||
		//			angleRanges1[version], angleRanges2[version], angleRanges3[version],
 | 
			
		||||
		//			saturation[version], 0.2f,
 | 
			
		||||
		//			luminance[version], 0.5f);
 | 
			
		||||
		//		GeneratePaletteImage(colors, imageWidth, imageHeight, spacing).Save("Harmony2_5_" + version + ".png");
 | 
			
		||||
		//	}
 | 
			
		||||
		//}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user