OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #include "../../include/formfiller/FormFiller.h" | 7 #include "../../include/formfiller/FormFiller.h" |
8 #include "../../include/formfiller/FFL_Utils.h" | 8 #include "../../include/formfiller/FFL_Utils.h" |
9 | 9 |
10 CPDF_Rect CFFL_Utils::MaxRect(const CPDF_Rect & rect1,const CPDF_Rect & rect2) | 10 CPDF_Rect CFFL_Utils::MaxRect(const CPDF_Rect& rect1, const CPDF_Rect& rect2) { |
11 { | 11 CPDF_Rect rcRet; |
12 » CPDF_Rect rcRet; | |
13 | 12 |
14 » rcRet.left = FFL_MIN(rect1.left,rect2.left); | 13 rcRet.left = FFL_MIN(rect1.left, rect2.left); |
15 » rcRet.bottom = FFL_MIN(rect1.bottom,rect2.bottom); | 14 rcRet.bottom = FFL_MIN(rect1.bottom, rect2.bottom); |
16 » rcRet.right = FFL_MAX(rect1.right,rect2.right); | 15 rcRet.right = FFL_MAX(rect1.right, rect2.right); |
17 » rcRet.top = FFL_MAX(rect1.top,rect2.top); | 16 rcRet.top = FFL_MAX(rect1.top, rect2.top); |
18 | 17 |
19 » return rcRet; | 18 return rcRet; |
20 } | 19 } |
21 | 20 |
22 CPDF_Rect CFFL_Utils::InflateRect(const CPDF_Rect & crRect,const FX_FLOAT & fSiz
e) | 21 CPDF_Rect CFFL_Utils::InflateRect(const CPDF_Rect& crRect, |
23 { | 22 const FX_FLOAT& fSize) { |
24 » CPDF_Rect crNew(crRect.left - fSize, | 23 CPDF_Rect crNew(crRect.left - fSize, |
25 » » » » » crRect.bottom - fSize, | 24 crRect.bottom - fSize, |
26 » » » » » crRect.right + fSize, | 25 crRect.right + fSize, |
27 » » » » » crRect.top + fSize); | 26 crRect.top + fSize); |
28 » crNew.Normalize(); | 27 crNew.Normalize(); |
29 » return crNew; | 28 return crNew; |
30 } | 29 } |
31 | 30 |
32 CPDF_Rect CFFL_Utils::DeflateRect(const CPDF_Rect & crRect,const FX_FLOAT & fSiz
e) | 31 CPDF_Rect CFFL_Utils::DeflateRect(const CPDF_Rect& crRect, |
33 { | 32 const FX_FLOAT& fSize) { |
34 » CPDF_Rect crNew(crRect.left + fSize, | 33 CPDF_Rect crNew(crRect.left + fSize, |
35 » » » » » crRect.bottom + fSize, | 34 crRect.bottom + fSize, |
36 » » » » » crRect.right - fSize, | 35 crRect.right - fSize, |
37 » » » » » crRect.top - fSize); | 36 crRect.top - fSize); |
38 » crNew.Normalize(); | 37 crNew.Normalize(); |
39 » return crNew; | 38 return crNew; |
40 } | 39 } |
41 | 40 |
42 /* | 41 /* |
43 FX_BOOL CFFL_Utils::RectContainsRect(const CPDF_Rect & father,const CPDF_Rect &
son) | 42 FX_BOOL CFFL_Utils::RectContainsRect(const CPDF_Rect & father,const CPDF_Rect & |
| 43 son) |
44 { | 44 { |
45 » return (father.left <= son.left && father.right >= son.right && | 45 return (father.left <= son.left && father.right >= son.right && |
46 » » » » father.bottom <= son.bottom && father.top >= son
.top); | 46 father.bottom <= son.bottom && father.top >= |
| 47 son.top); |
47 | 48 |
48 } | 49 } |
49 | 50 |
50 FX_BOOL CFFL_Utils::RectContainsPoint(const CPDF_Rect & father,const CPDF_Point
& son) | 51 FX_BOOL CFFL_Utils::RectContainsPoint(const CPDF_Rect & father,const CPDF_Point |
| 52 & son) |
51 { | 53 { |
52 » return (father.left <= son.x && father.right >= son.x && | 54 return (father.left <= son.x && father.right >= son.x && |
53 » » » » father.bottom <= son.y && father.top >= son.y); | 55 father.bottom <= son.y && father.top >= son.y); |
54 } | 56 } |
55 | 57 |
56 FX_BOOL CFFL_Utils::RectContainsXY(const CPDF_Rect & father,FX_FLOAT x,FX_FLOAT
y) | 58 FX_BOOL CFFL_Utils::RectContainsXY(const CPDF_Rect & father,FX_FLOAT x,FX_FLOAT |
| 59 y) |
57 { | 60 { |
58 » return (father.left <= x && father.right >= x && | 61 return (father.left <= x && father.right >= x && |
59 » » » » father.bottom <= y && father.top >= y); | 62 father.bottom <= y && father.top >= y); |
60 } | 63 } |
61 */ | 64 */ |
62 | 65 |
63 FX_BOOL CFFL_Utils::TraceObject(CPDF_Object* pObj) | 66 FX_BOOL CFFL_Utils::TraceObject(CPDF_Object* pObj) { |
64 { | 67 if (!pObj) |
65 » if (!pObj) return FALSE; | 68 return FALSE; |
66 | 69 |
67 » FX_DWORD» dwObjNum = pObj->GetObjNum(); | 70 FX_DWORD dwObjNum = pObj->GetObjNum(); |
68 » switch (pObj->GetType()) | 71 switch (pObj->GetType()) { |
69 » { | 72 case PDFOBJ_ARRAY: { |
70 » case PDFOBJ_ARRAY: | 73 CPDF_Array* pArray = (CPDF_Array*)pObj; |
71 » » { | 74 for (FX_DWORD i = 0; i < pArray->GetCount(); i++) { |
72 » » » CPDF_Array* pArray = (CPDF_Array*)pObj; | 75 CPDF_Object* pElement = pArray->GetElementValue(i); |
73 » » » for (FX_DWORD i = 0; i < pArray->GetCount(); i ++) | 76 TraceObject(pElement); |
74 » » » { | 77 } |
75 » » » » CPDF_Object* pElement = pArray->GetElementValue(
i);» » » » | 78 } break; |
76 » » » » TraceObject(pElement); | |
77 » » » } | |
78 » » } | |
79 » » break; | |
80 | 79 |
81 » case PDFOBJ_DICTIONARY: | 80 case PDFOBJ_DICTIONARY: { |
82 » » { | 81 CPDF_Dictionary* pDict = (CPDF_Dictionary*)pObj; |
83 » » » CPDF_Dictionary* pDict = (CPDF_Dictionary*)pObj; | |
84 | 82 |
85 » » » FX_POSITION fPos = pDict->GetStartPos(); | 83 FX_POSITION fPos = pDict->GetStartPos(); |
86 » » » CFX_ByteString csKey; | 84 CFX_ByteString csKey; |
87 » » » do | 85 do { |
88 » » » { | 86 CPDF_Object* pElement = pDict->GetNextElement(fPos, csKey); |
89 » » » » CPDF_Object* pElement = pDict->GetNextElement(fP
os, csKey); | 87 // TRACE(csKey + "\n"); |
90 » » » » //TRACE(csKey + "\n"); | 88 if (!pElement) |
91 » » » » if (!pElement) break; | 89 break; |
92 » » » » TraceObject(pElement); | 90 TraceObject(pElement); |
93 » » » }while (TRUE); | 91 } while (TRUE); |
94 » » } | 92 } break; |
95 » » break; | |
96 | 93 |
97 » case PDFOBJ_STREAM: | 94 case PDFOBJ_STREAM: { |
98 » » { | 95 CPDF_Stream* pStream = (CPDF_Stream*)pObj; |
99 » » » CPDF_Stream* pStream = (CPDF_Stream*)pObj; | 96 CPDF_Dictionary* pDict = pStream->GetDict(); |
100 » » » CPDF_Dictionary* pDict = pStream->GetDict(); | 97 TraceObject(pDict); |
101 » » » TraceObject(pDict); | 98 } break; |
102 » » } | |
103 » » break; | |
104 | 99 |
105 » case PDFOBJ_REFERENCE: | 100 case PDFOBJ_REFERENCE: { |
106 » » { | 101 CPDF_Object* pDirectObj = pObj->GetDirect(); |
107 » » » CPDF_Object* pDirectObj = pObj->GetDirect(); | 102 TraceObject(pDirectObj); |
108 » » » TraceObject(pDirectObj); | 103 } break; |
109 » » } | |
110 » » break; | |
111 | 104 |
112 » case PDFOBJ_BOOLEAN: | 105 case PDFOBJ_BOOLEAN: |
113 » » break; | 106 break; |
114 » case PDFOBJ_NUMBER: | 107 case PDFOBJ_NUMBER: |
115 » » //TRACE("%d\n",(FX_INT32)pObj); | 108 // TRACE("%d\n",(FX_INT32)pObj); |
116 » » break; | 109 break; |
117 » case PDFOBJ_STRING: | 110 case PDFOBJ_STRING: |
118 » » //TRACE(((CPDF_String*)pObj)->GetString() + "\n"); | 111 // TRACE(((CPDF_String*)pObj)->GetString() + "\n"); |
119 » » break; | 112 break; |
120 » case PDFOBJ_NAME: | 113 case PDFOBJ_NAME: |
121 » » //TRACE(((CPDF_Name*)pObj)->GetString() + "\n"); | 114 // TRACE(((CPDF_Name*)pObj)->GetString() + "\n"); |
122 » » break; | 115 break; |
123 » case PDFOBJ_NULL: | 116 case PDFOBJ_NULL: |
124 //» case PDFOBJ_KEYWORD: | 117 //» case PDFOBJ_KEYWORD: |
125 //» case PDFOBJ_EOF: | 118 //» case PDFOBJ_EOF: |
126 » default: | 119 default: |
127 » » break; | 120 break; |
128 » } | 121 } |
129 » if (dwObjNum == 0) return FALSE; | 122 if (dwObjNum == 0) |
| 123 return FALSE; |
130 | 124 |
131 » return TRUE; | 125 return TRUE; |
132 } | 126 } |
133 | |
OLD | NEW |