예제 #1
0
 internal override void WriteChanges(Pen newPen, MemoryStream stream, Resources resources)
 {
     if (!_dashPattern.Equals(newPen.DashPattern))
     {
         IPDFPageOperation operation = new LineDash(newPen.DashPattern);
         operation.WriteBytes(stream);
     }
     if (!_lineCap.Equals(newPen.LineCap))
     {
         IPDFPageOperation operation = new LineCap(newPen.LineCap);
         operation.WriteBytes(stream);
     }
     if (!_lineJoin.Equals(newPen.LineJoin))
     {
         IPDFPageOperation operation = new LineJoin(newPen.LineJoin);
         operation.WriteBytes(stream);
     }
     if (!_miterLimit.Equals(newPen.MiterLimit))
     {
         IPDFPageOperation operation = new MiterLimit(newPen.MiterLimit);
         operation.WriteBytes(stream);
     }
     if (!_opacity.Equals(newPen.Opacity / 100))
     {
         PDFDictionary dict = new PDFDictionary();
         dict.AddItem("CA", new PDFNumber(newPen.Opacity / 100));
         string            name      = resources.AddResources(ResourceType.ExtGState, dict);
         IPDFPageOperation operation = new GraphicsState(name);
         operation.WriteBytes(stream);
     }
     if (!_width.Equals(newPen.Width))
     {
         IPDFPageOperation operation = new Linewidth(newPen.Width);
         operation.WriteBytes(stream);
     }
     if (newPen is SolidPen)
     {
         if (!_color.Equals((newPen as SolidPen).Color))
         {
             if ((newPen as SolidPen)._color is ColorICC)
             {
                 (newPen as SolidPen)._color.Colorspace.WriteColorSpaceForStroking(stream, resources);
             }
             newPen.WriteParameters(stream, resources);
         }
     }
     else
     {
         newPen.WriteParameters(stream, resources);
     }
 }
예제 #2
0
        public void Dump(XmlWriter writer, SwfTagCode shapeType)
        {
            writer.WriteStartElement("line-style");
            writer.WriteAttributeString("width", Width.ToString());
            if (shapeType == SwfTagCode.DefineMorphShape)
            {
                writer.WriteAttributeString("end-width", EndWidth.ToString());
                writer.WriteAttributeString("color", Color.ToHtmlHex());
                writer.WriteAttributeString("end-color", EndColor.ToHtmlHex());
            }
            else if (shapeType == SwfTagCode.DefineShape4 || shapeType == SwfTagCode.DefineMorphShape2)
            {
                bool isMorph = shapeType == SwfTagCode.DefineMorphShape2;
                if (isMorph)
                {
                    writer.WriteAttributeString("end-width", EndWidth.ToString());
                }

                writer.WriteAttributeString("start-cap", StartCapStyle.ToString());
                writer.WriteAttributeString("end-cap", EndCapStyle.ToString());
                writer.WriteAttributeString("flags", Flags.ToString());

                if (JoinStyle == SwfJoinStyle.Miter)
                {
                    writer.WriteAttributeString("miter-limit", MiterLimit.ToString());
                }

                if (Fill != null)
                {
                    Fill.Dump(writer, shapeType);
                }
                else
                {
                    writer.WriteAttributeString("color", Color.ToHtmlHex());
                    if (isMorph)
                    {
                        writer.WriteAttributeString("end-color", EndColor.ToHtmlHex());
                    }
                }
            }
            else
            {
                writer.WriteAttributeString("color", Color.ToHtmlHex(shapeType == SwfTagCode.DefineShape3));
            }
            writer.WriteEndElement();
        }
예제 #3
0
 private Int32 computeHashCode()
 {
     return(Alignment.GetHashCode() ^
            getSingleArrayHashCode(CompoundArray) ^
            MiterLimit.GetHashCode() ^
            BackgroundBrush.GetHashCode() ^
            DashOffset.GetHashCode() ^
            getSingleArrayHashCode(DashPattern) ^
            getStyleBrushesArrayHashCode(DashBrushes) ^
            DashStyle.GetHashCode() ^
            StartCap.GetHashCode() ^
            EndCap.GetHashCode() ^
            DashCap.GetHashCode() ^
            LineJoin.GetHashCode() ^
            Transform.GetHashCode() ^
            Width.GetHashCode() ^
            -18133844);
 }
예제 #4
0
 public void AcceptControlMiterLimit(MiterLimit miterLimit, PrintContext parameter)
 {
     parameter.WriteLine("Mitre Limit: {0}", miterLimit.Limit);
 }
예제 #5
0
 public virtual void AcceptControlMiterLimit(MiterLimit miterLimit, T parameter)
 {
     // intentionally left blank
 }