Exemple #1
0
        void Append(LogLevel level, string message, object[] args, Exception exception = null)
        {
            var time = DateTimeOffset.Now;
            var text = _stringRenderer.RenderString(message, args);
            var line = new LogLine(time, _type, level, text, exception);

            _lines.Enqueue(line);

            if (_outputToConsole)
            {
                Console.WriteLine(line);
            }
        }
    string Render(string template, params object[] args)
    {
        var result = _renderer.RenderString(template, args);

        Console.WriteLine($@"
    {template}

    +

{string.Join(Environment.NewLine, args.Select(a => $"    {a}"))}

    => {result}");

        return(result);
    }
Exemple #3
0
        void Write(string level, string message, object[] args, Exception exception = null)
        {
            var renderedString = _stringRenderer.RenderString(message, args);

            try
            {
                var now    = DateTimeOffset.Now;
                var output = exception == null
                    ? $"{now:yyyy-MM-dd} {now:HH:mm:ss.fff zzz} {level} {renderedString}"
                    : $"{now:yyyy-MM-dd} {now:HH:mm:ss.fff zzz} {level} {renderedString}{Environment.NewLine}{exception}";

                System.Console.WriteLine(output);
            }
            catch
            {
            }
        }
Exemple #4
0
 public void DrawString(string s, StringRenderer font, Color color, float x, float y)
 {
     _owner._renderer.SetModulateColor(color);
     font.RenderString(_owner._renderer, x, y, s);
     _owner._renderer.SetModulateColorWhite();
 }
Exemple #5
0
        static unsafe void Main(string[] args)
        {
            BizHawk.Bizware.BizwareGL.IGL igl = new BizHawk.Bizware.BizwareGL.Drivers.OpenTK.IGL_TK();

            List <Art> testArts = new List <Art>();
            ArtManager am       = new ArtManager(igl);

            foreach (var name in typeof(Program).Assembly.GetManifestResourceNames())
            {
                if (name.Contains("flame"))
                {
                    testArts.Add(am.LoadArt(typeof(Program).Assembly.GetManifestResourceStream(name)));
                }
            }
            var smile = am.LoadArt(typeof(Program).Assembly.GetManifestResourceStream("BizHawk.Bizware.Test.TestImages.smile.png"));

            am.Close(true);
            StringRenderer sr;

            using (var xml = typeof(Program).Assembly.GetManifestResourceStream("BizHawk.Bizware.Test.TestImages.courier16px.fnt"))
                using (var tex = typeof(Program).Assembly.GetManifestResourceStream("BizHawk.Bizware.Test.TestImages.courier16px_0.png"))
                    sr = new StringRenderer(igl, xml, tex);

            GuiRenderer gr = new GuiRenderer(igl);

            TestForm tf = new TestForm();
            RetainedGraphicsControl c = new RetainedGraphicsControl(igl);

            tf.Controls.Add(c);
            c.Dock          = System.Windows.Forms.DockStyle.Fill;
            tf.FormClosing += (object sender, System.Windows.Forms.FormClosingEventArgs e) =>
            {
                tf.Controls.Remove(c);
                c.Dispose();
                c = null;
            };
            tf.Show();

            //tf.Paint += (object sender, PaintEventArgs e) => c.Refresh();

            c.SetVsync(false);

            //create a render target
            RenderTarget rt = igl.CreateRenderTarget(60, 60);

            rt.Bind();
            igl.SetClearColor(Color.Blue);
            igl.Clear(ClearBufferMask.ColorBufferBit);
            gr.Begin(60, 60, true);
            gr.Draw(smile);
            gr.End();
            rt.Unbind();

            Texture2d rttex2d = igl.LoadTexture(rt.Texture2d.Resolve());

            //test retroarch shader
            RenderTarget rt2 = igl.CreateRenderTarget(240, 240);

            rt2.Bind();
            igl.SetClearColor(Color.CornflowerBlue);
            igl.Clear(ClearBufferMask.ColorBufferBit);
            RetroShader shader;

            using (var stream = typeof(Program).Assembly.GetManifestResourceStream("BizHawk.Bizware.Test.TestImages.4xSoft.glsl"))
                shader = new RetroShader(igl, new System.IO.StreamReader(stream).ReadToEnd());
            igl.SetBlendState(igl.BlendNone);
            shader.Run(rttex2d, new Size(60, 60), new Size(240, 240), true);


            bool running = true;

            c.MouseClick += (object sender, MouseEventArgs e) =>
            {
                if (e.Button == MouseButtons.Left)
                {
                    running ^= true;
                }
                if (e.Button == MouseButtons.Right)
                {
                    c.Retain ^= true;
                }
            };

            DateTime start  = DateTime.Now;
            int      wobble = 0;

            for (; ;)
            {
                if (c == null)
                {
                    break;
                }

                if (running)
                {
                    c.Begin();

                    igl.SetClearColor(Color.Red);
                    igl.Clear(ClearBufferMask.ColorBufferBit);

                    int frame = (int)((DateTime.Now - start).TotalSeconds) % testArts.Count;

                    gr.Begin(c.ClientSize.Width, c.ClientSize.Height);

                    gr.SetModulateColor(Color.Green);
                    gr.RectFill(250, 0, 16, 16);

                    gr.SetBlendState(igl.BlendNone);
                    gr.Draw(rttex2d, 0, 20);
                    gr.SetBlendState(igl.BlendNormal);

                    sr.RenderString(gr, 0, 0, "?? fps");
                    gr.SetModulateColor(Color.FromArgb(255, 255, 255, 255));
                    gr.SetCornerColor(0, OpenTK.Graphics.Color4.Red);
                    gr.Draw(rt2.Texture2d, 0, 0);
                    gr.SetCornerColor(0, OpenTK.Graphics.Color4.White);
                    gr.SetModulateColorWhite();
                    gr.Modelview.Translate((float)Math.Sin(wobble / 360.0f) * 50, 0);
                    gr.Modelview.Translate(100, 100);
                    gr.Modelview.Push();
                    gr.Modelview.Translate(testArts[frame].Width, 0);
                    gr.Modelview.Scale(-1, 1);
                    wobble++;
                    gr.SetModulateColor(Color.Yellow);
                    gr.DrawFlipped(testArts[frame], true, false);
                    gr.SetModulateColorWhite();
                    gr.Modelview.Pop();
                    gr.SetBlendState(igl.BlendNormal);
                    gr.Draw(smile);

                    gr.End();


                    c.SwapBuffers();
                    c.End();
                }

                System.Windows.Forms.Application.DoEvents();
                System.Threading.Thread.Sleep(0);
            }
        }
Exemple #6
0
        private static void RunTest()
        {
            IGL        igl      = new IGL_TK(2, 0, false);
            ArtManager am       = new(igl);
            var        testArts = typeof(Program).Assembly.GetManifestResourceNames().Where(s => s.Contains("flame"))
                                  .Select(s => am.LoadArt(ReflectionCache.EmbeddedResourceStream(s.Substring(21)))) // ReflectionCache adds back the prefix
                                  .ToList();
            var smile = am.LoadArt(ReflectionCache.EmbeddedResourceStream("TestImages.smile.png"));

            am.Close();
            StringRenderer sr;

            using (var xml = ReflectionCache.EmbeddedResourceStream("TestImages.courier16px.fnt"))
                using (var tex = ReflectionCache.EmbeddedResourceStream("TestImages.courier16px_0.png"))
                {
                    sr = new StringRenderer(igl, xml, tex);
                }

            GuiRenderer gr = new(igl);

            RetainedGraphicsControl?c = new(igl) { Dock = DockStyle.Fill };
            TestForm tf = new() { Controls = { c } };

            tf.FormClosing += (_, _) =>
            {
                tf.Controls.Remove(c);
                c.Dispose();
                c = null;
            };
            tf.Show();

#if false
            tf.Paint += (_, _) => c.Refresh();
#endif

            c.SetVsync(false);

            // create a render target
            var rt = igl.CreateRenderTarget(60, 60);
            rt.Bind();
            igl.SetClearColor(Color.Blue);
            igl.Clear(ClearBufferMask.ColorBufferBit);
            gr.Begin(60, 60);
            gr.Draw(smile);
            gr.End();
            rt.Unbind();

            var rttex2d = igl.LoadTexture(rt.Texture2d.Resolve());

            // test retroarch shader
            var rt2 = igl.CreateRenderTarget(240, 240);
            rt2.Bind();
            igl.SetClearColor(Color.CornflowerBlue);
            igl.Clear(ClearBufferMask.ColorBufferBit);
            RetroShader shader;
            using (var stream = ReflectionCache.EmbeddedResourceStream("TestImages.4xSoft.glsl"))
            {
                shader = new(igl, new StreamReader(stream).ReadToEnd());
            }
            igl.SetBlendState(igl.BlendNoneCopy);
            shader.Run(rttex2d, new Size(60, 60), new Size(240, 240), true);

            var running = true;
            c.MouseClick += (_, args) =>
            {
                if (args.Button == MouseButtons.Left)
                {
                    running ^= true;
                }
                else if (args.Button == MouseButtons.Right)
                {
                    c.Retain ^= true;
                }
            };

            var start  = DateTime.Now;
            var wobble = 0;
            while (c is not null)
            {
                if (running)
                {
                    c.Begin();

                    igl.SetClearColor(Color.Red);
                    igl.Clear(ClearBufferMask.ColorBufferBit);

                    var frame = (int)(DateTime.Now - start).TotalSeconds % testArts.Count;

                    gr.Begin(c.ClientSize.Width, c.ClientSize.Height);
                    gr.SetBlendState(igl.BlendNormal);

                    gr.SetModulateColor(Color.Green);
                    gr.RectFill(250, 0, 16, 16);

                    gr.SetBlendState(igl.BlendNoneCopy);
                    gr.Draw(rttex2d, 0, 20);
                    gr.SetBlendState(igl.BlendNormal);

                    sr.RenderString(gr, 0, 0, "?? fps");
                    gr.SetModulateColor(Color.FromArgb(255, 255, 255, 255));
                    gr.SetCornerColor(0, new(1.0f, 0.0f, 0.0f, 1.0f));
                    gr.Draw(rt2.Texture2d, 0, 0);
                    gr.SetCornerColor(0, new(1.0f, 1.0f, 1.0f, 1.0f));
                    gr.SetModulateColorWhite();
                    gr.Modelview.Translate((float)Math.Sin(wobble / 360.0f) * 50, 0);
                    gr.Modelview.Translate(100, 100);
                    gr.Modelview.Push();
                    gr.Modelview.Translate(testArts[frame].Width, 0);
                    gr.Modelview.Scale(-1, 1);
                    wobble++;
                    gr.SetModulateColor(Color.Yellow);
                    gr.DrawFlipped(testArts[frame], true, false);
                    gr.SetModulateColorWhite();
                    gr.Modelview.Pop();
                    gr.SetBlendState(igl.BlendNormal);
                    gr.Draw(smile);

                    gr.End();

                    c.SwapBuffers();
                    c.End();
                }

                Application.DoEvents();
                Thread.Sleep(0);
            }
        }
    }