| 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 "core/fpdfapi/edit/editint.h" | 7 #include "core/fpdfapi/edit/editint.h" |
| 8 | 8 |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 399 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 410 } | 410 } |
| 411 } | 411 } |
| 412 | 412 |
| 413 CPDF_FlateEncoder::CPDF_FlateEncoder(CPDF_Stream* pStream, bool bFlateEncode) | 413 CPDF_FlateEncoder::CPDF_FlateEncoder(CPDF_Stream* pStream, bool bFlateEncode) |
| 414 : m_pData(nullptr), | 414 : m_pData(nullptr), |
| 415 m_dwSize(0), | 415 m_dwSize(0), |
| 416 m_pDict(nullptr), | 416 m_pDict(nullptr), |
| 417 m_bCloned(false), | 417 m_bCloned(false), |
| 418 m_bNewData(false) { | 418 m_bNewData(false) { |
| 419 m_Acc.LoadAllData(pStream, true); | 419 m_Acc.LoadAllData(pStream, true); |
| 420 if ((pStream && pStream->GetDict() && | 420 bool bHasFilter = pStream && pStream->HasFilter(); |
| 421 pStream->GetDict()->KeyExist("Filter")) || | 421 if (bHasFilter && !bFlateEncode) { |
| 422 !bFlateEncode) { | 422 CPDF_StreamAcc destAcc; |
| 423 if (pStream->GetDict()->KeyExist("Filter") && !bFlateEncode) { | 423 destAcc.LoadAllData(pStream); |
| 424 CPDF_StreamAcc destAcc; | 424 m_dwSize = destAcc.GetSize(); |
| 425 destAcc.LoadAllData(pStream); | 425 m_pData = (uint8_t*)destAcc.DetachData(); |
| 426 m_dwSize = destAcc.GetSize(); | 426 m_pDict = ToDictionary(pStream->GetDict()->Clone().release()); |
| 427 m_pData = (uint8_t*)destAcc.DetachData(); | 427 m_pDict->RemoveFor("Filter"); |
| 428 m_pDict = ToDictionary(pStream->GetDict()->Clone().release()); | 428 m_bNewData = true; |
| 429 m_pDict->RemoveFor("Filter"); | 429 m_bCloned = true; |
| 430 m_bNewData = true; | |
| 431 m_bCloned = true; | |
| 432 } else { | |
| 433 m_pData = (uint8_t*)m_Acc.GetData(); | |
| 434 m_dwSize = m_Acc.GetSize(); | |
| 435 m_pDict = pStream->GetDict(); | |
| 436 } | |
| 437 return; | 430 return; |
| 438 } | 431 } |
| 439 | 432 if (bHasFilter || !bFlateEncode) { |
| 433 m_pData = (uint8_t*)m_Acc.GetData(); |
| 434 m_dwSize = m_Acc.GetSize(); |
| 435 m_pDict = pStream->GetDict(); |
| 436 return; |
| 437 } |
| 440 m_bNewData = true; | 438 m_bNewData = true; |
| 441 m_bCloned = true; | 439 m_bCloned = true; |
| 442 // TODO(thestig): Move to Init() and check return value. | 440 // TODO(thestig): Move to Init() and check return value. |
| 443 ::FlateEncode(m_Acc.GetData(), m_Acc.GetSize(), &m_pData, &m_dwSize); | 441 ::FlateEncode(m_Acc.GetData(), m_Acc.GetSize(), &m_pData, &m_dwSize); |
| 444 m_pDict = ToDictionary(pStream->GetDict()->Clone().release()); | 442 m_pDict = ToDictionary(pStream->GetDict()->Clone().release()); |
| 445 m_pDict->SetIntegerFor("Length", m_dwSize); | 443 m_pDict->SetIntegerFor("Length", m_dwSize); |
| 446 m_pDict->SetNameFor("Filter", "FlateDecode"); | 444 m_pDict->SetNameFor("Filter", "FlateDecode"); |
| 447 m_pDict->RemoveFor("DecodeParms"); | 445 m_pDict->RemoveFor("DecodeParms"); |
| 448 } | 446 } |
| 449 | 447 |
| (...skipping 1561 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2011 m_pCryptoHandler = nullptr; | 2009 m_pCryptoHandler = nullptr; |
| 2012 } | 2010 } |
| 2013 void CPDF_Creator::ResetStandardSecurity() { | 2011 void CPDF_Creator::ResetStandardSecurity() { |
| 2014 if (!m_bLocalCryptoHandler) | 2012 if (!m_bLocalCryptoHandler) |
| 2015 return; | 2013 return; |
| 2016 | 2014 |
| 2017 delete m_pCryptoHandler; | 2015 delete m_pCryptoHandler; |
| 2018 m_pCryptoHandler = nullptr; | 2016 m_pCryptoHandler = nullptr; |
| 2019 m_bLocalCryptoHandler = false; | 2017 m_bLocalCryptoHandler = false; |
| 2020 } | 2018 } |
| OLD | NEW |