| 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 <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "core/fpdfapi/fpdf_page/include/cpdf_form.h" | 9 #include "core/fpdfapi/fpdf_page/include/cpdf_form.h" |
| 10 #include "core/fpdfapi/fpdf_parser/include/cpdf_array.h" | 10 #include "core/fpdfapi/fpdf_parser/include/cpdf_array.h" |
| (...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 194 return static_cast<HighlightingMode>(i); | 194 return static_cast<HighlightingMode>(i); |
| 195 } | 195 } |
| 196 return Invert; | 196 return Invert; |
| 197 } | 197 } |
| 198 | 198 |
| 199 CPDF_ApSettings CPDF_FormControl::GetMK() const { | 199 CPDF_ApSettings CPDF_FormControl::GetMK() const { |
| 200 return CPDF_ApSettings(m_pWidgetDict ? m_pWidgetDict->GetDictBy("MK") | 200 return CPDF_ApSettings(m_pWidgetDict ? m_pWidgetDict->GetDictBy("MK") |
| 201 : nullptr); | 201 : nullptr); |
| 202 } | 202 } |
| 203 | 203 |
| 204 bool CPDF_FormControl::HasMKEntry(CFX_ByteString csEntry) const { | 204 bool CPDF_FormControl::HasMKEntry(const CFX_ByteString& csEntry) const { |
| 205 return GetMK().HasMKEntry(csEntry.AsStringC()); | 205 return GetMK().HasMKEntry(csEntry); |
| 206 } | 206 } |
| 207 | 207 |
| 208 int CPDF_FormControl::GetRotation() { | 208 int CPDF_FormControl::GetRotation() { |
| 209 return GetMK().GetRotation(); | 209 return GetMK().GetRotation(); |
| 210 } | 210 } |
| 211 | 211 |
| 212 FX_ARGB CPDF_FormControl::GetColor(int& iColorType, CFX_ByteString csEntry) { | 212 FX_ARGB CPDF_FormControl::GetColor(int& iColorType, |
| 213 return GetMK().GetColor(iColorType, csEntry.AsStringC()); | 213 const CFX_ByteString& csEntry) { |
| 214 return GetMK().GetColor(iColorType, csEntry); |
| 214 } | 215 } |
| 215 | 216 |
| 216 FX_FLOAT CPDF_FormControl::GetOriginalColor(int index, CFX_ByteString csEntry) { | 217 FX_FLOAT CPDF_FormControl::GetOriginalColor(int index, |
| 217 return GetMK().GetOriginalColor(index, csEntry.AsStringC()); | 218 const CFX_ByteString& csEntry) { |
| 219 return GetMK().GetOriginalColor(index, csEntry); |
| 218 } | 220 } |
| 219 | 221 |
| 220 void CPDF_FormControl::GetOriginalColor(int& iColorType, | 222 void CPDF_FormControl::GetOriginalColor(int& iColorType, |
| 221 FX_FLOAT fc[4], | 223 FX_FLOAT fc[4], |
| 222 CFX_ByteString csEntry) { | 224 const CFX_ByteString& csEntry) { |
| 223 GetMK().GetOriginalColor(iColorType, fc, csEntry.AsStringC()); | 225 GetMK().GetOriginalColor(iColorType, fc, csEntry); |
| 224 } | 226 } |
| 225 CFX_WideString CPDF_FormControl::GetCaption(CFX_ByteString csEntry) { | 227 CFX_WideString CPDF_FormControl::GetCaption(const CFX_ByteString& csEntry) { |
| 226 return GetMK().GetCaption(csEntry.AsStringC()); | 228 return GetMK().GetCaption(csEntry); |
| 227 } | 229 } |
| 228 | 230 |
| 229 CPDF_Stream* CPDF_FormControl::GetIcon(CFX_ByteString csEntry) { | 231 CPDF_Stream* CPDF_FormControl::GetIcon(const CFX_ByteString& csEntry) { |
| 230 return GetMK().GetIcon(csEntry.AsStringC()); | 232 return GetMK().GetIcon(csEntry); |
| 231 } | 233 } |
| 232 | 234 |
| 233 CPDF_IconFit CPDF_FormControl::GetIconFit() { | 235 CPDF_IconFit CPDF_FormControl::GetIconFit() { |
| 234 return GetMK().GetIconFit(); | 236 return GetMK().GetIconFit(); |
| 235 } | 237 } |
| 236 | 238 |
| 237 int CPDF_FormControl::GetTextPosition() { | 239 int CPDF_FormControl::GetTextPosition() { |
| 238 return GetMK().GetTextPosition(); | 240 return GetMK().GetTextPosition(); |
| 239 } | 241 } |
| 240 | 242 |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 323 return m_pWidgetDict->GetIntegerBy("Q", 0); | 325 return m_pWidgetDict->GetIntegerBy("Q", 0); |
| 324 } | 326 } |
| 325 CPDF_Object* pObj = FPDF_GetFieldAttr(m_pField->m_pDict, "Q"); | 327 CPDF_Object* pObj = FPDF_GetFieldAttr(m_pField->m_pDict, "Q"); |
| 326 if (pObj) | 328 if (pObj) |
| 327 return pObj->GetInteger(); | 329 return pObj->GetInteger(); |
| 328 return m_pField->m_pForm->GetFormAlignment(); | 330 return m_pField->m_pForm->GetFormAlignment(); |
| 329 } | 331 } |
| 330 | 332 |
| 331 CPDF_ApSettings::CPDF_ApSettings(CPDF_Dictionary* pDict) : m_pDict(pDict) {} | 333 CPDF_ApSettings::CPDF_ApSettings(CPDF_Dictionary* pDict) : m_pDict(pDict) {} |
| 332 | 334 |
| 333 bool CPDF_ApSettings::HasMKEntry(const CFX_ByteStringC& csEntry) const { | 335 bool CPDF_ApSettings::HasMKEntry(const CFX_ByteString& csEntry) const { |
| 334 return m_pDict && m_pDict->KeyExist(csEntry); | 336 return m_pDict && m_pDict->KeyExist(csEntry); |
| 335 } | 337 } |
| 336 | 338 |
| 337 int CPDF_ApSettings::GetRotation() const { | 339 int CPDF_ApSettings::GetRotation() const { |
| 338 return m_pDict ? m_pDict->GetIntegerBy("R") : 0; | 340 return m_pDict ? m_pDict->GetIntegerBy("R") : 0; |
| 339 } | 341 } |
| 340 | 342 |
| 341 FX_ARGB CPDF_ApSettings::GetColor(int& iColorType, | 343 FX_ARGB CPDF_ApSettings::GetColor(int& iColorType, |
| 342 const CFX_ByteStringC& csEntry) const { | 344 const CFX_ByteString& csEntry) const { |
| 343 iColorType = COLORTYPE_TRANSPARENT; | 345 iColorType = COLORTYPE_TRANSPARENT; |
| 344 if (!m_pDict) | 346 if (!m_pDict) |
| 345 return 0; | 347 return 0; |
| 346 | 348 |
| 347 CPDF_Array* pEntry = m_pDict->GetArrayBy(csEntry); | 349 CPDF_Array* pEntry = m_pDict->GetArrayBy(csEntry); |
| 348 if (!pEntry) | 350 if (!pEntry) |
| 349 return 0; | 351 return 0; |
| 350 | 352 |
| 351 FX_ARGB color = 0; | 353 FX_ARGB color = 0; |
| 352 size_t dwCount = pEntry->GetCount(); | 354 size_t dwCount = pEntry->GetCount(); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 369 FX_FLOAT r = 1.0f - std::min(1.0f, c + k); | 371 FX_FLOAT r = 1.0f - std::min(1.0f, c + k); |
| 370 FX_FLOAT g = 1.0f - std::min(1.0f, m + k); | 372 FX_FLOAT g = 1.0f - std::min(1.0f, m + k); |
| 371 FX_FLOAT b = 1.0f - std::min(1.0f, y + k); | 373 FX_FLOAT b = 1.0f - std::min(1.0f, y + k); |
| 372 color = ArgbEncode(255, (int)(r * 255), (int)(g * 255), (int)(b * 255)); | 374 color = ArgbEncode(255, (int)(r * 255), (int)(g * 255), (int)(b * 255)); |
| 373 } | 375 } |
| 374 return color; | 376 return color; |
| 375 } | 377 } |
| 376 | 378 |
| 377 FX_FLOAT CPDF_ApSettings::GetOriginalColor( | 379 FX_FLOAT CPDF_ApSettings::GetOriginalColor( |
| 378 int index, | 380 int index, |
| 379 const CFX_ByteStringC& csEntry) const { | 381 const CFX_ByteString& csEntry) const { |
| 380 if (!m_pDict) | 382 if (!m_pDict) |
| 381 return 0; | 383 return 0; |
| 382 | 384 |
| 383 CPDF_Array* pEntry = m_pDict->GetArrayBy(csEntry); | 385 CPDF_Array* pEntry = m_pDict->GetArrayBy(csEntry); |
| 384 return pEntry ? pEntry->GetNumberAt(index) : 0; | 386 return pEntry ? pEntry->GetNumberAt(index) : 0; |
| 385 } | 387 } |
| 386 | 388 |
| 387 void CPDF_ApSettings::GetOriginalColor(int& iColorType, | 389 void CPDF_ApSettings::GetOriginalColor(int& iColorType, |
| 388 FX_FLOAT fc[4], | 390 FX_FLOAT fc[4], |
| 389 const CFX_ByteStringC& csEntry) const { | 391 const CFX_ByteString& csEntry) const { |
| 390 iColorType = COLORTYPE_TRANSPARENT; | 392 iColorType = COLORTYPE_TRANSPARENT; |
| 391 for (int i = 0; i < 4; i++) { | 393 for (int i = 0; i < 4; i++) { |
| 392 fc[i] = 0; | 394 fc[i] = 0; |
| 393 } | 395 } |
| 394 if (!m_pDict) { | 396 if (!m_pDict) { |
| 395 return; | 397 return; |
| 396 } | 398 } |
| 397 CPDF_Array* pEntry = m_pDict->GetArrayBy(csEntry); | 399 CPDF_Array* pEntry = m_pDict->GetArrayBy(csEntry); |
| 398 if (!pEntry) { | 400 if (!pEntry) { |
| 399 return; | 401 return; |
| (...skipping 10 matching lines...) Expand all Loading... |
| 410 } else if (dwCount == 4) { | 412 } else if (dwCount == 4) { |
| 411 iColorType = COLORTYPE_CMYK; | 413 iColorType = COLORTYPE_CMYK; |
| 412 fc[0] = pEntry->GetNumberAt(0); | 414 fc[0] = pEntry->GetNumberAt(0); |
| 413 fc[1] = pEntry->GetNumberAt(1); | 415 fc[1] = pEntry->GetNumberAt(1); |
| 414 fc[2] = pEntry->GetNumberAt(2); | 416 fc[2] = pEntry->GetNumberAt(2); |
| 415 fc[3] = pEntry->GetNumberAt(3); | 417 fc[3] = pEntry->GetNumberAt(3); |
| 416 } | 418 } |
| 417 } | 419 } |
| 418 | 420 |
| 419 CFX_WideString CPDF_ApSettings::GetCaption( | 421 CFX_WideString CPDF_ApSettings::GetCaption( |
| 420 const CFX_ByteStringC& csEntry) const { | 422 const CFX_ByteString& csEntry) const { |
| 421 return m_pDict ? m_pDict->GetUnicodeTextBy(csEntry) : CFX_WideString(); | 423 return m_pDict ? m_pDict->GetUnicodeTextBy(csEntry) : CFX_WideString(); |
| 422 } | 424 } |
| 423 | 425 |
| 424 CPDF_Stream* CPDF_ApSettings::GetIcon(const CFX_ByteStringC& csEntry) const { | 426 CPDF_Stream* CPDF_ApSettings::GetIcon(const CFX_ByteString& csEntry) const { |
| 425 return m_pDict ? m_pDict->GetStreamBy(csEntry) : nullptr; | 427 return m_pDict ? m_pDict->GetStreamBy(csEntry) : nullptr; |
| 426 } | 428 } |
| 427 | 429 |
| 428 CPDF_IconFit CPDF_ApSettings::GetIconFit() const { | 430 CPDF_IconFit CPDF_ApSettings::GetIconFit() const { |
| 429 return CPDF_IconFit(m_pDict ? m_pDict->GetDictBy("IF") : nullptr); | 431 return CPDF_IconFit(m_pDict ? m_pDict->GetDictBy("IF") : nullptr); |
| 430 } | 432 } |
| 431 | 433 |
| 432 int CPDF_ApSettings::GetTextPosition() const { | 434 int CPDF_ApSettings::GetTextPosition() const { |
| 433 return m_pDict ? m_pDict->GetIntegerBy("TP", TEXTPOS_CAPTION) | 435 return m_pDict ? m_pDict->GetIntegerBy("TP", TEXTPOS_CAPTION) |
| 434 : TEXTPOS_CAPTION; | 436 : TEXTPOS_CAPTION; |
| 435 } | 437 } |
| OLD | NEW |