Example #1
0
        private static void WriteStyleChangeShapeRecord(ISwfStreamWriter writer, StyleChangeShapeRecord record, ref uint fillStylesBits, ref uint lineStylesBits)
        {
            writer.WriteBit(false);
            var stateNewStyles  = record.StateNewStyles;
            var stateFillStyle0 = record.FillStyle0.HasValue;
            var stateFillStyle1 = record.FillStyle1.HasValue;
            var stateLineStyle  = record.LineStyle.HasValue;
            var stateMoveTo     = record.StateMoveTo;

            writer.WriteBit(stateNewStyles);
            writer.WriteBit(stateLineStyle);
            writer.WriteBit(stateFillStyle1);
            writer.WriteBit(stateFillStyle0);
            writer.WriteBit(stateMoveTo);
            if (stateMoveTo)
            {
                var cnt      = new SignedBitsCount(record.MoveDeltaX, record.MoveDeltaY);
                var moveBits = cnt.GetBits();
                writer.WriteUnsignedBits(moveBits, 5);
                writer.WriteSignedBits(record.MoveDeltaX, moveBits);
                writer.WriteSignedBits(record.MoveDeltaY, moveBits);
            }
            if (stateFillStyle0)
            {
                writer.WriteUnsignedBits(record.FillStyle0.Value, fillStylesBits);
            }
            if (stateFillStyle1)
            {
                writer.WriteUnsignedBits(record.FillStyle1.Value, fillStylesBits);
            }
            if (stateLineStyle)
            {
                writer.WriteUnsignedBits(record.LineStyle.Value, lineStylesBits);
            }
        }
Example #2
0
            private static void ReadStyleChange(StyleChangeShapeRecord record, XElement xShape)
            {
                foreach (var attribute in xShape.Attributes())
                {
                    switch (attribute.Name.LocalName)
                    {
                    case "fillStyle0":
                        record.FillStyle0 = uint.Parse(attribute.Value);
                        break;

                    case "fillStyle1":
                        record.FillStyle1 = uint.Parse(attribute.Value);
                        break;

                    case "lineStyle":
                        record.LineStyle = uint.Parse(attribute.Value);
                        break;

                    case "x":
                        record.StateMoveTo = true;
                        record.MoveDeltaX  = int.Parse(attribute.Value);
                        break;

                    case "y":
                        record.StateMoveTo = true;
                        record.MoveDeltaY  = int.Parse(attribute.Value);
                        break;

                    default:
                        OnUnknownAttributeFound(attribute);
                        break;
                    }
                }
            }
Example #3
0
            private static XElement FormatShapeSetup(StyleChangeShapeRecord styleChange)
            {
                var setup = new XElement("ShapeSetup");

                if (styleChange.StateMoveTo)
                {
                    setup.Add(new XAttribute("x", styleChange.MoveDeltaX));
                    setup.Add(new XAttribute("y", styleChange.MoveDeltaY));
                }
                if (styleChange.FillStyle0.HasValue)
                {
                    setup.Add(new XAttribute("fillStyle0", styleChange.FillStyle0.Value));
                }
                if (styleChange.FillStyle1.HasValue)
                {
                    setup.Add(new XAttribute("fillStyle1", styleChange.FillStyle1.Value));
                }
                if (styleChange.LineStyle.HasValue)
                {
                    setup.Add(new XAttribute("lineStyle", styleChange.LineStyle.Value));
                }

                return(setup);
            }
Example #4
0
        public static void AreEqual(StyleChangeShapeRecord expected, StyleChangeShapeRecord actual, string message)
        {
            Assert.AreEqual(expected.FillStyle0, actual.FillStyle0, "{0}: FillStyle0", message);
            Assert.AreEqual(expected.FillStyle1, actual.FillStyle1, "{0}: FillStyle1", message);
            Assert.AreEqual(expected.LineStyle, actual.LineStyle, "{0}: LineStyle", message);
            Assert.AreEqual(expected.StateMoveTo, actual.StateMoveTo, "{0}: StateMoveTo", message);
            Assert.AreEqual(expected.MoveDeltaX, actual.MoveDeltaX, "{0}: MoveDeltaX", message);
            Assert.AreEqual(expected.MoveDeltaY, actual.MoveDeltaY, "{0}: MoveDeltaY", message);
            Assert.AreEqual(expected.StateNewStyles, actual.StateNewStyles, "{0}: StateNewStyles", message);

            if (expected is StyleChangeShapeRecordRGB && actual is StyleChangeShapeRecordRGB)
            {
                AreEqual((StyleChangeShapeRecordRGB)expected, (StyleChangeShapeRecordRGB)actual, message);
            }
            else if (expected is StyleChangeShapeRecordRGBA && actual is StyleChangeShapeRecordRGBA)
            {
                AreEqual((StyleChangeShapeRecordRGBA)expected, (StyleChangeShapeRecordRGBA)actual, message);
            }
            else
            {
                throw new NotSupportedException(string.Format("{0}: Can't compare {1} and {2}", message,
                                                              expected.GetType(), actual.GetType()));
            }
        }