aboutsummaryrefslogtreecommitdiffstats
path: root/Software/ColorData/CAT/CyanToLinear.cat
blob: c728e9bb8f79fb08d76b9191562f50a9d92089e8 (plain)
ofshex dumpascii
0000 00 00 00 00 00 00 00 00 29 5c 8f 02 af cd 2a 0b 52 b8 1e 05 9c 80 39 18 7b 14 ae 07 d6 6c 48 20 ........)\....*.R.....9.{....lH.
0020 1f 85 eb 11 0f 77 b9 43 0a d7 a3 30 64 a5 ae 8a 85 eb 51 78 5d f8 c6 c0 28 5c 8f c2 b2 48 e1 e6 .....w.C...0d.....Qx]...(\...H..
0040 c2 f5 28 dc 95 59 f6 f3 ff ff ff ff ff ff ff ff ..(..Y..........
// 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;

namespace Tango.Scripting.Editors.Rendering
{
	/// <summary>
	/// An enumeration of well-known layers.
	/// </summary>
	public enum KnownLayer
	{
		/// <summary>
		/// This layer is in the background.
		/// There is no UIElement to represent this layer, it is directly drawn in the TextView.
		/// It is not possible to replace the background layer or insert new layers below it.
		/// </summary>
		/// <remarks>This layer is below the Selection layer.</remarks>
		Background,
		/// <summary>
		/// This layer contains the selection rectangle.
		/// </summary>
		/// <remarks>This layer is between the Background and the Text layers.</remarks>
		Selection,
		/// <summary>
		/// This layer contains the text and inline UI elements.
		/// </summary>
		/// <remarks>This layer is between the Selection and the Caret layers.</remarks>
		Text,
		/// <summary>
		/// This layer contains the blinking caret.
		/// </summary>
		/// <remarks>This layer is above the Text layer.</remarks>
		Caret
	}
	
	/// <summary>
	/// Specifies where a new layer is inserted, in relation to an old layer.
	/// </summary>
	public enum LayerInsertionPosition
	{
		/// <summary>
		/// The new layer is inserted below the specified layer.
		/// </summary>
		Below,
		/// <summary>
		/// The new layer replaces the specified layer. The old layer is removed
		/// from the <see cref="TextView.Layers"/> collection.
		/// </summary>
		Replace,
		/// <summary>
		/// The new layer is inserted above the specified layer.
		/// </summary>
		Above
	}
	
	sealed class LayerPosition : IComparable<LayerPosition>
	{
		internal static readonly DependencyProperty LayerPositionProperty =
			DependencyProperty.RegisterAttached("LayerPosition", typeof(LayerPosition), typeof(LayerPosition));
		
		public static void SetLayerPosition(UIElement layer, LayerPosition value)
		{
			layer.SetValue(LayerPositionProperty, value);
		}
		
		public static LayerPosition GetLayerPosition(UIElement layer)
		{
			return (LayerPosition)layer.GetValue(LayerPositionProperty);
		}
		
		internal readonly KnownLayer KnownLayer;
		internal readonly LayerInsertionPosition Position;
		
		public LayerPosition(KnownLayer knownLayer, LayerInsertionPosition position)
		{
			this.KnownLayer = knownLayer;
			this.Position = position;
		}
		
		public int CompareTo(LayerPosition other)
		{
			int r = this.KnownLayer.CompareTo(other.KnownLayer);
			if (r != 0)
				return r;
			else
				return this.Position.CompareTo(other.Position);
		}
	}
}