Beispiel #1
0
        private void ReadGdLst(TShapeGuideList GuideList, TShapeGeom ShapeGeom)
        {
            if (DataStream.IsSimpleTag)
            {
                DataStream.NextTag(); return;
            }
            string StartElement = DataStream.RecordName();

            if (!DataStream.NextTag())
            {
                return;
            }

            while (!DataStream.AtEndElement(StartElement))
            {
                switch (DataStream.RecordName())
                {
                case "gd":
                    GuideList.Add(ReadGuide(ShapeGeom));
                    DataStream.FinishTag();
                    break;

                default: DataStream.GetXml(); break;
                }
            }
        }
Beispiel #2
0
        private TShapeFormula GetShapeFmla(string fmla, TShapeGeom ShapeGeom)
        {
            string[] Args = fmla.Split((char[])null, StringSplitOptions.RemoveEmptyEntries);
            switch (Args[0])
            {
            case "*/":
                return(Get3Args(Args, new TShapeMulDiv(), ShapeGeom));

            case "+-":
                return(Get3Args(Args, new TShapeAddSub(), ShapeGeom));

            case "+/":
                return(Get3Args(Args, new TShapeAddDiv(), ShapeGeom));

            case "?:":
                return(Get3Args(Args, new TShapeIfElse(), ShapeGeom));

            case "abs":
                return(Get1Arg(Args, new TShapeAbs(), ShapeGeom));

            case "at2":
                return(Get2Args(Args, new TShapeArcTan(), ShapeGeom));

            case "cat2":
                return(Get3Args(Args, new TShapeCosArcTan(), ShapeGeom));

            case "cos":
                return(Get2Args(Args, new TShapeCos(), ShapeGeom));

            case "max":
                return(Get2Args(Args, new TShapeMax(), ShapeGeom));

            case "min":
                return(Get2Args(Args, new TShapeMin(), ShapeGeom));

            case "mod":
                return(Get3Args(Args, new TShapeMod(), ShapeGeom));

            case "pin":
                return(Get3Args(Args, new TShapePin(), ShapeGeom));

            case "sat2":
                return(Get3Args(Args, new TShapeSinArcTan(), ShapeGeom));

            case "sin":
                return(Get2Args(Args, new TShapeSin(), ShapeGeom));

            case "sqrt":
                return(Get1Arg(Args, new TShapeSqrt(), ShapeGeom));

            case "tan":
                return(Get2Args(Args, new TShapeTan(), ShapeGeom));

            case "val":

                return(GetGuide(Args[1], ShapeGeom).Fmla);
            }

            return(new TShapeUndefFormula(fmla));
        }
Beispiel #3
0
        private void ReadAhLst(TShapeAdjustHandleList ShapeAdjustHandleList, TShapeGeom ShapeGeom)
        {
            if (DataStream.IsSimpleTag)
            {
                DataStream.NextTag(); return;
            }
            string StartElement = DataStream.RecordName();

            if (!DataStream.NextTag())
            {
                return;
            }

            while (!DataStream.AtEndElement(StartElement))
            {
                switch (DataStream.RecordName())
                {
                case "ahXY":
                    ShapeAdjustHandleList.Add(ReadAhXY(ShapeGeom));
                    break;

                case "ahPolar":
                    ShapeAdjustHandleList.Add(ReadAhPolar(ShapeGeom));
                    break;

                default: DataStream.GetXml(); break;
                }
            }
        }
Beispiel #4
0
        private void ReadPathLst(TShapeGeom ShapeGeom)
        {
            if (DataStream.IsSimpleTag)
            {
                DataStream.NextTag(); return;
            }
            string StartElement = DataStream.RecordName();

            if (!DataStream.NextTag())
            {
                return;
            }

            while (!DataStream.AtEndElement(StartElement))
            {
                switch (DataStream.RecordName())
                {
                case "path":
                    ShapeGeom.PathList.Add(ReadPath(ShapeGeom));
                    break;

                default: DataStream.GetXml(); break;
                }
            }
        }
Beispiel #5
0
        private List <TShapePoint> ReadPts(TShapeGeom ShapeGeom, string TagName)
        {
            List <TShapePoint> Result = new List <TShapePoint>();

            if (DataStream.IsSimpleTag)
            {
                DataStream.NextTag(); return(Result);
            }
            string StartElement = DataStream.RecordName();

            if (!DataStream.NextTag())
            {
                return(Result);
            }

            while (!DataStream.AtEndElement(StartElement))
            {
                if (DataStream.RecordName() == TagName)
                {
                    Result.Add(new TShapePoint(GetGuideFromAtt("x", ShapeGeom), GetGuideFromAtt("y", ShapeGeom)));
                    DataStream.FinishTag();
                }
                else
                {
                    DataStream.GetXml();
                }
            }
            return(Result);
        }
