| 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/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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 } |
| OLD | NEW |