Ejemplo n.º 1
0
        public static string GenerateSVGXml(SizeF scale, DrawObjectList list)
        {
            string s = "";

            s += GetDefXML();              //得到定义

            s += GetGroupXML(scale, list); //得到生成的设备实体
            s += GetConnectXML(scale, list);
            s += GetAnimationXml(scale, list);
            return(s);
        }
Ejemplo n.º 2
0
        private static string GetAnimationXml(SizeF scale, DrawObjectList list)
        {
            string s = "<g id=\"" + SVGDefine.AnimationClass + "\">";

            s += Environment.NewLine;
            foreach (var obj in list.GetAnimaitionArrayList())
            {
                var drawobj = obj as DrawObject;
                if (drawobj.AnimationBases == null || drawobj.AnimationBases.Count == 0)
                {
                    continue;
                }

                s += drawobj.GetXmlStr(scale, false);
                foreach (var anim in drawobj.AnimationBases)
                {
                    s += "     <";
                    switch (anim.AnimationType)
                    {
                    case AnimationType.None:
                        s += "animate";
                        break;

                    case AnimationType.Animation:
                        s += "animate";
                        break;

                    case AnimationType.AnimationColor:
                        s += "animateColor";
                        break;

                    case AnimationType.AnimationPath:
                        s += "animateMotion";
                        break;

                    default:
                        throw new ArgumentOutOfRangeException();
                    }
                    s += anim.GetXmlStr();
                    s += " />";
                    s += Environment.NewLine;
                }

                s += drawobj.GetXmlEnd();
            }

            s += Environment.NewLine;


            s += "</g>";

            return(s);
        }
Ejemplo n.º 3
0
        private static string GetConnectXML(SizeF scale, DrawObjectList list)
        {
            string connect = "<g id=\"" + SVGDefine.ConnectLineClass + "\">";

            connect += Environment.NewLine;
            foreach (var drawObj in list.GraphicsList)
            {
                if (drawObj is DrawConnectObject)
                {
                    var dco = drawObj as DrawConnectObject;
                    connect += "<g id=\"" + dco.Id + "\">";
                    connect += Environment.NewLine;
                    connect += dco.GetXmlStr(scale);
                    connect += "</g>";
                    connect += Environment.NewLine;
                }
            }

            connect += "</g>";
            return(connect);
        }
Ejemplo n.º 4
0
        private static string GetGroupXML(SizeF scale, DrawObjectList list)
        {
            string s = "";

            s += "<g>";
            foreach (var drawObj in list.GraphicsList)
            {
                if (drawObj is DrawConnectObject)
                {
                    continue;;
                }
                else
                {
                    s += (drawObj as DrawObject)?.GetXmlStr(scale, true);
                    s += Environment.NewLine;
                }
            }
            s += "</g>";
            s += Environment.NewLine;
            return(s);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 根据读取的xml生成项目
        /// </summary>
        /// <param name="svg"></param>
        public static void CreateProjectFromXML(SVGUnit svg, DrawObjectList list)
        {
            while (svg != null)
            {
                switch (svg.getElementType())
                {
                case SVGUnit.SVGUnitType.def:    //将所有symbol读取
                    SVGUnit defchild = svg.getChild();
                    while (defchild != null)
                    {
                        if (defchild.getElementType() == SVGUnit.SVGUnitType.symbol)
                        {
                            CreateSysmbolUnit(defchild as SVGSymbol);
                        }

                        defchild = defchild.getNext();
                    }
                    break;

                case SVGUnit.SVGUnitType.typeGroup:
                    if (svg.Id == SVGDefine.ConnectLineClass)
                    {
                        SVGGroup          group             = svg.getChild() as SVGGroup;
                        DrawConnectObject drawConnectObject = DrawConnectObject.Create(group.getChild() as SVGPath);
                        SVGCN_Ref         svgcnRef          = group.getChild().getNext().getChild() as SVGCN_Ref;
                        var linkDnd = svgcnRef.LinkObjecttlDnd.Split('@');

                        drawConnectObject.SetConnectDeviceFromXml(linkDnd[0], 1, int.Parse(linkDnd[1]), list.GetDeviceList());
                        linkDnd = svgcnRef.LinkObjectIDznd.Split('@');
                        drawConnectObject.SetConnectDeviceFromXml(linkDnd[0], 2, int.Parse(linkDnd[1]), list.GetDeviceList());

                        drawConnectObject.Id = int.Parse(group.Id);
                        list.Add(drawConnectObject);
                        group = group.getNext() as SVGGroup;
                    }
                    else if (svg.Id == SVGDefine.AnimationClass)
                    {
                    }
                    else
                    {
                        SVGGroup group = svg.getChild() as SVGGroup;
                        while (group != null)
                        {
                            var gchild = group.getChild();
                            switch (gchild.getElementType())
                            {
                            case SVGUnit.SVGUnitType.use:
                                SVGUse use     = gchild as SVGUse;
                                var    gDevice = CreateDeviceDrawObjectBase(use, group.Id);     //TODO 后期添加到工作组中
                                list.Add(gDevice);
                                break;

                            default:
                                //TODO 未编排为设备的图素集合,暂时用临时分组表示
                                var o = SVGDrawFactory.CreateDrawObject(svg);
                                list.Add(o);
                                //vBase = new DeviceDrawObjectBase(0f, 0f, 0f, 0f, group.Id, drawObjects, null, "");
                                break;
                            }
                            group = group.getNext() as SVGGroup;    //获取下一个
                        }
                    }


                    break;

                default: break;
                }

                svg = svg.getNext();
            }
        }