Remove unused CFX_QuartzDevice(Driver) classes.

Review-Url: https://codereview.chromium.org/2484453002
diff --git a/BUILD.gn b/BUILD.gn
index bf6918d..5a6cf14 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -761,10 +761,6 @@
     "core/fxge/android/cfx_androidfontinfo.cpp",
     "core/fxge/android/cfx_androidfontinfo.h",
     "core/fxge/android/fx_android_imp.cpp",
-    "core/fxge/apple/apple_int.h",
-    "core/fxge/apple/cfx_quartzdevice.h",
-    "core/fxge/apple/fx_mac_imp.cpp",
-    "core/fxge/apple/fx_quartz_device.cpp",
     "core/fxge/cfx_facecache.h",
     "core/fxge/cfx_fontcache.h",
     "core/fxge/cfx_fontmapper.h",
@@ -856,9 +852,12 @@
     sources += [
       "core/fxge/agg/fx_agg_driver.cpp",
       "core/fxge/agg/fx_agg_driver.h",
-      "core/fxge/apple/fx_apple_platform.cpp",
     ]
     deps += [ "third_party:fx_agg" ]
+
+    if (is_mac) {
+      sources += [ "core/fxge/apple/fx_apple_platform.cpp" ]
+    }
   }
 
   if (is_win) {
@@ -873,6 +872,14 @@
     ]
     configs -= [ "//build/config/win:lean_and_mean" ]
   }
+
+  if (is_mac) {
+    sources += [
+      "core/fxge/apple/apple_int.h",
+      "core/fxge/apple/fx_mac_imp.cpp",
+      "core/fxge/apple/fx_quartz_device.cpp",
+    ]
+  }
 }
 
 static_library("fxedit") {
diff --git a/core/fxge/apple/apple_int.h b/core/fxge/apple/apple_int.h
index 9881e17..fed6abc 100644
--- a/core/fxge/apple/apple_int.h
+++ b/core/fxge/apple/apple_int.h
@@ -9,17 +9,13 @@
 
 #include "core/fxcrt/fx_system.h"
 
-#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_
-
 #include "core/fxge/cfx_graphstatedata.h"
 #include "core/fxge/cfx_pathdata.h"
 #include "core/fxge/cfx_renderdevice.h"
 #include "core/fxge/fx_dib.h"
 #include "core/fxge/ifx_renderdevicedriver.h"
 
-#if _FX_OS_ == _FX_MACOSX_
 #include <Carbon/Carbon.h>
-#endif
 
 class CQuartz2D {
  public:
@@ -49,104 +45,4 @@
   CQuartz2D m_quartz2d;
 };
 
-class CFX_QuartzDeviceDriver : public IFX_RenderDeviceDriver {
- public:
-  CFX_QuartzDeviceDriver(CGContextRef context, int32_t deviceClass);
-  ~CFX_QuartzDeviceDriver() override;
-
-  // IFX_RenderDeviceDriver
-  int GetDeviceCaps(int caps_id) const override;
-  CFX_Matrix GetCTM() const override;
-  void SaveState() override;
-  void RestoreState(bool bKeepSaved) override;
-  bool SetClip_PathFill(const CFX_PathData* pPathData,
-                        const CFX_Matrix* pObject2Device,
-                        int fill_mode) override;
-  bool SetClip_PathStroke(const CFX_PathData* pPathData,
-                          const CFX_Matrix* pObject2Device,
-                          const CFX_GraphStateData* pGraphState) override;
-  bool DrawPath(const CFX_PathData* pPathData,
-                const CFX_Matrix* pObject2Device,
-                const CFX_GraphStateData* pGraphState,
-                uint32_t fill_color,
-                uint32_t stroke_color,
-                int fill_mode,
-                int blend_type) override;
-  bool FillRectWithBlend(const FX_RECT* pRect,
-                         uint32_t fill_color,
-                         int blend_type) override;
-  bool DrawCosmeticLine(FX_FLOAT x1,
-                        FX_FLOAT y1,
-                        FX_FLOAT x2,
-                        FX_FLOAT y2,
-                        uint32_t color,
-                        int blend_type) override;
-  bool GetClipBox(FX_RECT* pRect) override;
-  bool GetDIBits(CFX_DIBitmap* pBitmap, int left, int top) override;
-  bool SetDIBits(const CFX_DIBSource* pBitmap,
-                 uint32_t color,
-                 const FX_RECT* pSrcRect,
-                 int dest_left,
-                 int dest_top,
-                 int blend_type) override;
-  bool StretchDIBits(const CFX_DIBSource* pBitmap,
-                     uint32_t color,
-                     int dest_left,
-                     int dest_top,
-                     int dest_width,
-                     int dest_height,
-                     const FX_RECT* pClipRect,
-                     uint32_t flags,
-                     int blend_type) override;
-  bool StartDIBits(const CFX_DIBSource* pBitmap,
-                   int bitmap_alpha,
-                   uint32_t color,
-                   const CFX_Matrix* pMatrix,
-                   uint32_t flags,
-                   void*& handle,
-                   int blend_type) override;
-  bool DrawDeviceText(int nChars,
-                      const FXTEXT_CHARPOS* pCharPos,
-                      CFX_Font* pFont,
-                      const CFX_Matrix* pObject2Device,
-                      FX_FLOAT font_size,
-                      uint32_t color) override;
-  void ClearDriver() override;
-
- protected:
-  void setStrokeInfo(const CFX_GraphStateData* graphState,
-                     FX_ARGB argb,
-                     FX_FLOAT lineWidth);
-  void setFillInfo(FX_ARGB argb);
-  void setPathToContext(const CFX_PathData* pathData);
-  FX_FLOAT getLineWidth(const CFX_GraphStateData* graphState,
-                        CGAffineTransform ctm);
-  bool CG_DrawGlyphRun(int nChars,
-                       const FXTEXT_CHARPOS* pCharPos,
-                       CFX_Font* pFont,
-                       const CFX_Matrix* pGlyphMatrix,
-                       const CFX_Matrix* pObject2Device,
-                       FX_FLOAT font_size,
-                       uint32_t argb);
-  void CG_SetImageTransform(int dest_left,
-                            int dest_top,
-                            int dest_width,
-                            int dest_height,
-                            CGRect* rect);
-
-  CGContextRef m_context;
-  CGAffineTransform m_foxitDevice2User;
-  CGAffineTransform m_user2FoxitDevice;
-  int32_t m_saveCount;
-
-  int32_t m_width;
-  int32_t m_height;
-  int32_t m_bitsPerPixel;
-  int32_t m_deviceClass;
-  int32_t m_renderCaps;
-  int32_t m_horzSize;
-  int32_t m_vertSize;
-};
-#endif  // _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_
-
 #endif  // CORE_FXGE_APPLE_APPLE_INT_H_
diff --git a/core/fxge/apple/cfx_quartzdevice.h b/core/fxge/apple/cfx_quartzdevice.h
deleted file mode 100644
index 310cef8..0000000
--- a/core/fxge/apple/cfx_quartzdevice.h
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2014 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef CORE_FXGE_APPLE_CFX_QUARTZDEVICE_H_
-#define CORE_FXGE_APPLE_CFX_QUARTZDEVICE_H_
-
-#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_
-
-#include "core/fxge/cfx_renderdevice.h"
-
-class CFX_QuartzDevice : public CFX_RenderDevice {
- public:
-  CFX_QuartzDevice();
-  ~CFX_QuartzDevice() override;
-
-  bool Attach(CGContextRef context, int32_t nDeviceClass = FXDC_DISPLAY);
-  bool Attach(CFX_DIBitmap* pBitmap);
-  bool Create(int32_t width, int32_t height, FXDIB_Format format);
-
-  CGContextRef GetContext();
-
- protected:
-  CGContextRef m_pContext;
-  bool m_bOwnedBitmap;
-};
-#endif
-
-#endif  // CORE_FXGE_APPLE_CFX_QUARTZDEVICE_H_
diff --git a/core/fxge/apple/fx_apple_platform.cpp b/core/fxge/apple/fx_apple_platform.cpp
index 403ed4a..7fc12fd 100644
--- a/core/fxge/apple/fx_apple_platform.cpp
+++ b/core/fxge/apple/fx_apple_platform.cpp
@@ -6,14 +6,11 @@
 
 #include "core/fxcrt/fx_system.h"
 
-#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_
-
 #ifndef _SKIA_SUPPORT_
 #include "core/fxge/agg/fx_agg_driver.h"
 #endif
 
 #include "core/fxge/apple/apple_int.h"
-#include "core/fxge/apple/cfx_quartzdevice.h"
 #include "core/fxge/cfx_facecache.h"
 #include "core/fxge/cfx_gemodule.h"
 #include "core/fxge/cfx_renderdevice.h"
@@ -186,5 +183,3 @@
     m_pPlatformFont = nullptr;
   }
 }
