예제 #1
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);
        }
예제 #2
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})");
                    }
                }
            }
        }
예제 #3
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));
        }
예제 #4
0
파일: MemeLoader.cs 프로젝트: wchill/Rem
        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());
        }
예제 #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);
        }
        public EditInputRendererTree()
        {
            var dateTimeInputRenderer = new DateTimeInputRenderer();
            var textInputRenderer     = new TextInputRenderer();
            var numberInputRenderer   = new NumberInputType();
            var selectInputRenderer   = new SelectInputRenderer();

            numberInputRenderer.SetSuccessor(dateTimeInputRenderer);
            dateTimeInputRenderer.SetSuccessor(selectInputRenderer);
            selectInputRenderer.SetSuccessor(textInputRenderer);

            rendererTree = numberInputRenderer;
        }
예제 #7
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());
        }
예제 #8
0
파일: MemeLoader.cs 프로젝트: wchill/Rem
        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());
        }
예제 #9
0
파일: MemeLoader.cs 프로젝트: wchill/Rem
        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());
        }