コード例 #1
0
        public static ColorString Escape(string str, Func <char, ColorPair> exchange)
        {
            if (str == null)
            {
                return(null);
            }
            else if (str.Length == 0)
            {
                return(null);
            }

            char          ch      = str[0];
            ColorPair     current = exchange(ch);
            StringBuilder sb      = new StringBuilder(current.ToString());

            sb.Append(current);
            sb.Append(ch);
            for (int i = 1; i < str.Length; i++)
            {
                ch = str[i];
                ColorPair next = exchange(ch);
                if (current != next)
                {
                    sb.Append(next.ToString());
                    current = next;
                }
                sb.Append(ch);
            }
            return(new ColorString(sb.ToString()));
        }
コード例 #2
0
ファイル: ColorPair.cs プロジェクト: txdv/LibuvSharp.Terminal
		public static ColorPair From(ushort foreground, ushort background)
		{
			short fg = (short)(foreground + 1);
			short bg = (short)(background + 1);

			var col = colors[fg, bg];
			if (col == null) {
				col = new ColorPair(foreground, background);
				colors[fg, bg] = col;
			}
			return col;
		}
コード例 #3
0
        public static ColorPair From(ushort foreground, ushort background)
        {
            short fg = (short)(foreground + 1);
            short bg = (short)(background + 1);

            var col = colors[fg, bg];

            if (col == null)
            {
                col            = new ColorPair(foreground, background);
                colors[fg, bg] = col;
            }
            return(col);
        }
コード例 #4
0
ファイル: Curses.cs プロジェクト: txdv/LibuvSharp.Terminal
		public static void Attribute(ColorPair colorPair, Action action)
		{
			Attribute(colorPair.Attribute, action);
		}
コード例 #5
0
ファイル: ColorPair.cs プロジェクト: txdv/LibuvSharp.Terminal
		public bool ColorEquals(ColorPair cp)
		{
			return (cp.Foreground == Foreground) && (cp.Background == Background);
		}
コード例 #6
0
 public void Draw(Color foreground, Color background, string str, int x, int y, params int[] attributes)
 {
     Draw(ColorPair.From(foreground, background, attributes), str, x, y);
 }
コード例 #7
0
 public void Draw(Color foreground, string str, params int[] attributes)
 {
     Draw(ColorPair.From(foreground, attributes), str);
 }
コード例 #8
0
ファイル: Widget.cs プロジェクト: txdv/LibuvSharp.Terminal
		public void Draw(ColorPair colorPair, string str)
		{
			Draw(colorPair.Attribute, str);
		}
コード例 #9
0
 public bool ColorEquals(ColorPair cp)
 {
     return((cp.Foreground == Foreground) && (cp.Background == Background));
 }
コード例 #10
0
 public static CursesAttribute Attribute(System.Drawing.Color foreground, System.Drawing.Color background, params int[] attributes)
 {
     return(Attribute(ColorPair.From(foreground, background, attributes)));
 }
コード例 #11
0
 public static CursesAttribute Attribute(ColorPair colorPair)
 {
     return(Attribute(colorPair.Attribute));
 }
コード例 #12
0
 public static void Attribute(ColorPair colorPair, Action action)
 {
     Attribute(colorPair.Attribute, action);
 }
コード例 #13
0
 public static int AttributeOff(ColorPair colorPair)
 {
     return(AttributeOff(colorPair.Attribute));
 }
コード例 #14
0
 public static void Finish()
 {
     Curses.attron(ColorPair.From(-1, -1).Attribute);
 }
コード例 #15
0
ファイル: Widget.cs プロジェクト: txdv/LibuvSharp.Terminal
		public void Fill(ColorPair colorPair, string str)
		{
			Fill(colorPair, str, ' ');
		}
コード例 #16
0
ファイル: Widget.cs プロジェクト: txdv/LibuvSharp.Terminal
		public void Fill(ColorPair colorPair, string str, char ch, int x, int y)
		{
			Fill(colorPair, str, ch, x, y, Width - x, Height - y);
		}
コード例 #17
0
 public bool PairEquals(ColorPair cp)
 {
     return((Pair == cp.Pair) && ColorEquals(cp));
 }
コード例 #18
0
ファイル: Widget.cs プロジェクト: txdv/LibuvSharp.Terminal
		public void Draw(ColorPair colorPair, string str, int x, int y, int w, int h)
		{
			Draw(colorPair.Attribute, str, x, y, w, h);
		}
コード例 #19
0
 public static int From(int foreground, int background, params int[] attributes)
 {
     return(Accumulate(ColorPair.From(foreground, background).Attribute, attributes));
 }
コード例 #20
0
 public void Draw(ColorPair colorPair, string str, int x, int y, int w, int h, out int endx, out int endy)
 {
     Draw(colorPair.Attribute, str, x, y, w, h, out endx, out endy);
 }
コード例 #21
0
 public static ColorPair From(Color foreground, Color background)
 {
     return(ColorPair.From(ConvertBasic(foreground), ConvertBasic(background)));
 }
コード例 #22
0
 public void Draw(Color foreground, string str, int x, int y, int w, int h, params int[] attributes)
 {
     Draw(ColorPair.From(foreground, attributes), str, x, y, w, h);
 }
