Пример #1
0
 private static bool CompareDummyRendererTreesRecursive(ISvgNodeRenderer treeNodeOne, ISvgNodeRenderer treeNodeTwo
                                                        )
 {
     //Name
     if (!treeNodeOne.ToString().Equals(treeNodeTwo.ToString()))
     {
         return(false);
     }
     //Nr of children
     if (treeNodeOne is IBranchSvgNodeRenderer && treeNodeTwo is IBranchSvgNodeRenderer)
     {
         IBranchSvgNodeRenderer one = (IBranchSvgNodeRenderer)treeNodeOne;
         IBranchSvgNodeRenderer two = (IBranchSvgNodeRenderer)treeNodeTwo;
         if (one.GetChildren().Count != two.GetChildren().Count)
         {
             return(false);
         }
         //Expect empty collection when no children are present
         if (one.GetChildren().IsEmpty())
         {
             return(true);
         }
         //Iterate over children
         bool iterationResult = true;
         for (int i = 0; i < one.GetChildren().Count; i++)
         {
             iterationResult = iterationResult && CompareDummyRendererTreesRecursive(one.GetChildren()[i], two.GetChildren
                                                                                         ()[i]);
         }
         return(iterationResult);
     }
     return(false);
 }
Пример #2
0
        public virtual void StyleTagProcessingTest()
        {
            String svg = "<svg\n" + "   width=\"210mm\"\n" + "   height=\"297mm\"\n" + "   viewBox=\"0 0 210 297\"\n"
                         + "   version=\"1.1\"\n" + "   id=\"svg8\"\n" + "   >\n" + "  <style>\n" + "\tellipse{\n" + "\t\tstroke-width:1.76388889;\n"
                         + "\t\tstroke:#da0000;\n" + "\t\tstroke-opacity:1;\n" + "\t}\n" + "  </style>\n" + "    <ellipse\n" +
                         "       id=\"path3699\"\n" + "       cx=\"96.005951\"\n" + "       cy=\"110.65774\"\n" + "       rx=\"53.672619\"\n"
                         + "       ry=\"53.294643\"\n" + "       style=\"fill:none;stroke-miterlimit:4;stroke-dasharray:none\" />\n"
                         + "</svg>\n";
            JsoupXmlParser         xmlParser    = new JsoupXmlParser();
            IDocumentNode          root         = xmlParser.Parse(svg);
            IBranchSvgNodeRenderer nodeRenderer = (IBranchSvgNodeRenderer) new DefaultSvgProcessor().Process(root).GetRootRenderer
                                                      ();
            IDictionary <String, String> actual = new Dictionary <String, String>();
            //Traverse to ellipse
            ISvgNodeRenderer ellipse = nodeRenderer.GetChildren()[0];

            actual.Put("stroke", ellipse.GetAttribute("stroke"));
            actual.Put("stroke-width", ellipse.GetAttribute("stroke-width"));
            actual.Put("stroke-opacity", ellipse.GetAttribute("stroke-opacity"));
            IDictionary <String, String> expected = new Dictionary <String, String>();

            expected.Put("stroke-width", "1.76388889");
            expected.Put("stroke", "#da0000");
            expected.Put("stroke-opacity", "1");
            NUnit.Framework.Assert.AreEqual(expected, actual);
        }
        public virtual void SmoothCurveTest3()
        {
            String      filename = "smoothCurveTest3.pdf";
            PdfDocument doc      = new PdfDocument(new PdfWriter(destinationFolder + filename));

            doc.AddNewPage();
            String                 svgFilename = "smoothCurveTest3.svg";
            Stream                 xmlStream   = new FileStream(sourceFolder + svgFilename, FileMode.Open, FileAccess.Read);
            IElementNode           rootTag     = new JsoupXmlParser().Parse(xmlStream, "ISO-8859-1");
            DefaultSvgProcessor    processor   = new DefaultSvgProcessor();
            IBranchSvgNodeRenderer root        = (IBranchSvgNodeRenderer)processor.Process(rootTag, null).GetRootRenderer();
            SvgDrawContext         context     = new SvgDrawContext(null, null);
            PdfCanvas              cv          = new PdfCanvas(doc, 1);

            context.PushCanvas(cv);
            NUnit.Framework.Assert.IsTrue(root.GetChildren()[0] is PathSvgNodeRenderer);
            root.GetChildren()[0].Draw(context);
            doc.Close();
        }
