Exemple #1
0
        public static void Clip(Graphics g, int time, IGraph graph)
        {
            ClipPath path1 = graph.ClipPath;

            if ((path1 != null) && path1.ShowClip)
            {
                GraphicsPath path2 = path1.GetGraphicsPath(g, time);
                if (path1.ClipPathUnit == Units.ObjectBoundingBox)
                {
                    GraphicsPath path3   = (GraphicsPath)graph.GPath.Clone();
                    RectangleF   ef1     = path3.GetBounds();
                    float        single1 = ef1.Left;
                    RectangleF   ef2     = path3.GetBounds();
                    float        single2 = ef2.Top;
                    RectangleF   ef3     = path3.GetBounds();
                    float        single3 = ef3.Width;
                    RectangleF   ef4     = path3.GetBounds();
                    float        single4 = ef4.Height;
                    Matrix       matrix1 = new Matrix();
                    matrix1.Scale(single3, single4);
                    path2.Transform(matrix1);
                    g.SetClip(path2, CombineMode.Intersect);
                    g.TranslateClip(single1, single2);
                }
                else
                {
                    g.SetClip(path2, CombineMode.Intersect);
                }
            }
        }
Exemple #2
0
        public static void DrawClip(Graphics g, int time, IGraph graph)
        {
            ClipPath path1 = graph.ClipPath;

            if (path1 != null)
            {
                path1.GraphTransform.Matrix = graph.GraphTransform.Matrix.Clone();
                if (!path1.ShowClip)
                {
                    path1.RefMatrix = graph.Transform.Matrix.Clone();
                    path1.Draw(g, time);
                }
            }
        }
Exemple #3
0
 public GraphicsPath GetGraphicsPath(Graphics g, int time)
 {
     if ((this.gp == null) || (this.pretime != base.OwnerDocument.ControlTime))
     {
         this.gp = new GraphicsPath();
         foreach (XmlNode node1 in this.ChildNodes)
         {
             if (node1 is IGraph)
             {
                 IGraph graph1 = (IGraph)node1;
                 int    num1   = 0;
                 int    num2   = 0;
                 AnimFunc.CreateAnimateValues(graph1, time, out num1, out num2);
                 ClipPath.Clip(g, time, graph1);
                 GraphicsPath path1 = (GraphicsPath)graph1.GPath.Clone();
                 path1.Transform(graph1.Transform.Matrix);
                 this.gp.FillMode = (this.ClipRule == "evenodd") ? FillMode.Alternate : FillMode.Winding;
                 this.gp.AddPath(path1, true);
             }
         }
     }
     return(this.gp);
 }
