internal void AddClass(PdfObject obj)
{
obj = GetDirectObject(obj);
if (obj.IsDictionary())
{
PdfObject curClass = ((PdfDictionary)obj).Get(PdfName.C);
if (curClass == null)
{
return;
}
if (curClass.IsArray())
{
PdfArray array = (PdfArray)curClass;
for (int i = 0; i < array.Size; ++i)
{
AddClass(array[i]);
}
}
else if (curClass.IsName())
{
AddClass(curClass);
}
}
else if (obj.IsName())
{
PdfName name = (PdfName)obj;
if (sourceClassMap == null)
{
obj = GetDirectObject(structTreeRoot.Get(PdfName.CLASSMAP));
if (obj == null || !obj.IsDictionary())
{
return;
}
sourceClassMap = (PdfDictionary)obj;
}
obj = GetDirectObject(sourceClassMap.Get(name));
if (obj == null)
{
return;
}
PdfObject put = structureTreeRoot.GetMappedClass(name);
if (put != null)
{
if (!CompareObjects(put, obj))
{
throw new BadPdfFormatException(MessageLocalization.GetComposedMessage("conflict.in.classmap", name));
}
}
else
{
if (obj.IsDictionary())
{
structureTreeRoot.MapClass(name, GetDirectDict((PdfDictionary)obj));
}
else if (obj.IsArray())
{
structureTreeRoot.MapClass(name, GetDirectArray((PdfArray)obj));
}
}
}
}