// Copyright 2014 PDFium Authors. All rights reserved. | |
// Use of this source code is governed by a BSD-style license that can be | |
// found in the LICENSE file. | |
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | |
#include "../../include/formfiller/FormFiller.h" | |
#include "../../include/formfiller/FFL_Utils.h" | |
CPDF_Rect CFFL_Utils::MaxRect(const CPDF_Rect & rect1,const CPDF_Rect & rect2) | |
{ | |
CPDF_Rect rcRet; | |
rcRet.left = FFL_MIN(rect1.left,rect2.left); | |
rcRet.bottom = FFL_MIN(rect1.bottom,rect2.bottom); | |
rcRet.right = FFL_MAX(rect1.right,rect2.right); | |
rcRet.top = FFL_MAX(rect1.top,rect2.top); | |
return rcRet; | |
} | |
CPDF_Rect CFFL_Utils::InflateRect(const CPDF_Rect & crRect,const FX_FLOAT & fSize) | |
{ | |
CPDF_Rect crNew(crRect.left - fSize, | |
crRect.bottom - fSize, | |
crRect.right + fSize, | |
crRect.top + fSize); | |
crNew.Normalize(); | |
return crNew; | |
} | |
CPDF_Rect CFFL_Utils::DeflateRect(const CPDF_Rect & crRect,const FX_FLOAT & fSize) | |
{ | |
CPDF_Rect crNew(crRect.left + fSize, | |
crRect.bottom + fSize, | |
crRect.right - fSize, | |
crRect.top - fSize); | |
crNew.Normalize(); | |
return crNew; | |
} | |
/* | |
FX_BOOL CFFL_Utils::RectContainsRect(const CPDF_Rect & father,const CPDF_Rect & son) | |
{ | |
return (father.left <= son.left && father.right >= son.right && | |
father.bottom <= son.bottom && father.top >= son.top); | |
} | |
FX_BOOL CFFL_Utils::RectContainsPoint(const CPDF_Rect & father,const CPDF_Point & son) | |
{ | |
return (father.left <= son.x && father.right >= son.x && | |
father.bottom <= son.y && father.top >= son.y); | |
} | |
FX_BOOL CFFL_Utils::RectContainsXY(const CPDF_Rect & father,FX_FLOAT x,FX_FLOAT y) | |
{ | |
return (father.left <= x && father.right >= x && | |
father.bottom <= y && father.top >= y); | |
} | |
*/ | |
FX_BOOL CFFL_Utils::TraceObject(CPDF_Object* pObj) | |
{ | |
if (!pObj) return FALSE; | |
FX_DWORD dwObjNum = pObj->GetObjNum(); | |
switch (pObj->GetType()) | |
{ | |
case PDFOBJ_ARRAY: | |
{ | |
CPDF_Array* pArray = (CPDF_Array*)pObj; | |
for (FX_DWORD i = 0; i < pArray->GetCount(); i ++) | |
{ | |
CPDF_Object* pElement = pArray->GetElementValue(i); | |
TraceObject(pElement); | |
} | |
} | |
break; | |
case PDFOBJ_DICTIONARY: | |
{ | |
CPDF_Dictionary* pDict = (CPDF_Dictionary*)pObj; | |
FX_POSITION fPos = pDict->GetStartPos(); | |
CFX_ByteString csKey; | |
do | |
{ | |
CPDF_Object* pElement = pDict->GetNextElement(fPos, csKey); | |
//TRACE(csKey + "\n"); | |
if (!pElement) break; | |
TraceObject(pElement); | |
}while (TRUE); | |
} | |
break; | |
case PDFOBJ_STREAM: | |
{ | |
CPDF_Stream* pStream = (CPDF_Stream*)pObj; | |
CPDF_Dictionary* pDict = pStream->GetDict(); | |
TraceObject(pDict); | |
} | |
break; | |
case PDFOBJ_REFERENCE: | |
{ | |
CPDF_Object* pDirectObj = pObj->GetDirect(); | |
TraceObject(pDirectObj); | |
} | |
break; | |
case PDFOBJ_BOOLEAN: | |
break; | |
case PDFOBJ_NUMBER: | |
//TRACE("%d\n",(FX_INT32)pObj); | |
break; | |
case PDFOBJ_STRING: | |
//TRACE(((CPDF_String*)pObj)->GetString() + "\n"); | |
break; | |
case PDFOBJ_NAME: | |
//TRACE(((CPDF_Name*)pObj)->GetString() + "\n"); | |
break; | |
case PDFOBJ_NULL: | |
// case PDFOBJ_KEYWORD: | |
// case PDFOBJ_EOF: | |
default: | |
break; | |
} | |
if (dwObjNum == 0) return FALSE; | |
return TRUE; | |
} | |