I have written the following function.
IntT GetPageType (F_ObjHandleT docId, F_ObjHandleT objectId)
{
F_ObjHandleT frameId = 0;
while (objectId)
{
frameId = objectId;
IntT objType = F_ApiGetObjectType(docId, objectId);
switch (objType)
{
case FO_SubCol:
objectId = F_ApiGetId(docId, objectId, FP_ParentTextFrame);
break;
case FO_Tbl:
{
F_ObjHandleT rowId = F_ApiGetId(docId, objectId, FP_FirstRowInTbl);
F_ObjHandleT cellId = F_ApiGetId(docId, rowId, FP_FirstCellInRow);
objectId = cellId;
}
break;
/* handle FO_Cell case */
/* handle FO_Pgf case */
/* handle FO_AFrame case */
case FO_Cell:
case FO_Pgf:
case FO_AFrame:
objectId = F_ApiGetId(docId, objectId, FP_InTextFrame);
break;
/* handle graphic object cases */
case FO_TextLine:
case FO_TextFrame:
case FO_UnanchoredFrame:
case FO_Arc:
case FO_Ellipse:
case FO_Group:
case FO_Inset:
case FO_Line:
case FO_Math:
case FO_Polygon:
case FO_Polyline:
case FO_Rectangle:
case FO_RoundRect:
objectId = F_ApiGetId(docId, objectId, FP_FrameParent);
break;
/* prevents loop if unknown object type is found. */
default:
objectId = 0;
break;
}
}
if (frameId)
{
/* use FP_PageFramePage to get the page identifier of the object. */
F_ObjHandleT pageId = F_ApiGetId(docId, frameId, FP_PageFramePage);
return F_ApiGetObjectType(docId, pageId);
}
return -1;
}