private void AddOrder(PdfLayer parent, PdfArray arr, Dictionary<string,PdfLayer> ocgmap)
{
PdfObject obj;
PdfLayer layer;
for (int i = 0; i < arr.Size; i++) {
obj = arr[i];
if (obj.IsIndirect()) {
layer = ocgmap[obj.ToString()];
if (layer != null) {
layer.OnPanel = true;
RegisterLayer(layer);
if (parent != null) {
parent.AddChild(layer);
}
if (arr.Size > i + 1 && arr[i + 1].IsArray()) {
i++;
AddOrder(layer, (PdfArray)arr[i], ocgmap);
}
}
}
else if (obj.IsArray()) {
PdfArray sub = (PdfArray)obj;
if (sub.IsEmpty()) return;
obj = sub[0];
if (obj.IsString()) {
layer = new PdfLayer(obj.ToString());
layer.OnPanel = true;
RegisterLayer(layer);
if (parent != null) {
parent.AddChild(layer);
}
PdfArray array = new PdfArray();
for (ListIterator<PdfObject> j = sub.GetListIterator(); j.HasNext(); ) {
array.Add(j.Next());
}
AddOrder(layer, array, ocgmap);
}
else {
AddOrder(parent, (PdfArray)obj, ocgmap);
}
}
}
}