コード例 #23
0
 public void Fill(ColorPair colorPair, string str)
 {
     Fill(colorPair, str, ' ');
 }
コード例 #24
0
 public void Draw(Color foreground, Color background, string str, int x, int y, int w, int h, out int endx, out int endy, params int[] attributes)
 {
     Draw(ColorPair.From(foreground, background, attributes), str, x, y, w, h, out endx, out endy);
 }
コード例 #25
0
 public void Fill(ColorPair colorPair, string str, char ch)
 {
     Fill(colorPair, str, ch, 0, 0);
 }
コード例 #26
0
ファイル: ColorPair.cs プロジェクト: txdv/LibuvSharp.Terminal
		public bool PairEquals(ColorPair cp)
		{
			return (Pair == cp.Pair) && ColorEquals(cp);
		}
コード例 #27
0
 public void Fill(ColorPair colorPair, string str, char ch, int x, int y)
 {
     Fill(colorPair, str, ch, x, y, Width - x, Height - y);
 }
コード例 #28
0
ファイル: Curses.cs プロジェクト: txdv/LibuvSharp.Terminal
		public static int AttributeOff(ColorPair colorPair)
		{
			return AttributeOff(colorPair.Attribute);
		}
コード例 #29
0
 public void Fill(ColorPair colorPair, string str, char ch, int x, int y, int w, int h)
 {
     Fill(colorPair.Attribute, str, ch, x, y, w, h);
 }
コード例 #30
0
ファイル: Curses.cs プロジェクト: txdv/LibuvSharp.Terminal
		public static CursesAttribute Attribute(ColorPair colorPair)
		{
			return Attribute(colorPair.Attribute);
		}
コード例 #31
0
 public void Fill(Color foreground, Color background, string str, char ch, int x, int y, int w, int h, params int[] attributes)
 {
     Fill(ColorPair.From(foreground, background, attributes), str, ch, x, y, w, h);
 }
コード例 #32
0
ファイル: Widget.cs プロジェクト: txdv/LibuvSharp.Terminal
		public void Fill(ColorPair colorPair, string str, char ch)
		{
			Fill(colorPair, str, ch, 0, 0);
		}
コード例 #33
0
 public void Draw(ColorPair colorPair, string str)
 {
     Draw(colorPair.Attribute, str);
 }
コード例 #34
0
ファイル: Widget.cs プロジェクト: txdv/LibuvSharp.Terminal
		public void Fill(ColorPair colorPair, string str, char ch, int x, int y, int w, int h)
		{
			Fill(colorPair.Attribute, str, ch, x, y, w, h);
		}
コード例 #35
0
 public void Draw(ColorPair colorPair, string str, int x, int y)
 {
     Draw(colorPair.Attribute, str, x, y);
 }
コード例 #36
0
ファイル: Widget.cs プロジェクト: txdv/LibuvSharp.Terminal
		public void Draw(ColorPair colorPair, string str, int x, int y)
		{
			Draw(colorPair.Attribute, str, x, y);
		}
コード例 #37
0
 public void Draw(ColorPair colorPair, string str, int x, int y, int w, int h)
 {
     Draw(colorPair.Attribute, str, x, y, w, h);
 }
コード例 #38
0
ファイル: Widget.cs プロジェクト: txdv/LibuvSharp.Terminal
		public void Draw(ColorPair colorPair, string str, int x, int y, int w, int h, out int endx, out int endy)
		{
			Draw(colorPair.Attribute, str, x, y, w, h, out endx, out endy);
		}
コード例 #39
0
        public static int Each(string str, Func <char, bool> callback)
        {
            int n = 0;

            DrawStringMode mode = DrawStringMode.Normal;

            string fg = string.Empty;
            string bg = string.Empty;

            foreach (char c in str)
            {
                switch (mode)
                {
                case DrawStringMode.Normal:
                    if (c == '\x0000')
                    {
                        mode = DrawStringMode.ForegroundColor;
                    }
                    else
                    {
                        if (!callback(c))
                        {
                            return(n);
                        }
                        n++;
                    }
                    break;

                case DrawStringMode.ForegroundColor:
                    if (char.IsNumber(c))
                    {
                        fg += c;
                    }
                    else if (c == ',')
                    {
                        mode = DrawStringMode.Background;
                    }
                    else if (c == ' ')
                    {
                        ushort foreground = ushort.MaxValue;
                        if (fg != string.Empty)
                        {
                            foreground = ushort.Parse(fg);
                        }
                        Curses.attron(ColorPair.From(foreground, ushort.MaxValue).Attribute);
                        fg   = string.Empty;
                        mode = DrawStringMode.Normal;
                    }
                    else
                    {
                        throw new Exception("Malformed color string");
                    }
                    break;

                case DrawStringMode.Background:
                    if (char.IsNumber(c))
                    {
                        bg += c;
                    }
                    else if (c == ' ')
                    {
                        Curses.attron(ColorPair.From(ushort.Parse(fg), ushort.Parse(bg)).Attribute);
                        fg   = string.Empty;
                        bg   = string.Empty;
                        mode = DrawStringMode.Normal;
                    }
                    else
                    {
                        throw new Exception("Malformed color string");
                    }
                    break;
                }
            }
            return(n);
        }