Beispiel #6
0
        private TShapeConnection ReadCxn(TShapeGeom ShapeGeom)
        {
            TShapeConnection cxn = new TShapeConnection();

            cxn.Angle    = GetGuideFromAtt("ang", ShapeGeom);
            cxn.Position = ReadPoint(ShapeGeom, "pos");
            return(cxn);
        }
Beispiel #7
0
        private TShapeGuide GetGuideFromAttAllowNull(string att, TShapeGeom ShapeGeom)
        {
            string s = DataStream.GetAttribute(att);

            if (s == null)
            {
                return(null);
            }
            return(GetGuide(s, ShapeGeom));
        }
Beispiel #8
0
        private TShapePoint ReadPoint(TShapeGeom ShapeGeom, string TagName)
        {
            List <TShapePoint> Pts = ReadPts(ShapeGeom, TagName);

            if (Pts.Count != 1)
            {
                FlxMessages.ThrowException(FlxErr.ErrInternal);
            }
            return(Pts[0]);
        }
Beispiel #9
0
        private static TShapeGuide GetGuide(string s, TShapeGeom ShapeGeom)
        {
            TShapeGuide Result;

            if (ShapeGeom.FindGuide(s, out Result))
            {
                return(Result);
            }
            return(new TShapeGuide(null, new TShapeVal(Convert.ToInt32(s))));
        }
Beispiel #10
0
        private TShapeTextRect ReadRect(TShapeGeom ShapeGeom)
        {
            TShapeTextRect ShapeTextRect = new TShapeTextRect();

            ShapeTextRect.Left   = GetGuideFromAtt("l", ShapeGeom);
            ShapeTextRect.Right  = GetGuideFromAtt("r", ShapeGeom);
            ShapeTextRect.Top    = GetGuideFromAtt("t", ShapeGeom);
            ShapeTextRect.Bottom = GetGuideFromAtt("b", ShapeGeom);
            DataStream.FinishTag();
            return(ShapeTextRect);
        }
Beispiel #11
0
        private TShapeAdjustHandle ReadAhPolar(TShapeGeom ShapeGeom)
        {
            TShapeAdjustHandlePolar ah = new TShapeAdjustHandlePolar();

            ah.GdRefR   = GetGuideFromAttAllowNull("gdRefR", ShapeGeom);
            ah.MinR     = GetGuideFromAttAllowNull("minR", ShapeGeom);
            ah.MaxR     = GetGuideFromAttAllowNull("maxR", ShapeGeom);
            ah.GdRefAng = GetGuideFromAttAllowNull("gdRefAng", ShapeGeom);
            ah.MinAng   = GetGuideFromAttAllowNull("minAng", ShapeGeom);
            ah.MaxAng   = GetGuideFromAttAllowNull("maxAng", ShapeGeom);
            ah.Location = ReadPoint(ShapeGeom, "pos");
            return(ah);
        }
Beispiel #12
0
        private TShapeAdjustHandle ReadAhXY(TShapeGeom ShapeGeom)
        {
            TShapeAdjustHandleXY ah = new TShapeAdjustHandleXY();

            ah.GdRefX   = GetGuideFromAttAllowNull("gdRefX", ShapeGeom);
            ah.MinX     = GetGuideFromAttAllowNull("minX", ShapeGeom);
            ah.MaxX     = GetGuideFromAttAllowNull("maxX", ShapeGeom);
            ah.GdRefY   = GetGuideFromAttAllowNull("gdRefY", ShapeGeom);
            ah.MinY     = GetGuideFromAttAllowNull("minY", ShapeGeom);
            ah.MaxY     = GetGuideFromAttAllowNull("maxY", ShapeGeom);
            ah.Location = ReadPoint(ShapeGeom, "pos");
            return(ah);
        }
