Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(291)

Side by Side Diff: core/src/fpdfapi/fpdf_render/fpdf_render.cpp

Issue 1547833002: Switch from nonstd::unique_ptr to std::unique_ptr. (Closed) Base URL: https://pdfium.googlesource.com/pdfium@master
Patch Set: rebase Created 4 years, 12 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "render_int.h" 7 #include "render_int.h"
8 8
9 #include "core/include/fpdfapi/fpdf_module.h" 9 #include "core/include/fpdfapi/fpdf_module.h"
10 #include "core/include/fpdfapi/fpdf_render.h" 10 #include "core/include/fpdfapi/fpdf_render.h"
(...skipping 632 matching lines...) Expand 10 before | Expand all | Expand 10 after
643 } 643 }
644 int textcount = ClipPath.GetTextCount(); 644 int textcount = ClipPath.GetTextCount();
645 if (textcount == 0) 645 if (textcount == 0)
646 return; 646 return;
647 647
648 if (m_pDevice->GetDeviceClass() == FXDC_DISPLAY && 648 if (m_pDevice->GetDeviceClass() == FXDC_DISPLAY &&
649 !(m_pDevice->GetDeviceCaps(FXDC_RENDER_CAPS) & FXRC_SOFT_CLIP)) { 649 !(m_pDevice->GetDeviceCaps(FXDC_RENDER_CAPS) & FXRC_SOFT_CLIP)) {
650 return; 650 return;
651 } 651 }
652 652
653 nonstd::unique_ptr<CFX_PathData> pTextClippingPath; 653 std::unique_ptr<CFX_PathData> pTextClippingPath;
654 for (int i = 0; i < textcount; ++i) { 654 for (int i = 0; i < textcount; ++i) {
655 CPDF_TextObject* pText = ClipPath.GetText(i); 655 CPDF_TextObject* pText = ClipPath.GetText(i);
656 if (pText) { 656 if (pText) {
657 if (!pTextClippingPath) 657 if (!pTextClippingPath)
658 pTextClippingPath.reset(new CFX_PathData); 658 pTextClippingPath.reset(new CFX_PathData);
659 ProcessText(pText, pObj2Device, pTextClippingPath.get()); 659 ProcessText(pText, pObj2Device, pTextClippingPath.get());
660 continue; 660 continue;
661 } 661 }
662 662
663 if (!pTextClippingPath) 663 if (!pTextClippingPath)
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
804 rect.Intersect(m_pDevice->GetClipBox()); 804 rect.Intersect(m_pDevice->GetClipBox());
805 if (rect.IsEmpty()) { 805 if (rect.IsEmpty()) {
806 return TRUE; 806 return TRUE;
807 } 807 }
808 CFX_Matrix deviceCTM = m_pDevice->GetCTM(); 808 CFX_Matrix deviceCTM = m_pDevice->GetCTM();
809 FX_FLOAT scaleX = FXSYS_fabs(deviceCTM.a); 809 FX_FLOAT scaleX = FXSYS_fabs(deviceCTM.a);
810 FX_FLOAT scaleY = FXSYS_fabs(deviceCTM.d); 810 FX_FLOAT scaleY = FXSYS_fabs(deviceCTM.d);
811 int width = FXSYS_round((FX_FLOAT)rect.Width() * scaleX); 811 int width = FXSYS_round((FX_FLOAT)rect.Width() * scaleX);
812 int height = FXSYS_round((FX_FLOAT)rect.Height() * scaleY); 812 int height = FXSYS_round((FX_FLOAT)rect.Height() * scaleY);
813 CFX_FxgeDevice bitmap_device; 813 CFX_FxgeDevice bitmap_device;
814 nonstd::unique_ptr<CFX_DIBitmap> oriDevice; 814 std::unique_ptr<CFX_DIBitmap> oriDevice;
815 if (!isolated && (m_pDevice->GetRenderCaps() & FXRC_GET_BITS)) { 815 if (!isolated && (m_pDevice->GetRenderCaps() & FXRC_GET_BITS)) {
816 oriDevice.reset(new CFX_DIBitmap); 816 oriDevice.reset(new CFX_DIBitmap);
817 if (!m_pDevice->CreateCompatibleBitmap(oriDevice.get(), width, height)) 817 if (!m_pDevice->CreateCompatibleBitmap(oriDevice.get(), width, height))
818 return TRUE; 818 return TRUE;
819 819
820 m_pDevice->GetDIBits(oriDevice.get(), rect.left, rect.top); 820 m_pDevice->GetDIBits(oriDevice.get(), rect.left, rect.top);
821 } 821 }
822 if (!bitmap_device.Create(width, height, FXDIB_Argb, 0, oriDevice.get())) 822 if (!bitmap_device.Create(width, height, FXDIB_Argb, 0, oriDevice.get()))
823 return TRUE; 823 return TRUE;
824 824
825 CFX_DIBitmap* bitmap = bitmap_device.GetBitmap(); 825 CFX_DIBitmap* bitmap = bitmap_device.GetBitmap();
826 bitmap->Clear(0); 826 bitmap->Clear(0);
827 CFX_Matrix new_matrix = *pObj2Device; 827 CFX_Matrix new_matrix = *pObj2Device;
828 new_matrix.TranslateI(-rect.left, -rect.top); 828 new_matrix.TranslateI(-rect.left, -rect.top);
829 new_matrix.Scale(scaleX, scaleY); 829 new_matrix.Scale(scaleX, scaleY);
830 nonstd::unique_ptr<CFX_DIBitmap> pTextMask; 830 std::unique_ptr<CFX_DIBitmap> pTextMask;
831 if (bTextClip) { 831 if (bTextClip) {
832 pTextMask.reset(new CFX_DIBitmap); 832 pTextMask.reset(new CFX_DIBitmap);
833 if (!pTextMask->Create(width, height, FXDIB_8bppMask)) 833 if (!pTextMask->Create(width, height, FXDIB_8bppMask))
834 return TRUE; 834 return TRUE;
835 835
836 pTextMask->Clear(0); 836 pTextMask->Clear(0);
837 CFX_FxgeDevice text_device; 837 CFX_FxgeDevice text_device;
838 text_device.Attach(pTextMask.get()); 838 text_device.Attach(pTextMask.get());
839 for (FX_DWORD i = 0; i < pPageObj->m_ClipPath.GetTextCount(); i++) { 839 for (FX_DWORD i = 0; i < pPageObj->m_ClipPath.GetTextCount(); i++) {
840 CPDF_TextObject* textobj = pPageObj->m_ClipPath.GetText(i); 840 CPDF_TextObject* textobj = pPageObj->m_ClipPath.GetText(i);
(...skipping 13 matching lines...) Expand all
854 bitmap_render.Initialize(m_pContext, &bitmap_device, NULL, m_pStopObj, NULL, 854 bitmap_render.Initialize(m_pContext, &bitmap_device, NULL, m_pStopObj, NULL,
855 NULL, &m_Options, 0, m_bDropObjects, pFormResource, 855 NULL, &m_Options, 0, m_bDropObjects, pFormResource,
856 TRUE); 856 TRUE);
857 bitmap_render.ProcessObjectNoClip(pPageObj, &new_matrix); 857 bitmap_render.ProcessObjectNoClip(pPageObj, &new_matrix);
858 m_bStopped = bitmap_render.m_bStopped; 858 m_bStopped = bitmap_render.m_bStopped;
859 if (pSMaskDict) { 859 if (pSMaskDict) {
860 CFX_Matrix smask_matrix; 860 CFX_Matrix smask_matrix;
861 FXSYS_memcpy(&smask_matrix, pGeneralState->m_SMaskMatrix, 861 FXSYS_memcpy(&smask_matrix, pGeneralState->m_SMaskMatrix,
862 sizeof smask_matrix); 862 sizeof smask_matrix);
863 smask_matrix.Concat(*pObj2Device); 863 smask_matrix.Concat(*pObj2Device);
864 nonstd::unique_ptr<CFX_DIBSource> pSMaskSource( 864 std::unique_ptr<CFX_DIBSource> pSMaskSource(
865 LoadSMask(pSMaskDict, &rect, &smask_matrix)); 865 LoadSMask(pSMaskDict, &rect, &smask_matrix));
866 if (pSMaskSource) 866 if (pSMaskSource)
867 bitmap->MultiplyAlpha(pSMaskSource.get()); 867 bitmap->MultiplyAlpha(pSMaskSource.get());
868 } 868 }
869 if (pTextMask) { 869 if (pTextMask) {
870 bitmap->MultiplyAlpha(pTextMask.get()); 870 bitmap->MultiplyAlpha(pTextMask.get());
871 pTextMask.reset(); 871 pTextMask.reset();
872 } 872 }
873 if (Transparency & PDFTRANS_GROUP && group_alpha != 1.0f) { 873 if (Transparency & PDFTRANS_GROUP && group_alpha != 1.0f) {
874 bitmap->MultiplyAlpha((int32_t)(group_alpha * 255)); 874 bitmap->MultiplyAlpha((int32_t)(group_alpha * 255));
(...skipping 14 matching lines...) Expand all
889 FX_BOOL bBackAlphaRequired) { 889 FX_BOOL bBackAlphaRequired) {
890 FX_RECT bbox = rect; 890 FX_RECT bbox = rect;
891 bbox.Intersect(m_pDevice->GetClipBox()); 891 bbox.Intersect(m_pDevice->GetClipBox());
892 left = bbox.left; 892 left = bbox.left;
893 top = bbox.top; 893 top = bbox.top;
894 CFX_Matrix deviceCTM = m_pDevice->GetCTM(); 894 CFX_Matrix deviceCTM = m_pDevice->GetCTM();
895 FX_FLOAT scaleX = FXSYS_fabs(deviceCTM.a); 895 FX_FLOAT scaleX = FXSYS_fabs(deviceCTM.a);
896 FX_FLOAT scaleY = FXSYS_fabs(deviceCTM.d); 896 FX_FLOAT scaleY = FXSYS_fabs(deviceCTM.d);
897 int width = FXSYS_round(bbox.Width() * scaleX); 897 int width = FXSYS_round(bbox.Width() * scaleX);
898 int height = FXSYS_round(bbox.Height() * scaleY); 898 int height = FXSYS_round(bbox.Height() * scaleY);
899 nonstd::unique_ptr<CFX_DIBitmap> pBackdrop(new CFX_DIBitmap); 899 std::unique_ptr<CFX_DIBitmap> pBackdrop(new CFX_DIBitmap);
900 if (bBackAlphaRequired && !m_bDropObjects) 900 if (bBackAlphaRequired && !m_bDropObjects)
901 pBackdrop->Create(width, height, FXDIB_Argb); 901 pBackdrop->Create(width, height, FXDIB_Argb);
902 else 902 else
903 m_pDevice->CreateCompatibleBitmap(pBackdrop.get(), width, height); 903 m_pDevice->CreateCompatibleBitmap(pBackdrop.get(), width, height);
904 904
905 if (!pBackdrop->GetBuffer()) 905 if (!pBackdrop->GetBuffer())
906 return nullptr; 906 return nullptr;
907 907
908 FX_BOOL bNeedDraw; 908 FX_BOOL bNeedDraw;
909 if (pBackdrop->HasAlpha()) 909 if (pBackdrop->HasAlpha())
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
1183 CPDF_TransferFunc* CPDF_DocRenderData::GetTransferFunc(CPDF_Object* pObj) { 1183 CPDF_TransferFunc* CPDF_DocRenderData::GetTransferFunc(CPDF_Object* pObj) {
1184 if (!pObj) 1184 if (!pObj)
1185 return nullptr; 1185 return nullptr;
1186 1186
1187 auto it = m_TransferFuncMap.find(pObj); 1187 auto it = m_TransferFuncMap.find(pObj);
1188 if (it != m_TransferFuncMap.end()) { 1188 if (it != m_TransferFuncMap.end()) {
1189 CPDF_CountedObject<CPDF_TransferFunc>* pTransferCounter = it->second; 1189 CPDF_CountedObject<CPDF_TransferFunc>* pTransferCounter = it->second;
1190 return pTransferCounter->AddRef(); 1190 return pTransferCounter->AddRef();
1191 } 1191 }
1192 1192
1193 nonstd::unique_ptr<CPDF_Function> pFuncs[3]; 1193 std::unique_ptr<CPDF_Function> pFuncs[3];
1194 FX_BOOL bUniTransfer = TRUE; 1194 FX_BOOL bUniTransfer = TRUE;
1195 FX_BOOL bIdentity = TRUE; 1195 FX_BOOL bIdentity = TRUE;
1196 if (CPDF_Array* pArray = pObj->AsArray()) { 1196 if (CPDF_Array* pArray = pObj->AsArray()) {
1197 bUniTransfer = FALSE; 1197 bUniTransfer = FALSE;
1198 if (pArray->GetCount() < 3) 1198 if (pArray->GetCount() < 3)
1199 return nullptr; 1199 return nullptr;
1200 1200
1201 for (FX_DWORD i = 0; i < 3; ++i) { 1201 for (FX_DWORD i = 0; i < 3; ++i) {
1202 pFuncs[2 - i].reset(CPDF_Function::Load(pArray->GetElementValue(i))); 1202 pFuncs[2 - i].reset(CPDF_Function::Load(pArray->GetElementValue(i)));
1203 if (!pFuncs[2 - i]) 1203 if (!pFuncs[2 - i])
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
1398 item.GetParamType() == CPDF_ContentMarkItem::PropertiesDict) { 1398 item.GetParamType() == CPDF_ContentMarkItem::PropertiesDict) {
1399 CPDF_Dictionary* pOCG = 1399 CPDF_Dictionary* pOCG =
1400 ToDictionary(static_cast<CPDF_Object*>(item.GetParam())); 1400 ToDictionary(static_cast<CPDF_Object*>(item.GetParam()));
1401 if (!CheckOCGVisible(pOCG)) { 1401 if (!CheckOCGVisible(pOCG)) {
1402 return FALSE; 1402 return FALSE;
1403 } 1403 }
1404 } 1404 }
1405 } 1405 }
1406 return TRUE; 1406 return TRUE;
1407 } 1407 }
OLDNEW
« no previous file with comments | « core/src/fpdfapi/fpdf_parser/fpdf_parser_parser_unittest.cpp ('k') | core/src/fpdfapi/fpdf_render/fpdf_render_image.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698