示例#1
0
        public static ConvolutionFilter FromXml(XElement xFilter)
        {
            var xMatrix = xFilter.RequiredElement("matrix");
            var xReserved = xFilter.Attribute("reserved");

            var filter = new ConvolutionFilter {
                Divisor = xFilter.RequiredDoubleAttribute("divisor"),
                Bias = xFilter.RequiredDoubleAttribute("bias")
            };

            var xRows = xMatrix.Elements().ToList();
            var height = xRows.Count;
            var width = xMatrix.Elements().First().Elements().Count();

            filter.Matrix = new double[height, width];
            for (var y = 0; y < filter.MatrixY; y++) {
                var xRow = xRows[y];
                var xCols = xRow.Elements().ToList();
                for (var x = 0; x < filter.MatrixX; x++) {
                    var xCol = xCols[x];
                    filter.Matrix[y, x] = CommonFormatter.ParseDouble(xCol.Value);
                }
            }

            filter.DefaultColor = XColorRGBA.FromXml(xFilter.RequiredElement("color").Element("Color"));
            if (xReserved != null) {
                filter.Reserved = byte.Parse(xReserved.Value);
            }
            filter.Clamp = xFilter.RequiredBoolAttribute("clamp");
            filter.PreserveAlpha = xFilter.RequiredBoolAttribute("preserveAlpha");
            return filter;
        }
示例#2
0
        public static void FromXml(XElement xStyleList, IList<FillStyleRGBA> fillStyles, IList<LineStyleEx> lineStyles)
        {
            var xFillStyles = xStyleList.RequiredElement("fillStyles");
            foreach (var xFillStyle in xFillStyles.Elements()) {
                var fillStyle = XFillStyle.FromXmlRGBA(xFillStyle);
                fillStyles.Add(fillStyle);
            }

            var xLineStyles = xStyleList.RequiredElement("lineStyles");
            foreach (var xLineStyle in xLineStyles.Elements()) {
                var lineStyle = XLineStyleEx.FromXml(xLineStyle);
                lineStyles.Add(lineStyle);
            }
        }
示例#3
0
文件: XShape.cs 项目: liwq-net/SwfLib
 public static void FromXml(XElement xShape, IList<IShapeRecordEx> records)
 {
     var xEdges = xShape.RequiredElement("edges");
     foreach (var xShapeRecord in xEdges.Elements()) {
         records.Add(XShapeRecord.ExFromXml(xShapeRecord));
     }
 }
示例#4
0
 public static SolidFillStyleRGBA FromXmlRGBA(XElement xFillStyle)
 {
     var xColor = xFillStyle.RequiredElement("color").Element("Color");
     return new SolidFillStyleRGBA {
         Color = XColorRGBA.FromXml(xColor)
     };
 }
示例#5
0
 public static Glyph FromXml(XElement xGlyph, Glyph glyph)
 {
     var xEdges = xGlyph.RequiredElement("edges");
     foreach (var xShapeRecord in xEdges.Elements()) {
         glyph.Records.Add(XShapeRecord.RGBFromXml(xShapeRecord));
     }
     return glyph;
 }
示例#6
0
 public static GradientRecordRGB FromXml(XElement xRecord)
 {
     var record = new GradientRecordRGB {
         Ratio = xRecord.RequiredByteAttribute("position"),
         Color = XColorRGB.FromXml(xRecord.RequiredElement("color").Element("Color"))
     };
     return record;
 }
示例#7
0
 public static LineStyleRGBA FromXml(XElement xLineStyle)
 {
     var xColor = xLineStyle.RequiredElement("color").Element("Color");
     return new LineStyleRGBA {
         Width = xLineStyle.RequiredUShortAttribute("width"),
         Color = XColorRGBA.FromXml(xColor)
     };
 }
示例#8
0
        public static BevelFilter FromXml(XElement xFilter)
        {
            var xCompositeSource = xFilter.Attribute("compositeSource");

            var xShadowColor = xFilter.RequiredElement("shadowColor").Element("Color");
            var xHighlightColor = xFilter.RequiredElement("highlightColor").Element("Color");

            return new BevelFilter {
                Angle = xFilter.RequiredDoubleAttribute("angle"),
                BlurX = xFilter.RequiredDoubleAttribute("blurX"),
                BlurY = xFilter.RequiredDoubleAttribute("blurY"),
                Distance = xFilter.RequiredDoubleAttribute("distance"),
                InnerShadow = xFilter.RequiredBoolAttribute("innerShadow"),
                Knockout = xFilter.RequiredBoolAttribute("knockout"),
                Passes = xFilter.RequiredUIntAttribute("passes"),
                Strength = xFilter.RequiredDoubleAttribute("strength"),
                CompositeSource = xCompositeSource == null || CommonFormatter.ParseBool(xCompositeSource.Value),
                OnTop = xFilter.RequiredBoolAttribute("onTop"),
                ShadowColor = XColorRGBA.FromXml(xShadowColor),
                HighlightColor = XColorRGBA.FromXml(xHighlightColor)
            };
        }