Beispiel #13
0
        internal TShapeGeom ReadShapeDef(string GeomName)
        {
            TShapeGeom Result = new TShapeGeom(GeomName);

            string DefaultNamespace = DataStream.DefaultNamespace;

            DataStream.DefaultNamespace = "http://schemas.openxmlformats.org/drawingml/2006/main";
            try
            {
                string StartElement = DataStream.RecordName();
                if (DataStream.IsSimpleTag)
                {
                    DataStream.NextTag(); return(Result);
                }
                if (!DataStream.NextTag())
                {
                    return(Result);
                }

                while (!DataStream.AtEndElement(StartElement))
                {
                    switch (DataStream.RecordName())
                    {
                    case "avLst": ReadGdLst(Result.AvList, Result); break;

                    case "gdLst": ReadGdLst(Result.GdList, Result); break;

                    case "ahLst": ReadAhLst(Result.AhList, Result); break;

                    case "cxnLst": ReadCxnLst(Result.ConnList, Result); break;

                    case "rect": Result.TextRect = ReadRect(Result); break;

                    case "pathLst": ReadPathLst(Result); break;

                    default: DataStream.GetXml(); break;
                    }
                }
            }
            finally
            {
                DataStream.DefaultNamespace = DefaultNamespace;
            }

            return(Result);
        }
Beispiel #14
0
 private TShapePoint ReadPt(TShapeGeom ShapeGeom)
 {
     return(ReadPoint(ShapeGeom, "pt"));
 }
Beispiel #15
0
        private TShapeGuide GetGuideFromAtt(string att, TShapeGeom ShapeGeom)
        {
            string s = DataStream.GetAttribute(att);

            return(GetGuide(s, ShapeGeom));
        }
Beispiel #16
0
        private TShapePath ReadPath(TShapeGeom ShapeGeom)
        {
            TShapePath Result = new TShapePath();

            if (DataStream.IsSimpleTag)
            {
                DataStream.NextTag(); return(Result);
            }

            Result.Width       = DataStream.GetAttributeAsInt("w", 0);
            Result.Height      = DataStream.GetAttributeAsInt("h", 0);
            Result.PathFill    = GetPathFill(DataStream.GetAttribute("fill"));
            Result.PathStroke  = DataStream.GetAttributeAsBool("stroke", true);
            Result.ExtrusionOk = DataStream.GetAttributeAsBool("extrusionOk", true);

            string StartElement = DataStream.RecordName();

            if (!DataStream.NextTag())
            {
                return(Result);
            }

            while (!DataStream.AtEndElement(StartElement))
            {
                switch (DataStream.RecordName())
                {
                case "close":
                    Result.Actions.Add(new TShapeActionClose());
                    DataStream.FinishTag();
                    break;

                case "moveTo":
                    Result.Actions.Add(new TShapeActionMoveTo(ReadPt(ShapeGeom)));
                    break;

                case "lnTo":
                    Result.Actions.Add(new TShapeActionLineTo(ReadPt(ShapeGeom)));
                    break;

                case "arcTo":
                    TShapeActionArcTo ArcTo = new TShapeActionArcTo();
                    ArcTo.WidthRadius  = GetGuideFromAtt("wR", ShapeGeom);
                    ArcTo.HeightRadius = GetGuideFromAtt("hR", ShapeGeom);
                    ArcTo.StartAngle   = GetGuideFromAtt("stAng", ShapeGeom);
                    ArcTo.SwingAngle   = GetGuideFromAtt("swAng", ShapeGeom);
                    Result.Actions.Add(ArcTo);
                    DataStream.FinishTag();
                    break;

                case "quadBezTo":
                    Result.Actions.Add(new TShapeActionQuadBezierTo(ReadPts(ShapeGeom, "pt").ToArray()));
                    break;

                case "cubicBezTo":
                    Result.Actions.Add(new TShapeActionCubicBezierTo(ReadPts(ShapeGeom, "pt").ToArray()));
                    break;

                default: DataStream.GetXml(); break;
                }
            }

            return(Result);
        }
Beispiel #17
0
 private TShapeGuide ReadGuide(TShapeGeom ShapeGeom)
 {
     return(new TShapeGuide(DataStream.GetAttribute("name"), GetShapeFmla(DataStream.GetAttribute("fmla").Trim(), ShapeGeom)));
 }
Beispiel #18
0
 private TShapeFormula Get1Arg(string[] Args, T1ArgShapeFormula aShape, TShapeGeom ShapeGeom)
 {
     aShape.x = GetGuide(Args[1], ShapeGeom);
     return(aShape);
 }
Beispiel #19
0
 private TShapeFormula Get2Args(string[] Args, T2ArgShapeFormula aShape, TShapeGeom ShapeGeom)
 {
     Get1Arg(Args, aShape, ShapeGeom);
     aShape.y = GetGuide(Args[2], ShapeGeom);
     return(aShape);
 }
Beispiel #20
0
 private TShapeFormula Get3Args(string[] Args, T3ArgShapeFormula aShape, TShapeGeom ShapeGeom)
 {
     Get2Args(Args, aShape, ShapeGeom);
     aShape.z = GetGuide(Args[3], ShapeGeom);
     return(aShape);
 }