1 // Copyright 2018 The PDFium Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6 7 #ifndef XFA_FXFA_CXFA_IMAGERENDERER_H_ 8 #define XFA_FXFA_CXFA_IMAGERENDERER_H_ 9 10 #include <memory> 11 12 #include "core/fxcrt/fx_coordinates.h" 13 #include "core/fxcrt/retain_ptr.h" 14 #include "core/fxcrt/unowned_ptr.h" 15 16 class CFX_RenderDevice; 17 class CFX_DIBBase; 18 class CFX_DIBitmap; 19 class CFX_ImageTransformer; 20 class CFX_ImageRenderer; 21 22 class CXFA_ImageRenderer { 23 public: 24 CXFA_ImageRenderer(CFX_RenderDevice* pDevice, 25 const RetainPtr<CFX_DIBBase>& pDIBBase, 26 const CFX_Matrix& mtImage2Device); 27 ~CXFA_ImageRenderer(); 28 29 bool Start(); 30 bool Continue(); 31 32 private: 33 enum class State : uint8_t { kInitial = 0, kTransforming, kStarted }; 34 35 void CompositeDIBitmap(const RetainPtr<CFX_DIBitmap>& pDIBitmap, 36 int left, 37 int top); 38 39 State m_State = State::kInitial; 40 CFX_Matrix m_ImageMatrix; 41 UnownedPtr<CFX_RenderDevice> m_pDevice; 42 RetainPtr<CFX_DIBBase> m_pDIBBase; 43 RetainPtr<CFX_DIBitmap> m_pCloneConvert; 44 std::unique_ptr<CFX_ImageTransformer> m_pTransformer; 45 std::unique_ptr<CFX_ImageRenderer> m_DeviceHandle; 46 }; 47 48 #endif // XFA_FXFA_CXFA_IMAGERENDERER_H_ 49