示例#9
0
        public static ButtonRecordEx FromXml(XElement xRecord)
        {
            var res = new ButtonRecordEx();
            var xReserved = xRecord.Attribute("reserved");
            var xBlendMode = xRecord.Attribute("blendMode");

            res.StateHitTest = xRecord.RequiredBoolAttribute("hitTest");
            res.StateDown = xRecord.RequiredBoolAttribute("down");
            res.StateOver = xRecord.RequiredBoolAttribute("over");
            res.StateUp = xRecord.RequiredBoolAttribute("up");
            if (xReserved != null) {
                res.Reserved = byte.Parse(xReserved.Value);
            }

            if (xBlendMode != null) {
                res.BlendMode = (BlendMode)byte.Parse(xBlendMode.Value);
            }

            if (!res.IsEndButton) {

                res.CharacterID = xRecord.RequiredUShortAttribute("objectID");
                res.PlaceDepth = xRecord.RequiredUShortAttribute("depth");

                var xMatrix = xRecord.RequiredElement("transform").Element(XMatrix.TAG_NAME);
                res.PlaceMatrix = XMatrix.FromXml(xMatrix);

                var xColorTransform = xRecord.RequiredElement("colorTransform").Element("ColorTransform2");
                res.ColorTransform = XColorTransformRGBA.FromXml(xColorTransform);

                var xFilters = xRecord.Element("filters");
                if (xFilters != null) {
                    foreach (var xFilter in xFilters.Elements()) {
                        res.Filters.Add(XFilter.FromXml(xFilter));
                    }
                }
            }
            return res;
        }
示例#10
0
        public static GlowFilter FromXml(XElement xFilter)
        {
            var xCompositeSource = xFilter.Attribute("compositeSource");

            var xColor = xFilter.RequiredElement("color").Element("Color");

            return new GlowFilter {
                BlurX = xFilter.RequiredDoubleAttribute("blurX"),
                BlurY = xFilter.RequiredDoubleAttribute("blurY"),
                InnerGlow = xFilter.RequiredBoolAttribute("innerGlow"),
                Knockout = xFilter.RequiredBoolAttribute("knockout"),
                Passes = xFilter.RequiredUIntAttribute("passes"),
                Strength = xFilter.RequiredDoubleAttribute("strength"),
                CompositeSource = xCompositeSource == null || CommonFormatter.ParseBool(xCompositeSource.Value),
                Color = XColorRGBA.FromXml(xColor)
            };
        }
示例#11
0
        public static ZoneRecord FromXml(XElement xZoneRecord)
        {
            var zoneArray = new ZoneRecord();
            var xZoneX = xZoneRecord.Attribute("zoneX");
            var xZoneY = xZoneRecord.Attribute("zoneY");
            var xReserved = xZoneRecord.Attribute("reserved");
            zoneArray.ZoneX = CommonFormatter.ParseBool(xZoneX.Value);
            zoneArray.ZoneY = CommonFormatter.ParseBool(xZoneY.Value);
            if (xReserved != null) {
                zoneArray.Reserved = byte.Parse(xReserved.Value);
            }

            foreach (var xZoneData in xZoneRecord.RequiredElement("zones").Elements()) {
                zoneArray.Data.Add(XZoneData.FromXml(xZoneData));
            }

            return zoneArray;
        }
