Exemplo n.º 1
0
        static void Main(string[] args)
        {
            var c = new FinchConsole();

            c.WriteLine("Welcome to the Finch Demo app!");
            c.WriteLine();

            c.Write("Press any key for the VIEW demo...");
            c.ReadKey();

            c.ClearScreen();
            ViewDemos(c);
            c.ClearScreen();

            c.WriteLine("Press any key for the STYLE demo, please resize the window to be larger than 128x63...");
            c.WriteLine("... as the program won't let you continue until you do that :)");
            var cs = c.GetSize();

            c.ReadKey();
            while (cs.x < 63 || cs.y < 128)
            {
                c.ReadKey();
                cs = c.GetSize();
            }

            c.ClearScreen();
            StyleDemos(c);
            c.ClearScreen();

            c.Write("Press any key to quit...");
            c.ReadKey();
        }
Exemplo n.º 2
0
        private static void ViewDemos(FinchConsole c)
        {
            c.WriteLine("TEST FROZEN LINE 1");
            c.WriteLine("TEST FROZEN LINE 2");

            var size = c.GetSize();

            c.MoveCursorInColumn(size.x - 1);

            c.WriteLine("TEST FROZEN LINE 3");
            c.Write("TEST FROZEN LINE 4");

            c.SetCursorPosition(3, 0);

            c.FreezeLines(2, 2);

            foreach (var i in Enumerable.Range(1, 100))
            {
                c.WriteLine(i.ToString());
                Thread.Sleep(10);
            }

            for (var i = 0; i < 10; i++)
            {
                c.ScrollUp(1);
                Thread.Sleep(20);
            }

            for (var i = 0; i < 10; i++)
            {
                c.ScrollDown(1);
                Thread.Sleep(20);
            }

            c.UnfreezeLines();
        }
Exemplo n.º 3
0
        private static void StyleDemos(FinchConsole c)
        {
            c.SetCursorVisibility(false);
            var clsCounter = 0;
            var line       = 1;

            c.StartBufferedWriting(); // I could buffer this per block instead of per line as well, I know
            for (var b = 0; b <= 255; b += 4)
            {
                for (var g = 0; g <= 255; g += 4)
                {
                    for (var r = 0; r <= 255; r += 4)
                    {
                        c.SetBackgroundColor(new Color((byte)r, (byte)g, (byte)b));
                        c.Write(' ');
                        line += 1;
                        if (line <= 128)
                        {
                            continue;
                        }
                        clsCounter += 1;
                        line        = 1;
                        c.WriteLine();
                        c.EndBufferedWriting();
                        if (clsCounter >= 32)
                        {
                            Thread.Sleep(33);
                            c.SetCursorPosition(1, 1);
                            clsCounter = 0;
                        }
                        c.StartBufferedWriting();
                    }
                }
            }
            c.EndBufferedWriting();
            c.ResetStyles();

            c.SetCursorPosition(1, 1);
            var assembly = Assembly.GetEntryAssembly();

            using (var rs = assembly.GetManifestResourceStream("FinchDemos.explosion.gif"))
            {
                using (var im = Image.Load(rs, new GifDecoder()))
                {
                    im.Mutate(x => x.Resize(128, 63));
                    foreach (var resizedFrame in im.Frames)
                    {
                        c.StartBufferedWriting();
                        for (var i = 0; i < resizedFrame.Height; i++)
                        {
                            for (var j = 0; j < resizedFrame.Width; j++)
                            {
                                var resizedFramePixel = resizedFrame[j, i];
                                c.SetBackgroundColor(new Color(resizedFramePixel.R, resizedFramePixel.G, resizedFramePixel.B));
                                c.Write(' ');
                            }
                            c.MoveCursorDown();
                            c.MoveCursorInLine(1);
                        }
                        c.EndBufferedWriting();
                        Thread.Sleep(16);
                        c.SetCursorPosition(1, 1);
                    }
                }
            }

            c.SetCursorVisibility(true);
        }
Exemplo n.º 4
0
 internal MixedFrameBuffer(FinchConsole console, Character clearCharacter, string id, (int x1, int x2, int y1, int y2) pos) : base(console, clearCharacter, id, pos)