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

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

Issue 2045083003: Remove implicit CFX_CountedRef::operator T*() (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Fix mac build. 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
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 "core/fpdfapi/fpdf_render/render_int.h" 7 #include "core/fpdfapi/fpdf_render/render_int.h"
8 8
9 #include "core/fpdfapi/fpdf_font/cpdf_type3char.h" 9 #include "core/fpdfapi/fpdf_font/cpdf_type3char.h"
10 #include "core/fpdfapi/fpdf_font/cpdf_type3font.h" 10 #include "core/fpdfapi/fpdf_font/cpdf_type3font.h"
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 m_bStdCS = bStdCS; 181 m_bStdCS = bStdCS;
182 m_T3FillColor = fill_color; 182 m_T3FillColor = fill_color;
183 m_pType3Char = pType3Char; 183 m_pType3Char = pType3Char;
184 m_GroupFamily = GroupFamily; 184 m_GroupFamily = GroupFamily;
185 m_bLoadMask = bLoadMask; 185 m_bLoadMask = bLoadMask;
186 m_pFormResource = pFormResource; 186 m_pFormResource = pFormResource;
187 m_pPageResource = m_pContext->GetPageResources(); 187 m_pPageResource = m_pContext->GetPageResources();
188 if (pInitialStates && !m_pType3Char) { 188 if (pInitialStates && !m_pType3Char) {
189 m_InitialStates.CopyStates(*pInitialStates); 189 m_InitialStates.CopyStates(*pInitialStates);
190 if (pParentState) { 190 if (pParentState) {
191 CPDF_ColorStateData* pColorData = 191 const CPDF_ColorStateData* pColorData =
192 (CPDF_ColorStateData*)(const CPDF_ColorStateData*) 192 m_InitialStates.m_ColorState.GetObject();
193 m_InitialStates.m_ColorState; 193 const CPDF_ColorStateData* pParentData =
194 CPDF_ColorStateData* pParentData = 194 pParentState->m_InitialStates.m_ColorState.GetObject();
195 (CPDF_ColorStateData*)(const CPDF_ColorStateData*)
196 pParentState->m_InitialStates.m_ColorState;
197 if (!pColorData || pColorData->m_FillColor.IsNull()) { 195 if (!pColorData || pColorData->m_FillColor.IsNull()) {
198 CPDF_ColorStateData* pData = m_InitialStates.m_ColorState.GetModify(); 196 CPDF_ColorStateData* pData = m_InitialStates.m_ColorState.GetModify();
199 pData->m_FillRGB = pParentData->m_FillRGB; 197 pData->m_FillRGB = pParentData->m_FillRGB;
200 pData->m_FillColor.Copy(&pParentData->m_FillColor); 198 pData->m_FillColor.Copy(&pParentData->m_FillColor);
201 } 199 }
202 if (!pColorData || pColorData->m_StrokeColor.IsNull()) { 200 if (!pColorData || pColorData->m_StrokeColor.IsNull()) {
203 CPDF_ColorStateData* pData = m_InitialStates.m_ColorState.GetModify(); 201 CPDF_ColorStateData* pData = m_InitialStates.m_ColorState.GetModify();
204 pData->m_StrokeRGB = pParentData->m_FillRGB; 202 pData->m_StrokeRGB = pParentData->m_FillRGB;
205 pData->m_StrokeColor.Copy(&pParentData->m_StrokeColor); 203 pData->m_StrokeColor.Copy(&pParentData->m_StrokeColor);
206 } 204 }
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
459 if (m_Options.m_Flags & RENDER_FILL_FULLCOVER) { 457 if (m_Options.m_Flags & RENDER_FILL_FULLCOVER) {
460 FillType |= FXFILL_FULLCOVER; 458 FillType |= FXFILL_FULLCOVER;
461 } 459 }
462 if (m_Options.m_Flags & RENDER_NOPATHSMOOTH) { 460 if (m_Options.m_Flags & RENDER_NOPATHSMOOTH) {
463 FillType |= FXFILL_NOPATHSMOOTH; 461 FillType |= FXFILL_NOPATHSMOOTH;
464 } 462 }
465 if (bStroke) { 463 if (bStroke) {
466 FillType |= FX_FILL_STROKE; 464 FillType |= FX_FILL_STROKE;
467 } 465 }
468 const CPDF_GeneralStateData* pGeneralData = 466 const CPDF_GeneralStateData* pGeneralData =
469 ((CPDF_PageObject*)pPathObj)->m_GeneralState; 467 static_cast<const CPDF_PageObject*>(pPathObj)->m_GeneralState.GetObject();
470 if (pGeneralData && pGeneralData->m_StrokeAdjust) { 468 if (pGeneralData && pGeneralData->m_StrokeAdjust) {
471 FillType |= FX_STROKE_ADJUST; 469 FillType |= FX_STROKE_ADJUST;
472 } 470 }
473 if (m_pType3Char) { 471 if (m_pType3Char) {
474 FillType |= FX_FILL_TEXT_MODE; 472 FillType |= FX_FILL_TEXT_MODE;
475 } 473 }
476 CFX_GraphStateData graphState(*pPathObj->m_GraphState); 474 CFX_GraphStateData graphState(*pPathObj->m_GraphState.GetObject());
477 if (m_Options.m_Flags & RENDER_THINLINE) { 475 if (m_Options.m_Flags & RENDER_THINLINE) {
478 graphState.m_LineWidth = 0; 476 graphState.m_LineWidth = 0;
479 } 477 }
480 return m_pDevice->DrawPathWithBlend(pPathObj->m_Path, &path_matrix, 478 return m_pDevice->DrawPathWithBlend(pPathObj->m_Path.GetObject(),
481 &graphState, fill_argb, stroke_argb, 479 &path_matrix, &graphState, fill_argb,
482 FillType, m_curBlend); 480 stroke_argb, FillType, m_curBlend);
483 } 481 }
484 482
485 CPDF_TransferFunc* CPDF_RenderStatus::GetTransferFunc(CPDF_Object* pObj) const { 483 CPDF_TransferFunc* CPDF_RenderStatus::GetTransferFunc(CPDF_Object* pObj) const {
486 ASSERT(pObj); 484 ASSERT(pObj);
487 CPDF_DocRenderData* pDocCache = m_pContext->GetDocument()->GetRenderData(); 485 CPDF_DocRenderData* pDocCache = m_pContext->GetDocument()->GetRenderData();
488 return pDocCache ? pDocCache->GetTransferFunc(pObj) : nullptr; 486 return pDocCache ? pDocCache->GetTransferFunc(pObj) : nullptr;
489 } 487 }
490 FX_ARGB CPDF_RenderStatus::GetFillArgb(const CPDF_PageObject* pObj, 488 FX_ARGB CPDF_RenderStatus::GetFillArgb(const CPDF_PageObject* pObj,
491 FX_BOOL bType3) const { 489 FX_BOOL bType3) const {
492 CPDF_ColorStateData* pColorData = 490 const CPDF_ColorStateData* pColorData = pObj->m_ColorState.GetObject();
493 (CPDF_ColorStateData*)(const CPDF_ColorStateData*)pObj->m_ColorState;
494 if (m_pType3Char && !bType3 && 491 if (m_pType3Char && !bType3 &&
495 (!m_pType3Char->m_bColored || 492 (!m_pType3Char->m_bColored ||
496 (m_pType3Char->m_bColored && 493 (m_pType3Char->m_bColored &&
497 (!pColorData || pColorData->m_FillColor.IsNull())))) { 494 (!pColorData || pColorData->m_FillColor.IsNull())))) {
498 return m_T3FillColor; 495 return m_T3FillColor;
499 } 496 }
500 if (!pColorData || pColorData->m_FillColor.IsNull()) { 497 if (!pColorData || pColorData->m_FillColor.IsNull()) {
501 pColorData = (CPDF_ColorStateData*)(const CPDF_ColorStateData*) 498 pColorData = m_InitialStates.m_ColorState.GetObject();
502 m_InitialStates.m_ColorState;
503 } 499 }
504 FX_COLORREF rgb = pColorData->m_FillRGB; 500 FX_COLORREF rgb = pColorData->m_FillRGB;
505 if (rgb == (uint32_t)-1) { 501 if (rgb == (uint32_t)-1) {
506 return 0; 502 return 0;
507 } 503 }
508 const CPDF_GeneralStateData* pGeneralData = pObj->m_GeneralState; 504 const CPDF_GeneralStateData* pGeneralData = pObj->m_GeneralState.GetObject();
509 int alpha; 505 int alpha;
510 if (pGeneralData) { 506 if (pGeneralData) {
511 alpha = (int32_t)(pGeneralData->m_FillAlpha * 255); 507 alpha = (int32_t)(pGeneralData->m_FillAlpha * 255);
512 if (pGeneralData->m_pTR) { 508 if (pGeneralData->m_pTR) {
513 if (!pGeneralData->m_pTransferFunc) { 509 if (!pGeneralData->m_pTransferFunc) {
514 ((CPDF_GeneralStateData*)pGeneralData)->m_pTransferFunc = 510 ((CPDF_GeneralStateData*)pGeneralData)->m_pTransferFunc =
515 GetTransferFunc(pGeneralData->m_pTR); 511 GetTransferFunc(pGeneralData->m_pTR);
516 } 512 }
517 if (pGeneralData->m_pTransferFunc) { 513 if (pGeneralData->m_pTransferFunc) {
518 rgb = pGeneralData->m_pTransferFunc->TranslateColor(rgb); 514 rgb = pGeneralData->m_pTransferFunc->TranslateColor(rgb);
519 } 515 }
520 } 516 }
521 } else { 517 } else {
522 alpha = 255; 518 alpha = 255;
523 } 519 }
524 return m_Options.TranslateColor(ArgbEncode(alpha, rgb)); 520 return m_Options.TranslateColor(ArgbEncode(alpha, rgb));
525 } 521 }
526 FX_ARGB CPDF_RenderStatus::GetStrokeArgb(const CPDF_PageObject* pObj) const { 522 FX_ARGB CPDF_RenderStatus::GetStrokeArgb(const CPDF_PageObject* pObj) const {
527 CPDF_ColorStateData* pColorData = 523 const CPDF_ColorStateData* pColorData = pObj->m_ColorState.GetObject();
528 (CPDF_ColorStateData*)(const CPDF_ColorStateData*)pObj->m_ColorState;
529 if (m_pType3Char && (!m_pType3Char->m_bColored || 524 if (m_pType3Char && (!m_pType3Char->m_bColored ||
530 (m_pType3Char->m_bColored && 525 (m_pType3Char->m_bColored &&
531 (!pColorData || pColorData->m_StrokeColor.IsNull())))) { 526 (!pColorData || pColorData->m_StrokeColor.IsNull())))) {
532 return m_T3FillColor; 527 return m_T3FillColor;
533 } 528 }
534 if (!pColorData || pColorData->m_StrokeColor.IsNull()) { 529 if (!pColorData || pColorData->m_StrokeColor.IsNull()) {
535 pColorData = (CPDF_ColorStateData*)(const CPDF_ColorStateData*) 530 pColorData = m_InitialStates.m_ColorState.GetObject();
536 m_InitialStates.m_ColorState;
537 } 531 }
538 FX_COLORREF rgb = pColorData->m_StrokeRGB; 532 FX_COLORREF rgb = pColorData->m_StrokeRGB;
539 if (rgb == (uint32_t)-1) { 533 if (rgb == (uint32_t)-1) {
540 return 0; 534 return 0;
541 } 535 }
542 const CPDF_GeneralStateData* pGeneralData = pObj->m_GeneralState; 536 const CPDF_GeneralStateData* pGeneralData = pObj->m_GeneralState.GetObject();
543 int alpha; 537 int alpha;
544 if (pGeneralData) { 538 if (pGeneralData) {
545 alpha = (int32_t)(pGeneralData->m_StrokeAlpha * 255); 539 alpha = (int32_t)(pGeneralData->m_StrokeAlpha * 255);
546 if (pGeneralData->m_pTR) { 540 if (pGeneralData->m_pTR) {
547 if (!pGeneralData->m_pTransferFunc) { 541 if (!pGeneralData->m_pTransferFunc) {
548 ((CPDF_GeneralStateData*)pGeneralData)->m_pTransferFunc = 542 ((CPDF_GeneralStateData*)pGeneralData)->m_pTransferFunc =
549 GetTransferFunc(pGeneralData->m_pTR); 543 GetTransferFunc(pGeneralData->m_pTR);
550 } 544 }
551 if (pGeneralData->m_pTransferFunc) { 545 if (pGeneralData->m_pTransferFunc) {
552 rgb = pGeneralData->m_pTransferFunc->TranslateColor(rgb); 546 rgb = pGeneralData->m_pTransferFunc->TranslateColor(rgb);
(...skipping 13 matching lines...) Expand all
566 } 560 }
567 return; 561 return;
568 } 562 }
569 if (m_LastClipPath == ClipPath) 563 if (m_LastClipPath == ClipPath)
570 return; 564 return;
571 565
572 m_LastClipPath = ClipPath; 566 m_LastClipPath = ClipPath;
573 m_pDevice->RestoreState(true); 567 m_pDevice->RestoreState(true);
574 int nClipPath = ClipPath.GetPathCount(); 568 int nClipPath = ClipPath.GetPathCount();
575 for (int i = 0; i < nClipPath; ++i) { 569 for (int i = 0; i < nClipPath; ++i) {
576 const CFX_PathData* pPathData = ClipPath.GetPath(i); 570 const CFX_PathData* pPathData = ClipPath.GetPath(i).GetObject();
577 if (!pPathData) 571 if (!pPathData)
578 continue; 572 continue;
579 573
580 if (pPathData->GetPointCount() == 0) { 574 if (pPathData->GetPointCount() == 0) {
581 CFX_PathData EmptyPath; 575 CFX_PathData EmptyPath;
582 EmptyPath.AppendRect(-1, -1, 0, 0); 576 EmptyPath.AppendRect(-1, -1, 0, 0);
583 int fill_mode = FXFILL_WINDING; 577 int fill_mode = FXFILL_WINDING;
584 m_pDevice->SetClip_PathFill(&EmptyPath, nullptr, fill_mode); 578 m_pDevice->SetClip_PathFill(&EmptyPath, nullptr, fill_mode);
585 } else { 579 } else {
586 int ClipType = ClipPath.GetClipType(i); 580 int ClipType = ClipPath.GetClipType(i);
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
622 if (ClipPath.IsNull()) { 616 if (ClipPath.IsNull()) {
623 return; 617 return;
624 } 618 }
625 int fill_mode = 0; 619 int fill_mode = 0;
626 if (m_Options.m_Flags & RENDER_NOPATHSMOOTH) { 620 if (m_Options.m_Flags & RENDER_NOPATHSMOOTH) {
627 fill_mode |= FXFILL_NOPATHSMOOTH; 621 fill_mode |= FXFILL_NOPATHSMOOTH;
628 } 622 }
629 int nClipPath = ClipPath.GetPathCount(); 623 int nClipPath = ClipPath.GetPathCount();
630 int i; 624 int i;
631 for (i = 0; i < nClipPath; i++) { 625 for (i = 0; i < nClipPath; i++) {
632 const CFX_PathData* pPathData = ClipPath.GetPath(i); 626 const CFX_PathData* pPathData = ClipPath.GetPath(i).GetObject();
633 if (!pPathData) { 627 if (!pPathData) {
634 continue; 628 continue;
635 } 629 }
636 CFX_GraphStateData stroke_state; 630 CFX_GraphStateData stroke_state;
637 if (m_Options.m_Flags & RENDER_THINLINE) { 631 if (m_Options.m_Flags & RENDER_THINLINE) {
638 stroke_state.m_LineWidth = 0; 632 stroke_state.m_LineWidth = 0;
639 } 633 }
640 m_pDevice->DrawPath(pPathData, pObj2Device, &stroke_state, 0, 0xffff0000, 634 m_pDevice->DrawPath(pPathData, pObj2Device, &stroke_state, 0, 0xffff0000,
641 fill_mode); 635 fill_mode);
642 } 636 }
643 } 637 }
644 FX_BOOL CPDF_RenderStatus::SelectClipPath(const CPDF_PathObject* pPathObj, 638 FX_BOOL CPDF_RenderStatus::SelectClipPath(const CPDF_PathObject* pPathObj,
645 const CFX_Matrix* pObj2Device, 639 const CFX_Matrix* pObj2Device,
646 FX_BOOL bStroke) { 640 FX_BOOL bStroke) {
647 CFX_Matrix path_matrix = pPathObj->m_Matrix; 641 CFX_Matrix path_matrix = pPathObj->m_Matrix;
648 path_matrix.Concat(*pObj2Device); 642 path_matrix.Concat(*pObj2Device);
649 if (bStroke) { 643 if (bStroke) {
650 CFX_GraphStateData graphState(*pPathObj->m_GraphState); 644 CFX_GraphStateData graphState(*pPathObj->m_GraphState.GetObject());
651 if (m_Options.m_Flags & RENDER_THINLINE) { 645 if (m_Options.m_Flags & RENDER_THINLINE) {
652 graphState.m_LineWidth = 0; 646 graphState.m_LineWidth = 0;
653 } 647 }
654 return m_pDevice->SetClip_PathStroke(pPathObj->m_Path, &path_matrix, 648 return m_pDevice->SetClip_PathStroke(pPathObj->m_Path.GetObject(),
655 &graphState); 649 &path_matrix, &graphState);
656 } 650 }
657 int fill_mode = pPathObj->m_FillType; 651 int fill_mode = pPathObj->m_FillType;
658 if (m_Options.m_Flags & RENDER_NOPATHSMOOTH) { 652 if (m_Options.m_Flags & RENDER_NOPATHSMOOTH) {
659 fill_mode |= FXFILL_NOPATHSMOOTH; 653 fill_mode |= FXFILL_NOPATHSMOOTH;
660 } 654 }
661 return m_pDevice->SetClip_PathFill(pPathObj->m_Path, &path_matrix, fill_mode); 655 return m_pDevice->SetClip_PathFill(pPathObj->m_Path.GetObject(), &path_matrix,
656 fill_mode);
662 } 657 }
663 FX_BOOL CPDF_RenderStatus::ProcessTransparency(const CPDF_PageObject* pPageObj, 658 FX_BOOL CPDF_RenderStatus::ProcessTransparency(const CPDF_PageObject* pPageObj,
664 const CFX_Matrix* pObj2Device) { 659 const CFX_Matrix* pObj2Device) {
665 const CPDF_GeneralStateData* pGeneralState = pPageObj->m_GeneralState; 660 const CPDF_GeneralStateData* pGeneralState =
661 pPageObj->m_GeneralState.GetObject();
666 int blend_type = 662 int blend_type =
667 pGeneralState ? pGeneralState->m_BlendType : FXDIB_BLEND_NORMAL; 663 pGeneralState ? pGeneralState->m_BlendType : FXDIB_BLEND_NORMAL;
668 if (blend_type == FXDIB_BLEND_UNSUPPORTED) { 664 if (blend_type == FXDIB_BLEND_UNSUPPORTED) {
669 return TRUE; 665 return TRUE;
670 } 666 }
671 CPDF_Dictionary* pSMaskDict = 667 CPDF_Dictionary* pSMaskDict =
672 pGeneralState ? ToDictionary(pGeneralState->m_pSoftMask) : nullptr; 668 pGeneralState ? ToDictionary(pGeneralState->m_pSoftMask) : nullptr;
673 if (pSMaskDict) { 669 if (pSMaskDict) {
674 if (pPageObj->IsImage() && 670 if (pPageObj->IsImage() &&
675 pPageObj->AsImage()->m_pImage->GetDict()->KeyExist("SMask")) { 671 pPageObj->AsImage()->m_pImage->GetDict()->KeyExist("SMask")) {
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
785 CPDF_TextObject* textobj = pPageObj->m_ClipPath.GetText(i); 781 CPDF_TextObject* textobj = pPageObj->m_ClipPath.GetText(i);
786 if (!textobj) { 782 if (!textobj) {
787 break; 783 break;
788 } 784 }
789 CFX_Matrix text_matrix; 785 CFX_Matrix text_matrix;
790 textobj->GetTextMatrix(&text_matrix); 786 textobj->GetTextMatrix(&text_matrix);
791 CPDF_TextRenderer::DrawTextPath( 787 CPDF_TextRenderer::DrawTextPath(
792 &text_device, textobj->m_nChars, textobj->m_pCharCodes, 788 &text_device, textobj->m_nChars, textobj->m_pCharCodes,
793 textobj->m_pCharPos, textobj->m_TextState.GetFont(), 789 textobj->m_pCharPos, textobj->m_TextState.GetFont(),
794 textobj->m_TextState.GetFontSize(), &text_matrix, &new_matrix, 790 textobj->m_TextState.GetFontSize(), &text_matrix, &new_matrix,
795 textobj->m_GraphState, (FX_ARGB)-1, 0, nullptr, 0); 791 textobj->m_GraphState.GetObject(), (FX_ARGB)-1, 0, nullptr, 0);
796 } 792 }
797 } 793 }
798 CPDF_RenderStatus bitmap_render; 794 CPDF_RenderStatus bitmap_render;
799 bitmap_render.Initialize(m_pContext, &bitmap_device, nullptr, m_pStopObj, 795 bitmap_render.Initialize(m_pContext, &bitmap_device, nullptr, m_pStopObj,
800 nullptr, nullptr, &m_Options, 0, m_bDropObjects, 796 nullptr, nullptr, &m_Options, 0, m_bDropObjects,
801 pFormResource, TRUE); 797 pFormResource, TRUE);
802 bitmap_render.ProcessObjectNoClip(pPageObj, &new_matrix); 798 bitmap_render.ProcessObjectNoClip(pPageObj, &new_matrix);
803 m_bStopped = bitmap_render.m_bStopped; 799 m_bStopped = bitmap_render.m_bStopped;
804 if (pSMaskDict) { 800 if (pSMaskDict) {
805 CFX_Matrix smask_matrix; 801 CFX_Matrix smask_matrix;
(...skipping 466 matching lines...) Expand 10 before | Expand all | Expand 10 after
1272 m_pContext->GetBackground(m_pBitmapDevice->GetBitmap(), m_pObject, pOptions, 1268 m_pContext->GetBackground(m_pBitmapDevice->GetBitmap(), m_pObject, pOptions,
1273 &m_Matrix); 1269 &m_Matrix);
1274 return TRUE; 1270 return TRUE;
1275 } 1271 }
1276 void CPDF_ScaledRenderBuffer::OutputToDevice() { 1272 void CPDF_ScaledRenderBuffer::OutputToDevice() {
1277 if (m_pBitmapDevice) { 1273 if (m_pBitmapDevice) {
1278 m_pDevice->StretchDIBits(m_pBitmapDevice->GetBitmap(), m_Rect.left, 1274 m_pDevice->StretchDIBits(m_pBitmapDevice->GetBitmap(), m_Rect.left,
1279 m_Rect.top, m_Rect.Width(), m_Rect.Height()); 1275 m_Rect.top, m_Rect.Width(), m_Rect.Height());
1280 } 1276 }
1281 } 1277 }
OLDNEW
« no previous file with comments | « no previous file | core/fpdfapi/fpdf_render/fpdf_render_image.cpp » ('j') | core/fxcrt/include/fx_basic.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698