1 // Copyright 2016 PDFium Authors. All rights reserved. 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 CORE_FPDFAPI_RENDER_CPDF_DEVICEBUFFER_H_ 8 #define CORE_FPDFAPI_RENDER_CPDF_DEVICEBUFFER_H_ 9 10 #include "core/fxcrt/fx_coordinates.h" 11 #include "core/fxcrt/retain_ptr.h" 12 #include "core/fxcrt/unowned_ptr.h" 13 14 class CFX_DIBitmap; 15 class CFX_RenderDevice; 16 class CPDF_PageObject; 17 class CPDF_RenderContext; 18 19 class CPDF_DeviceBuffer { 20 public: 21 static CFX_Matrix CalculateMatrix(CFX_RenderDevice* pDevice, 22 const FX_RECT& rect, 23 int max_dpi, 24 bool scale); 25 26 CPDF_DeviceBuffer(CPDF_RenderContext* pContext, 27 CFX_RenderDevice* pDevice, 28 const FX_RECT& rect, 29 const CPDF_PageObject* pObj, 30 int max_dpi); 31 ~CPDF_DeviceBuffer(); 32 33 bool Initialize(); 34 void OutputToDevice(); GetBitmap()35 RetainPtr<CFX_DIBitmap> GetBitmap() const { return m_pBitmap; } GetMatrix()36 const CFX_Matrix& GetMatrix() const { return m_Matrix; } 37 38 private: 39 UnownedPtr<CFX_RenderDevice> const m_pDevice; 40 UnownedPtr<CPDF_RenderContext> const m_pContext; 41 UnownedPtr<const CPDF_PageObject> const m_pObject; 42 RetainPtr<CFX_DIBitmap> const m_pBitmap; 43 const FX_RECT m_Rect; 44 const CFX_Matrix m_Matrix; 45 }; 46 47 #endif // CORE_FPDFAPI_RENDER_CPDF_DEVICEBUFFER_H_ 48