-
-#endif  // _FXM_PLATFORM_  == _FXM_PLATFORM_APPLE_
diff --git a/core/fxge/apple/fx_mac_imp.cpp b/core/fxge/apple/fx_mac_imp.cpp
index fa65720..7c3cb04 100644
--- a/core/fxge/apple/fx_mac_imp.cpp
+++ b/core/fxge/apple/fx_mac_imp.cpp
@@ -9,8 +9,6 @@
 #include "core/fxge/ge/cfx_folderfontinfo.h"
 #include "core/fxge/ifx_systemfontinfo.h"
 
-#if _FX_OS_ == _FX_MACOSX_
-
 namespace {
 
 const struct {
@@ -137,5 +135,3 @@
   delete reinterpret_cast<CApplePlatform*>(m_pPlatformData);
   m_pPlatformData = nullptr;
 }
-
-#endif  // _FX_OS_ == _FX_MACOSX_
diff --git a/core/fxge/apple/fx_quartz_device.cpp b/core/fxge/apple/fx_quartz_device.cpp
index 112399d..35e9a74 100644
--- a/core/fxge/apple/fx_quartz_device.cpp
+++ b/core/fxge/apple/fx_quartz_device.cpp
@@ -20,17 +20,14 @@
 #include "core/fxge/ge/fx_text_int.h"
 #include "third_party/base/ptr_util.h"
 
-#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_
 #include "core/fxge/apple/apple_int.h"
-#include "core/fxge/apple/cfx_quartzdevice.h"
 #ifndef CGFLOAT_IS_DOUBLE
 #error Expected CGFLOAT_IS_DOUBLE to be defined by CoreGraphics headers
 #endif
 
 void* CQuartz2D::createGraphics(CFX_DIBitmap* pBitmap) {
-  if (!pBitmap) {
+  if (!pBitmap)
     return nullptr;
-  }
   CGBitmapInfo bmpInfo = kCGBitmapByteOrder32Little;
   switch (pBitmap->GetFormat()) {
     case FXDIB_Rgb32:
@@ -47,11 +44,12 @@
   CGColorSpaceRelease(colorSpace);
   return context;
 }
+
 void CQuartz2D::destroyGraphics(void* graphics) {
-  if (graphics) {
+  if (graphics)
     CGContextRelease((CGContextRef)graphics);
-  }
 }
+
 void* CQuartz2D::CreateFont(const uint8_t* pFontData, uint32_t dwFontSize) {
   CGDataProviderRef pDataProvider = CGDataProviderCreateWithData(
       nullptr, pFontData, (size_t)dwFontSize, nullptr);
@@ -62,19 +60,21 @@
   CGDataProviderRelease(pDataProvider);
   return pCGFont;
 }
+
 void CQuartz2D::DestroyFont(void* pFont) {
   CGFontRelease((CGFontRef)pFont);
 }
+
 void CQuartz2D::setGraphicsTextMatrix(void* graphics, CFX_Matrix* matrix) {
-  if (!graphics || !matrix) {
+  if (!graphics || !matrix)
     return;
-  }
   CGContextRef context = (CGContextRef)graphics;
   CGFloat ty = CGBitmapContextGetHeight(context) - matrix->f;
   CGContextSetTextMatrix(
       context, CGAffineTransformMake(matrix->a, matrix->b, matrix->c, matrix->d,
                                      matrix->e, ty));
 }
+
 bool CQuartz2D::drawGraphicsString(void* graphics,
                                    void* font,
                                    FX_FLOAT fontSize,
@@ -83,9 +83,8 @@
                                    int32_t charsCount,
                                    FX_ARGB argb,
                                    CFX_Matrix* matrix) {
-  if (!graphics) {
+  if (!graphics)
     return false;
-  }
   CGContextRef context = (CGContextRef)graphics;
   CGContextSetFont(context, (CGFontRef)font);
   CGContextSetFontSize(context, fontSize);
@@ -117,935 +116,13 @@
   CGContextRestoreGState(context);
   return true;
 }
+
 void CQuartz2D::saveGraphicsState(void* graphics) {
-  if (graphics) {
+  if (graphics)
     CGContextSaveGState((CGContextRef)graphics);
-  }
 }
+
 void CQuartz2D::restoreGraphicsState(void* graphics) {
-  if (graphics) {
+  if (graphics)
     CGContextRestoreGState((CGContextRef)graphics);
-  }
 }
-static CGContextRef createContextWithBitmap(CFX_DIBitmap* pBitmap) {
-  if (!pBitmap || pBitmap->IsCmykImage() || pBitmap->GetBPP() < 32) {
-    return nullptr;
-  }
-  CGBitmapInfo bitmapInfo = kCGBitmapByteOrder32Little;
-  if (pBitmap->HasAlpha()) {
-    bitmapInfo |= kCGImageAlphaPremultipliedFirst;
-  } else {
-    bitmapInfo |= kCGImageAlphaNoneSkipFirst;
-  }
-  CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
-  CGContextRef context = CGBitmapContextCreate(
-      pBitmap->GetBuffer(), pBitmap->GetWidth(), pBitmap->GetHeight(), 8,
-      pBitmap->GetPitch(), colorSpace, bitmapInfo);
-  CGColorSpaceRelease(colorSpace);
-  return context;
-}
-CFX_QuartzDeviceDriver::CFX_QuartzDeviceDriver(CGContextRef context,
-                                               int32_t deviceClass) {
-  m_saveCount = 0;
-  m_context = context;
-  m_deviceClass = deviceClass;
-  CGContextRetain(m_context);
-  CGRect r = CGContextGetClipBoundingBox(context);
-  m_width = FXSYS_round(r.size.width);
-  m_height = FXSYS_round(r.size.height);
-  m_renderCaps = FXRC_SOFT_CLIP | FXRC_BLEND_MODE | FXRC_ALPHA_PATH |
-                 FXRC_ALPHA_IMAGE | FXRC_BIT_MASK | FXRC_ALPHA_MASK;
-  if (m_deviceClass != FXDC_DISPLAY) {
-  } else {
-    CGImageRef image = CGBitmapContextCreateImage(m_context);
-    if (image) {
-      m_renderCaps |= FXRC_GET_BITS;
-      m_width = CGImageGetWidth(image);
-      m_height = CGImageGetHeight(image);
-      CGImageAlphaInfo alphaInfo = CGImageGetAlphaInfo(image);
-      if (kCGImageAlphaPremultipliedFirst == alphaInfo ||
-          kCGImageAlphaPremultipliedLast == alphaInfo ||
-          kCGImageAlphaOnly == alphaInfo) {
-        m_renderCaps |= FXRC_ALPHA_OUTPUT;
-      }
-    }
-    CGImageRelease(image);
-  }
-  CGAffineTransform ctm = CGContextGetCTM(m_context);
-  CGContextSaveGState(m_context);
-  m_saveCount++;
-  if (ctm.d >= 0) {
-    CGFloat offset_x, offset_y;
-    offset_x = ctm.tx;
-    offset_y = ctm.ty;
-    CGContextTranslateCTM(m_context, -offset_x, -offset_y);
-    CGContextConcatCTM(m_context, CGAffineTransformMake(1, 0, 0, -1, offset_x,
-                                                        m_height + offset_y));
-  }
-  m_foxitDevice2User = CGAffineTransformIdentity;
-  m_user2FoxitDevice = CGAffineTransformInvert(m_foxitDevice2User);
-}
-CFX_QuartzDeviceDriver::~CFX_QuartzDeviceDriver() {
-  CGContextRestoreGState(m_context);
-  m_saveCount--;
-  for (int i = 0; i < m_saveCount; ++i) {
-    CGContextRestoreGState(m_context);
-  }
-  if (m_context) {
-    CGContextRelease(m_context);
-  }
-}
-int CFX_QuartzDeviceDriver::GetDeviceCaps(int capsID) const {
-  switch (capsID) {
-    case FXDC_DEVICE_CLASS:
-      return m_deviceClass;
-    case FXDC_PIXEL_WIDTH:
-      return m_width;
-    case FXDC_PIXEL_HEIGHT:
-      return m_height;
-    case FXDC_BITS_PIXEL:
-      return 32;
-    case FXDC_RENDER_CAPS:
-      return m_renderCaps;
-    default:
-      return 0;
-  }
-}
-CFX_Matrix CFX_QuartzDeviceDriver::GetCTM() const {
-  CGAffineTransform ctm = CGContextGetCTM(m_context);
-  return CFX_Matrix(ctm.a, ctm.b, ctm.c, ctm.d, ctm.tx, ctm.ty);
-}
-void CFX_QuartzDeviceDriver::SaveState() {
-  CGContextSaveGState(m_context);
-  m_saveCount++;
-}
-
-void CFX_QuartzDeviceDriver::RestoreState(bool isKeepSaved) {
-  CGContextRestoreGState(m_context);
-  if (isKeepSaved) {
-    CGContextSaveGState(m_context);
-  } else {
-    m_saveCount--;
-  }
-}
-
-bool CFX_QuartzDeviceDriver::SetClip_PathFill(const CFX_PathData* pathData,
-                                              const CFX_Matrix* matrix,
-                                              int fillMode) {
-  SaveState();
-  CGAffineTransform m = CGAffineTransformIdentity;
-  if (matrix) {
-    m = CGAffineTransformMake(matrix->GetA(), matrix->GetB(), matrix->GetC(),
-                              matrix->GetD(), matrix->GetE(), matrix->GetF());
-  }
-  m = CGAffineTransformConcat(m, m_foxitDevice2User);
-  CGContextConcatCTM(m_context, m);
-  setPathToContext(pathData);
-  RestoreState(false);
-  if ((fillMode & 3) == FXFILL_WINDING) {
-    CGContextClip(m_context);
-  } else {
-    CGContextEOClip(m_context);
-  }
-  return true;
-}
-FX_FLOAT CFX_QuartzDeviceDriver::getLineWidth(
-    const CFX_GraphStateData* graphState,
-    CGAffineTransform ctm) {
-  FX_FLOAT lineWidth = graphState->m_LineWidth;
-  if (graphState->m_LineWidth <= 0.f) {
-    CGSize size;
-    size.width = 1;
-    size.height = 1;
-    CGSize temp = CGSizeApplyAffineTransform(size, ctm);
-    CGFloat x = 1 / temp.width;
-    CGFloat y = 1 / temp.height;
-    lineWidth = x > y ? x : y;
-  }
-  return lineWidth;
-}
-bool CFX_QuartzDeviceDriver::SetClip_PathStroke(
-    const CFX_PathData* pathData,
-    const CFX_Matrix* matrix,
-    const CFX_GraphStateData* graphState) {
-  SaveState();
-  CGAffineTransform m = CGAffineTransformIdentity;
-  if (matrix) {
-    m = CGAffineTransformMake(matrix->GetA(), matrix->GetB(), matrix->GetC(),
-                              matrix->GetD(), matrix->GetE(), matrix->GetF());
-  }
-  m = CGAffineTransformConcat(m, m_foxitDevice2User);
-  CGContextConcatCTM(m_context, m);
-  FX_FLOAT lineWidth = getLineWidth(graphState, m);
-  setStrokeInfo(graphState, 0xFF000000, lineWidth);
-  setPathToContext(pathData);
-  CGContextReplacePathWithStrokedPath(m_context);
-  RestoreState(false);
-  CGContextClip(m_context);
-  return true;
-}
-static CGBlendMode GetCGBlendMode(int blend_type) {
-  CGBlendMode mode = kCGBlendModeNormal;
-  switch (blend_type) {
-    case FXDIB_BLEND_NORMAL:
-      mode = kCGBlendModeNormal;
-      break;
-    case FXDIB_BLEND_MULTIPLY:
-      mode = kCGBlendModeMultiply;
-      break;
-    case FXDIB_BLEND_SCREEN:
-      mode = kCGBlendModeScreen;
-      break;
-    case FXDIB_BLEND_OVERLAY:
-      mode = kCGBlendModeOverlay;
-      break;
-    case FXDIB_BLEND_DARKEN:
-      mode = kCGBlendModeDarken;
-      break;
-    case FXDIB_BLEND_LIGHTEN:
-      mode = kCGBlendModeLighten;
-      break;
-    case FXDIB_BLEND_COLORDODGE:
-      mode = kCGBlendModeColorDodge;
-      break;
-    case FXDIB_BLEND_COLORBURN:
-      mode = kCGBlendModeColorBurn;
-      break;
-    case FXDIB_BLEND_HARDLIGHT:
-      mode = kCGBlendModeHardLight;
-      break;
-    case FXDIB_BLEND_SOFTLIGHT:
-      mode = kCGBlendModeSoftLight;
-      break;
-    case FXDIB_BLEND_DIFFERENCE:
-      mode = kCGBlendModeDifference;
-      break;
-    case FXDIB_BLEND_EXCLUSION:
-      mode = kCGBlendModeExclusion;
-      break;
-    case FXDIB_BLEND_HUE:
-      mode = kCGBlendModeHue;
-      break;
-    case FXDIB_BLEND_SATURATION:
-      mode = kCGBlendModeSaturation;
-      break;
-    case FXDIB_BLEND_COLOR:
-      mode = kCGBlendModeColor;
-      break;
-    case FXDIB_BLEND_LUMINOSITY:
-      mode = kCGBlendModeLuminosity;
-      break;
-    default:
-      mode = kCGBlendModeNormal;
-      break;
-  }
-  return mode;
-}
-
-bool CFX_QuartzDeviceDriver::DrawPath(const CFX_PathData* pathData,
-                                      const CFX_Matrix* matrix,
-                                      const CFX_GraphStateData* graphState,
-                                      uint32_t fillArgb,
-                                      uint32_t strokeArgb,
-                                      int fillMode,
-                                      int blend_type) {
-  SaveState();
-  CGBlendMode mode = GetCGBlendMode(blend_type);
-  if (mode != kCGBlendModeNormal) {
-    CGContextSetBlendMode(m_context, mode);
-  }
-  CGAffineTransform m = CGAffineTransformIdentity;
-  if (matrix) {
-    m = CGAffineTransformMake(matrix->GetA(), matrix->GetB(), matrix->GetC(),
-                              matrix->GetD(), matrix->GetE(), matrix->GetF());
-  }
-  m = CGAffineTransformConcat(m, m_foxitDevice2User);
-  CGContextConcatCTM(m_context, m);
-  int pathMode = 0;
-  if (graphState && strokeArgb) {
-    CGContextSetMiterLimit(m_context, graphState->m_MiterLimit);
-    FX_FLOAT lineWidth = getLineWidth(graphState, m);
-    setStrokeInfo(graphState, strokeArgb, lineWidth);
-    pathMode |= 4;
-  }
-  if (fillMode && fillArgb) {
-    setFillInfo(fillArgb);
-    if ((fillMode & 3) == FXFILL_WINDING) {
-      pathMode |= 1;
-    } else if ((fillMode & 3) == FXFILL_ALTERNATE) {
-      pathMode |= 2;
-    }
-  }
-  setPathToContext(pathData);
-  if (fillMode & FXFILL_FULLCOVER) {
-    CGContextSetShouldAntialias(m_context, false);
-  }
-  if (pathMode == 4) {
-    CGContextStrokePath(m_context);
-  } else if (pathMode == 1) {
-    CGContextFillPath(m_context);
-  } else if (pathMode == 2) {
-    CGContextEOFillPath(m_context);
-  } else if (pathMode == 5) {
-    CGContextDrawPath(m_context, kCGPathFillStroke);
-  } else if (pathMode == 6) {
-    CGContextDrawPath(m_context, kCGPathEOFillStroke);
-  }
-  RestoreState(false);
-  return true;
-}
-
-bool CFX_QuartzDeviceDriver::FillRectWithBlend(const FX_RECT* rect,
-                                               FX_ARGB fillArgb,
-                                               int blend_type) {
-  CGBlendMode mode = GetCGBlendMode(blend_type);
-  if (mode != kCGBlendModeNormal) {
-    CGContextSetBlendMode(m_context, mode);
-  }
-  CGRect rect_fx =
-      CGRectMake(rect->left, rect->top, rect->Width(), rect->Height());
-  CGRect rect_usr = CGRectApplyAffineTransform(rect_fx, m_foxitDevice2User);
-  int32_t a, r, g, b;
-  ArgbDecode(fillArgb, a, r, g, b);
-  CGContextSetRGBFillColor(m_context, r / 255.f, g / 255.f, b / 255.f,
-                           a / 255.f);
-  CGContextFillRect(m_context, rect_usr);
-  if (mode != kCGBlendModeNormal) {
-    CGContextSetBlendMode(m_context, kCGBlendModeNormal);
-  }
-  return true;
-}
-
-bool CFX_QuartzDeviceDriver::DrawCosmeticLine(FX_FLOAT x1,
-                                              FX_FLOAT y1,
-                                              FX_FLOAT x2,
-                                              FX_FLOAT y2,
-                                              uint32_t argb,
-                                              int blend_type) {
-  CGBlendMode mode = GetCGBlendMode(blend_type);
-  if (mode != kCGBlendModeNormal) {
-    CGContextSetBlendMode(m_context, mode);
-  }
-  CGPoint pt =
-      CGPointApplyAffineTransform(CGPointMake(x1, y1), m_foxitDevice2User);
-  x1 = pt.x;
-  y1 = pt.y;
-  pt = CGPointApplyAffineTransform(CGPointMake(x2, y2), m_foxitDevice2User);
-  x2 = pt.x;
-  y2 = pt.y;
-  int32_t a, r, g, b;
-  ArgbDecode(argb, a, r, g, b);
-  CGContextSetRGBStrokeColor(m_context, r / 255.f, g / 255.f, b / 255.f,
-                             a / 255.f);
-  CGContextMoveToPoint(m_context, x1, y1);
-  CGContextAddLineToPoint(m_context, x2, y2);
-  CGContextStrokePath(m_context);
-  if (mode != kCGBlendModeNormal) {
-    CGContextSetBlendMode(m_context, kCGBlendModeNormal);
-  }
-  return true;
-}
-
-bool CFX_QuartzDeviceDriver::GetClipBox(FX_RECT* rect) {
-  CGRect r = CGContextGetClipBoundingBox(m_context);
-  r = CGRectApplyAffineTransform(r, m_user2FoxitDevice);
-  rect->left = FXSYS_floor(r.origin.x);
-  rect->top = FXSYS_floor(r.origin.y);
-  rect->right = FXSYS_ceil(r.origin.x + r.size.width);
-  rect->bottom = FXSYS_ceil(r.origin.y + r.size.height);
-  return true;
-}
-
-bool CFX_QuartzDeviceDriver::GetDIBits(CFX_DIBitmap* bitmap,
-                                       int32_t left,
-                                       int32_t top) {
-  if (FXDC_PRINTER == m_deviceClass || bitmap->GetBPP() < 32 ||
-      !(m_renderCaps | FXRC_GET_BITS)) {
-    return false;
-  }
-
-  CGPoint pt = CGPointMake(left, top);
-  pt = CGPointApplyAffineTransform(pt, m_foxitDevice2User);
-  CGAffineTransform ctm = CGContextGetCTM(m_context);
-  pt.x *= FXSYS_fabs(ctm.a);
-  pt.y *= FXSYS_fabs(ctm.d);
-  CGImageRef image = CGBitmapContextCreateImage(m_context);
-  if (!image)
-    return false;
-
-  CGFloat width = (CGFloat)bitmap->GetWidth();
-  CGFloat height = (CGFloat)bitmap->GetHeight();
-  if (width + pt.x > m_width)
-    width -= (width + pt.x - m_width);
-  if (height + pt.y > m_height)
-    height -= (height + pt.y - m_height);
-
-  CGImageRef subImage = CGImageCreateWithImageInRect(
-      image, CGRectMake(pt.x, pt.y, width, height));
-  CGContextRef context = createContextWithBitmap(bitmap);
-  CGRect rect = CGContextGetClipBoundingBox(context);
-  CGContextClearRect(context, rect);
-  CGContextDrawImage(context, rect, subImage);
-  CGContextRelease(context);
-  CGImageRelease(subImage);
-  CGImageRelease(image);
-  if (!bitmap->HasAlpha())
-    return true;
-
-  for (int row = 0; row < bitmap->GetHeight(); row++) {
-    uint8_t* pScanline = (uint8_t*)bitmap->GetScanline(row);
-    for (int col = 0; col < bitmap->GetWidth(); col++) {
-      if (pScanline[3] > 0) {
-        pScanline[0] = (pScanline[0] * 255.f / pScanline[3] + .5f);
-        pScanline[1] = (pScanline[1] * 255.f / pScanline[3] + .5f);
-        pScanline[2] = (pScanline[2] * 255.f / pScanline[3] + .5f);
-      }
-      pScanline += 4;
-    }
-  }
-  return true;
-}
-
-bool CFX_QuartzDeviceDriver::SetDIBits(const CFX_DIBSource* pBitmap,
-                                       FX_ARGB argb,
-                                       const FX_RECT* srcRect,
-                                       int dest_left,
-                                       int dest_top,
-                                       int blendType) {
-  SaveState();
-  CGFloat src_left, src_top, src_width, src_height;
-  if (srcRect) {
-    src_left = srcRect->left;
-    src_top = srcRect->top;
-    src_width = srcRect->Width();
-    src_height = srcRect->Height();
-  } else {
-    src_left = src_top = 0;
-    src_width = pBitmap->GetWidth();
-    src_height = pBitmap->GetHeight();
-  }
-  CGAffineTransform ctm = CGContextGetCTM(m_context);
-  CGFloat scale_x = FXSYS_fabs(ctm.a);
-  CGFloat scale_y = FXSYS_fabs(ctm.d);
-  src_left /= scale_x;
-  src_top /= scale_y;
-  src_width /= scale_x;
-  src_height /= scale_y;
-  CGRect rect_fx = CGRectMake(dest_left, dest_top, src_width, src_height);
-  CGRect rect_usr = CGRectApplyAffineTransform(rect_fx, m_foxitDevice2User);
-  CGContextBeginPath(m_context);
-  CGContextAddRect(m_context, rect_usr);
-  CGContextClip(m_context);
-  rect_usr.size =
-      CGSizeMake(pBitmap->GetWidth() / scale_x, pBitmap->GetHeight() / scale_y);
-  rect_usr = CGRectOffset(rect_usr, -src_left, -src_top);
-  CG_SetImageTransform(dest_left, dest_top, src_width, src_height, &rect_usr);
-  CFX_DIBitmap* pBitmap1 = nullptr;
-  if (pBitmap->IsAlphaMask()) {
-    if (pBitmap->GetBuffer()) {
-      pBitmap1 = (CFX_DIBitmap*)pBitmap;
-    } else {
-      pBitmap1 = pBitmap->Clone();
-    }
-    if (!pBitmap1) {
-      RestoreState(false);
-      return false;
-    }
-    CGDataProviderRef pBitmapProvider = CGDataProviderCreateWithData(
-        nullptr, pBitmap1->GetBuffer(),
-        pBitmap1->GetPitch() * pBitmap1->GetHeight(), nullptr);
-    CGColorSpaceRef pColorSpace = CGColorSpaceCreateDeviceGray();
-    CGBitmapInfo bitmapInfo = kCGImageAlphaNone | kCGBitmapByteOrderDefault;
-    CGImageRef pImage = CGImageCreate(
-        pBitmap1->GetWidth(), pBitmap1->GetHeight(), pBitmap1->GetBPP(),
-        pBitmap1->GetBPP(), pBitmap1->GetPitch(), pColorSpace, bitmapInfo,
-        pBitmapProvider, nullptr, true, kCGRenderingIntentDefault);
-    CGContextClipToMask(m_context, rect_usr, pImage);
-    CGContextSetRGBFillColor(m_context, FXARGB_R(argb) / 255.f,
-                             FXARGB_G(argb) / 255.f, FXARGB_B(argb) / 255.f,
-                             FXARGB_A(argb) / 255.f);
-    CGContextFillRect(m_context, rect_usr);
-    CGImageRelease(pImage);
-    CGColorSpaceRelease(pColorSpace);
-    CGDataProviderRelease(pBitmapProvider);
-    if (pBitmap1 != pBitmap) {
-      delete pBitmap1;
-    }
-    RestoreState(false);
-    return true;
-  }
-  if (pBitmap->GetBPP() < 32) {
-    pBitmap1 = pBitmap->CloneConvert(FXDIB_Rgb32);
-  } else {
-    if (pBitmap->GetBuffer()) {
-      pBitmap1 = (CFX_DIBitmap*)pBitmap;
-    } else {
-      pBitmap1 = pBitmap->Clone();
-    }
-  }
-  if (!pBitmap1) {
-    RestoreState(false);
-    return false;
-  }
-  if (pBitmap1->HasAlpha()) {
-    if (pBitmap1 == pBitmap) {
-      pBitmap1 = pBitmap->Clone();
-      if (!pBitmap1) {
-        RestoreState(false);
-        return false;
-      }
-    }
-    for (int row = 0; row < pBitmap1->GetHeight(); row++) {
-      uint8_t* pScanline = (uint8_t*)pBitmap1->GetScanline(row);
-      for (int col = 0; col < pBitmap1->GetWidth(); col++) {
-        pScanline[0] = (uint8_t)(pScanline[0] * pScanline[3] / 255.f + .5f);
-        pScanline[1] = (uint8_t)(pScanline[1] * pScanline[3] / 255.f + .5f);
-        pScanline[2] = (uint8_t)(pScanline[2] * pScanline[3] / 255.f + .5f);
-        pScanline += 4;
-      }
-    }
-  }
-  CGContextRef ctx = createContextWithBitmap(pBitmap1);
-  CGImageRef image = CGBitmapContextCreateImage(ctx);
-  int blend_mode = blendType;
-  if (FXDIB_BLEND_HARDLIGHT == blendType) {
-    blend_mode = kCGBlendModeSoftLight;
-  } else if (FXDIB_BLEND_SOFTLIGHT == blendType) {
-    blend_mode = kCGBlendModeHardLight;
-  } else if (blendType >= FXDIB_BLEND_NONSEPARABLE &&
-             blendType <= FXDIB_BLEND_LUMINOSITY) {
-    blend_mode = blendType - 9;
-  } else if (blendType > FXDIB_BLEND_LUMINOSITY || blendType < 0) {
-    blend_mode = kCGBlendModeNormal;
-  }
-  CGContextSetBlendMode(m_context, (CGBlendMode)blend_mode);
-  CGContextDrawImage(m_context, rect_usr, image);
-  CGImageRelease(image);
-  CGContextRelease(ctx);
-  if (pBitmap1 != pBitmap) {
-    delete pBitmap1;
-  }
-  RestoreState(false);
-  return true;
-}
-
-bool CFX_QuartzDeviceDriver::StretchDIBits(const CFX_DIBSource* pBitmap,
-                                           FX_ARGB argb,
-                                           int dest_left,
-                                           int dest_top,
-                                           int dest_width,
-                                           int dest_height,
-                                           const FX_RECT* clipRect,
-                                           uint32_t flags,
-                                           int blend_type) {
-  SaveState();
-  if (clipRect) {
-    CGContextBeginPath(m_context);
-    CGRect rect_clip = CGRectMake(clipRect->left, clipRect->top,
-                                  clipRect->Width(), clipRect->Height());
-    rect_clip = CGRectApplyAffineTransform(rect_clip, m_foxitDevice2User);
-    CGContextAddRect(m_context, rect_clip);
-    CGContextClip(m_context);
-  }
-  CGRect rect = CGRectMake(dest_left, dest_top, dest_width, dest_height);
-  rect = CGRectApplyAffineTransform(rect, m_foxitDevice2User);
-  if (FXDIB_BICUBIC_INTERPOL == flags)
-    CGContextSetInterpolationQuality(m_context, kCGInterpolationHigh);
-  else if (FXDIB_DOWNSAMPLE == flags)
-    CGContextSetInterpolationQuality(m_context, kCGInterpolationNone);
-  else
-    CGContextSetInterpolationQuality(m_context, kCGInterpolationMedium);
-
-  CG_SetImageTransform(dest_left, dest_top, dest_width, dest_height, nullptr);
-  CFX_DIBitmap* pBitmap1 = nullptr;
-  if (pBitmap->IsAlphaMask()) {
-    if (pBitmap->GetBuffer())
-      pBitmap1 = (CFX_DIBitmap*)pBitmap;
-    else
-      pBitmap1 = pBitmap->Clone();
-    if (!pBitmap1) {
-      RestoreState(false);
-      return false;
-    }
-    CGDataProviderRef pBitmapProvider = CGDataProviderCreateWithData(
-        nullptr, pBitmap1->GetBuffer(),
-        pBitmap1->GetPitch() * pBitmap1->GetHeight(), nullptr);
-    CGColorSpaceRef pColorSpace = CGColorSpaceCreateDeviceGray();
-    CGBitmapInfo bitmapInfo = kCGImageAlphaNone | kCGBitmapByteOrderDefault;
-    CGImageRef pImage = CGImageCreate(
-        pBitmap1->GetWidth(), pBitmap1->GetHeight(), pBitmap1->GetBPP(),
-        pBitmap1->GetBPP(), pBitmap1->GetPitch(), pColorSpace, bitmapInfo,
-        pBitmapProvider, nullptr, true, kCGRenderingIntentDefault);
-    CGContextClipToMask(m_context, rect, pImage);
-    CGContextSetRGBFillColor(m_context, FXARGB_R(argb) / 255.f,
-                             FXARGB_G(argb) / 255.f, FXARGB_B(argb) / 255.f,
-                             FXARGB_A(argb) / 255.f);
-    CGContextFillRect(m_context, rect);
-    CGImageRelease(pImage);
-    CGColorSpaceRelease(pColorSpace);
-    CGDataProviderRelease(pBitmapProvider);
-    if (pBitmap1 != pBitmap)
-      delete pBitmap1;
-
-    RestoreState(false);
-    return true;
-  }
-  if (pBitmap->GetBPP() < 32) {
-    pBitmap1 = pBitmap->CloneConvert(FXDIB_Rgb32);
-  } else {
-    if (pBitmap->GetBuffer())
-      pBitmap1 = (CFX_DIBitmap*)pBitmap;
-    else
-      pBitmap1 = pBitmap->Clone();
-  }
-  if (!pBitmap1) {
-    RestoreState(false);
-    return false;
-  }
-  if (pBitmap1->HasAlpha()) {
-    if (pBitmap1 == pBitmap) {
-      pBitmap1 = pBitmap->Clone();
-      if (!pBitmap1) {
-        RestoreState(false);
-        return false;
-      }
-    }
-    for (int row = 0; row < pBitmap1->GetHeight(); row++) {
-      uint8_t* pScanline = (uint8_t*)pBitmap1->GetScanline(row);
-      for (int col = 0; col < pBitmap1->GetWidth(); col++) {
-        pScanline[0] = (uint8_t)(pScanline[0] * pScanline[3] / 255.f + .5f);
-        pScanline[1] = (uint8_t)(pScanline[1] * pScanline[3] / 255.f + .5f);
-        pScanline[2] = (uint8_t)(pScanline[2] * pScanline[3] / 255.f + .5f);
-        pScanline += 4;
-      }
-    }
-  }
-  CGContextRef ctx = createContextWithBitmap(pBitmap1);
-  CGImageRef image = CGBitmapContextCreateImage(ctx);
-  CGContextDrawImage(m_context, rect, image);
-  CGImageRelease(image);
-  CGContextRelease(ctx);
-  if (pBitmap1 != pBitmap)
-    delete pBitmap1;
-
-  RestoreState(false);
-  return true;
-}
-
-bool CFX_QuartzDeviceDriver::StartDIBits(const CFX_DIBSource* pBitmap,
-                                         int bitmap_alpha,
-                                         uint32_t color,
-                                         const CFX_Matrix* pMatrix,
-                                         uint32_t flags,
-                                         void*& handle,
-                                         int blend_type) {
-  return false;
-}
-
-bool CFX_QuartzDeviceDriver::CG_DrawGlyphRun(int nChars,
-                                             const FXTEXT_CHARPOS* pCharPos,
-                                             CFX_Font* pFont,
-                                             const CFX_Matrix* pGlyphMatrix,
-                                             const CFX_Matrix* pObject2Device,
-                                             FX_FLOAT font_size,
-                                             uint32_t argb) {
-  if (nChars == 0)
-    return true;
-
-  CQuartz2D& quartz2d =
-      static_cast<CApplePlatform*>(CFX_GEModule::Get()->GetPlatformData())
-          ->m_quartz2d;
-  if (!pFont->GetPlatformFont()) {
-    if (pFont->GetPsName() == "DFHeiStd-W5")
-      return false;
-
-    pFont->SetPlatformFont(
-        quartz2d.CreateFont(pFont->GetFontData(), pFont->GetSize()));
-    if (!pFont->GetPlatformFont()) {
-      return false;
-    }
-  }
-  CFX_FixedBufGrow<uint16_t, 32> glyph_indices(nChars);
-  CFX_FixedBufGrow<CGPoint, 32> glyph_positions(nChars);
-  for (int i = 0; i < nChars; i++) {
-    glyph_indices[i] = pCharPos[i].m_ExtGID;
-    glyph_positions[i].x = pCharPos[i].m_OriginX;
-    glyph_positions[i].y = pCharPos[i].m_OriginY;
-  }
-  CFX_Matrix text_matrix;
-  if (pObject2Device)
-    text_matrix.Concat(*pObject2Device);
-
-  CGAffineTransform matrix_cg =
-      CGAffineTransformMake(text_matrix.a, text_matrix.b, text_matrix.c,
-                            text_matrix.d, text_matrix.e, text_matrix.f);
-  matrix_cg = CGAffineTransformConcat(matrix_cg, m_foxitDevice2User);
-  CGContextSetTextMatrix(m_context, matrix_cg);
-  CGContextSetFont(m_context, (CGFontRef)pFont->GetPlatformFont());
-  CGContextSetFontSize(m_context, FXSYS_fabs(font_size));
-  int32_t a, r, g, b;
-  ArgbDecode(argb, a, r, g, b);
-  CGContextSetRGBFillColor(m_context, r / 255.f, g / 255.f, b / 255.f,
-                           a / 255.f);
-  SaveState();
-  if (pGlyphMatrix) {
-    CGPoint origin = CGPointMake(glyph_positions[0].x, glyph_positions[0].y);
-    origin = CGPointApplyAffineTransform(origin, matrix_cg);
-    CGContextTranslateCTM(m_context, origin.x, origin.y);
-    CGAffineTransform glyph_matrix = CGAffineTransformMake(
-        pGlyphMatrix->a, pGlyphMatrix->b, pGlyphMatrix->c, pGlyphMatrix->d,
-        pGlyphMatrix->e, pGlyphMatrix->f);
-    if (m_foxitDevice2User.d < 0)
-      glyph_matrix = CGAffineTransformInvert(glyph_matrix);
-
-    CGContextConcatCTM(m_context, glyph_matrix);
-    CGContextTranslateCTM(m_context, -origin.x, -origin.y);
-  }
-  CGContextShowGlyphsAtPositions(m_context, (CGGlyph*)glyph_indices,
-                                 glyph_positions, nChars);
-  RestoreState(false);
-  return true;
-}
-
-bool CFX_QuartzDeviceDriver::DrawDeviceText(int nChars,
-                                            const FXTEXT_CHARPOS* pCharPos,
-                                            CFX_Font* pFont,
-                                            const CFX_Matrix* pObject2Device,
-                                            FX_FLOAT font_size,
-                                            uint32_t color) {
-  if (!pFont || !m_context)
-    return false;
-
-  bool bBold = pFont->IsBold();
-  if (!bBold && pFont->GetSubstFont() &&
-      pFont->GetSubstFont()->m_Weight >= 500 &&
-      pFont->GetSubstFont()->m_Weight <= 600) {
-    return false;
-  }
-  SaveState();
-  CGContextSetTextDrawingMode(m_context, kCGTextFillClip);
-  bool ret = false;
-  int32_t i = 0;
-  while (i < nChars) {
-    if (pCharPos[i].m_bGlyphAdjust || font_size < 0) {
-      if (i > 0) {
-        ret = CG_DrawGlyphRun(i, pCharPos, pFont, nullptr, pObject2Device,
-                              font_size, color);
-        if (!ret) {
-          RestoreState(false);
-          return ret;
-        }
-      }
-      const FXTEXT_CHARPOS* char_pos = pCharPos + i;
-      CFX_Matrix glphy_matrix;
-      if (font_size < 0) {
-        glphy_matrix.Concat(-1, 0, 0, -1, 0, 0);
-      }
-      if (char_pos->m_bGlyphAdjust) {
-        glphy_matrix.Concat(
-            char_pos->m_AdjustMatrix[0], char_pos->m_AdjustMatrix[1],
-            char_pos->m_AdjustMatrix[2], char_pos->m_AdjustMatrix[3], 0, 0);
-      }
-      ret = CG_DrawGlyphRun(1, char_pos, pFont, &glphy_matrix, pObject2Device,
-                            font_size, color);
-      if (!ret) {
-        RestoreState(false);
-        return ret;
-      }
-      i++;
-      pCharPos += i;
-      nChars -= i;
-      i = 0;
-    } else {
-      i++;
-    }
-  }
-  if (i > 0) {
-    ret = CG_DrawGlyphRun(i, pCharPos, pFont, nullptr, pObject2Device,
-                          font_size, color);
-  }
-  RestoreState(false);
-  return ret;
-}
-
-void CFX_QuartzDeviceDriver::setStrokeInfo(const CFX_GraphStateData* graphState,
-                                           FX_ARGB argb,
-                                           FX_FLOAT lineWidth) {
-  if (!graphState)
-    return;
-
-  CGContextSetLineWidth(m_context, lineWidth);
-  CGLineCap cap;
-  switch (graphState->m_LineCap) {
-    case CFX_GraphStateData::LineCapRound: {
-      cap = kCGLineCapRound;
-      break;
-    }
-    case CFX_GraphStateData::LineCapSquare: {
-      cap = kCGLineCapSquare;
-      break;
-    }
-    case CFX_GraphStateData::LineCapButt:
-    default: { cap = kCGLineCapButt; }
-  }
-  CGContextSetLineCap(m_context, cap);
-  CGLineJoin join;
-  switch (graphState->m_LineJoin) {
-    case CFX_GraphStateData::LineJoinRound: {
-      join = kCGLineJoinRound;
-      break;
-    }
-    case CFX_GraphStateData::LineJoinBevel: {
-      join = kCGLineJoinBevel;
-      break;
-    }
-    case CFX_GraphStateData::LineJoinMiter:
-    default: { join = kCGLineJoinMiter; }
-  }
-  CGContextSetLineJoin(m_context, join);
-  if (graphState->m_DashCount) {
-#if CGFLOAT_IS_DOUBLE
-    CGFloat* dashArray = new CGFloat[graphState->m_DashCount];
-    for (int index = 0; index < graphState->m_DashCount; ++index) {
-      dashArray[index] = graphState->m_DashArray[index];
-    }
-#else
-    CGFloat* dashArray = (CGFloat*)graphState->m_DashArray;
-#endif
-    CGContextSetLineDash(m_context, graphState->m_DashPhase, dashArray,
-                         graphState->m_DashCount);
-#if CGFLOAT_IS_DOUBLE
-    delete[] dashArray;
-#endif
-  }
-  int32_t a, r, g, b;
-  ArgbDecode(argb, a, r, g, b);
-  CGContextSetRGBStrokeColor(m_context, r / 255.f, g / 255.f, b / 255.f,
-                             a / 255.f);
-}
-void CFX_QuartzDeviceDriver::setFillInfo(FX_ARGB argb) {
-  int32_t a, r, g, b;
-  ArgbDecode(argb, a, r, g, b);
-  CGContextSetRGBFillColor(m_context, r / 255.f, g / 255.f, b / 255.f,
-                           a / 255.f);
-}
-void CFX_QuartzDeviceDriver::setPathToContext(const CFX_PathData* pathData) {
-  int32_t count = pathData->GetPointCount();
-  FX_PATHPOINT* points = pathData->GetPoints();
-  CGContextBeginPath(m_context);
-  for (int32_t i = 0; i < count; i++) {
-    switch (points[i].m_Flag & FXPT_TYPE) {
-      case FXPT_MOVETO:
-        CGContextMoveToPoint(m_context, points[i].m_PointX, points[i].m_PointY);
-        break;
-      case FXPT_LINETO:
-        CGContextAddLineToPoint(m_context, points[i].m_PointX,
-                                points[i].m_PointY);
-        break;
-      case FXPT_BEZIERTO: {
-        CGContextAddCurveToPoint(m_context, points[i].m_PointX,
-                                 points[i].m_PointY, points[i + 1].m_PointX,
-                                 points[i + 1].m_PointY, points[i + 2].m_PointX,
-                                 points[i + 2].m_PointY);
-        i += 2;
-      }
-    }
-    if (points[i].m_Flag & FXPT_CLOSEFIGURE) {
-      CGContextClosePath(m_context);
-    }
-  }
-}
-
-void CFX_QuartzDeviceDriver::CG_SetImageTransform(int dest_left,
-                                                  int dest_top,
-                                                  int dest_width,
-                                                  int dest_height,
-                                                  CGRect* rect) {
-  int flip_y = m_foxitDevice2User.d * dest_height < 0 ? 1 : -1;
-  int flip_x = m_foxitDevice2User.a * dest_width > 0 ? 1 : -1;
-  if (flip_y >= 0 && flip_x >= 0)
-    return;
-
-  if (dest_height < 0) {
-    dest_height = -dest_height;
-    dest_top -= dest_height;
-  }
-  CGRect rt = CGRectApplyAffineTransform(
-      CGRectMake(dest_left, dest_top, dest_width, dest_height),
-      m_foxitDevice2User);
-  CGFloat offset_x = (rt.origin.x) + rt.size.width / 2.f,
-          offset_y = (rt.origin.y) + rt.size.height / 2.f;
-  CGAffineTransform transform = CGAffineTransformIdentity;
-  transform = CGAffineTransformConcat(
-      transform, CGAffineTransformMake(1, 0, 0, 1, -offset_x, -offset_y));
-  transform = CGAffineTransformConcat(
-      transform, CGAffineTransformMake(flip_x, 0, 0, flip_y, 0, 0));
-  transform = CGAffineTransformConcat(
-      transform, CGAffineTransformMake(1, 0, 0, 1, offset_x, offset_y));
-  CGContextConcatCTM(m_context, transform);
-  if (rect)
-    *rect = CGRectApplyAffineTransform(*rect, transform);
-}
-
-void CFX_QuartzDeviceDriver::ClearDriver() {
-  if (!m_context)
-    return;
-
-  for (int i = 0; i < m_saveCount; ++i) {
-    CGContextRestoreGState(m_context);
-  }
-  m_saveCount = 0;
-  if (m_context) {
-    CGContextRelease(m_context);
-  }
-}
-CFX_QuartzDevice::CFX_QuartzDevice() {
-  m_bOwnedBitmap = false;
-  m_pContext = nullptr;
-}
-CFX_QuartzDevice::~CFX_QuartzDevice() {
-  if (m_pContext) {
-    CGContextRelease(m_pContext);
-  }
-  if (m_bOwnedBitmap) {
-    delete GetBitmap();
-  }
-}
-CGContextRef CFX_QuartzDevice::GetContext() {
-  return m_pContext;
-}
-bool CFX_QuartzDevice::Attach(CGContextRef context, int32_t nDeviceClass) {
-  if (m_pContext) {
-    CGContextRelease(m_pContext);
-  }
-  m_pContext = context;
-  CGContextRetain(m_pContext);
-  SetDeviceDriver(
-      pdfium::MakeUnique<CFX_QuartzDeviceDriver>(m_pContext, nDeviceClass));
-  return true;
-}
-
-bool CFX_QuartzDevice::Attach(CFX_DIBitmap* pBitmap) {
-  SetBitmap(pBitmap);
-  m_pContext = createContextWithBitmap(pBitmap);
-  if (!m_pContext)
-    return false;
-
-  SetDeviceDriver(
-      pdfium::MakeUnique<CFX_QuartzDeviceDriver>(m_pContext, FXDC_DISPLAY));
-  return true;
-}
-
-bool CFX_QuartzDevice::Create(int32_t width,
-                              int32_t height,
-                              FXDIB_Format format) {
-  if ((uint8_t)format < 32) {
-    return false;
-  }
-  std::unique_ptr<CFX_DIBitmap> pBitmap(new CFX_DIBitmap);
-  if (!pBitmap->Create(width, height, format))
-    return false;
-  m_bOwnedBitmap = true;
-  return Attach(pBitmap.release());
-}
-#endif  // _FXM_PLATFORM_  == _FXM_PLATFORM_APPLE_