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

Side by Side Diff: xfa/fxfa/app/xfa_ffwidget.cpp

Issue 2451493002: Refcount all the IFX_ stream classes all the time. (Closed)
Patch Set: Clean up cast expression Created 4 years 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
« no previous file with comments | « xfa/fxfa/app/xfa_ffdoc.cpp ('k') | xfa/fxfa/fm2js/xfa_fm2jscontext.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "xfa/fxfa/xfa_ffwidget.h" 7 #include "xfa/fxfa/xfa_ffwidget.h"
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <memory> 10 #include <memory>
(...skipping 1036 matching lines...) Expand 10 before | Expand all | Expand 10 after
1047 CFX_WideString wsImage; 1047 CFX_WideString wsImage;
1048 pImage->GetContent(wsImage); 1048 pImage->GetContent(wsImage);
1049 if (wsHref.IsEmpty() && wsImage.IsEmpty()) { 1049 if (wsHref.IsEmpty() && wsImage.IsEmpty()) {
1050 return nullptr; 1050 return nullptr;
1051 } 1051 }
1052 CFX_WideString wsContentType; 1052 CFX_WideString wsContentType;
1053 pImage->GetContentType(wsContentType); 1053 pImage->GetContentType(wsContentType);
1054 FXCODEC_IMAGE_TYPE type = XFA_GetImageType(wsContentType); 1054 FXCODEC_IMAGE_TYPE type = XFA_GetImageType(wsContentType);
1055 CFX_ByteString bsContent; 1055 CFX_ByteString bsContent;
1056 uint8_t* pImageBuffer = nullptr; 1056 uint8_t* pImageBuffer = nullptr;
1057 IFX_SeekableReadStream* pImageFileRead = nullptr; 1057 CFX_RetainPtr<IFX_SeekableReadStream> pImageFileRead;
1058 if (wsImage.GetLength() > 0) { 1058 if (wsImage.GetLength() > 0) {
1059 XFA_ATTRIBUTEENUM iEncoding = 1059 XFA_ATTRIBUTEENUM iEncoding =
1060 (XFA_ATTRIBUTEENUM)pImage->GetTransferEncoding(); 1060 (XFA_ATTRIBUTEENUM)pImage->GetTransferEncoding();
1061 if (iEncoding == XFA_ATTRIBUTEENUM_Base64) { 1061 if (iEncoding == XFA_ATTRIBUTEENUM_Base64) {
1062 CFX_ByteString bsData = wsImage.UTF8Encode(); 1062 CFX_ByteString bsData = wsImage.UTF8Encode();
1063 int32_t iLength = bsData.GetLength(); 1063 int32_t iLength = bsData.GetLength();
1064 pImageBuffer = FX_Alloc(uint8_t, iLength); 1064 pImageBuffer = FX_Alloc(uint8_t, iLength);
1065 int32_t iRead = XFA_Base64Decode(bsData.c_str(), pImageBuffer); 1065 int32_t iRead = XFA_Base64Decode(bsData.c_str(), pImageBuffer);
1066 if (iRead > 0) { 1066 if (iRead > 0) {
1067 pImageFileRead = IFX_MemoryStream::Create(pImageBuffer, iRead); 1067 pImageFileRead = IFX_MemoryStream::Create(pImageBuffer, iRead);
(...skipping 17 matching lines...) Expand all
1085 pImageFileRead = pDoc->GetDocEnvironment()->OpenLinkedFile(pDoc, wsURL); 1085 pImageFileRead = pDoc->GetDocEnvironment()->OpenLinkedFile(pDoc, wsURL);
1086 } 1086 }
1087 if (!pImageFileRead) { 1087 if (!pImageFileRead) {
1088 FX_Free(pImageBuffer); 1088 FX_Free(pImageBuffer);
1089 return nullptr; 1089 return nullptr;
1090 } 1090 }
1091 bNameImage = false; 1091 bNameImage = false;
1092 CFX_DIBitmap* pBitmap = 1092 CFX_DIBitmap* pBitmap =
1093 XFA_LoadImageFromBuffer(pImageFileRead, type, iImageXDpi, iImageYDpi); 1093 XFA_LoadImageFromBuffer(pImageFileRead, type, iImageXDpi, iImageYDpi);
1094 FX_Free(pImageBuffer); 1094 FX_Free(pImageBuffer);
1095 pImageFileRead->Release();
1096 return pBitmap; 1095 return pBitmap;
1097 } 1096 }
1098 static FXDIB_Format XFA_GetDIBFormat(FXCODEC_IMAGE_TYPE type, 1097 static FXDIB_Format XFA_GetDIBFormat(FXCODEC_IMAGE_TYPE type,
1099 int32_t iComponents, 1098 int32_t iComponents,
1100 int32_t iBitsPerComponent) { 1099 int32_t iBitsPerComponent) {
1101 FXDIB_Format dibFormat = FXDIB_Argb; 1100 FXDIB_Format dibFormat = FXDIB_Argb;
1102 switch (type) { 1101 switch (type) {
1103 case FXCODEC_IMAGE_BMP: 1102 case FXCODEC_IMAGE_BMP:
1104 case FXCODEC_IMAGE_JPG: 1103 case FXCODEC_IMAGE_JPG:
1105 case FXCODEC_IMAGE_TIF: { 1104 case FXCODEC_IMAGE_TIF: {
1106 dibFormat = FXDIB_Rgb32; 1105 dibFormat = FXDIB_Rgb32;
1107 int32_t bpp = iComponents * iBitsPerComponent; 1106 int32_t bpp = iComponents * iBitsPerComponent;
1108 if (bpp <= 24) { 1107 if (bpp <= 24) {
1109 dibFormat = FXDIB_Rgb; 1108 dibFormat = FXDIB_Rgb;
1110 } 1109 }
1111 } break; 1110 } break;
1112 case FXCODEC_IMAGE_PNG: 1111 case FXCODEC_IMAGE_PNG:
1113 default: 1112 default:
1114 break; 1113 break;
1115 } 1114 }
1116 return dibFormat; 1115 return dibFormat;
1117 } 1116 }
1118 CFX_DIBitmap* XFA_LoadImageFromBuffer(IFX_SeekableReadStream* pImageFileRead, 1117
1119 FXCODEC_IMAGE_TYPE type, 1118 CFX_DIBitmap* XFA_LoadImageFromBuffer(
1120 int32_t& iImageXDpi, 1119 const CFX_RetainPtr<IFX_SeekableReadStream>& pImageFileRead,
1121 int32_t& iImageYDpi) { 1120 FXCODEC_IMAGE_TYPE type,
1121 int32_t& iImageXDpi,
1122 int32_t& iImageYDpi) {
1122 CFX_GEModule* pGeModule = CFX_GEModule::Get(); 1123 CFX_GEModule* pGeModule = CFX_GEModule::Get();
1123 if (!pGeModule) { 1124 if (!pGeModule)
1124 return nullptr; 1125 return nullptr;
1125 } 1126
1126 CCodec_ModuleMgr* pCodecMgr = pGeModule->GetCodecModule(); 1127 CCodec_ModuleMgr* pCodecMgr = pGeModule->GetCodecModule();
1127 if (!pCodecMgr) { 1128 if (!pCodecMgr)
1128 return nullptr; 1129 return nullptr;
1129 } 1130
1130 CFX_DIBAttribute dibAttr; 1131 CFX_DIBAttribute dibAttr;
1131 CFX_DIBitmap* pBitmap = nullptr; 1132 CFX_DIBitmap* pBitmap = nullptr;
1132 CCodec_ProgressiveDecoder* pProgressiveDecoder = 1133 CCodec_ProgressiveDecoder* pProgressiveDecoder =
1133 pCodecMgr->CreateProgressiveDecoder(); 1134 pCodecMgr->CreateProgressiveDecoder();
1134 pProgressiveDecoder->LoadImageInfo(pImageFileRead, type, &dibAttr, false); 1135 pProgressiveDecoder->LoadImageInfo(pImageFileRead, type, &dibAttr, false);
1135 switch (dibAttr.m_wDPIUnit) { 1136 switch (dibAttr.m_wDPIUnit) {
1136 case FXCODEC_RESUNIT_CENTIMETER: 1137 case FXCODEC_RESUNIT_CENTIMETER:
1137 dibAttr.m_nXDPI = (int32_t)(dibAttr.m_nXDPI * 2.54f); 1138 dibAttr.m_nXDPI = (int32_t)(dibAttr.m_nXDPI * 2.54f);
1138 dibAttr.m_nYDPI = (int32_t)(dibAttr.m_nYDPI * 2.54f); 1139 dibAttr.m_nYDPI = (int32_t)(dibAttr.m_nYDPI * 2.54f);
1139 break; 1140 break;
(...skipping 903 matching lines...) Expand 10 before | Expand all | Expand 10 after
2043 } 2044 }
2044 XFA_BOX_Fill(box, strokes, pGS, rtWidget, pMatrix, dwFlags); 2045 XFA_BOX_Fill(box, strokes, pGS, rtWidget, pMatrix, dwFlags);
2045 XFA_BOX_Stroke(box, strokes, pGS, rtWidget, pMatrix, dwFlags); 2046 XFA_BOX_Stroke(box, strokes, pGS, rtWidget, pMatrix, dwFlags);
2046 } 2047 }
2047 2048
2048 CXFA_CalcData::CXFA_CalcData() : m_iRefCount(0) {} 2049 CXFA_CalcData::CXFA_CalcData() : m_iRefCount(0) {}
2049 2050
2050 CXFA_CalcData::~CXFA_CalcData() { 2051 CXFA_CalcData::~CXFA_CalcData() {
2051 m_Globals.RemoveAll(); 2052 m_Globals.RemoveAll();
2052 } 2053 }
OLDNEW
« no previous file with comments | « xfa/fxfa/app/xfa_ffdoc.cpp ('k') | xfa/fxfa/fm2js/xfa_fm2jscontext.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698