| Index: core/fxge/agg/fx_agg_driver.cpp
 | 
| diff --git a/core/fxge/agg/fx_agg_driver.cpp b/core/fxge/agg/fx_agg_driver.cpp
 | 
| index 554c79f349baf6f1c36f4e0d28b2dcf5cc167b33..f5d7cbbf4cd8a9ea2d2c85f62848bf8f36e42f6b 100644
 | 
| --- a/core/fxge/agg/fx_agg_driver.cpp
 | 
| +++ b/core/fxge/agg/fx_agg_driver.cpp
 | 
| @@ -425,6 +425,88 @@ IFX_RenderDeviceDriver* IFX_RenderDeviceDriver::CreateFxgeDriver(
 | 
|                                   bGroupKnockout);
 | 
|  }
 | 
|  
 | 
| +IFX_RenderDeviceDriver::~IFX_RenderDeviceDriver() {}
 | 
| +
 | 
| +CFX_Matrix IFX_RenderDeviceDriver::GetCTM() const {
 | 
| +  return CFX_Matrix();
 | 
| +}
 | 
| +
 | 
| +FX_BOOL IFX_RenderDeviceDriver::StartRendering() {
 | 
| +  return TRUE;
 | 
| +}
 | 
| +
 | 
| +void IFX_RenderDeviceDriver::EndRendering() {}
 | 
| +
 | 
| +FX_BOOL IFX_RenderDeviceDriver::SetClip_PathStroke(
 | 
| +    const CFX_PathData* pPathData,
 | 
| +    const CFX_Matrix* pObject2Device,
 | 
| +    const CFX_GraphStateData* pGraphState) {
 | 
| +  return FALSE;
 | 
| +}
 | 
| +
 | 
| +FX_BOOL IFX_RenderDeviceDriver::SetPixel(int x, int y, uint32_t color) {
 | 
| +  return FALSE;
 | 
| +}
 | 
| +
 | 
| +FX_BOOL IFX_RenderDeviceDriver::FillRectWithBlend(const FX_RECT* pRect,
 | 
| +                                                  uint32_t fill_color,
 | 
| +                                                  int blend_type) {
 | 
| +  return FALSE;
 | 
| +}
 | 
| +
 | 
| +FX_BOOL IFX_RenderDeviceDriver::DrawCosmeticLine(FX_FLOAT x1,
 | 
| +                                                 FX_FLOAT y1,
 | 
| +                                                 FX_FLOAT x2,
 | 
| +                                                 FX_FLOAT y2,
 | 
| +                                                 uint32_t color,
 | 
| +                                                 int blend_type) {
 | 
| +  return FALSE;
 | 
| +}
 | 
| +
 | 
| +FX_BOOL IFX_RenderDeviceDriver::GetDIBits(CFX_DIBitmap* pBitmap,
 | 
| +                                          int left,
 | 
| +                                          int top) {
 | 
| +  return FALSE;
 | 
| +}
 | 
| +CFX_DIBitmap* IFX_RenderDeviceDriver::GetBackDrop() {
 | 
| +  return nullptr;
 | 
| +}
 | 
| +
 | 
| +FX_BOOL IFX_RenderDeviceDriver::ContinueDIBits(void* handle,
 | 
| +                                               IFX_Pause* pPause) {
 | 
| +  return FALSE;
 | 
| +}
 | 
| +
 | 
| +void IFX_RenderDeviceDriver::CancelDIBits(void* handle) {}
 | 
| +
 | 
| +FX_BOOL IFX_RenderDeviceDriver::DrawDeviceText(int nChars,
 | 
| +                                               const FXTEXT_CHARPOS* pCharPos,
 | 
| +                                               CFX_Font* pFont,
 | 
| +                                               CFX_FontCache* pCache,
 | 
| +                                               const CFX_Matrix* pObject2Device,
 | 
| +                                               FX_FLOAT font_size,
 | 
| +                                               uint32_t color) {
 | 
| +  return FALSE;
 | 
| +}
 | 
| +
 | 
| +void* IFX_RenderDeviceDriver::GetPlatformSurface() const {
 | 
| +  return nullptr;
 | 
| +}
 | 
| +
 | 
| +int IFX_RenderDeviceDriver::GetDriverType() const {
 | 
| +  return 0;
 | 
| +}
 | 
| +
 | 
| +void IFX_RenderDeviceDriver::ClearDriver() {}
 | 
| +
 | 
| +FX_BOOL IFX_RenderDeviceDriver::DrawShading(const CPDF_ShadingPattern* pPattern,
 | 
| +                                            const CFX_Matrix* pMatrix,
 | 
| +                                            const FX_RECT& clip_rect,
 | 
| +                                            int alpha,
 | 
| +                                            FX_BOOL bAlphaMode) {
 | 
| +  return false;
 | 
| +}
 | 
| +
 | 
|  CFX_AggDeviceDriver::CFX_AggDeviceDriver(CFX_DIBitmap* pBitmap,
 | 
|                                           FX_BOOL bRgbByteOrder,
 | 
|                                           CFX_DIBitmap* pOriDevice,
 | 
| @@ -452,6 +534,10 @@ uint8_t* CFX_AggDeviceDriver::GetBuffer() const {
 | 
|    return m_pBitmap->GetBuffer();
 | 
|  }
 | 
|  
 | 
| +const CFX_DIBitmap* CFX_AggDeviceDriver::GetBitmap() const {
 | 
| +  return m_pBitmap;
 | 
| +}
 | 
| +
 | 
|  #if _FXM_PLATFORM_ != _FXM_PLATFORM_APPLE_
 | 
|  void CFX_AggDeviceDriver::InitPlatform() {}
 | 
|  
 | 
| @@ -1435,6 +1521,10 @@ class CFX_Renderer {
 | 
|    }
 | 
|  };
 | 
|  
 | 
| +int CFX_AggDeviceDriver::GetDriverType() const {
 | 
| +  return 1;
 | 
| +}
 | 
| +
 | 
|  FX_BOOL CFX_AggDeviceDriver::RenderRasterizer(
 | 
|      agg::rasterizer_scanline_aa& rasterizer,
 | 
|      uint32_t color,
 | 
| @@ -1645,6 +1735,10 @@ FX_BOOL CFX_AggDeviceDriver::GetDIBits(CFX_DIBitmap* pBitmap,
 | 
|    return bRet;
 | 
|  }
 | 
|  
 | 
| +CFX_DIBitmap* CFX_AggDeviceDriver::GetBackDrop() {
 | 
| +  return m_pOriDevice;
 | 
| +}
 | 
| +
 | 
|  FX_BOOL CFX_AggDeviceDriver::SetDIBits(const CFX_DIBSource* pBitmap,
 | 
|                                         uint32_t argb,
 | 
|                                         const FX_RECT* pSrcRect,
 | 
| 
 |