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 "../../public/fpdf_edit.h" | 7 #include "../../public/fpdf_edit.h" |
8 #include "../../public/fpdf_formfill.h" | 8 #include "../../public/fpdf_formfill.h" |
9 #include "../include/fsdk_define.h" | 9 #include "../include/fsdk_define.h" |
10 #include "../include/fpdfxfa/fpdfxfa_doc.h" | 10 #include "../include/fpdfxfa/fpdfxfa_doc.h" |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
100 | 100 |
101 int rotate = 0; | 101 int rotate = 0; |
102 if (pDict != NULL) { | 102 if (pDict != NULL) { |
103 if (pDict->KeyExist("Rotate")) | 103 if (pDict->KeyExist("Rotate")) |
104 rotate = pDict->GetElement("Rotate")->GetDirect() | 104 rotate = pDict->GetElement("Rotate")->GetDirect() |
105 ? pDict->GetElement("Rotate")->GetDirect()->GetInteger() / 90 | 105 ? pDict->GetElement("Rotate")->GetDirect()->GetInteger() / 90 |
106 : 0; | 106 : 0; |
107 else { | 107 else { |
108 if (pDict->KeyExist("Parent")) { | 108 if (pDict->KeyExist("Parent")) { |
109 CPDF_Dictionary* pPages = | 109 CPDF_Dictionary* pPages = |
110 (CPDF_Dictionary*)pDict->GetElement("Parent")->GetDirect(); | 110 ToDictionary(pDict->GetElement("Parent")->GetDirect()); |
111 while (pPages) { | 111 while (pPages) { |
112 if (pPages->KeyExist("Rotate")) { | 112 if (pPages->KeyExist("Rotate")) { |
113 rotate = | 113 rotate = |
114 pPages->GetElement("Rotate")->GetDirect() | 114 pPages->GetElement("Rotate")->GetDirect() |
115 ? pPages->GetElement("Rotate")->GetDirect()->GetInteger() / | 115 ? pPages->GetElement("Rotate")->GetDirect()->GetInteger() / |
116 90 | 116 90 |
117 : 0; | 117 : 0; |
118 break; | 118 break; |
119 } else if (pPages->KeyExist("Parent")) | 119 } else if (pPages->KeyExist("Parent")) |
120 pPages = | 120 pPages = ToDictionary(pPages->GetElement("Parent")->GetDirect()); |
121 (CPDF_Dictionary*)pPages->GetElement("Parent")->GetDirect(); | |
122 else | 121 else |
123 break; | 122 break; |
124 } | 123 } |
125 } | 124 } |
126 } | 125 } |
127 } else { | 126 } else { |
128 return -1; | 127 return -1; |
129 } | 128 } |
130 | 129 |
131 return rotate; | 130 return rotate; |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
210 return FALSE; | 209 return FALSE; |
211 CPDF_PageObject* pPageObj = (CPDF_PageObject*)pageObject; | 210 CPDF_PageObject* pPageObj = (CPDF_PageObject*)pageObject; |
212 | 211 |
213 const CPDF_GeneralStateData* pGeneralState = pPageObj->m_GeneralState; | 212 const CPDF_GeneralStateData* pGeneralState = pPageObj->m_GeneralState; |
214 int blend_type = | 213 int blend_type = |
215 pGeneralState ? pGeneralState->m_BlendType : FXDIB_BLEND_NORMAL; | 214 pGeneralState ? pGeneralState->m_BlendType : FXDIB_BLEND_NORMAL; |
216 if (blend_type != FXDIB_BLEND_NORMAL) | 215 if (blend_type != FXDIB_BLEND_NORMAL) |
217 return TRUE; | 216 return TRUE; |
218 | 217 |
219 CPDF_Dictionary* pSMaskDict = | 218 CPDF_Dictionary* pSMaskDict = |
220 pGeneralState ? (CPDF_Dictionary*)pGeneralState->m_pSoftMask : NULL; | 219 pGeneralState ? ToDictionary(pGeneralState->m_pSoftMask) : NULL; |
221 if (pSMaskDict) | 220 if (pSMaskDict) |
222 return TRUE; | 221 return TRUE; |
223 | 222 |
224 if (pGeneralState && pGeneralState->m_FillAlpha != 1.0f) | 223 if (pGeneralState && pGeneralState->m_FillAlpha != 1.0f) |
225 return TRUE; | 224 return TRUE; |
226 | 225 |
227 if (pPageObj->m_Type == PDFPAGE_PATH) { | 226 if (pPageObj->m_Type == PDFPAGE_PATH) { |
228 if (pGeneralState && pGeneralState->m_StrokeAlpha != 1.0f) | 227 if (pGeneralState && pGeneralState->m_StrokeAlpha != 1.0f) |
229 return TRUE; | 228 return TRUE; |
230 } | 229 } |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
311 !pPage->m_pFormDict->GetElement("Type")->GetDirect() || | 310 !pPage->m_pFormDict->GetElement("Type")->GetDirect() || |
312 pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetString().Compare( | 311 pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetString().Compare( |
313 "Page")) { | 312 "Page")) { |
314 return; | 313 return; |
315 } | 314 } |
316 CPDF_Dictionary* pDict = pPage->m_pFormDict; | 315 CPDF_Dictionary* pDict = pPage->m_pFormDict; |
317 rotate %= 4; | 316 rotate %= 4; |
318 | 317 |
319 pDict->SetAt("Rotate", new CPDF_Number(rotate * 90)); | 318 pDict->SetAt("Rotate", new CPDF_Number(rotate * 90)); |
320 } | 319 } |
OLD | NEW |