| Index: core/src/fxge/apple/apple_int.h
 | 
| diff --git a/core/src/fxge/apple/apple_int.h b/core/src/fxge/apple/apple_int.h
 | 
| index ba3d0a83e865098c1385099843d1eba025ab7886..9bff4ebcbcbbddf2035f74388bb915a4cfceb014 100644
 | 
| --- a/core/src/fxge/apple/apple_int.h
 | 
| +++ b/core/src/fxge/apple/apple_int.h
 | 
| @@ -8,9 +8,13 @@
 | 
|  #define CORE_SRC_FXGE_APPLE_APPLE_INT_H_
 | 
|  
 | 
|  #if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_
 | 
| +
 | 
| +#include "../../../include/fxge/fx_ge.h"
 | 
| +
 | 
|  #if _FX_OS_ == _FX_MACOSX_
 | 
|  #include <Carbon/Carbon.h>
 | 
|  #endif
 | 
| +
 | 
|  typedef enum eFXIOSFONTCHARSET {
 | 
|    eFXFontCharsetDEFAULT = 0,
 | 
|    eFXFontCharsetANSI = 1,
 | 
| @@ -68,105 +72,107 @@ class CApplePlatform {
 | 
|  
 | 
|    CQuartz2D _quartz2d;
 | 
|  };
 | 
| +
 | 
|  class CFX_QuartzDeviceDriver : public IFX_RenderDeviceDriver {
 | 
|   public:
 | 
|    CFX_QuartzDeviceDriver(CGContextRef context, int32_t deviceClass);
 | 
| -  virtual ~CFX_QuartzDeviceDriver();
 | 
| +  ~CFX_QuartzDeviceDriver() override;
 | 
|  
 | 
| -  virtual int GetDeviceCaps(int caps_id);
 | 
| -  virtual CFX_Matrix GetCTM() const;
 | 
| -  virtual CFX_DIBitmap* GetBackDrop() { return NULL; }
 | 
| -  virtual void* GetPlatformSurface() { return NULL; }
 | 
| -  virtual FX_BOOL IsPSPrintDriver() { return FALSE; }
 | 
| -  virtual FX_BOOL StartRendering() { return TRUE; }
 | 
| -  virtual void EndRendering() {}
 | 
| -  virtual void SaveState();
 | 
| -  virtual void RestoreState(FX_BOOL bKeepSaved);
 | 
| -  virtual FX_BOOL SetClip_PathFill(const CFX_PathData* pPathData,
 | 
| -                                   const CFX_AffineMatrix* pObject2Device,
 | 
| -                                   int fill_mode);
 | 
| -  virtual FX_BOOL SetClip_PathStroke(const CFX_PathData* pPathData,
 | 
| -                                     const CFX_AffineMatrix* pObject2Device,
 | 
| -                                     const CFX_GraphStateData* pGraphState);
 | 
| -  virtual FX_BOOL DrawPath(const CFX_PathData* pPathData,
 | 
| +  // IFX_RenderDeviceDriver
 | 
| +  int GetDeviceCaps(int caps_id) override;
 | 
| +  CFX_Matrix GetCTM() const override;
 | 
| +  FX_BOOL IsPSPrintDriver() override { return FALSE; }
 | 
| +  FX_BOOL StartRendering() override { return TRUE; }
 | 
| +  void EndRendering() override {}
 | 
| +  void SaveState() override;
 | 
| +  void RestoreState(FX_BOOL bKeepSaved) override;
 | 
| +  FX_BOOL SetClip_PathFill(const CFX_PathData* pPathData,
 | 
|                             const CFX_AffineMatrix* pObject2Device,
 | 
| -                           const CFX_GraphStateData* pGraphState,
 | 
| -                           FX_DWORD fill_color,
 | 
| -                           FX_DWORD stroke_color,
 | 
| -                           int fill_mode,
 | 
| -                           int alpha_flag = 0,
 | 
| -                           void* pIccTransform = NULL,
 | 
| -                           int blend_type = FXDIB_BLEND_NORMAL);
 | 
| -  virtual FX_BOOL SetPixel(int x,
 | 
| -                           int y,
 | 
| -                           FX_DWORD color,
 | 
| -                           int alpha_flag = 0,
 | 
| -                           void* pIccTransform = NULL) {
 | 
| +                           int fill_mode) override;
 | 
| +  FX_BOOL SetClip_PathStroke(const CFX_PathData* pPathData,
 | 
| +                             const CFX_AffineMatrix* pObject2Device,
 | 
| +                             const CFX_GraphStateData* pGraphState) override;
 | 
| +  FX_BOOL DrawPath(const CFX_PathData* pPathData,
 | 
| +                   const CFX_AffineMatrix* pObject2Device,
 | 
| +                   const CFX_GraphStateData* pGraphState,
 | 
| +                   FX_DWORD fill_color,
 | 
| +                   FX_DWORD stroke_color,
 | 
| +                   int fill_mode,
 | 
| +                   int alpha_flag = 0,
 | 
| +                   void* pIccTransform = NULL,
 | 
| +                   int blend_type = FXDIB_BLEND_NORMAL) override;
 | 
| +  FX_BOOL SetPixel(int x,
 | 
| +                   int y,
 | 
| +                   FX_DWORD color,
 | 
| +                   int alpha_flag = 0,
 | 
| +                   void* pIccTransform = NULL) override {
 | 
|      return FALSE;
 | 
|    }
 | 
| -  virtual FX_BOOL FillRect(const FX_RECT* pRect,
 | 
| -                           FX_DWORD fill_color,
 | 
| +  FX_BOOL FillRect(const FX_RECT* pRect,
 | 
| +                   FX_DWORD fill_color,
 | 
| +                   int alpha_flag = 0,
 | 
| +                   void* pIccTransform = NULL,
 | 
| +                   int blend_type = FXDIB_BLEND_NORMAL) override;
 | 
| +  FX_BOOL DrawCosmeticLine(FX_FLOAT x1,
 | 
| +                           FX_FLOAT y1,
 | 
| +                           FX_FLOAT x2,
 | 
| +                           FX_FLOAT y2,
 | 
| +                           FX_DWORD color,
 | 
|                             int alpha_flag = 0,
 | 
|                             void* pIccTransform = NULL,
 | 
| -                           int blend_type = FXDIB_BLEND_NORMAL);
 | 
| -  virtual FX_BOOL DrawCosmeticLine(FX_FLOAT x1,
 | 
| -                                   FX_FLOAT y1,
 | 
| -                                   FX_FLOAT x2,
 | 
| -                                   FX_FLOAT y2,
 | 
| -                                   FX_DWORD color,
 | 
| -                                   int alpha_flag = 0,
 | 
| -                                   void* pIccTransform = NULL,
 | 
| -                                   int blend_type = FXDIB_BLEND_NORMAL);
 | 
| -  virtual FX_BOOL GetClipBox(FX_RECT* pRect);
 | 
| -  virtual FX_BOOL GetDIBits(CFX_DIBitmap* pBitmap,
 | 
| -                            int left,
 | 
| -                            int top,
 | 
| -                            void* pIccTransform = NULL,
 | 
| -                            FX_BOOL bDEdge = FALSE);
 | 
| -  virtual FX_BOOL SetDIBits(const CFX_DIBSource* pBitmap,
 | 
| -                            FX_DWORD color,
 | 
| -                            const FX_RECT* pSrcRect,
 | 
| -                            int dest_left,
 | 
| -                            int dest_top,
 | 
| -                            int blend_type,
 | 
| -                            int alpha_flag = 0,
 | 
| -                            void* pIccTransform = NULL);
 | 
| -  virtual FX_BOOL StretchDIBits(const CFX_DIBSource* pBitmap,
 | 
| -                                FX_DWORD color,
 | 
| -                                int dest_left,
 | 
| -                                int dest_top,
 | 
| -                                int dest_width,
 | 
| -                                int dest_height,
 | 
| -                                const FX_RECT* pClipRect,
 | 
| -                                FX_DWORD flags,
 | 
| -                                int alpha_flag = 0,
 | 
| -                                void* pIccTransform = NULL,
 | 
| -                                int blend_type = FXDIB_BLEND_NORMAL);
 | 
| -  virtual FX_BOOL StartDIBits(const CFX_DIBSource* pBitmap,
 | 
| -                              int bitmap_alpha,
 | 
| -                              FX_DWORD color,
 | 
| -                              const CFX_AffineMatrix* pMatrix,
 | 
| -                              FX_DWORD flags,
 | 
| -                              void*& handle,
 | 
| -                              int alpha_flag = 0,
 | 
| -                              void* pIccTransform = NULL,
 | 
| -                              int blend_type = FXDIB_BLEND_NORMAL) {
 | 
| +                           int blend_type = FXDIB_BLEND_NORMAL) override;
 | 
| +  FX_BOOL GetClipBox(FX_RECT* pRect) override;
 | 
| +  FX_BOOL GetDIBits(CFX_DIBitmap* pBitmap,
 | 
| +                    int left,
 | 
| +                    int top,
 | 
| +                    void* pIccTransform = NULL,
 | 
| +                    FX_BOOL bDEdge = FALSE) override;
 | 
| +  CFX_DIBitmap* GetBackDrop() override { return NULL; }
 | 
| +  FX_BOOL SetDIBits(const CFX_DIBSource* pBitmap,
 | 
| +                    FX_DWORD color,
 | 
| +                    const FX_RECT* pSrcRect,
 | 
| +                    int dest_left,
 | 
| +                    int dest_top,
 | 
| +                    int blend_type,
 | 
| +                    int alpha_flag = 0,
 | 
| +                    void* pIccTransform = NULL) override;
 | 
| +  FX_BOOL StretchDIBits(const CFX_DIBSource* pBitmap,
 | 
| +                        FX_DWORD color,
 | 
| +                        int dest_left,
 | 
| +                        int dest_top,
 | 
| +                        int dest_width,
 | 
| +                        int dest_height,
 | 
| +                        const FX_RECT* pClipRect,
 | 
| +                        FX_DWORD flags,
 | 
| +                        int alpha_flag = 0,
 | 
| +                        void* pIccTransform = NULL,
 | 
| +                        int blend_type = FXDIB_BLEND_NORMAL) override;
 | 
| +  FX_BOOL StartDIBits(const CFX_DIBSource* pBitmap,
 | 
| +                      int bitmap_alpha,
 | 
| +                      FX_DWORD color,
 | 
| +                      const CFX_AffineMatrix* pMatrix,
 | 
| +                      FX_DWORD flags,
 | 
| +                      void*& handle,
 | 
| +                      int alpha_flag = 0,
 | 
| +                      void* pIccTransform = NULL,
 | 
| +                      int blend_type = FXDIB_BLEND_NORMAL) override {
 | 
|      return FALSE;
 | 
|    }
 | 
| -  virtual FX_BOOL ContinueDIBits(void* handle, IFX_Pause* pPause) {
 | 
| +  FX_BOOL ContinueDIBits(void* handle, IFX_Pause* pPause) override {
 | 
|      return FALSE;
 | 
|    }
 | 
| -  virtual void CancelDIBits(void* handle) {}
 | 
| -  virtual FX_BOOL DrawDeviceText(int nChars,
 | 
| -                                 const FXTEXT_CHARPOS* pCharPos,
 | 
| -                                 CFX_Font* pFont,
 | 
| -                                 CFX_FontCache* pCache,
 | 
| -                                 const CFX_AffineMatrix* pObject2Device,
 | 
| -                                 FX_FLOAT font_size,
 | 
| -                                 FX_DWORD color,
 | 
| -                                 int alpha_flag = 0,
 | 
| -                                 void* pIccTransform = NULL);
 | 
| -  virtual void ClearDriver();
 | 
| +  void CancelDIBits(void* handle) override {}
 | 
| +  FX_BOOL DrawDeviceText(int nChars,
 | 
| +                         const FXTEXT_CHARPOS* pCharPos,
 | 
| +                         CFX_Font* pFont,
 | 
| +                         CFX_FontCache* pCache,
 | 
| +                         const CFX_AffineMatrix* pObject2Device,
 | 
| +                         FX_FLOAT font_size,
 | 
| +                         FX_DWORD color,
 | 
| +                         int alpha_flag = 0,
 | 
| +                         void* pIccTransform = NULL) override;
 | 
| +  void* GetPlatformSurface() override { return NULL; }
 | 
| +  void ClearDriver() override;
 | 
|  
 | 
|   protected:
 | 
|    void setStrokeInfo(const CFX_GraphStateData* graphState,
 | 
| @@ -206,21 +212,20 @@ class CFX_QuartzDeviceDriver : public IFX_RenderDeviceDriver {
 | 
|    int32_t _horzSize;
 | 
|    int32_t _vertSize;
 | 
|  };
 | 
| +
 | 
|  class CFX_FontProvider final : public IFX_FileRead {
 | 
|   public:
 | 
| -  virtual void Release() override { delete this; }
 | 
| -  virtual FX_FILESIZE GetSize() override { return (FX_FILESIZE)_totalSize; }
 | 
| -  virtual FX_BOOL ReadBlock(void* buffer,
 | 
| -                            FX_FILESIZE offset,
 | 
| -                            size_t size) override;
 | 
| -
 | 
| -  virtual FX_BOOL IsEOF() override { return _offSet == _totalSize; }
 | 
| -  virtual FX_FILESIZE GetPosition() override { return (FX_FILESIZE)_offSet; }
 | 
| -  virtual size_t ReadBlock(void* buffer, size_t size) override;
 | 
| +  // IFX_FileRead
 | 
| +  void Release() override { delete this; }
 | 
| +  FX_FILESIZE GetSize() override { return (FX_FILESIZE)_totalSize; }
 | 
| +  FX_BOOL IsEOF() override { return _offSet == _totalSize; }
 | 
| +  FX_FILESIZE GetPosition() override { return (FX_FILESIZE)_offSet; }
 | 
| +  FX_BOOL ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) override;
 | 
| +  size_t ReadBlock(void* buffer, size_t size) override;
 | 
|  
 | 
|   public:
 | 
|    CFX_FontProvider(CGFontRef cgFont);
 | 
| -  ~CFX_FontProvider();
 | 
| +  ~CFX_FontProvider() override;
 | 
|    void InitTableOffset();
 | 
|    unsigned long Read(unsigned long offset,
 | 
|                       unsigned char* buffer,
 | 
| @@ -254,6 +259,7 @@ class CFX_FontProvider final : public IFX_FileRead {
 | 
|    int _tableCount;
 | 
|    int _totalSize;
 | 
|  };
 | 
| +
 | 
|  uint32_t FX_GetHashCode(const FX_CHAR* pStr);
 | 
|  FX_DWORD FX_IOSGetMatchFamilyNameHashcode(const FX_CHAR* pFontName);
 | 
|  uint32_t FX_IOSGetFamilyNamesCount();
 | 
| 
 |