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

Side by Side Diff: core/fxge/dib/fx_dib_engine.cpp

Issue 2032613003: Get rid of NULLs in core/ (Closed) Base URL: https://pdfium.googlesource.com/pdfium@master
Patch Set: Fix a bad merge Created 4 years, 6 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
« no previous file with comments | « core/fxge/dib/fx_dib_convert.cpp ('k') | core/fxge/dib/fx_dib_main.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 <limits.h> 7 #include <limits.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 10
(...skipping 22 matching lines...) Expand all
33 } // namespace 33 } // namespace
34 34
35 void CWeightTable::Calc(int dest_len, 35 void CWeightTable::Calc(int dest_len,
36 int dest_min, 36 int dest_min,
37 int dest_max, 37 int dest_max,
38 int src_len, 38 int src_len,
39 int src_min, 39 int src_min,
40 int src_max, 40 int src_max,
41 int flags) { 41 int flags) {
42 FX_Free(m_pWeightTables); 42 FX_Free(m_pWeightTables);
43 m_pWeightTables = NULL; 43 m_pWeightTables = nullptr;
44 double scale, base; 44 double scale, base;
45 scale = (FX_FLOAT)src_len / (FX_FLOAT)dest_len; 45 scale = (FX_FLOAT)src_len / (FX_FLOAT)dest_len;
46 if (dest_len < 0) { 46 if (dest_len < 0) {
47 base = (FX_FLOAT)(src_len); 47 base = (FX_FLOAT)(src_len);
48 } else { 48 } else {
49 base = 0; 49 base = 0;
50 } 50 }
51 int ext_size = flags & FXDIB_BICUBIC_INTERPOL ? 3 : 1; 51 int ext_size = flags & FXDIB_BICUBIC_INTERPOL ? 3 : 1;
52 m_ItemSize = 52 m_ItemSize =
53 sizeof(int) * 2 + 53 sizeof(int) * 2 +
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 int flags) { 242 int flags) {
243 m_State = 0; 243 m_State = 0;
244 m_DestFormat = dest_format; 244 m_DestFormat = dest_format;
245 m_DestBpp = dest_format & 0xff; 245 m_DestBpp = dest_format & 0xff;
246 m_SrcBpp = pSrcBitmap->GetFormat() & 0xff; 246 m_SrcBpp = pSrcBitmap->GetFormat() & 0xff;
247 m_bHasAlpha = pSrcBitmap->GetFormat() & 0x200; 247 m_bHasAlpha = pSrcBitmap->GetFormat() & 0x200;
248 m_pSrcPalette = pSrcBitmap->GetPalette(); 248 m_pSrcPalette = pSrcBitmap->GetPalette();
249 m_pDestBitmap = pDestBitmap; 249 m_pDestBitmap = pDestBitmap;
250 m_DestWidth = dest_width; 250 m_DestWidth = dest_width;
251 m_DestHeight = dest_height; 251 m_DestHeight = dest_height;
252 m_pInterBuf = NULL; 252 m_pInterBuf = nullptr;
253 m_pExtraAlphaBuf = NULL; 253 m_pExtraAlphaBuf = nullptr;
254 m_pDestMaskScanline = NULL; 254 m_pDestMaskScanline = nullptr;
255 m_DestClip = clip_rect; 255 m_DestClip = clip_rect;
256 uint32_t size = clip_rect.Width(); 256 uint32_t size = clip_rect.Width();
257 if (size && m_DestBpp > (int)(INT_MAX / size)) { 257 if (size && m_DestBpp > (int)(INT_MAX / size)) {
258 return; 258 return;
259 } 259 }
260 size *= m_DestBpp; 260 size *= m_DestBpp;
261 if (size > INT_MAX - 31) { 261 if (size > INT_MAX - 31) {
262 return; 262 return;
263 } 263 }
264 size += 31; 264 size += 31;
265 size = size / 32 * 4; 265 size = size / 32 * 4;
266 m_pDestScanline = FX_TryAlloc(uint8_t, size); 266 m_pDestScanline = FX_TryAlloc(uint8_t, size);
267 if (!m_pDestScanline) { 267 if (!m_pDestScanline) {
268 return; 268 return;
269 } 269 }
270 if (dest_format == FXDIB_Rgb32) { 270 if (dest_format == FXDIB_Rgb32) {
271 FXSYS_memset(m_pDestScanline, 255, size); 271 FXSYS_memset(m_pDestScanline, 255, size);
272 } 272 }
273 m_InterPitch = (m_DestClip.Width() * m_DestBpp + 31) / 32 * 4; 273 m_InterPitch = (m_DestClip.Width() * m_DestBpp + 31) / 32 * 4;
274 m_ExtraMaskPitch = (m_DestClip.Width() * 8 + 31) / 32 * 4; 274 m_ExtraMaskPitch = (m_DestClip.Width() * 8 + 31) / 32 * 4;
275 m_pInterBuf = NULL; 275 m_pInterBuf = nullptr;
276 m_pSource = pSrcBitmap; 276 m_pSource = pSrcBitmap;
277 m_SrcWidth = pSrcBitmap->GetWidth(); 277 m_SrcWidth = pSrcBitmap->GetWidth();
278 m_SrcHeight = pSrcBitmap->GetHeight(); 278 m_SrcHeight = pSrcBitmap->GetHeight();
279 m_SrcPitch = (m_SrcWidth * m_SrcBpp + 31) / 32 * 4; 279 m_SrcPitch = (m_SrcWidth * m_SrcBpp + 31) / 32 * 4;
280 if ((flags & FXDIB_NOSMOOTH) == 0) { 280 if ((flags & FXDIB_NOSMOOTH) == 0) {
281 FX_BOOL bInterpol = 281 FX_BOOL bInterpol =
282 flags & FXDIB_INTERPOL || flags & FXDIB_BICUBIC_INTERPOL; 282 flags & FXDIB_INTERPOL || flags & FXDIB_BICUBIC_INTERPOL;
283 if (!bInterpol && FXSYS_abs(dest_width) != 0 && 283 if (!bInterpol && FXSYS_abs(dest_width) != 0 &&
284 FXSYS_abs(dest_height) < 284 FXSYS_abs(dest_height) <
285 m_SrcWidth * m_SrcHeight * 8 / FXSYS_abs(dest_width)) { 285 m_SrcWidth * m_SrcHeight * 8 / FXSYS_abs(dest_width)) {
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
401 for (; m_CurRow < m_SrcClip.bottom; m_CurRow++) { 401 for (; m_CurRow < m_SrcClip.bottom; m_CurRow++) {
402 if (rows_to_go == 0) { 402 if (rows_to_go == 0) {
403 if (pPause && pPause->NeedToPauseNow()) { 403 if (pPause && pPause->NeedToPauseNow()) {
404 return TRUE; 404 return TRUE;
405 } 405 }
406 rows_to_go = FX_STRECH_PAUSE_ROWS; 406 rows_to_go = FX_STRECH_PAUSE_ROWS;
407 } 407 }
408 const uint8_t* src_scan = m_pSource->GetScanline(m_CurRow); 408 const uint8_t* src_scan = m_pSource->GetScanline(m_CurRow);
409 uint8_t* dest_scan = 409 uint8_t* dest_scan =
410 m_pInterBuf + (m_CurRow - m_SrcClip.top) * m_InterPitch; 410 m_pInterBuf + (m_CurRow - m_SrcClip.top) * m_InterPitch;
411 const uint8_t* src_scan_mask = NULL; 411 const uint8_t* src_scan_mask = nullptr;
412 uint8_t* dest_scan_mask = NULL; 412 uint8_t* dest_scan_mask = nullptr;
413 if (m_pExtraAlphaBuf) { 413 if (m_pExtraAlphaBuf) {
414 src_scan_mask = m_pSource->m_pAlphaMask->GetScanline(m_CurRow); 414 src_scan_mask = m_pSource->m_pAlphaMask->GetScanline(m_CurRow);
415 dest_scan_mask = 415 dest_scan_mask =
416 m_pExtraAlphaBuf + (m_CurRow - m_SrcClip.top) * m_ExtraMaskPitch; 416 m_pExtraAlphaBuf + (m_CurRow - m_SrcClip.top) * m_ExtraMaskPitch;
417 } 417 }
418 switch (m_TransMethod) { 418 switch (m_TransMethod) {
419 case 1: 419 case 1:
420 case 2: { 420 case 2: {
421 for (int col = m_DestClip.left; col < m_DestClip.right; col++) { 421 for (int col = m_DestClip.left; col < m_DestClip.right; col++) {
422 PixelWeight* pPixelWeights = m_WeightTable.GetPixelWeight(col); 422 PixelWeight* pPixelWeights = m_WeightTable.GetPixelWeight(col);
(...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after
711 dest_scan[2] = (uint8_t)((dest_r_y) >> 16); 711 dest_scan[2] = (uint8_t)((dest_r_y) >> 16);
712 dest_scan += DestBpp; 712 dest_scan += DestBpp;
713 } 713 }
714 break; 714 break;
715 } 715 }
716 case 6: 716 case 6:
717 case 8: { 717 case 8: {
718 for (int col = m_DestClip.left; col < m_DestClip.right; col++) { 718 for (int col = m_DestClip.left; col < m_DestClip.right; col++) {
719 unsigned char* src_scan = 719 unsigned char* src_scan =
720 m_pInterBuf + (col - m_DestClip.left) * DestBpp; 720 m_pInterBuf + (col - m_DestClip.left) * DestBpp;
721 unsigned char* src_scan_mask = NULL; 721 unsigned char* src_scan_mask = nullptr;
722 if (m_DestFormat != FXDIB_Argb) { 722 if (m_DestFormat != FXDIB_Argb) {
723 src_scan_mask = m_pExtraAlphaBuf + (col - m_DestClip.left); 723 src_scan_mask = m_pExtraAlphaBuf + (col - m_DestClip.left);
724 } 724 }
725 int dest_a = 0, dest_r_y = 0, dest_g_m = 0, dest_b_c = 0; 725 int dest_a = 0, dest_r_y = 0, dest_g_m = 0, dest_b_c = 0;
726 for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; 726 for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd;
727 j++) { 727 j++) {
728 int pixel_weight = 728 int pixel_weight =
729 pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; 729 pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart];
730 const uint8_t* src_pixel = 730 const uint8_t* src_pixel =
731 src_scan + (j - m_SrcClip.top) * m_InterPitch; 731 src_scan + (j - m_SrcClip.top) * m_InterPitch;
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
920 result_width); 920 result_width);
921 if (m_pMaskScanline) { 921 if (m_pMaskScanline) {
922 m_pSource->m_pAlphaMask->DownSampleScanline( 922 m_pSource->m_pAlphaMask->DownSampleScanline(
923 src_y, m_pMaskScanline.get(), 1, m_DestWidth, m_bFlipX, 923 src_y, m_pMaskScanline.get(), 1, m_DestWidth, m_bFlipX,
924 m_ClipRect.left, result_width); 924 m_ClipRect.left, result_width);
925 } 925 }
926 m_pDest->ComposeScanline(dest_y, m_pScanline.get(), m_pMaskScanline.get()); 926 m_pDest->ComposeScanline(dest_y, m_pScanline.get(), m_pMaskScanline.get());
927 } 927 }
928 return FALSE; 928 return FALSE;
929 } 929 }
OLDNEW
« no previous file with comments | « core/fxge/dib/fx_dib_convert.cpp ('k') | core/fxge/dib/fx_dib_main.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698