Example #1
0
	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;
	}