| 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 "xfa/fxfa/include/xfa_ffwidget.h" | 7 #include "xfa/fxfa/include/xfa_ffwidget.h" |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <memory> | 10 #include <memory> |
| (...skipping 546 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 557 FX_BOOL Start(CFX_RenderDevice* pDevice, | 557 FX_BOOL Start(CFX_RenderDevice* pDevice, |
| 558 CFX_DIBSource* pDIBSource, | 558 CFX_DIBSource* pDIBSource, |
| 559 FX_ARGB bitmap_argb, | 559 FX_ARGB bitmap_argb, |
| 560 int bitmap_alpha, | 560 int bitmap_alpha, |
| 561 const CFX_Matrix* pImage2Device, | 561 const CFX_Matrix* pImage2Device, |
| 562 uint32_t flags, | 562 uint32_t flags, |
| 563 int blendType = FXDIB_BLEND_NORMAL); | 563 int blendType = FXDIB_BLEND_NORMAL); |
| 564 FX_BOOL Continue(IFX_Pause* pPause); | 564 FX_BOOL Continue(IFX_Pause* pPause); |
| 565 | 565 |
| 566 protected: | 566 protected: |
| 567 FX_BOOL StartDIBSource(); |
| 568 void CompositeDIBitmap(CFX_DIBitmap* pDIBitmap, |
| 569 int left, |
| 570 int top, |
| 571 FX_ARGB mask_argb, |
| 572 int bitmap_alpha, |
| 573 int blend_mode, |
| 574 int Transparency); |
| 575 |
| 567 CFX_RenderDevice* m_pDevice; | 576 CFX_RenderDevice* m_pDevice; |
| 568 int m_Status; | 577 int m_Status; |
| 569 CFX_Matrix m_ImageMatrix; | 578 CFX_Matrix m_ImageMatrix; |
| 570 CFX_DIBSource* m_pDIBSource; | 579 CFX_DIBSource* m_pDIBSource; |
| 571 CFX_DIBitmap* m_pCloneConvert; | 580 std::unique_ptr<CFX_DIBitmap> m_pCloneConvert; |
| 572 int m_BitmapAlpha; | 581 int m_BitmapAlpha; |
| 573 FX_ARGB m_FillArgb; | 582 FX_ARGB m_FillArgb; |
| 574 uint32_t m_Flags; | 583 uint32_t m_Flags; |
| 575 std::unique_ptr<CFX_ImageTransformer> m_pTransformer; | 584 std::unique_ptr<CFX_ImageTransformer> m_pTransformer; |
| 576 void* m_DeviceHandle; | 585 void* m_DeviceHandle; |
| 577 int32_t m_BlendType; | 586 int32_t m_BlendType; |
| 578 FX_BOOL m_Result; | 587 FX_BOOL m_Result; |
| 579 FX_BOOL m_bPrint; | 588 FX_BOOL m_bPrint; |
| 580 FX_BOOL StartDIBSource(); | |
| 581 void CompositeDIBitmap(CFX_DIBitmap* pDIBitmap, | |
| 582 int left, | |
| 583 int top, | |
| 584 FX_ARGB mask_argb, | |
| 585 int bitmap_alpha, | |
| 586 int blend_mode, | |
| 587 int Transparency); | |
| 588 }; | 589 }; |
| 589 CXFA_ImageRenderer::CXFA_ImageRenderer() { | 590 |
| 590 m_pDevice = nullptr; | 591 CXFA_ImageRenderer::CXFA_ImageRenderer() |
| 591 m_Status = 0; | 592 : m_pDevice(nullptr), |
| 592 m_pDIBSource = nullptr; | 593 m_Status(0), |
| 593 m_pCloneConvert = nullptr; | 594 m_pDIBSource(nullptr), |
| 594 m_BitmapAlpha = 255; | 595 m_BitmapAlpha(255), |
| 595 m_FillArgb = 0; | 596 m_FillArgb(0), |
| 596 m_Flags = 0; | 597 m_Flags(0), |
| 597 m_DeviceHandle = nullptr; | 598 m_DeviceHandle(nullptr), |
| 598 m_BlendType = FXDIB_BLEND_NORMAL; | 599 m_BlendType(FXDIB_BLEND_NORMAL), |
| 599 m_Result = TRUE; | 600 m_Result(TRUE), |
| 600 m_bPrint = FALSE; | 601 m_bPrint(FALSE) {} |
| 601 } | |
| 602 | 602 |
| 603 CXFA_ImageRenderer::~CXFA_ImageRenderer() { | 603 CXFA_ImageRenderer::~CXFA_ImageRenderer() { |
| 604 delete m_pCloneConvert; | |
| 605 if (m_DeviceHandle) | 604 if (m_DeviceHandle) |
| 606 m_pDevice->CancelDIBits(m_DeviceHandle); | 605 m_pDevice->CancelDIBits(m_DeviceHandle); |
| 607 } | 606 } |
| 608 | 607 |
| 609 FX_BOOL CXFA_ImageRenderer::Start(CFX_RenderDevice* pDevice, | 608 FX_BOOL CXFA_ImageRenderer::Start(CFX_RenderDevice* pDevice, |
| 610 CFX_DIBSource* pDIBSource, | 609 CFX_DIBSource* pDIBSource, |
| 611 FX_ARGB bitmap_argb, | 610 FX_ARGB bitmap_argb, |
| 612 int bitmap_alpha, | 611 int bitmap_alpha, |
| 613 const CFX_Matrix* pImage2Device, | 612 const CFX_Matrix* pImage2Device, |
| 614 uint32_t flags, | 613 uint32_t flags, |
| (...skipping 25 matching lines...) Expand all Loading... |
| 640 if ((FXSYS_fabs(m_ImageMatrix.b) >= 0.5f || m_ImageMatrix.a == 0) || | 639 if ((FXSYS_fabs(m_ImageMatrix.b) >= 0.5f || m_ImageMatrix.a == 0) || |
| 641 (FXSYS_fabs(m_ImageMatrix.c) >= 0.5f || m_ImageMatrix.d == 0)) { | 640 (FXSYS_fabs(m_ImageMatrix.c) >= 0.5f || m_ImageMatrix.d == 0)) { |
| 642 if (m_bPrint && !(m_pDevice->GetRenderCaps() & FXRC_BLEND_MODE)) { | 641 if (m_bPrint && !(m_pDevice->GetRenderCaps() & FXRC_BLEND_MODE)) { |
| 643 m_Result = FALSE; | 642 m_Result = FALSE; |
| 644 return FALSE; | 643 return FALSE; |
| 645 } | 644 } |
| 646 CFX_DIBSource* pDib = m_pDIBSource; | 645 CFX_DIBSource* pDib = m_pDIBSource; |
| 647 if (m_pDIBSource->HasAlpha() && | 646 if (m_pDIBSource->HasAlpha() && |
| 648 !(m_pDevice->GetRenderCaps() & FXRC_ALPHA_IMAGE) && | 647 !(m_pDevice->GetRenderCaps() & FXRC_ALPHA_IMAGE) && |
| 649 !(m_pDevice->GetRenderCaps() & FXRC_GET_BITS)) { | 648 !(m_pDevice->GetRenderCaps() & FXRC_GET_BITS)) { |
| 650 m_pCloneConvert = m_pDIBSource->CloneConvert(FXDIB_Rgb); | 649 m_pCloneConvert.reset(m_pDIBSource->CloneConvert(FXDIB_Rgb)); |
| 651 if (!m_pCloneConvert) { | 650 if (!m_pCloneConvert) { |
| 652 m_Result = FALSE; | 651 m_Result = FALSE; |
| 653 return FALSE; | 652 return FALSE; |
| 654 } | 653 } |
| 655 pDib = m_pCloneConvert; | 654 pDib = m_pCloneConvert.get(); |
| 656 } | 655 } |
| 657 FX_RECT clip_box = m_pDevice->GetClipBox(); | 656 FX_RECT clip_box = m_pDevice->GetClipBox(); |
| 658 clip_box.Intersect(image_rect); | 657 clip_box.Intersect(image_rect); |
| 659 m_Status = 2; | 658 m_Status = 2; |
| 660 m_pTransformer.reset( | 659 m_pTransformer.reset( |
| 661 new CFX_ImageTransformer(pDib, &m_ImageMatrix, m_Flags, &clip_box)); | 660 new CFX_ImageTransformer(pDib, &m_ImageMatrix, m_Flags, &clip_box)); |
| 662 m_pTransformer->Start(); | 661 m_pTransformer->Start(); |
| 663 return TRUE; | 662 return TRUE; |
| 664 } | 663 } |
| 665 if (m_ImageMatrix.a < 0) { | 664 if (m_ImageMatrix.a < 0) { |
| (...skipping 1379 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2045 } | 2044 } |
| 2046 XFA_BOX_Fill(box, strokes, pGS, rtWidget, pMatrix, dwFlags); | 2045 XFA_BOX_Fill(box, strokes, pGS, rtWidget, pMatrix, dwFlags); |
| 2047 XFA_BOX_Stroke(box, strokes, pGS, rtWidget, pMatrix, dwFlags); | 2046 XFA_BOX_Stroke(box, strokes, pGS, rtWidget, pMatrix, dwFlags); |
| 2048 } | 2047 } |
| 2049 | 2048 |
| 2050 CXFA_CalcData::CXFA_CalcData() : m_iRefCount(0) {} | 2049 CXFA_CalcData::CXFA_CalcData() : m_iRefCount(0) {} |
| 2051 | 2050 |
| 2052 CXFA_CalcData::~CXFA_CalcData() { | 2051 CXFA_CalcData::~CXFA_CalcData() { |
| 2053 m_Globals.RemoveAll(); | 2052 m_Globals.RemoveAll(); |
| 2054 } | 2053 } |
| OLD | NEW |