bool PageAttrs::ReadBox(Dict *pDict, char *sKey, PDFRectangle *pBox) { PDFRectangle oTempBox; bool bSuccess = false; Object oBox; pDict->Search(sKey, &oBox); if (oBox.IsArray() && oBox.ArrayGetLength() == 4) { bSuccess = true; Object oTemp; oBox.ArrayGet(0, &oTemp); if (oTemp.IsNum()) { oTempBox.m_dLeft = oTemp.GetNum(); } else { bSuccess = false; } oTemp.Free(); oBox.ArrayGet(1, &oTemp); if (oTemp.IsNum()) { oTempBox.m_dBottom = oTemp.GetNum(); } else { bSuccess = false; } oTemp.Free(); oBox.ArrayGet(2, &oTemp); if (oTemp.IsNum()) { oTempBox.m_dRight = oTemp.GetNum(); } else { bSuccess = false; } oTemp.Free(); oBox.ArrayGet(3, &oTemp); if (oTemp.IsNum()) { oTempBox.m_dTop = oTemp.GetNum(); } else { bSuccess = false; } oTemp.Free(); if (bSuccess) { if (oTempBox.m_dLeft > oTempBox.m_dRight) { double dTempValue = oTempBox.m_dLeft; oTempBox.m_dLeft = oTempBox.m_dRight; oTempBox.m_dRight = dTempValue; } if (oTempBox.m_dBottom > oTempBox.m_dTop) { double dTempValue = oTempBox.m_dBottom; oTempBox.m_dBottom = oTempBox.m_dTop; oTempBox.m_dTop = dTempValue; } *pBox = oTempBox; } } else { bSuccess = false; } oBox.Free(); return bSuccess; }