Пример #4
0
        public virtual void ProcessNode()
        {
            INode svg = new JsoupElementNode(new iText.StyledXmlParser.Jsoup.Nodes.Element(iText.StyledXmlParser.Jsoup.Parser.Tag
                                                                                           .ValueOf("svg"), ""));
            IBranchSvgNodeRenderer node = (IBranchSvgNodeRenderer)SvgConverter.Process(svg).GetRootRenderer();

            NUnit.Framework.Assert.IsTrue(node is SvgTagSvgNodeRenderer);
            NUnit.Framework.Assert.AreEqual(0, node.GetChildren().Count);
            NUnit.Framework.Assert.IsNull(node.GetParent());
        }
        public virtual void DefaultBehaviourTest()
        {
            String                 svgFile   = sourceFolder + "RedCircle.svg";
            Stream                 svg       = new FileStream(svgFile, FileMode.Open, FileAccess.Read);
            JsoupXmlParser         xmlParser = new JsoupXmlParser();
            IDocumentNode          root      = xmlParser.Parse(svg, null);
            IBranchSvgNodeRenderer actual    = (IBranchSvgNodeRenderer) new DefaultSvgProcessor().Process(root).GetRootRenderer
                                                   ();
            IBranchSvgNodeRenderer       expected                  = new SvgTagSvgNodeRenderer();
            ISvgNodeRenderer             expectedEllipse           = new EllipseSvgNodeRenderer();
            IDictionary <String, String> expectedEllipseAttributes = new Dictionary <String, String>();

            expectedEllipse.SetAttributesAndStyles(expectedEllipseAttributes);
            expected.AddChild(expectedEllipse);
            //1 child
            NUnit.Framework.Assert.AreEqual(expected.GetChildren().Count, actual.GetChildren().Count);
        }
Пример #6
0
        public virtual void DefaultBehaviourTest()
        {
            String                 svgFile   = sourceFolder + "RedCircle.svg";
            Stream                 svg       = new FileStream(svgFile, FileMode.Open, FileAccess.Read);
            JsoupXmlParser         xmlParser = new JsoupXmlParser();
            IDocumentNode          root      = xmlParser.Parse(svg, null);
            IBranchSvgNodeRenderer actual    = (IBranchSvgNodeRenderer) new DefaultSvgProcessor().Process(root, null).GetRootRenderer
                                                   ();
            //Attribute comparison from the known RedCircle.svg
            IDictionary <String, String> attrs = actual.GetChildren()[0].GetAttributeMapCopy();

            NUnit.Framework.Assert.AreEqual(11, attrs.Keys.Count, "Number of parsed attributes is wrong");
            NUnit.Framework.Assert.AreEqual("1", attrs.Get("stroke-opacity"), "The stroke-opacity attribute doesn't correspond it's value"
                                            );
            NUnit.Framework.Assert.AreEqual("1.76388889", attrs.Get("stroke-width"), "The stroke-width attribute doesn't correspond it's value"
                                            );
            NUnit.Framework.Assert.AreEqual("path3699", attrs.Get("id"), "The id attribute doesn't correspond it's value"
                                            );
            NUnit.Framework.Assert.AreEqual("none", attrs.Get("stroke-dasharray"), "The stroke-dasharray attribute doesn't correspond it's value"
                                            );
        }
Пример #7
0
        public virtual void StylesOfSvgTagProcessingTest()
        {
            String svg = "<?xml version=\"1.0\" standalone=\"no\"?>\n" + "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n"
                         + "        \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n" + "<svg width=\"400\" height=\"200\"\n"
                         + "     viewBox=\"0 0 400 200\" version=\"1.1\"\n" + "     xmlns=\"http://www.w3.org/2000/svg\"\n" +
                         "     xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n" + "     xmlns:v=\"http://schemas.microsoft.com/visio/2003/SVGExtensions/\"\n"
                         + "     class=\"st11\">\n" + "    <style type=\"text/css\">\n" + "        .st11 {fill:none;stroke:black;stroke-width:6}\n"
                         + "    </style>\n" + "    <g >\n" + "        <path d=\"M0 100 L0 50 L70 50\"/>\n" + "    </g>\n" + "</svg>";
            JsoupXmlParser         xmlParser    = new JsoupXmlParser();
            IDocumentNode          root         = xmlParser.Parse(svg);
            IBranchSvgNodeRenderer nodeRenderer = (IBranchSvgNodeRenderer) new DefaultSvgProcessor().Process(root).GetRootRenderer
                                                      ();
            PathSvgNodeRenderer pathSvgNodeRenderer = (PathSvgNodeRenderer)((IBranchSvgNodeRenderer)nodeRenderer.GetChildren
                                                                                ()[0]).GetChildren()[0];
            IDictionary <String, String> actual = new Dictionary <String, String>();

            actual.Put("stroke", pathSvgNodeRenderer.GetAttribute("stroke"));
            actual.Put("fill", pathSvgNodeRenderer.GetAttribute("fill"));
            actual.Put("d", pathSvgNodeRenderer.GetAttribute("d"));
            IDictionary <String, String> expected = new Dictionary <String, String>();

            expected.Put("stroke", "black");
            expected.Put("fill", "none");
            expected.Put("d", "M0 100 L0 50 L70 50");
            NUnit.Framework.Assert.AreEqual(expected, actual);
        }