/** <summary>Creates a deep copy of this object using the specified cloner.</summary> */ public virtual PdfObject Clone( Cloner cloner ) { return Accept(cloner, null); }
/** <summary>Gets a clone of the object, registered using the specified object cloner.</summary> */ public virtual object Clone( Cloner cloner ) { PdfObjectWrapper clone = (PdfObjectWrapper)base.MemberwiseClone(); clone.BaseObject = (PdfDirectObject)BaseObject.Clone(cloner); return clone; }
public override bool BeforeClone( Cloner cloner, PdfDictionary parent, PdfName key, PdfDirectObject value ) { return !PdfName.Parent.Equals(key); }
public override bool Matches( Cloner cloner, PdfObject obj ) { return obj is PdfDictionary && PdfName.Page.Equals(((PdfDictionary)obj)[PdfName.Type]); }
public override bool Matches( Cloner cloner, PdfObject obj ) { if(obj is PdfArray) { PdfArray array = (PdfArray)obj; if(array.Count > 0) { PdfDataObject arrayItem = array.Resolve(0); if(arrayItem is PdfDictionary) { PdfDictionary arrayItemDictionary = (PdfDictionary)arrayItem; return arrayItemDictionary.ContainsKey(PdfName.Subtype) && arrayItemDictionary.ContainsKey(PdfName.Rect); } } } return false; }
public override void AfterClone( Cloner cloner, PdfObject clone, PdfObject source ) { /* NOTE: Inheritable attributes have to be consolidated into the cloned page dictionary in order to ensure its consistency. */ PdfDictionary cloneDictionary = (PdfDictionary)clone; PdfDictionary sourceDictionary = (PdfDictionary)source; foreach(PdfName key in Page.InheritableAttributeKeys) { if(!sourceDictionary.ContainsKey(key)) { PdfDirectObject sourceValue = Page.GetInheritableAttribute(sourceDictionary, key); if(sourceValue != null) {cloneDictionary[key] = (PdfDirectObject)sourceValue.Accept(cloner, null);} } } }
/** <summary>Gets whether this filter can deal with the given object.</summary> <param name="cloner">Object cloner.</param> <param name="source">Source object.</param> */ public virtual bool Matches( Cloner cloner, PdfObject source ) { return true; }
public override void AfterClone( Cloner cloner, PdfArray parent, int index, PdfDirectObject item ) { PdfDictionary annotation = (PdfDictionary)item.Resolve(); if(annotation.ContainsKey(PdfName.FT)) {cloner.context.Document.Form.Fields.Add(Field.Wrap(annotation.Reference));} }
/** <summary>Notifies a starting clone operation on an array item.</summary> <param name="cloner">Object cloner.</param> <param name="parent">Parent clone object.</param> <param name="index">Item index within the parent.</param> <param name="item">Source item.</param> <returns>Whether the clone operation can be fulfilled.</returns> */ public virtual bool BeforeClone( Cloner cloner, PdfArray parent, int index, PdfDirectObject item ) { return true; }
/** <summary>Notifies a starting clone operation on a dictionary entry.</summary> <param name="cloner">Object cloner.</param> <param name="parent">Parent clone object.</param> <param name="key">Entry key within the parent.</param> <param name="value">Source value.</param> <returns>Whether the clone operation can be fulfilled.</returns> */ public virtual bool BeforeClone( Cloner cloner, PdfDictionary parent, PdfName key, PdfDirectObject value ) { return true; }
/** <summary>Notifies a complete clone operation on an array item.</summary> <param name="cloner">Object cloner.</param> <param name="parent">Parent clone object.</param> <param name="index">Item index within the parent.</param> <param name="item">Clone item.</param> */ public virtual void AfterClone( Cloner cloner, PdfArray parent, int index, PdfDirectObject item ) { /* NOOP */ }
/** <summary>Notifies a complete clone operation on a dictionary entry.</summary> <param name="cloner">Object cloner.</param> <param name="parent">Parent clone object.</param> <param name="key">Entry key within the parent.</param> <param name="value">Clone value.</param> */ public virtual void AfterClone( Cloner cloner, PdfDictionary parent, PdfName key, PdfDirectObject value ) { /* NOOP */ }
/** <summary>Notifies a complete clone operation on an object.</summary> <param name="cloner">Object cloner.</param> <param name="clone">Clone object.</param> <param name="source">Source object.</param> */ public virtual void AfterClone( Cloner cloner, PdfObject clone, PdfObject source ) { /* NOOP */ }