protected internal PdfObject CopyObject(PdfObject inp, bool keepStruct, bool directRootKidds)
{
if (inp == null)
return PdfNull.PDFNULL;
switch (inp.Type) {
case PdfObject.DICTIONARY:
return CopyDictionary((PdfDictionary)inp, keepStruct, directRootKidds);
case PdfObject.INDIRECT:
return CopyIndirect((PRIndirectReference)inp, keepStruct, directRootKidds);
case PdfObject.ARRAY:
return CopyArray((PdfArray)inp, keepStruct, directRootKidds);
case PdfObject.NUMBER:
case PdfObject.NAME:
case PdfObject.STRING:
case PdfObject.NULL:
case PdfObject.BOOLEAN:
case 0:
return inp;
case PdfObject.STREAM:
return CopyStream((PRStream)inp);
// return in;
default:
if (inp.Type < 0) {
String lit = ((PdfLiteral)inp).ToString();
if (lit.Equals("true") || lit.Equals("false")) {
return new PdfBoolean(lit);
}
return new PdfLiteral(lit);
}
return null;
}
}