Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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);
        }
Esempio n. 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})");
                    }
                }
            }
        }
Esempio n. 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());
        }
Esempio n. 5
0
        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);
        }
Esempio n. 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());
        }
Esempio n. 7
0
        public static MemeTemplate LoadKomiMemeTemplate()
        {
            var imageRenderer = GetDefaultImageInputRenderer();

            var font         = MemeFonts.GetFont(AvailableFonts.AnimeAce);
            var textRenderer = new TextInputRenderer(font, null, Brushes.Solid(Rgba32.Black), HorizontalAlignment.Left, VerticalAlignment.Top, false);

            var inputField = new InputFieldBuilder()
                             .WithName("Paper", "Whatever Komi's looking at on the paper")
                             .WithVertices(new Point(245, 479), new Point(707, 563), new Point(48, 980), new Point(557, 1067))
                             .WithRenderer(imageRenderer)
                             .WithRenderer(textRenderer)
                             .WithPadding(0.03)
                             .WithMask(new Point(245, 479), new Point(665, 556), new Point(665, 699), new Point(555, 1066), new Point(184, 1068), new Point(184, 633))
                             .Build();

            return(new MemeTemplateBuilder("Images/MemeTemplates/KomiPaper.png")
                   .WithName("Komi")
                   .WithDescription("Komi-san reads something and gets excited!")
                   .WithInputField(inputField)
                   .Build());
        }
Esempio n. 8
0
        public static MemeTemplate LoadDistractedBoyfriendMemeTemplate()
        {
            var imageRenderer = GetDefaultImageInputRenderer();
            var font          = MemeFonts.GetFont(AvailableFonts.Anton);
            var textRenderer  = new TextInputRenderer(font, Pens.Solid(Rgba32.Black, 2), Brushes.Solid(Rgba32.White), HorizontalAlignment.Center, VerticalAlignment.Center, false);

            var boyfriend = new InputFieldBuilder()
                            .WithName("Boyfriend")
                            .WithVertices(new Point(1338, 823), new Point(1838, 823), new Point(1338, 1083), new Point(1838, 1083))
                            .WithRenderer(imageRenderer)
                            .WithRenderer(textRenderer)
                            .WithPadding(0.03)
                            .Build();

            var girlfriend = new InputFieldBuilder()
                             .WithName("Girlfriend")
                             .WithVertices(new Point(1874, 829), new Point(2314, 829), new Point(1874, 1089), new Point(2314, 1089))
                             .WithRenderer(imageRenderer)
                             .WithRenderer(textRenderer)
                             .WithPadding(0.03)
                             .Build();

            var otherGirl = new InputFieldBuilder()
                            .WithName("The other girl")
                            .WithVertices(new Point(487, 1016), new Point(987, 1016), new Point(487, 1276), new Point(987, 1276))
                            .WithRenderer(imageRenderer)
                            .WithRenderer(textRenderer)
                            .WithPadding(0.03)
                            .Build();

            return(new MemeTemplateBuilder("Images/MemeTemplates/DistractedBoyfriend.jpg")
                   .WithName("Distracted Boyfriend")
                   .WithDescription("Disloyal man walking with his girlfriend and looking amazed at another seductive girl")
                   .WithInputField(boyfriend)
                   .WithInputField(girlfriend)
                   .WithInputField(otherGirl)
                   .Build());
        }
Esempio n. 9
0
        public override Font ReadJson(JsonReader reader, Type objectType, Font existingValue, bool hasExistingValue, JsonSerializer serializer)
        {
            var props = serializer.Deserialize <FontInfo>(reader);

            return(MemeFonts.GetFont(props.fontName, props.fontSize, props.fontStyle));
        }
Esempio n. 10
0
        public static TextInputRenderer GetDefaultTextInputRenderer()
        {
            var font = MemeFonts.GetDefaultFont();

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