summaryrefslogtreecommitdiff
path: root/fpdfsdk/src/formfiller/FFL_Utils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'fpdfsdk/src/formfiller/FFL_Utils.cpp')
-rw-r--r--fpdfsdk/src/formfiller/FFL_Utils.cpp133
1 files changed, 133 insertions, 0 deletions
diff --git a/fpdfsdk/src/formfiller/FFL_Utils.cpp b/fpdfsdk/src/formfiller/FFL_Utils.cpp
new file mode 100644
index 0000000000..2e908108b8
--- /dev/null
+++ b/fpdfsdk/src/formfiller/FFL_Utils.cpp
@@ -0,0 +1,133 @@
+// 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;
+}
+