aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Snippets/SnippetTextElement.cs
blob: decc181199b2f7834dfc2fdbc1b74148fffcaa20 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)

using System;
using System.Windows.Documents;
using Tango.Scripting.Editors.Document;

namespace Tango.Scripting.Editors.Snippets
{
	/// <summary>
	/// Represents a text element in a snippet.
	/// </summary>
	[Serializable]
	public class SnippetTextElement : SnippetElement
	{
		string text;
		
		/// <summary>
		/// The text to be inserted.
		/// </summary>
		public string Text {
			get { return text; }
			set { text = value; }
		}
		
		/// <inheritdoc/>
		public override void Insert(InsertionContext context)
		{
			if (text != null)
				context.InsertText(text);
		}
		
		/// <inheritdoc/>
		public override Inline ToTextRun()
		{
			return new Run(text ?? string.Empty);
		}
	}
}
pan>set; } public double SuggestionA { get; set; } public double SuggestionB { get; set; } public double SuggestionDeltaE { get; set; } public double OutputL { get; set; } public double OutputA { get; set; } public double OutputB { get; set; } public double OutputDeltaE { get; set; } public double Cyan { get; set; } public double Magenta { get; set; } public double Yellow { get; set; } public double Black { get; set; } public double LightCyan { get; set; } public double LightMagenta { get; set; } public double LightYellow { get; set; } public bool OutOfGamut { get; set; } public static double MirtaDeltaE(double L1, double a1, double b1, double L2, double a2, double b2) { double h1 = Math.Atan2(b1, a1) * (180 / Math.PI); if (h1 < 0) h1 = h1 + 360; double h2 = Math.Atan2(b2, a2) * (180 / Math.PI); if (h2 < 0) h2 = h2 + 360; double refX_H = h1; //chroma calculation double refX_C = Math.Sqrt(a1 * a1 + b1 * b1); //reference SL parameter double refX_SL; if (L1 <= 16) refX_SL = 0.511; else refX_SL = L1 * 0.040975 / (1 + 0.01765 * L1); //reference SC parameter double refX_SC = (0.638 + 0.0638 * refX_C / (1 + 0.0131 * refX_C)); //reference CQ parameter double refX_CQ = Math.Pow(refX_C, 4); //reference F parameter double refX_F = Math.Sqrt(refX_CQ / (refX_CQ + 1900)); // reference T parameter double refX_T = 0; if ((refX_H > 164) & (refX_H < 345)) refX_T = 0.56 + Math.Abs(0.2 * Math.Cos(Math.PI * (refX_H + 168) / 180)); else if ((refX_H >= 345) | (refX_H <= 164)) refX_T = 0.36 + Math.Abs(0.4 * Math.Cos(Math.PI * (refX_H + 35) / 180)); // reference SH parameter double refX_SH = refX_SC * (refX_T * refX_F + 1 - refX_F); //sample parameter calculations //hue calculation double samX_H = h2; //chroma calculation double samX_C = Math.Sqrt(a2 * a2 + b2 * b2); double dL = L1 - L2; double dC = samX_C - refX_C; double da = a1 - a2; double db = b1 - b2; double dH = Math.Sqrt(Math.Max(da * da + db * db - dC * dC, 0.0)); double dECMC = Math.Sqrt(Math.Pow(dL / (2 * refX_SL), 2) + Math.Pow(dC / refX_SC, 2) + Math.Pow(dH / refX_SH, 2)); return dECMC; } } }