示例#12
0
        private static IMenuItem LoadMenuItem(
            IServiceProvider serviceProvider,
            XElement itemElement,
            Func<string, string> resourceStringGetter)
        {
            if (itemElement.Name == XName.Get("menu", _menuDescriptorSchemaUri))
                return
                    new Menu(
                        (string)itemElement.Attribute(XName.Get("name")),
                        itemElement
                            .Elements()
                            .Select(sub => LoadMenuGroup(serviceProvider, sub, resourceStringGetter)),
                        resourceStringGetter((string)itemElement.Attribute(XName.Get("textResource"))),
                        (string)itemElement.Attribute(XName.Get("image")),
                        (string)itemElement.Attribute(XName.Get("description")),
                        (MenuItemDisplayStyle)Enum.Parse(
                            typeof(MenuItemDisplayStyle),
                            (string)itemElement.Attribute(XName.Get("displayStyle"))),
                        (int)itemElement.Attribute(XName.Get("orderIndex")));

            if (itemElement.Name == XName.Get("menuCommand", _menuDescriptorSchemaUri))
            {
                var commandName = (string)itemElement.Attribute(XName.Get("command"));

                string text;
                string description;
                GetMenuCommandTextAndDescription(
                    serviceProvider,
                    commandName,
                    (string)itemElement.Attribute(XName.Get("textResource")),
                    (string)itemElement.Attribute(XName.Get("description")),
                    resourceStringGetter,
                    out text,
                    out description);

                return new MenuCommand(
                    commandName,
                    LoadCommandParameters(itemElement),
                    text,
                    (string)itemElement.Attribute(XName.Get("image")),
                    description,
                    (MenuItemDisplayStyle)Enum.Parse(
                        typeof(MenuItemDisplayStyle),
                        (string)itemElement.Attribute(XName.Get("displayStyle"))),
                    (int)itemElement.Attribute(XName.Get("orderIndex")));
            }

            if (itemElement.Name == XName.Get("splitButton", _menuDescriptorSchemaUri))
            {
                var commandName = (string)itemElement.Attribute(XName.Get("command"));
                string text;
                string description;
                GetMenuCommandTextAndDescription(
                    serviceProvider,
                    commandName,
                    (string)itemElement.Attribute(XName.Get("textResource")),
                    (string)itemElement.Attribute(XName.Get("description")),
                    resourceStringGetter,
                    out text,
                    out description);

                return new MenuSplitButton(
                    (string)itemElement.Attribute(XName.Get("name")),
                    itemElement
                        .Elements(XName.Get("group", _menuDescriptorSchemaUri))
                        .Select(sub => LoadMenuGroup(serviceProvider, sub, resourceStringGetter)),
                    commandName,
                    LoadCommandParameters(itemElement),
                    text,
                    (string)itemElement.Attribute(XName.Get("image")),
                    description,
                    (MenuItemDisplayStyle)Enum.Parse(
                        typeof(MenuItemDisplayStyle),
                        (string)itemElement.Attribute(XName.Get("displayStyle"))),
                    (int)itemElement.Attribute(XName.Get("orderIndex")));
            }

            if (itemElement.Name == XName.Get("menuCheckCommand", _menuDescriptorSchemaUri))
            {
                var checkCommandElement = itemElement.RequiredElement(
                    XName.Get("checkCommand", _menuDescriptorSchemaUri));
                var checkCommandName = (string)checkCommandElement.Attribute(XName.Get("name"));
                var checkCommandParameters = LoadCommandParameters(checkCommandElement);

                var uncheckCommandElement = itemElement.RequiredElement(
                    XName.Get("uncheckCommand", _menuDescriptorSchemaUri));
                var uncheckCommandName = (string)uncheckCommandElement.Attribute(XName.Get("name"));
                var uncheckCommandParameters = LoadCommandParameters(uncheckCommandElement);

                return new MenuCheckCommand(
                    (string)itemElement.Attribute(XName.Get("checkStateName")),
                    checkCommandName,
                    checkCommandParameters,
                    uncheckCommandName,
                    uncheckCommandParameters,
                    resourceStringGetter((string)itemElement.Attribute(XName.Get("textResource"))),
                    (string)itemElement.Attribute(XName.Get("image")),
                    (string)itemElement.Attribute(XName.Get("description")),
                    (MenuItemDisplayStyle)Enum.Parse(
                        typeof(MenuItemDisplayStyle),
                        (string)itemElement.Attribute(XName.Get("displayStyle"))),
                    (int)itemElement.Attribute(XName.Get("orderIndex")));
            }

            throw new ApplicationException("Неизвестный элемент '{0}'.".FormatStr(itemElement));
        }
示例#13
0
 private static SwfMatrix GetMatrix(XElement xFillStyle)
 {
     var xMatrix = xFillStyle.RequiredElement("matrix");
     return XMatrix.FromXml(xMatrix.Element(XMatrix.TAG_NAME));
 }