public void TextConstraintsMetWithScalingEnabled(int width, int height, string text)
        {
            var originalFont = MemeFonts.GetDefaultFont();
            var renderer     = new TextInputRenderer(originalFont, null, Brushes.Solid(Rgba32.Black), HorizontalAlignment.Center, VerticalAlignment.Center, false);

            renderer.GetAdjustedFont(width, height, text);
        }
        public void ImpossibleTextConstraintsThrowsArgumentException(int width, int height, string text)
        {
            var originalFont = MemeFonts.GetDefaultFont();
            var renderer     = new TextInputRenderer(originalFont, null, Brushes.Solid(Rgba32.Black), HorizontalAlignment.Center, VerticalAlignment.Center, false);

            Assert.Throws <ArgumentException>(() => renderer.GetAdjustedFont(width, height, text));
        }
Example #3
0
        public void TextRenderingWithinBoundaries(int width, int height, string text)
        {
            var margin = 20;

            using (var canvas = new Image <Rgba32>(width + 2 * margin, height + 2 * margin))
            {
                var font       = MemeFonts.GetDefaultFont();
                var renderer   = new TextInputRenderer(font, null, Brushes.Solid(Rgba32.Black), HorizontalAlignment.Center, VerticalAlignment.Center, false);
                var renderArea = new Rectangle(margin, margin, width, height);
                canvas.Mutate(ctx =>
                {
                    ctx.Fill(Rgba32.AliceBlue);
                    renderer.Render(ctx, renderArea, text);
                });
                for (var y = 0; y < canvas.Height; y++)
                {
                    for (var x = 0; x < margin; x++)
                    {
                        Assert.True(canvas[x, y] == Rgba32.AliceBlue, $"Text was rendered outside the drawing canvas at ({x}, {y})");
                    }
                    if (y < margin || y >= canvas.Height - margin)
                    {
                        for (var x = margin; x < canvas.Width - margin; x++)
                        {
                            Assert.True(canvas[x, y] == Rgba32.AliceBlue, $"Text was rendered outside the drawing canvas at ({x}, {y})");
                        }
                    }
                    for (var x = canvas.Width - margin; x < canvas.Width; x++)
                    {
                        Assert.True(canvas[x, y] == Rgba32.AliceBlue, $"Text was rendered outside the drawing canvas at ({x}, {y})");
                    }
                }
            }
        }
Example #4
0
        public static MemeTemplate LoadComaMemeTemplate()
        {
            var font         = new Font(MemeFonts.GetDefaultFont(), 36);
            var textRenderer = new TextInputRenderer(font, null, Brushes.Solid(Rgba32.Black), HorizontalAlignment.Center, VerticalAlignment.Center, true);

            var nurseText = new InputFieldBuilder()
                            .WithName("Nurse", "Sir, you've been in a coma for...")
                            .WithVertices(new Point(145, 73), new Point(715, 73), new Point(145, 147), new Point(715, 147))
                            .WithRenderer(textRenderer)
                            .WithPadding(0.03)
                            .Build();

            var patientText = new InputFieldBuilder()
                              .WithName("Patient response", "Oh boy, I can't wait to...")
                              .WithVertices(new Point(158, 150), new Point(725, 150), new Point(158, 260), new Point(725, 260))
                              .WithRenderer(textRenderer)
                              .WithPadding(0.03)
                              .Build();

            return(new MemeTemplateBuilder("Images/MemeTemplates/Coma.jpg")
                   .WithName("Coma")
                   .WithDescription("Sir, you've been in a coma for...")
                   .WithInputField(nurseText)
                   .WithInputField(patientText)
                   .Build());
        }
        public void ScalingPerformedForLongTextWhenPreferringNoScaling(int width, int height, string text)
        {
            var originalFont = new Font(MemeFonts.GetDefaultFont(), 5);
            var renderer     = new TextInputRenderer(originalFont, null, Brushes.Solid(Rgba32.Black), HorizontalAlignment.Center, VerticalAlignment.Center, true);
            var newFont      = renderer.GetAdjustedFont(width, height, text);

            Assert.True(originalFont.Size > newFont.Size);
        }
Example #6
0
        private static MemeTemplate GetMemeTemplate()
        {
            var font           = MemeFonts.GetDefaultFont();
            var textRenderer   = new TextInputRenderer(font, Pens.Dash <Rgba32>(Rgba32.Black, 1), Brushes.Solid(Rgba32.Black), HorizontalAlignment.Center, VerticalAlignment.Center, false);
            var disappointment = new InputFieldBuilder()
                                 .WithName("Baby")
                                 .WithVertices(new Point(115, 720), new Point(584, 720), new Point(115, 884), new Point(584, 884))
                                 .WithRenderer(textRenderer)
                                 .WithPadding(0.03)
                                 .Build();

            return(new MemeTemplateBuilder("TestData/Disappointment.png")
                   .WithName("Disappointment")
                   .WithDescription("Free disappointment")
                   .WithInputField(disappointment)
                   .Build());
        }
Example #7
0
        public static TextInputRenderer GetDefaultTextInputRenderer()
        {
            var font = MemeFonts.GetDefaultFont();

            return(new TextInputRenderer(font, null, Brushes.Solid(Rgba32.Black), HorizontalAlignment.Center, VerticalAlignment.Center, false));
        }