public void DrawBoxModelWithTextContent()
            {
                byte[] imageRawBytes;
                int    width, height;

                using (var context = new RenderContextForTest(400, 100))
                {
                    TextPrimitive textPrimitive       = new TextPrimitive("Hello你好こんにちは");
                    var           styleRuleSet        = new StyleRuleSet();
                    var           styleRuleSetBuilder = new StyleRuleSetBuilder(styleRuleSet);
                    styleRuleSetBuilder
                    .BackgroundColor(Color.White)
                    .Border((1, 3, 1, 3))
                    .BorderColor(Color.Black)
                    .Padding((10, 5, 10, 5))
                    .FontSize(24)
                    .FontColor(Color.Black);

                    BuiltinPrimitiveRenderer primitiveRenderer = new BuiltinPrimitiveRenderer();
                    var mesh = new Mesh();
                    mesh.CommandBuffer.Add(DrawCommand.Default);
                    primitiveRenderer.SetShapeMesh(mesh);
                    var textMesh = new TextMesh();
                    primitiveRenderer.SetTextMesh(textMesh);
                    primitiveRenderer.DrawBoxModel(textPrimitive, new Rect(10, 10, 350, 60), styleRuleSet);

                    context.Clear();
                    context.DrawShapeMesh(mesh);
                    context.DrawTextMesh(textMesh);

                    imageRawBytes = context.Renderer.GetRawBackBuffer(out width, out height);
                }

                var    image = Util.CreateImage(imageRawBytes, width, height, flip: true);
                string expectedImageFilePath =
                    @"GraphicsImplementation\Builtin\images\BuiltinPrimitiveRendererFacts.DrawBoxModel.DrawBoxModelWithTextContent.png";

                #if GenerateExpectedImages
                Util.SaveImage(image, Util.UnitTestRootDir + expectedImageFilePath);//generate expected image
                #else
                var expectedImage = Util.LoadImage(expectedImageFilePath);
                Assert.True(Util.CompareImage(expectedImage, image));
                #endif
            }
Ejemplo n.º 2
0
            public void DrawBoxModelWithTextContent()
            {
                TextPrimitive textPrimitive       = new TextPrimitive("Hello你好こんにちは");
                var           styleRuleSet        = new StyleRuleSet();
                var           styleRuleSetBuilder = new StyleRuleSetBuilder(styleRuleSet);

                styleRuleSetBuilder
                .BackgroundColor(Color.White)
                .Border((1, 3, 1, 3))
                .BorderColor(Color.Black)
                .Padding((10, 5, 10, 5))
                .FontSize(24)
                .FontColor(Color.Black);
                var rect = new Rect(10, 10, 350, 60);

                const string expectedImageFilePath =
                    @"GraphicsImplementation\Builtin\images\BuiltinPrimitiveRendererFacts.DrawBoxModel.DrawBoxModelWithTextContent.png";
                const int width = 400, height = 100;

                byte[] imageRawBytes;
                using (var context = new RenderContextForTest(width, height))
                {
                    BuiltinPrimitiveRenderer primitiveRenderer = new BuiltinPrimitiveRenderer();
                    var mesh = new Mesh();
                    mesh.CommandBuffer.Add(DrawCommand.Default);
                    primitiveRenderer.SetShapeMesh(mesh);
                    var textMesh = new TextMesh();
                    primitiveRenderer.SetTextMesh(textMesh);
                    var imageMesh = new Mesh();
                    primitiveRenderer.SetImageMesh(imageMesh);
                    primitiveRenderer.DrawBoxModel(textPrimitive, rect, styleRuleSet);

                    context.Clear();
                    context.DrawShapeMesh(mesh);
                    context.DrawTextMesh(textMesh);

                    imageRawBytes = context.GetRenderedRawBytes();
                }

                Util.CheckExpectedImage(imageRawBytes, width, height, expectedImageFilePath);
            }
            public void DrawOnelineText(string text)
            {
                TextPrimitive primitive = new TextPrimitive(text);

                BuiltinPrimitiveRenderer primitiveRenderer = new BuiltinPrimitiveRenderer();
                var textMesh = new TextMesh();

                primitiveRenderer.SetTextMesh(textMesh);
                primitiveRenderer.DrawText(primitive, new Rect(10, 10, 200, 40), new StyleRuleSet());

                var    image = Util.RenderTextMeshToImage(primitiveRenderer.TextMesh, new Size(200, 50));
                string expectedImageFilePath =
                    $@"GraphicsImplementation\Builtin\images\BuiltinPrimitiveRendererFacts.DrawText.DrawOnelineText_{text}.png";

                #if GenerateExpectedImages
                Util.SaveImage(image, Util.UnitTestRootDir + expectedImageFilePath);//generate expected image
                #else
                var expectedImage = Util.LoadImage(expectedImageFilePath);
                Assert.True(Util.CompareImage(expectedImage, image));
                #endif
            }
Ejemplo n.º 4
0
        public void DrawText()
        {
            TextPrimitive primitive = new TextPrimitive();

            primitive.Text = "Hello你好こんにちは";
            var style = GUIStyle.Default;

            BuiltinPrimitiveRenderer primitiveRenderer = new BuiltinPrimitiveRenderer();
            var textMesh = new TextMesh();

            primitiveRenderer.SetTextMesh(textMesh);
            primitiveRenderer.DrawText(primitive, new Rect(10, 10, 500, 40), style.FontFamily, style.FontSize, style.FontColor, style.FontStyle, style.FontWeight);

            //render text

            var window = new Win32Window();

            window.Init(new Point(100, 100), new Size(500, 400), WindowTypes.Regular);

            var renderer = new Win32OpenGLRenderer();

            renderer.Init(window.Pointer, window.ClientSize);

            while (true)
            {
                window.MainLoop(() =>
                {
                    renderer.Clear(Color.FrameBg);
                    Win32OpenGLRenderer.DrawTextMesh(renderer.glyphMaterial, primitiveRenderer.TextMesh,
                                                     (int)window.ClientSize.Width, (int)window.ClientSize.Height);
                    renderer.SwapBuffers();
                });
                if (Input.Keyboard.Instance.KeyDown(Key.Escape))
                {
                    break;
                }
            }
        }