Exemple #4
0
        public override XmlElement CreateElement(string prefix, string localName, string ns)
        {
            XmlElement element1;
            if (this.firstload)
            {
            //				SvgElement element2 = null;
                if (this.preelement != null)
                {
                    //                    if (this.preelement.ParentNode == null)
                    //                    {
                    //                        if (this.groups.Count > 0)
                    //                        {
                    //                            element2 = (SvgElement) this.groups[this.groups.Count - 1];
                    //                            if ((element2 is ContainerElement) && ((ContainerElement) element2).IsValidChild(this.preelement))
                    //                            {
                    //                                ((ContainerElement) element2).ChildList.Add(this.preelement);
                    //                            }
                    //                        }
                    //                        this.groups.Add(this.preelement);
                    //                    }
                    //                    else if (this.groups.Count > 0)
                    //                    {
                    //						if(this.preelement.ParentNode is ContainerElement && ((ContainerElement) this.preelement.ParentNode).IsValidChild(this.preelement))
                    //						{
                    //							((ContainerElement)this.preelement.ParentNode).ChildList.Add(this.preelement);
                    //						}
                    //
                    //                    }
                }
            }
            switch (localName)
            {
                case "clipPath":
                {
                    element1 = new ClipPath(prefix, localName, ns, this);
                    break;
                }
                case "rect":
                {
                    element1 = new RectangleElement(prefix, localName, ns, this);
                    break;
                }
                case "path":
                {
                    element1 = new GraphPath(prefix, localName, ns, this);
                    break;
                }
                case "polyline":
                {
                    element1 = new Polyline(prefix, localName, ns, this);
                    break;
                }
                case "polygon":
                {
                    element1 = new Polygon(prefix, localName, ns, this);
                    break;
                }
                case "circle":
                {
                    element1 = new Circle(prefix, localName, ns, this);
                    break;
                }
                case "ellipse":
                {
                    element1 = new Ellips(prefix, localName, ns, this);
                    break;
                }
                case "script":
                {
                    element1 = new SvgScript(prefix, localName, ns, this);
                    break;
                }
                case "line":
                {
                    element1 = new Line(prefix, localName, ns, this);
                    break;
                }
                case "connectline":
                case "connect":
                {
                    element1 = new ConnectLine(prefix, localName, ns, this);
                    break;
                }
                case "g":
                {
                    element1 = new Group(prefix, localName, ns, this);
                    break;
                }
                case "svg":
                {
                    element1 = new SVG(prefix, localName, ns, this);
                    break;
                }
                case "text":
                {
                    element1 = new Text(prefix, localName, ns, this);
                    break;
                }
                case "tspan":
                {
                    element1 = new TSpan(prefix, localName, ns, this);
                    break;
                }
                case "tref":
                {
                    element1 = new TRef(prefix, localName, ns, this);
                    break;
                }
                case "linearGradient":
                {
                    element1 = new LinearGradient(prefix, localName, ns, this);
                    break;
                }
                case "radialGradient":
                {
                    element1 = new RadialGradients(prefix, localName, ns, this);
                    break;
                }
                case "stop":
                {
                    element1 = new GradientStop(prefix, localName, ns, this);
                    break;
                }
                case "symbol":
                {
                    element1 = new ItopVector.Core.Figure.Symbol(prefix, localName, ns, this);
                    break;
                }
                case "marker":
                {
                    element1 = new ItopVector.Core.Figure.Marker(prefix, localName, ns, this);
                    break;
                }
                case "defs":
                {
                    element1 = new ItopVector.Core.Figure.Defs(prefix, localName, ns, this);
                    break;
                }
                case "image":
                {
                    element1 = new ItopVector.Core.Figure.Image(prefix, localName, ns, this);
                    break;
                }
                case "a":
                {
                    element1 = new ItopVector.Core.Figure.Link(prefix, localName, ns, this);
                    break;
                }
                case "use":
                {
                    element1 = new ItopVector.Core.Figure.Use(prefix, localName, ns, this);
                    break;
                }
                case "animate":
                {
                    element1 = new ItopVector.Core.Animate.Animate(prefix, localName, ns, this);
                    break;
                }
                case "set":
                {
                    element1 = new SetAnimate(prefix, localName, ns, this);
                    break;
                }
                case "animateColor":
                {
                    element1 = new ColorAnimate(prefix, localName, ns, this);
                    break;
                }
                case "animateMotion":
                {
                    element1 = new MotionAnimate(prefix, localName, ns, this);
                    break;
                }
                case "animateTransform":
                {
                    element1 = new TransformAnimate(prefix, localName, ns, this);
                    break;
                }
                case "pattern":
                {
                    element1 = new Pattern(prefix, localName, ns, this);
                    break;
                }
                case "audio3d":
                case "audio":
                {
                    element1 = new AudioAnimate(prefix, localName, ns, this);
                    break;
                }
                case "state"://״̬
                {
                    element1 =new State(prefix, localName, ns, this);
                    break;
                }
                case "layer":
                {
                    element1 =new Layer(prefix, localName, ns, this);
                    break;
                }
                default:
                {
                    element1 = base.CreateElement(prefix, localName, ns);
                    break;
                }
            }
            if (element1 is SvgElement)
            {
                ((SvgElement) element1).ShowParticular = this.AutoShowAnim;
            }
            if ((element1 is SvgElement) && this.firstload)
            {
                this.preelement = (SvgElement) element1;
            }
            else
            {
                this.preelement = null;
            }
            if (this.xmlreader != null)
            {
                int num3 = this.xmlreader.LineNumber;
                int num4 = this.xmlreader.LinePosition;
            }
            //			if ((element1 is SVG) && (this.DocumentType == null))
            //			{
            //				XmlDocumentType type1 = this.CreateDocumentType("svg", "-/W3C/DTD SVG 1.1/EN", "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd", null);
            //				this.AppendChild(type1);
            //				this.AppendChild(this.CreateWhitespace("\r\n"));
            //			}

            return element1;
        }