コード例 #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);
        }
コード例 #6
0
        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());
        }