diff options
Diffstat (limited to 'core/include/fxge')
-rw-r--r-- | core/include/fxge/fpf.h | 70 | ||||
-rw-r--r-- | core/include/fxge/fx_dib.h | 669 | ||||
-rw-r--r-- | core/include/fxge/fx_font.h | 566 | ||||
-rw-r--r-- | core/include/fxge/fx_freetype.h | 180 | ||||
-rw-r--r-- | core/include/fxge/fx_ge.h | 733 | ||||
-rw-r--r-- | core/include/fxge/fx_ge_apple.h | 27 | ||||
-rw-r--r-- | core/include/fxge/fx_ge_win32.h | 98 |
7 files changed, 0 insertions, 2343 deletions
diff --git a/core/include/fxge/fpf.h b/core/include/fxge/fpf.h deleted file mode 100644 index bc42a2dd95..0000000000 --- a/core/include/fxge/fpf.h +++ /dev/null @@ -1,70 +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_INCLUDE_FXGE_FPF_H_ -#define CORE_INCLUDE_FXGE_FPF_H_ - -#include "core/fxcrt/include/fx_coordinates.h" - -class IFPF_FontMgr; - -class IFPF_DeviceModule { - public: - virtual ~IFPF_DeviceModule() {} - virtual void Destroy() = 0; - virtual IFPF_FontMgr* GetFontMgr() = 0; -}; - -IFPF_DeviceModule* FPF_GetDeviceModule(); - -#define FPF_MATCHFONT_REPLACEANSI 1 - -typedef struct FPF_HFONT_ { void* pData; } * FPF_HFONT; - -class IFPF_Font { - public: - virtual void Release() = 0; - virtual IFPF_Font* Retain() = 0; - virtual FPF_HFONT GetHandle() = 0; - virtual CFX_ByteString GetFamilyName() = 0; - virtual CFX_WideString GetPsName() = 0; - virtual uint32_t GetFontStyle() const = 0; - virtual uint8_t GetCharset() const = 0; - - virtual int32_t GetGlyphIndex(FX_WCHAR wUnicode) = 0; - virtual int32_t GetGlyphWidth(int32_t iGlyphIndex) = 0; - - virtual int32_t GetAscent() const = 0; - virtual int32_t GetDescent() const = 0; - - virtual FX_BOOL GetGlyphBBox(int32_t iGlyphIndex, FX_RECT& rtBBox) = 0; - virtual FX_BOOL GetBBox(FX_RECT& rtBBox) = 0; - - virtual int32_t GetHeight() const = 0; - virtual int32_t GetItalicAngle() const = 0; - virtual uint32_t GetFontData(uint32_t dwTable, - uint8_t* pBuffer, - uint32_t dwSize) = 0; - - protected: - virtual ~IFPF_Font() {} -}; - -class IFPF_FontMgr { - public: - virtual ~IFPF_FontMgr() {} - virtual void LoadSystemFonts() = 0; - virtual void LoadPrivateFont(IFX_FileRead* pFontFile) = 0; - virtual void LoadPrivateFont(const CFX_ByteStringC& bsFileName) = 0; - virtual void LoadPrivateFont(void* pBuffer, size_t szBuffer) = 0; - - virtual IFPF_Font* CreateFont(const CFX_ByteStringC& bsFamilyname, - uint8_t charset, - uint32_t dwStyle, - uint32_t dwMatch = 0) = 0; -}; - -#endif // CORE_INCLUDE_FXGE_FPF_H_ diff --git a/core/include/fxge/fx_dib.h b/core/include/fxge/fx_dib.h deleted file mode 100644 index 59a494182c..0000000000 --- a/core/include/fxge/fx_dib.h +++ /dev/null @@ -1,669 +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_INCLUDE_FXGE_FX_DIB_H_ -#define CORE_INCLUDE_FXGE_FX_DIB_H_ - -#include "core/fxcrt/include/fx_basic.h" -#include "core/fxcrt/include/fx_coordinates.h" - -enum FXDIB_Format { - FXDIB_Invalid = 0, - FXDIB_1bppMask = 0x101, - FXDIB_1bppRgb = 0x001, - FXDIB_1bppCmyk = 0x401, - FXDIB_8bppMask = 0x108, - FXDIB_8bppRgb = 0x008, - FXDIB_8bppRgba = 0x208, - FXDIB_8bppCmyk = 0x408, - FXDIB_8bppCmyka = 0x608, - FXDIB_Rgb = 0x018, - FXDIB_Rgba = 0x218, - FXDIB_Rgb32 = 0x020, - FXDIB_Argb = 0x220, - FXDIB_Cmyk = 0x420, - FXDIB_Cmyka = 0x620, -}; -enum FXDIB_Channel { - FXDIB_Red = 1, - FXDIB_Green, - FXDIB_Blue, - FXDIB_Cyan, - FXDIB_Magenta, - FXDIB_Yellow, - FXDIB_Black, - FXDIB_Alpha -}; -#define FXDIB_DOWNSAMPLE 0x04 -#define FXDIB_INTERPOL 0x20 -#define FXDIB_BICUBIC_INTERPOL 0x80 -#define FXDIB_NOSMOOTH 0x100 -#define FXDIB_BLEND_NORMAL 0 -#define FXDIB_BLEND_MULTIPLY 1 -#define FXDIB_BLEND_SCREEN 2 -#define FXDIB_BLEND_OVERLAY 3 -#define FXDIB_BLEND_DARKEN 4 -#define FXDIB_BLEND_LIGHTEN 5 - -#define FXDIB_BLEND_COLORDODGE 6 -#define FXDIB_BLEND_COLORBURN 7 -#define FXDIB_BLEND_HARDLIGHT 8 -#define FXDIB_BLEND_SOFTLIGHT 9 -#define FXDIB_BLEND_DIFFERENCE 10 -#define FXDIB_BLEND_EXCLUSION 11 -#define FXDIB_BLEND_NONSEPARABLE 21 -#define FXDIB_BLEND_HUE 21 -#define FXDIB_BLEND_SATURATION 22 -#define FXDIB_BLEND_COLOR 23 -#define FXDIB_BLEND_LUMINOSITY 24 -#define FXDIB_BLEND_UNSUPPORTED -1 -typedef uint32_t FX_ARGB; -typedef uint32_t FX_COLORREF; -typedef uint32_t FX_CMYK; -class CFX_ClipRgn; -class CFX_DIBSource; -class CFX_DIBitmap; -class CStretchEngine; - -#define FXSYS_RGB(r, g, b) ((r) | ((g) << 8) | ((b) << 16)) -#define FXSYS_GetRValue(rgb) ((rgb)&0xff) -#define FXSYS_GetGValue(rgb) (((rgb) >> 8) & 0xff) -#define FXSYS_GetBValue(rgb) (((rgb) >> 16) & 0xff) -#define FX_CCOLOR(val) (255 - (val)) -#define FXSYS_CMYK(c, m, y, k) (((c) << 24) | ((m) << 16) | ((y) << 8) | (k)) -#define FXSYS_GetCValue(cmyk) ((uint8_t)((cmyk) >> 24) & 0xff) -#define FXSYS_GetMValue(cmyk) ((uint8_t)((cmyk) >> 16) & 0xff) -#define FXSYS_GetYValue(cmyk) ((uint8_t)((cmyk) >> 8) & 0xff) -#define FXSYS_GetKValue(cmyk) ((uint8_t)(cmyk)&0xff) -void CmykDecode(FX_CMYK cmyk, int& c, int& m, int& y, int& k); -inline FX_CMYK CmykEncode(int c, int m, int y, int k) { - return (c << 24) | (m << 16) | (y << 8) | k; -} -void ArgbDecode(FX_ARGB argb, int& a, int& r, int& g, int& b); -void ArgbDecode(FX_ARGB argb, int& a, FX_COLORREF& rgb); -inline FX_ARGB ArgbEncode(int a, int r, int g, int b) { - return (a << 24) | (r << 16) | (g << 8) | b; -} -FX_ARGB ArgbEncode(int a, FX_COLORREF rgb); -#define FXARGB_A(argb) ((uint8_t)((argb) >> 24)) -#define FXARGB_R(argb) ((uint8_t)((argb) >> 16)) -#define FXARGB_G(argb) ((uint8_t)((argb) >> 8)) -#define FXARGB_B(argb) ((uint8_t)(argb)) -#define FXARGB_MAKE(a, r, g, b) \ - (((uint32_t)(a) << 24) | ((r) << 16) | ((g) << 8) | (b)) -#define FXARGB_MUL_ALPHA(argb, alpha) \ - (((((argb) >> 24) * (alpha) / 255) << 24) | ((argb)&0xffffff)) -#define FXRGB2GRAY(r, g, b) (((b)*11 + (g)*59 + (r)*30) / 100) -#define FXCMYK2GRAY(c, m, y, k) \ - (((255 - (c)) * (255 - (k)) * 30 + (255 - (m)) * (255 - (k)) * 59 + \ - (255 - (y)) * (255 - (k)) * 11) / \ - 25500) -#define FXDIB_ALPHA_MERGE(backdrop, source, source_alpha) \ - (((backdrop) * (255 - (source_alpha)) + (source) * (source_alpha)) / 255) -#define FXDIB_ALPHA_UNION(dest, src) ((dest) + (src) - (dest) * (src) / 255) -#define FXCMYK_GETDIB(p) \ - ((((uint8_t*)(p))[0] << 24 | (((uint8_t*)(p))[1] << 16) | \ - (((uint8_t*)(p))[2] << 8) | ((uint8_t*)(p))[3])) -#define FXCMYK_SETDIB(p, cmyk) ((uint8_t*)(p))[0] = (uint8_t)((cmyk) >> 24), \ - ((uint8_t*)(p))[1] = (uint8_t)((cmyk) >> 16), \ - ((uint8_t*)(p))[2] = (uint8_t)((cmyk) >> 8), \ - ((uint8_t*)(p))[3] = (uint8_t)(cmyk)) -#define FXARGB_GETDIB(p) \ - ((((uint8_t*)(p))[0]) | (((uint8_t*)(p))[1] << 8) | \ - (((uint8_t*)(p))[2] << 16) | (((uint8_t*)(p))[3] << 24)) -#define FXARGB_SETDIB(p, argb) \ - ((uint8_t*)(p))[0] = (uint8_t)(argb), \ - ((uint8_t*)(p))[1] = (uint8_t)((argb) >> 8), \ - ((uint8_t*)(p))[2] = (uint8_t)((argb) >> 16), \ - ((uint8_t*)(p))[3] = (uint8_t)((argb) >> 24) -#define FXARGB_COPY(dest, src) \ - *(uint8_t*)(dest) = *(uint8_t*)(src), \ - *((uint8_t*)(dest) + 1) = *((uint8_t*)(src) + 1), \ - *((uint8_t*)(dest) + 2) = *((uint8_t*)(src) + 2), \ - *((uint8_t*)(dest) + 3) = *((uint8_t*)(src) + 3) -#define FXCMYK_COPY(dest, src) \ - *(uint8_t*)(dest) = *(uint8_t*)(src), \ - *((uint8_t*)(dest) + 1) = *((uint8_t*)(src) + 1), \ - *((uint8_t*)(dest) + 2) = *((uint8_t*)(src) + 2), \ - *((uint8_t*)(dest) + 3) = *((uint8_t*)(src) + 3) -#define FXARGB_SETRGBORDERDIB(p, argb) \ - ((uint8_t*)(p))[3] = (uint8_t)(argb >> 24), \ - ((uint8_t*)(p))[0] = (uint8_t)((argb) >> 16), \ - ((uint8_t*)(p))[1] = (uint8_t)((argb) >> 8), \ - ((uint8_t*)(p))[2] = (uint8_t)(argb) -#define FXARGB_GETRGBORDERDIB(p) \ - (((uint8_t*)(p))[2]) | (((uint8_t*)(p))[1] << 8) | \ - (((uint8_t*)(p))[0] << 16) | (((uint8_t*)(p))[3] << 24) -#define FXARGB_RGBORDERCOPY(dest, src) \ - *((uint8_t*)(dest) + 3) = *((uint8_t*)(src) + 3), \ - *(uint8_t*)(dest) = *((uint8_t*)(src) + 2), \ - *((uint8_t*)(dest) + 1) = *((uint8_t*)(src) + 1), \ - *((uint8_t*)(dest) + 2) = *((uint8_t*)(src)) -#define FXARGB_TODIB(argb) (argb) -#define FXCMYK_TODIB(cmyk) \ - ((uint8_t)((cmyk) >> 24) | ((uint8_t)((cmyk) >> 16)) << 8 | \ - ((uint8_t)((cmyk) >> 8)) << 16 | ((uint8_t)(cmyk) << 24)) -#define FXARGB_TOBGRORDERDIB(argb) \ - ((uint8_t)(argb >> 16) | ((uint8_t)(argb >> 8)) << 8 | \ - ((uint8_t)(argb)) << 16 | ((uint8_t)(argb >> 24) << 24)) -#define FXGETFLAG_COLORTYPE(flag) (uint8_t)((flag) >> 8) -#define FXGETFLAG_ALPHA_FILL(flag) (uint8_t)(flag) -#define FXGETFLAG_ALPHA_STROKE(flag) (uint8_t)((flag) >> 16) -#define FXSETFLAG_COLORTYPE(flag, val) \ - flag = (((val) << 8) | (flag & 0xffff00ff)) -#define FXSETFLAG_ALPHA_FILL(flag, val) flag = ((val) | (flag & 0xffffff00)) -#define FXSETFLAG_ALPHA_STROKE(flag, val) \ - flag = (((val) << 16) | (flag & 0xff00ffff)) - -class CFX_DIBSource { - public: - virtual ~CFX_DIBSource(); - - int GetWidth() const { return m_Width; } - int GetHeight() const { return m_Height; } - - FXDIB_Format GetFormat() const { - return (FXDIB_Format)(m_AlphaFlag * 0x100 + m_bpp); - } - uint32_t GetPitch() const { return m_Pitch; } - uint32_t* GetPalette() const { return m_pPalette; } - - virtual uint8_t* GetBuffer() const; - virtual const uint8_t* GetScanline(int line) const = 0; - virtual FX_BOOL SkipToScanline(int line, IFX_Pause* pPause) const; - virtual void DownSampleScanline(int line, - uint8_t* dest_scan, - int dest_bpp, - int dest_width, - FX_BOOL bFlipX, - int clip_left, - int clip_width) const = 0; - - int GetBPP() const { return m_bpp; } - - // TODO(thestig): Investigate this. Given the possible values of FXDIB_Format, - // it feels as though this should be implemented as !!(m_AlphaFlag & 1) and - // IsOpaqueImage() below should never be able to return TRUE. - bool IsAlphaMask() const { return m_AlphaFlag == 1; } - bool HasAlpha() const { return !!(m_AlphaFlag & 2); } - bool IsOpaqueImage() const { return !(m_AlphaFlag & 3); } - bool IsCmykImage() const { return !!(m_AlphaFlag & 4); } - - int GetPaletteSize() const { - return IsAlphaMask() ? 0 : (m_bpp == 1 ? 2 : (m_bpp == 8 ? 256 : 0)); - } - - uint32_t GetPaletteEntry(int index) const; - - void SetPaletteEntry(int index, uint32_t color); - uint32_t GetPaletteArgb(int index) const { return GetPaletteEntry(index); } - void SetPaletteArgb(int index, uint32_t color) { - SetPaletteEntry(index, color); - } - - void CopyPalette(const uint32_t* pSrcPal, uint32_t size = 256); - - CFX_DIBitmap* Clone(const FX_RECT* pClip = NULL) const; - CFX_DIBitmap* CloneConvert(FXDIB_Format format, - const FX_RECT* pClip = NULL, - void* pIccTransform = NULL) const; - - CFX_DIBitmap* StretchTo(int dest_width, - int dest_height, - uint32_t flags = 0, - const FX_RECT* pClip = NULL) const; - CFX_DIBitmap* TransformTo(const CFX_Matrix* pMatrix, - int& left, - int& top, - uint32_t flags = 0, - const FX_RECT* pClip = NULL) const; - - CFX_DIBitmap* GetAlphaMask(const FX_RECT* pClip = NULL) const; - FX_BOOL CopyAlphaMask(const CFX_DIBSource* pAlphaMask, - const FX_RECT* pClip = NULL); - - CFX_DIBitmap* SwapXY(FX_BOOL bXFlip, - FX_BOOL bYFlip, - const FX_RECT* pClip = NULL) const; - - CFX_DIBitmap* FlipImage(FX_BOOL bXFlip, FX_BOOL bYFlip) const; - - void GetOverlapRect(int& dest_left, - int& dest_top, - int& width, - int& height, - int src_width, - int src_height, - int& src_left, - int& src_top, - const CFX_ClipRgn* pClipRgn); - - CFX_DIBitmap* m_pAlphaMask; - - protected: - CFX_DIBSource(); - - int m_Width; - int m_Height; - int m_bpp; - uint32_t m_AlphaFlag; - uint32_t m_Pitch; - uint32_t* m_pPalette; - - void BuildPalette(); - FX_BOOL BuildAlphaMask(); - int FindPalette(uint32_t color) const; - void GetPalette(uint32_t* pal, int alpha) const; -}; -class CFX_DIBitmap : public CFX_DIBSource { - public: - CFX_DIBitmap(); - explicit CFX_DIBitmap(const CFX_DIBitmap& src); - ~CFX_DIBitmap() override; - - FX_BOOL Create(int width, - int height, - FXDIB_Format format, - uint8_t* pBuffer = NULL, - int pitch = 0); - - FX_BOOL Copy(const CFX_DIBSource* pSrc); - - // CFX_DIBSource - uint8_t* GetBuffer() const override; - const uint8_t* GetScanline(int line) const override; - void DownSampleScanline(int line, - uint8_t* dest_scan, - int dest_bpp, - int dest_width, - FX_BOOL bFlipX, - int clip_left, - int clip_width) const override; - - void TakeOver(CFX_DIBitmap* pSrcBitmap); - - FX_BOOL ConvertFormat(FXDIB_Format format, void* pIccTransform = NULL); - - void Clear(uint32_t color); - - uint32_t GetPixel(int x, int y) const; - - void SetPixel(int x, int y, uint32_t color); - - FX_BOOL LoadChannel(FXDIB_Channel destChannel, - const CFX_DIBSource* pSrcBitmap, - FXDIB_Channel srcChannel); - - FX_BOOL LoadChannel(FXDIB_Channel destChannel, int value); - - FX_BOOL MultiplyAlpha(int alpha); - - FX_BOOL MultiplyAlpha(const CFX_DIBSource* pAlphaMask); - - FX_BOOL TransferBitmap(int dest_left, - int dest_top, - int width, - int height, - const CFX_DIBSource* pSrcBitmap, - int src_left, - int src_top, - void* pIccTransform = NULL); - - FX_BOOL CompositeBitmap(int dest_left, - int dest_top, - int width, - int height, - const CFX_DIBSource* pSrcBitmap, - int src_left, - int src_top, - int blend_type = FXDIB_BLEND_NORMAL, - const CFX_ClipRgn* pClipRgn = NULL, - FX_BOOL bRgbByteOrder = FALSE, - void* pIccTransform = NULL); - - FX_BOOL TransferMask(int dest_left, - int dest_top, - int width, - int height, - const CFX_DIBSource* pMask, - uint32_t color, - int src_left, - int src_top, - int alpha_flag = 0, - void* pIccTransform = NULL); - - FX_BOOL CompositeMask(int dest_left, - int dest_top, - int width, - int height, - const CFX_DIBSource* pMask, - uint32_t color, - int src_left, - int src_top, - int blend_type = FXDIB_BLEND_NORMAL, - const CFX_ClipRgn* pClipRgn = NULL, - FX_BOOL bRgbByteOrder = FALSE, - int alpha_flag = 0, - void* pIccTransform = NULL); - - FX_BOOL CompositeRect(int dest_left, - int dest_top, - int width, - int height, - uint32_t color, - int alpha_flag = 0, - void* pIccTransform = NULL); - - FX_BOOL ConvertColorScale(uint32_t forecolor, uint32_t backcolor); - - FX_BOOL DitherFS(const uint32_t* pPalette, - int pal_size, - const FX_RECT* pRect = NULL); - - protected: - uint8_t* m_pBuffer; - - FX_BOOL m_bExtBuf; - - FX_BOOL GetGrayData(void* pIccTransform = NULL); -}; -class CFX_DIBExtractor { - public: - CFX_DIBExtractor(const CFX_DIBSource* pSrc); - - ~CFX_DIBExtractor(); - - operator CFX_DIBitmap*() { return m_pBitmap; } - - private: - CFX_DIBitmap* m_pBitmap; -}; - -typedef CFX_CountRef<CFX_DIBitmap> CFX_DIBitmapRef; -class CFX_FilteredDIB : public CFX_DIBSource { - public: - CFX_FilteredDIB(); - ~CFX_FilteredDIB() override; - - void LoadSrc(const CFX_DIBSource* pSrc, FX_BOOL bAutoDropSrc = FALSE); - - virtual FXDIB_Format GetDestFormat() = 0; - - virtual uint32_t* GetDestPalette() = 0; - - virtual void TranslateScanline(uint8_t* dest_buf, - const uint8_t* src_buf) const = 0; - - virtual void TranslateDownSamples(uint8_t* dest_buf, - const uint8_t* src_buf, - int pixels, - int Bpp) const = 0; - - protected: - // CFX_DIBSource - const uint8_t* GetScanline(int line) const override; - void DownSampleScanline(int line, - uint8_t* dest_scan, - int dest_bpp, - int dest_width, - FX_BOOL bFlipX, - int clip_left, - int clip_width) const override; - - const CFX_DIBSource* m_pSrc; - - FX_BOOL m_bAutoDropSrc; - - uint8_t* m_pScanline; -}; - -class IFX_ScanlineComposer { - public: - virtual ~IFX_ScanlineComposer() {} - - virtual void ComposeScanline(int line, - const uint8_t* scanline, - const uint8_t* scan_extra_alpha = NULL) = 0; - - virtual FX_BOOL SetInfo(int width, - int height, - FXDIB_Format src_format, - uint32_t* pSrcPalette) = 0; -}; -class CFX_ScanlineCompositor { - public: - CFX_ScanlineCompositor(); - - ~CFX_ScanlineCompositor(); - - FX_BOOL Init(FXDIB_Format dest_format, - FXDIB_Format src_format, - int32_t width, - uint32_t* pSrcPalette, - uint32_t mask_color, - int blend_type, - FX_BOOL bClip, - FX_BOOL bRgbByteOrder = FALSE, - int alpha_flag = 0, - void* pIccTransform = NULL); - - void CompositeRgbBitmapLine(uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - const uint8_t* clip_scan, - const uint8_t* src_extra_alpha = NULL, - uint8_t* dst_extra_alpha = NULL); - - void CompositePalBitmapLine(uint8_t* dest_scan, - const uint8_t* src_scan, - int src_left, - int width, - const uint8_t* clip_scan, - const uint8_t* src_extra_alpha = NULL, - uint8_t* dst_extra_alpha = NULL); - - void CompositeByteMaskLine(uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - const uint8_t* clip_scan, - uint8_t* dst_extra_alpha = NULL); - - void CompositeBitMaskLine(uint8_t* dest_scan, - const uint8_t* src_scan, - int src_left, - int width, - const uint8_t* clip_scan, - uint8_t* dst_extra_alpha = NULL); - - protected: - int m_Transparency; - FXDIB_Format m_SrcFormat, m_DestFormat; - uint32_t* m_pSrcPalette; - - int m_MaskAlpha, m_MaskRed, m_MaskGreen, m_MaskBlue, m_MaskBlack; - int m_BlendType; - void* m_pIccTransform; - uint8_t* m_pCacheScanline; - int m_CacheSize; - FX_BOOL m_bRgbByteOrder; -}; - -class CFX_BitmapComposer : public IFX_ScanlineComposer { - public: - CFX_BitmapComposer(); - ~CFX_BitmapComposer() override; - - void Compose(CFX_DIBitmap* pDest, - const CFX_ClipRgn* pClipRgn, - int bitmap_alpha, - uint32_t mask_color, - FX_RECT& dest_rect, - FX_BOOL bVertical, - FX_BOOL bFlipX, - FX_BOOL bFlipY, - FX_BOOL bRgbByteOrder = FALSE, - int alpha_flag = 0, - void* pIccTransform = NULL, - int blend_type = FXDIB_BLEND_NORMAL); - - // IFX_ScanlineComposer - FX_BOOL SetInfo(int width, - int height, - FXDIB_Format src_format, - uint32_t* pSrcPalette) override; - - void ComposeScanline(int line, - const uint8_t* scanline, - const uint8_t* scan_extra_alpha) override; - - protected: - void DoCompose(uint8_t* dest_scan, - const uint8_t* src_scan, - int dest_width, - const uint8_t* clip_scan, - const uint8_t* src_extra_alpha = NULL, - uint8_t* dst_extra_alpha = NULL); - CFX_DIBitmap* m_pBitmap; - const CFX_ClipRgn* m_pClipRgn; - FXDIB_Format m_SrcFormat; - int m_DestLeft, m_DestTop, m_DestWidth, m_DestHeight, m_BitmapAlpha; - uint32_t m_MaskColor; - const CFX_DIBitmap* m_pClipMask; - CFX_ScanlineCompositor m_Compositor; - FX_BOOL m_bVertical, m_bFlipX, m_bFlipY; - int m_AlphaFlag; - void* m_pIccTransform; - FX_BOOL m_bRgbByteOrder; - int m_BlendType; - void ComposeScanlineV(int line, - const uint8_t* scanline, - const uint8_t* scan_extra_alpha = NULL); - uint8_t* m_pScanlineV; - uint8_t* m_pClipScanV; - uint8_t* m_pAddClipScan; - uint8_t* m_pScanlineAlphaV; -}; - -class CFX_BitmapStorer : public IFX_ScanlineComposer { - public: - CFX_BitmapStorer(); - ~CFX_BitmapStorer() override; - - // IFX_ScanlineComposer - void ComposeScanline(int line, - const uint8_t* scanline, - const uint8_t* scan_extra_alpha) override; - - FX_BOOL SetInfo(int width, - int height, - FXDIB_Format src_format, - uint32_t* pSrcPalette) override; - - CFX_DIBitmap* GetBitmap() { return m_pBitmap; } - - CFX_DIBitmap* Detach(); - - void Replace(CFX_DIBitmap* pBitmap); - - private: - CFX_DIBitmap* m_pBitmap; -}; - -class CFX_ImageStretcher { - public: - CFX_ImageStretcher(); - ~CFX_ImageStretcher(); - - FX_BOOL Start(IFX_ScanlineComposer* pDest, - const CFX_DIBSource* pBitmap, - int dest_width, - int dest_height, - const FX_RECT& bitmap_rect, - uint32_t flags); - - FX_BOOL Continue(IFX_Pause* pPause); - FX_BOOL StartQuickStretch(); - FX_BOOL StartStretch(); - FX_BOOL ContinueQuickStretch(IFX_Pause* pPause); - FX_BOOL ContinueStretch(IFX_Pause* pPause); - - IFX_ScanlineComposer* m_pDest; - const CFX_DIBSource* m_pSource; - CStretchEngine* m_pStretchEngine; - uint32_t m_Flags; - FX_BOOL m_bFlipX; - FX_BOOL m_bFlipY; - int m_DestWidth; - int m_DestHeight; - FX_RECT m_ClipRect; - int m_LineIndex; - int m_DestBPP; - uint8_t* m_pScanline; - uint8_t* m_pMaskScanline; - FXDIB_Format m_DestFormat; -}; -class CFX_ImageTransformer { - public: - CFX_ImageTransformer(); - ~CFX_ImageTransformer(); - - FX_BOOL Start(const CFX_DIBSource* pSrc, - const CFX_Matrix* pMatrix, - int flags, - const FX_RECT* pClip); - - FX_BOOL Continue(IFX_Pause* pPause); - - CFX_Matrix* m_pMatrix; - FX_RECT m_StretchClip; - int m_ResultLeft; - int m_ResultTop; - int m_ResultWidth; - int m_ResultHeight; - CFX_Matrix m_dest2stretch; - CFX_ImageStretcher m_Stretcher; - CFX_BitmapStorer m_Storer; - uint32_t m_Flags; - int m_Status; -}; -class CFX_ImageRenderer { - public: - CFX_ImageRenderer(); - ~CFX_ImageRenderer(); - - FX_BOOL Start(CFX_DIBitmap* pDevice, - const CFX_ClipRgn* pClipRgn, - const CFX_DIBSource* pSource, - int bitmap_alpha, - uint32_t mask_color, - const CFX_Matrix* pMatrix, - uint32_t dib_flags, - FX_BOOL bRgbByteOrder = FALSE, - int alpha_flag = 0, - void* pIccTransform = NULL, - int blend_type = FXDIB_BLEND_NORMAL); - - FX_BOOL Continue(IFX_Pause* pPause); - - protected: - CFX_DIBitmap* m_pDevice; - const CFX_ClipRgn* m_pClipRgn; - int m_BitmapAlpha; - uint32_t m_MaskColor; - CFX_Matrix m_Matrix; - CFX_ImageTransformer* m_pTransformer; - CFX_ImageStretcher m_Stretcher; - CFX_BitmapComposer m_Composer; - int m_Status; - FX_RECT m_ClipBox; - uint32_t m_Flags; - int m_AlphaFlag; - void* m_pIccTransform; - FX_BOOL m_bRgbByteOrder; - int m_BlendType; -}; - -#endif // CORE_INCLUDE_FXGE_FX_DIB_H_ diff --git a/core/include/fxge/fx_font.h b/core/include/fxge/fx_font.h deleted file mode 100644 index 4e2b97e677..0000000000 --- a/core/include/fxge/fx_font.h +++ /dev/null @@ -1,566 +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_INCLUDE_FXGE_FX_FONT_H_ -#define CORE_INCLUDE_FXGE_FX_FONT_H_ - -#include <map> -#include <memory> -#include <vector> - -#include "core/fxcrt/include/fx_system.h" -#include "core/include/fxge/fx_dib.h" -#include "core/include/fxge/fx_freetype.h" - -typedef struct FT_FaceRec_* FXFT_Face; -typedef void* FXFT_Library; - -class CFX_FaceCache; -class CFX_FontFaceInfo; -class CFX_FontMapper; -class CFX_PathData; -class CFX_SizeGlyphCache; -class CFX_SubstFont; -class CTTFontDesc; -class IFX_SystemFontInfo; - -#ifdef _SKIA_SUPPORT_ -class SkTypeface; - -using CFX_TypeFace = SkTypeface; -#endif - -#define FXFONT_FIXED_PITCH 0x01 -#define FXFONT_SERIF 0x02 -#define FXFONT_SYMBOLIC 0x04 -#define FXFONT_SCRIPT 0x08 -#define FXFONT_ITALIC 0x40 -#define FXFONT_BOLD 0x40000 -#define FXFONT_USEEXTERNATTR 0x80000 -#define FXFONT_CIDFONT 0x100000 -#ifdef PDF_ENABLE_XFA -#define FXFONT_EXACTMATCH 0x80000000 -#endif // PDF_ENABLE_XFA -#define FXFONT_ANSI_CHARSET 0 -#define FXFONT_DEFAULT_CHARSET 1 -#define FXFONT_SYMBOL_CHARSET 2 -#define FXFONT_SHIFTJIS_CHARSET 128 -#define FXFONT_HANGEUL_CHARSET 129 -#define FXFONT_GB2312_CHARSET 134 -#define FXFONT_CHINESEBIG5_CHARSET 136 -#define FXFONT_THAI_CHARSET 222 -#define FXFONT_EASTEUROPE_CHARSET 238 -#define FXFONT_RUSSIAN_CHARSET 204 -#define FXFONT_GREEK_CHARSET 161 -#define FXFONT_TURKISH_CHARSET 162 -#define FXFONT_HEBREW_CHARSET 177 -#define FXFONT_ARABIC_CHARSET 178 -#define FXFONT_BALTIC_CHARSET 186 -#define FXFONT_FF_FIXEDPITCH 1 -#define FXFONT_FF_ROMAN (1 << 4) -#define FXFONT_FF_SCRIPT (4 << 4) -#define FXFONT_FW_NORMAL 400 -#define FXFONT_FW_BOLD 700 - -class CFX_Font { - public: - CFX_Font(); - ~CFX_Font(); - - void LoadSubst(const CFX_ByteString& face_name, - FX_BOOL bTrueType, - uint32_t flags, - int weight, - int italic_angle, - int CharsetCP, - FX_BOOL bVertical = FALSE); - FX_BOOL LoadEmbedded(const uint8_t* data, uint32_t size); - FXFT_Face GetFace() const { return m_Face; } - -#ifdef PDF_ENABLE_XFA - FX_BOOL LoadFile(IFX_FileRead* pFile, - int nFaceIndex = 0, - int* pFaceCount = NULL); - - FX_BOOL LoadClone(const CFX_Font* pFont); - CFX_SubstFont* GetSubstFont() const { return m_pSubstFont; } - void SetFace(FXFT_Face face) { m_Face = face; } - void SetSubstFont(CFX_SubstFont* subst) { m_pSubstFont = subst; } -#else // PDF_ENABLE_XFA - const CFX_SubstFont* GetSubstFont() const { return m_pSubstFont; } -#endif // PDF_ENABLE_XFA - - CFX_PathData* LoadGlyphPath(uint32_t glyph_index, int dest_width = 0); - int GetGlyphWidth(uint32_t glyph_index); - int GetAscent() const; - int GetDescent() const; - FX_BOOL GetGlyphBBox(uint32_t glyph_index, FX_RECT& bbox); - FX_BOOL IsItalic() const; - FX_BOOL IsBold() const; - FX_BOOL IsFixedWidth() const; - FX_BOOL IsVertical() const { return m_bVertical; } - CFX_WideString GetPsName() const; - CFX_ByteString GetFamilyName() const; - CFX_ByteString GetFaceName() const; - FX_BOOL IsTTFont() const; - FX_BOOL GetBBox(FX_RECT& bbox); - int GetHeight() const; - int GetULPos() const; - int GetULthickness() const; - int GetMaxAdvanceWidth() const; - FX_BOOL IsEmbedded() const { return m_bEmbedded; } - uint8_t* GetSubData() const { return m_pGsubData; } - void SetSubData(uint8_t* data) { m_pGsubData = data; } - void* GetPlatformFont() const { return m_pPlatformFont; } - void SetPlatformFont(void* font) { m_pPlatformFont = font; } - uint8_t* GetFontData() const { return m_pFontData; } - uint32_t GetSize() const { return m_dwSize; } - void AdjustMMParams(int glyph_index, int width, int weight); - - private: - void ReleasePlatformResource(); - void DeleteFace(); - - FXFT_Face m_Face; - CFX_SubstFont* m_pSubstFont; - uint8_t* m_pFontDataAllocation; - uint8_t* m_pFontData; - uint8_t* m_pGsubData; - uint32_t m_dwSize; - CFX_BinaryBuf m_OtfFontData; - void* m_hHandle; - void* m_pPlatformFont; - void* m_pPlatformFontCollection; - void* m_pDwFont; - FX_BOOL m_bDwLoaded; - FX_BOOL m_bEmbedded; - FX_BOOL m_bVertical; - -#ifdef PDF_ENABLE_XFA - - protected: - FX_BOOL m_bLogic; - void* m_pOwnedStream; - -#endif // PDF_ENABLE_XFA -}; - -#define ENCODING_INTERNAL 0 -#define ENCODING_UNICODE 1 - -#ifdef PDF_ENABLE_XFA -#define FXFM_ENC_TAG(a, b, c, d) \ - (((uint32_t)(a) << 24) | ((uint32_t)(b) << 16) | ((uint32_t)(c) << 8) | \ - (uint32_t)(d)) -#define FXFM_ENCODING_NONE FXFM_ENC_TAG(0, 0, 0, 0) -#define FXFM_ENCODING_MS_SYMBOL FXFM_ENC_TAG('s', 'y', 'm', 'b') -#define FXFM_ENCODING_UNICODE FXFM_ENC_TAG('u', 'n', 'i', 'c') -#define FXFM_ENCODING_MS_SJIS FXFM_ENC_TAG('s', 'j', 'i', 's') -#define FXFM_ENCODING_MS_GB2312 FXFM_ENC_TAG('g', 'b', ' ', ' ') -#define FXFM_ENCODING_MS_BIG5 FXFM_ENC_TAG('b', 'i', 'g', '5') -#define FXFM_ENCODING_MS_WANSUNG FXFM_ENC_TAG('w', 'a', 'n', 's') -#define FXFM_ENCODING_MS_JOHAB FXFM_ENC_TAG('j', 'o', 'h', 'a') -#define FXFM_ENCODING_ADOBE_STANDARD FXFM_ENC_TAG('A', 'D', 'O', 'B') -#define FXFM_ENCODING_ADOBE_EXPERT FXFM_ENC_TAG('A', 'D', 'B', 'E') -#define FXFM_ENCODING_ADOBE_CUSTOM FXFM_ENC_TAG('A', 'D', 'B', 'C') -#define FXFM_ENCODING_ADOBE_LATIN_1 FXFM_ENC_TAG('l', 'a', 't', '1') -#define FXFM_ENCODING_OLD_LATIN_2 FXFM_ENC_TAG('l', 'a', 't', '2') -#define FXFM_ENCODING_APPLE_ROMAN FXFM_ENC_TAG('a', 'r', 'm', 'n') -#endif // PDF_ENABLE_XFA - -class CFX_UnicodeEncoding { - public: - explicit CFX_UnicodeEncoding(CFX_Font* pFont); - virtual ~CFX_UnicodeEncoding(); - - virtual uint32_t GlyphFromCharCode(uint32_t charcode); - - protected: - // Unowned, not nullptr. - CFX_Font* m_pFont; -}; - -#ifdef PDF_ENABLE_XFA -class CFX_UnicodeEncodingEx : public CFX_UnicodeEncoding { - public: - CFX_UnicodeEncodingEx(CFX_Font* pFont, uint32_t EncodingID); - ~CFX_UnicodeEncodingEx() override; - - // CFX_UnicodeEncoding: - uint32_t GlyphFromCharCode(uint32_t charcode) override; - - uint32_t CharCodeFromUnicode(FX_WCHAR Unicode) const; - - private: - uint32_t m_nEncodingID; -}; -CFX_UnicodeEncodingEx* FX_CreateFontEncodingEx( - CFX_Font* pFont, - uint32_t nEncodingID = FXFM_ENCODING_NONE); -#endif // PDF_ENABLE_XFA - -#define FXFONT_SUBST_MM 0x01 -#define FXFONT_SUBST_GLYPHPATH 0x04 -#define FXFONT_SUBST_CLEARTYPE 0x08 -#define FXFONT_SUBST_TRANSFORM 0x10 -#define FXFONT_SUBST_NONSYMBOL 0x20 -#define FXFONT_SUBST_EXACT 0x40 -#define FXFONT_SUBST_STANDARD 0x80 - -class CFX_SubstFont { - public: - CFX_SubstFont(); - - void* m_ExtHandle; - - CFX_ByteString m_Family; - - int m_Charset; - - uint32_t m_SubstFlags; - - int m_Weight; - - int m_ItalicAngle; - - FX_BOOL m_bSubstOfCJK; - - int m_WeightCJK; - - FX_BOOL m_bItlicCJK; -}; -#define FX_FONT_FLAG_SERIF 0x01 -#define FX_FONT_FLAG_FIXEDPITCH 0x02 -#define FX_FONT_FLAG_ITALIC 0x04 -#define FX_FONT_FLAG_BOLD 0x08 -#define FX_FONT_FLAG_SYMBOLIC_SYMBOL 0x10 -#define FX_FONT_FLAG_SYMBOLIC_DINGBATS 0x20 -#define FX_FONT_FLAG_MULTIPLEMASTER 0x40 - -class CFX_FontMgr { - public: - CFX_FontMgr(); - ~CFX_FontMgr(); - - void InitFTLibrary(); - - FXFT_Face GetCachedFace(const CFX_ByteString& face_name, - int weight, - FX_BOOL bItalic, - uint8_t*& pFontData); - FXFT_Face AddCachedFace(const CFX_ByteString& face_name, - int weight, - FX_BOOL bItalic, - uint8_t* pData, - uint32_t size, - int face_index); - FXFT_Face GetCachedTTCFace(int ttc_size, - uint32_t checksum, - int font_offset, - uint8_t*& pFontData); - FXFT_Face AddCachedTTCFace(int ttc_size, - uint32_t checksum, - uint8_t* pData, - uint32_t size, - int font_offset); - FXFT_Face GetFileFace(const FX_CHAR* filename, int face_index); - FXFT_Face GetFixedFace(const uint8_t* pData, uint32_t size, int face_index); - void ReleaseFace(FXFT_Face face); - void SetSystemFontInfo(IFX_SystemFontInfo* pFontInfo); - FXFT_Face FindSubstFont(const CFX_ByteString& face_name, - FX_BOOL bTrueType, - uint32_t flags, - int weight, - int italic_angle, - int CharsetCP, - CFX_SubstFont* pSubstFont); - bool GetBuiltinFont(size_t index, const uint8_t** pFontData, uint32_t* size); - CFX_FontMapper* GetBuiltinMapper() const { return m_pBuiltinMapper.get(); } - FXFT_Library GetFTLibrary() const { return m_FTLibrary; } - - private: - std::unique_ptr<CFX_FontMapper> m_pBuiltinMapper; - std::map<CFX_ByteString, CTTFontDesc*> m_FaceMap; - FXFT_Library m_FTLibrary; -}; - -class IFX_FontEnumerator { - public: - virtual void HitFont() = 0; - - virtual void Finish() = 0; - - protected: - virtual ~IFX_FontEnumerator() {} -}; - -class IFX_AdditionalFontEnum { - public: - virtual int CountFiles() = 0; - virtual IFX_FileStream* GetFontFile(int index) = 0; - - protected: - virtual ~IFX_AdditionalFontEnum() {} -}; - -class CFX_FontMapper { - public: - explicit CFX_FontMapper(CFX_FontMgr* mgr); - ~CFX_FontMapper(); - - void SetSystemFontInfo(IFX_SystemFontInfo* pFontInfo); - IFX_SystemFontInfo* GetSystemFontInfo() { return m_pFontInfo; } - void AddInstalledFont(const CFX_ByteString& name, int charset); - void LoadInstalledFonts(); - std::vector<CFX_ByteString> m_InstalledTTFonts; - void SetFontEnumerator(IFX_FontEnumerator* pFontEnumerator) { - m_pFontEnumerator = pFontEnumerator; - } - IFX_FontEnumerator* GetFontEnumerator() const { return m_pFontEnumerator; } - FXFT_Face FindSubstFont(const CFX_ByteString& face_name, - FX_BOOL bTrueType, - uint32_t flags, - int weight, - int italic_angle, - int CharsetCP, - CFX_SubstFont* pSubstFont); -#ifdef PDF_ENABLE_XFA - FXFT_Face FindSubstFontByUnicode(uint32_t dwUnicode, - uint32_t flags, - int weight, - int italic_angle); -#endif // PDF_ENABLE_XFA - FX_BOOL IsBuiltinFace(const FXFT_Face face) const; - int GetFaceSize() const; - CFX_ByteString GetFaceName(int index) const { return m_FaceArray[index]; } - - private: - static const size_t MM_FACE_COUNT = 2; - static const size_t FOXIT_FACE_COUNT = 14; - - CFX_ByteString GetPSNameFromTT(void* hFont); - CFX_ByteString MatchInstalledFonts(const CFX_ByteString& norm_name); - FXFT_Face UseInternalSubst(CFX_SubstFont* pSubstFont, - int iBaseFont, - int italic_angle, - int weight, - int picthfamily); - - FX_BOOL m_bListLoaded; - FXFT_Face m_MMFaces[MM_FACE_COUNT]; - CFX_ByteString m_LastFamily; - CFX_ArrayTemplate<uint32_t> m_CharsetArray; - std::vector<CFX_ByteString> m_FaceArray; - IFX_SystemFontInfo* m_pFontInfo; - FXFT_Face m_FoxitFaces[FOXIT_FACE_COUNT]; - IFX_FontEnumerator* m_pFontEnumerator; - CFX_FontMgr* const m_pFontMgr; -}; - -class IFX_SystemFontInfo { - public: - static IFX_SystemFontInfo* CreateDefault(const char** pUserPaths); - virtual void Release() = 0; - - virtual FX_BOOL EnumFontList(CFX_FontMapper* pMapper) = 0; - virtual void* MapFont(int weight, - FX_BOOL bItalic, - int charset, - int pitch_family, - const FX_CHAR* face, - int& iExact) = 0; - -#ifdef PDF_ENABLE_XFA - virtual void* MapFontByUnicode(uint32_t dwUnicode, - int weight, - FX_BOOL bItalic, - int pitch_family); -#endif // PDF_ENABLE_XFA - - virtual void* GetFont(const FX_CHAR* face) = 0; - virtual uint32_t GetFontData(void* hFont, - uint32_t table, - uint8_t* buffer, - uint32_t size) = 0; - virtual FX_BOOL GetFaceName(void* hFont, CFX_ByteString& name) = 0; - virtual FX_BOOL GetFontCharset(void* hFont, int& charset) = 0; - virtual int GetFaceIndex(void* hFont); - virtual void DeleteFont(void* hFont) = 0; - virtual void* RetainFont(void* hFont); - - protected: - virtual ~IFX_SystemFontInfo() {} -}; - -class CFX_FolderFontInfo : public IFX_SystemFontInfo { - public: - CFX_FolderFontInfo(); - ~CFX_FolderFontInfo() override; - void AddPath(const CFX_ByteStringC& path); - - // IFX_SytemFontInfo: - void Release() override; - FX_BOOL EnumFontList(CFX_FontMapper* pMapper) override; - void* MapFont(int weight, - FX_BOOL bItalic, - int charset, - int pitch_family, - const FX_CHAR* face, - int& bExact) override; -#ifdef PDF_ENABLE_XFA - void* MapFontByUnicode(uint32_t dwUnicode, - int weight, - FX_BOOL bItalic, - int pitch_family) override; -#endif // PDF_ENABLE_XFA - void* GetFont(const FX_CHAR* face) override; - uint32_t GetFontData(void* hFont, - uint32_t table, - uint8_t* buffer, - uint32_t size) override; - void DeleteFont(void* hFont) override; - FX_BOOL GetFaceName(void* hFont, CFX_ByteString& name) override; - FX_BOOL GetFontCharset(void* hFont, int& charset) override; - - protected: - void ScanPath(const CFX_ByteString& path); - void ScanFile(const CFX_ByteString& path); - void ReportFace(const CFX_ByteString& path, - FXSYS_FILE* pFile, - uint32_t filesize, - uint32_t offset); - void* GetSubstFont(const CFX_ByteString& face); - void* FindFont(int weight, - FX_BOOL bItalic, - int charset, - int pitch_family, - const FX_CHAR* family, - FX_BOOL bMatchName); - - std::map<CFX_ByteString, CFX_FontFaceInfo*> m_FontList; - std::vector<CFX_ByteString> m_PathList; - CFX_FontMapper* m_pMapper; -}; - -class CFX_CountedFaceCache { - public: - CFX_FaceCache* m_Obj; - uint32_t m_nCount; -}; - -class CFX_FontCache { - public: - CFX_FontCache(); - ~CFX_FontCache(); - CFX_FaceCache* GetCachedFace(CFX_Font* pFont); - void ReleaseCachedFace(CFX_Font* pFont); - void FreeCache(FX_BOOL bRelease = FALSE); -#ifdef _SKIA_SUPPORT_ - CFX_TypeFace* GetDeviceCache(CFX_Font* pFont); -#endif - - private: - using CFX_FTCacheMap = std::map<FXFT_Face, CFX_CountedFaceCache*>; - CFX_FTCacheMap m_FTFaceMap; - CFX_FTCacheMap m_ExtFaceMap; -}; - -class CFX_AutoFontCache { - public: - CFX_AutoFontCache(CFX_FontCache* pFontCache, CFX_Font* pFont) - : m_pFontCache(pFontCache), m_pFont(pFont) {} - ~CFX_AutoFontCache() { m_pFontCache->ReleaseCachedFace(m_pFont); } - CFX_FontCache* m_pFontCache; - CFX_Font* m_pFont; -}; -#define FX_FONTCACHE_DEFINE(pFontCache, pFont) \ - CFX_AutoFontCache autoFontCache((pFontCache), (pFont)) -class CFX_GlyphBitmap { - public: - int m_Top; - int m_Left; - CFX_DIBitmap m_Bitmap; -}; -class CFX_FaceCache { - public: - explicit CFX_FaceCache(FXFT_Face face); - ~CFX_FaceCache(); - const CFX_GlyphBitmap* LoadGlyphBitmap(CFX_Font* pFont, - uint32_t glyph_index, - FX_BOOL bFontStyle, - const CFX_Matrix* pMatrix, - int dest_width, - int anti_alias, - int& text_flags); - const CFX_PathData* LoadGlyphPath(CFX_Font* pFont, - uint32_t glyph_index, - int dest_width); - -#ifdef _SKIA_SUPPORT_ - CFX_TypeFace* GetDeviceCache(CFX_Font* pFont); -#endif - - private: - CFX_GlyphBitmap* RenderGlyph(CFX_Font* pFont, - uint32_t glyph_index, - FX_BOOL bFontStyle, - const CFX_Matrix* pMatrix, - int dest_width, - int anti_alias); - CFX_GlyphBitmap* RenderGlyph_Nativetext(CFX_Font* pFont, - uint32_t glyph_index, - const CFX_Matrix* pMatrix, - int dest_width, - int anti_alias); - CFX_GlyphBitmap* LookUpGlyphBitmap(CFX_Font* pFont, - const CFX_Matrix* pMatrix, - CFX_ByteStringC& FaceGlyphsKey, - uint32_t glyph_index, - FX_BOOL bFontStyle, - int dest_width, - int anti_alias); - void InitPlatform(); - void DestroyPlatform(); - - FXFT_Face const m_Face; - std::map<CFX_ByteString, CFX_SizeGlyphCache*> m_SizeMap; - std::map<uint32_t, CFX_PathData*> m_PathMap; - CFX_DIBitmap* m_pBitmap; -#ifdef _SKIA_SUPPORT_ - CFX_TypeFace* m_pTypeface; -#endif -}; - -struct FXTEXT_GLYPHPOS { - const CFX_GlyphBitmap* m_pGlyph; - int m_OriginX; - int m_OriginY; - FX_FLOAT m_fOriginX; - FX_FLOAT m_fOriginY; -}; - -FX_RECT FXGE_GetGlyphsBBox(FXTEXT_GLYPHPOS* pGlyphAndPos, - int nChars, - int anti_alias, - FX_FLOAT retinaScaleX = 1.0f, - FX_FLOAT retinaScaleY = 1.0f); - -class IFX_GSUBTable { - public: - static IFX_GSUBTable* Create(CFX_Font* pFont); - virtual FX_BOOL GetVerticalGlyph(uint32_t glyphnum, uint32_t* vglyphnum) = 0; - - protected: - virtual ~IFX_GSUBTable() {} -}; - -CFX_ByteString GetNameFromTT(const uint8_t* name_table, - uint32_t name_table_size, - uint32_t name); - -int PDF_GetStandardFontName(CFX_ByteString* name); - -#endif // CORE_INCLUDE_FXGE_FX_FONT_H_ diff --git a/core/include/fxge/fx_freetype.h b/core/include/fxge/fx_freetype.h deleted file mode 100644 index 6920d86aca..0000000000 --- a/core/include/fxge/fx_freetype.h +++ /dev/null @@ -1,180 +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_INCLUDE_FXGE_FX_FREETYPE_H_ -#define CORE_INCLUDE_FXGE_FX_FREETYPE_H_ - -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_GLYPH_H -#include FT_LCD_FILTER_H -#include FT_MULTIPLE_MASTERS_H -#include FT_OUTLINE_H -#include FT_TRUETYPE_TABLES_H - -#ifdef __cplusplus -extern "C" { -#endif - -#define FXFT_ENCODING_UNICODE FT_ENCODING_UNICODE -#define FXFT_ENCODING_ADOBE_STANDARD FT_ENCODING_ADOBE_STANDARD -#define FXFT_ENCODING_ADOBE_EXPERT FT_ENCODING_ADOBE_EXPERT -#define FXFT_ENCODING_ADOBE_LATIN_1 FT_ENCODING_ADOBE_LATIN_1 -#define FXFT_ENCODING_APPLE_ROMAN FT_ENCODING_APPLE_ROMAN -#define FXFT_ENCODING_ADOBE_CUSTOM FT_ENCODING_ADOBE_CUSTOM -#define FXFT_ENCODING_MS_SYMBOL FT_ENCODING_MS_SYMBOL -#define FXFT_ENCODING_GB2312 FT_ENCODING_GB2312 -#define FXFT_ENCODING_BIG5 FT_ENCODING_BIG5 -#define FXFT_ENCODING_SJIS FT_ENCODING_SJIS -#define FXFT_ENCODING_JOHAB FT_ENCODING_JOHAB -#define FXFT_ENCODING_WANSUNG FT_ENCODING_WANSUNG -#define FXFT_LOAD_NO_SCALE FT_LOAD_NO_SCALE -#define FXFT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH \ - FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH -#define FXFT_RENDER_MODE_LCD FT_RENDER_MODE_LCD -#define FXFT_RENDER_MODE_MONO FT_RENDER_MODE_MONO -#define FXFT_RENDER_MODE_NORMAL FT_RENDER_MODE_NORMAL -#define FXFT_LOAD_IGNORE_TRANSFORM FT_LOAD_IGNORE_TRANSFORM -#define FXFT_LOAD_NO_BITMAP FT_LOAD_NO_BITMAP -#define FXFT_LOAD_NO_HINTING FT_LOAD_NO_HINTING -#define FXFT_PIXEL_MODE_MONO FT_PIXEL_MODE_MONO -#define FXFT_STYLE_FLAG_ITALIC FT_STYLE_FLAG_ITALIC -#define FXFT_STYLE_FLAG_BOLD FT_STYLE_FLAG_BOLD -#define FXFT_FACE_FLAG_SFNT FT_FACE_FLAG_SFNT -#define FXFT_FACE_FLAG_TRICKY (1L << 13) -typedef FT_MM_Var* FXFT_MM_Var; -typedef FT_Bitmap* FXFT_Bitmap; -#define FXFT_Matrix FT_Matrix -#define FXFT_Vector FT_Vector -#define FXFT_Outline_Funcs FT_Outline_Funcs -typedef FT_Open_Args FXFT_Open_Args; -typedef FT_StreamRec FXFT_StreamRec; -typedef FT_StreamRec* FXFT_Stream; -typedef FT_BBox FXFT_BBox; -typedef FT_Glyph FXFT_Glyph; -typedef FT_CharMap FXFT_CharMap; -#define FXFT_GLYPH_BBOX_PIXELS FT_GLYPH_BBOX_PIXELS -#define FXFT_Open_Face(library, args, index, face) \ - FT_Open_Face((FT_Library)(library), args, index, (FT_Face*)(face)) -#define FXFT_Done_Face(face) FT_Done_Face((FT_Face)(face)) -#define FXFT_Done_FreeType(library) FT_Done_FreeType((FT_Library)(library)) -#define FXFT_Init_FreeType(library) FT_Init_FreeType((FT_Library*)(library)) -#define FXFT_New_Memory_Face(library, base, size, index, face) \ - FT_New_Memory_Face((FT_Library)(library), base, size, index, (FT_Face*)(face)) -#define FXFT_New_Face(library, filename, index, face) \ - FT_New_Face((FT_Library)(library), filename, index, (FT_Face*)(face)) -#define FXFT_Get_Face_FreeType(face) ((FT_Face)face)->driver->root.library -#define FXFT_Select_Charmap(face, encoding) \ - FT_Select_Charmap((FT_Face)face, (FT_Encoding)encoding) -#define FXFT_Set_Charmap(face, charmap) \ - FT_Set_Charmap((FT_Face)face, (FT_CharMap)charmap) -#define FXFT_Load_Glyph(face, glyph_index, flags) \ - FT_Load_Glyph((FT_Face)face, glyph_index, flags) -#define FXFT_Get_Char_Index(face, code) FT_Get_Char_Index((FT_Face)face, code) -#define FXFT_Get_Glyph_Name(face, index, buffer, size) \ - FT_Get_Glyph_Name((FT_Face)face, index, buffer, size) -#define FXFT_Get_Name_Index(face, name) FT_Get_Name_Index((FT_Face)face, name) -#define FXFT_Has_Glyph_Names(face) \ - (((FT_Face)face)->face_flags & FT_FACE_FLAG_GLYPH_NAMES) -#define FXFT_Get_Postscript_Name(face) FT_Get_Postscript_Name((FT_Face)face) -#define FXFT_Load_Sfnt_Table(face, tag, offset, buffer, length) \ - FT_Load_Sfnt_Table((FT_Face)face, tag, offset, buffer, length) -#define FXFT_Get_First_Char(face, glyph_index) \ - FT_Get_First_Char((FT_Face)face, glyph_index) -#define FXFT_Get_Next_Char(face, code, glyph_index) \ - FT_Get_Next_Char((FT_Face)face, code, glyph_index) -#define FXFT_Clear_Face_External_Stream(face) \ - (((FT_Face)face)->face_flags &= ~FT_FACE_FLAG_EXTERNAL_STREAM) -#define FXFT_Get_Face_External_Stream(face) \ - (((FT_Face)face)->face_flags & FT_FACE_FLAG_EXTERNAL_STREAM) -#define FXFT_Is_Face_TT_OT(face) \ - (((FT_Face)face)->face_flags & FT_FACE_FLAG_SFNT) -#define FXFT_Is_Face_Tricky(face) \ - (((FT_Face)face)->face_flags & FXFT_FACE_FLAG_TRICKY) -#define FXFT_Is_Face_fixedwidth(face) \ - (((FT_Face)face)->face_flags & FT_FACE_FLAG_FIXED_WIDTH) -#define FXFT_Get_Face_Stream_Base(face) ((FT_Face)face)->stream->base -#define FXFT_Get_Face_Stream_Size(face) ((FT_Face)face)->stream->size -#define FXFT_Get_Face_Family_Name(face) ((FT_Face)face)->family_name -#define FXFT_Get_Face_Style_Name(face) ((FT_Face)face)->style_name -#define FXFT_Get_Face_Numfaces(face) ((FT_Face)face)->num_faces -#define FXFT_Get_Face_Faceindex(face) ((FT_Face)face)->face_index -#define FXFT_Is_Face_Italic(face) \ - (((FT_Face)face)->style_flags & FT_STYLE_FLAG_ITALIC) -#define FXFT_Is_Face_Bold(face) \ - (((FT_Face)face)->style_flags & FT_STYLE_FLAG_BOLD) -#define FXFT_Get_Face_Charmaps(face) ((FT_Face)face)->charmaps -#define FXFT_Get_Glyph_HoriBearingX(face) \ - ((FT_Face)face)->glyph->metrics.horiBearingX -#define FXFT_Get_Glyph_HoriBearingY(face) \ - ((FT_Face)face)->glyph->metrics.horiBearingY -#define FXFT_Get_Glyph_Width(face) ((FT_Face)face)->glyph->metrics.width -#define FXFT_Get_Glyph_Height(face) ((FT_Face)face)->glyph->metrics.height -#define FXFT_Get_Face_CharmapCount(face) ((FT_Face)face)->num_charmaps -#define FXFT_Get_Charmap_Encoding(charmap) ((FT_CharMap)charmap)->encoding -#define FXFT_Get_Face_Charmap(face) ((FT_Face)face)->charmap -#define FXFT_Get_Charmap_PlatformID(charmap) ((FT_CharMap)charmap)->platform_id -#define FXFT_Get_Charmap_EncodingID(charmap) ((FT_CharMap)charmap)->encoding_id -#define FXFT_Get_Face_UnitsPerEM(face) ((FT_Face)face)->units_per_EM -#define FXFT_Get_Face_xMin(face) ((FT_Face)face)->bbox.xMin -#define FXFT_Get_Face_xMax(face) ((FT_Face)face)->bbox.xMax -#define FXFT_Get_Face_yMin(face) ((FT_Face)face)->bbox.yMin -#define FXFT_Get_Face_yMax(face) ((FT_Face)face)->bbox.yMax -#define FXFT_Get_Face_Height(face) ((FT_Face)face)->height -#define FXFT_Get_Face_UnderLineThickness(face) \ - ((FT_Face)face)->underline_thickness -#define FXFT_Get_Face_UnderLinePosition(face) \ - ((FT_Face)face)->underline_position -#define FXFT_Get_Face_MaxAdvanceWidth(face) ((FT_Face)face)->max_advance_width -#define FXFT_Get_Face_Ascender(face) ((FT_Face)face)->ascender -#define FXFT_Get_Face_Descender(face) ((FT_Face)face)->descender -#define FXFT_Get_Glyph_HoriAdvance(face) \ - ((FT_Face)face)->glyph->metrics.horiAdvance -#define FXFT_Get_MM_Axis(var, index) &static_cast<FT_MM_Var*>(var)->axis[index] -#define FXFT_Get_MM_Axis_Min(axis) ((FT_Var_Axis*)axis)->minimum -#define FXFT_Get_MM_Axis_Max(axis) ((FT_Var_Axis*)axis)->maximum -#define FXFT_Get_MM_Axis_Def(axis) ((FT_Var_Axis*)axis)->def -#define FXFT_Alloc(library, size) \ - ((FT_Library)library)->memory->alloc(((FT_Library)library)->memory, size) -#define FXFT_Free(face, p) \ - ((FT_Face)face)->memory->free(((FT_Face)face)->memory, p) -#define FXFT_Get_Glyph_Outline(face) &static_cast<FT_Face>(face)->glyph->outline -#define FXFT_Get_Outline_Bbox(outline, cbox) FT_Outline_Get_CBox(outline, cbox) -#define FXFT_Render_Glyph(face, mode) \ - FT_Render_Glyph(((FT_Face)face)->glyph, (enum FT_Render_Mode_)mode) -#define FXFT_Get_MM_Var(face, p) FT_Get_MM_Var((FT_Face)face, p) -#define FXFT_Set_MM_Design_Coordinates(face, n, p) \ - FT_Set_MM_Design_Coordinates((FT_Face)face, n, p) -#define FXFT_Set_Pixel_Sizes(face, w, h) FT_Set_Pixel_Sizes((FT_Face)face, w, h) -#define FXFT_Set_Transform(face, m, d) FT_Set_Transform((FT_Face)face, m, d) -#define FXFT_Outline_Embolden(outline, s) FT_Outline_Embolden(outline, s) -#define FXFT_Get_Glyph_Bitmap(face) &static_cast<FT_Face>(face)->glyph->bitmap -#define FXFT_Get_Bitmap_Width(bitmap) ((FT_Bitmap*)bitmap)->width -#define FXFT_Get_Bitmap_Rows(bitmap) ((FT_Bitmap*)bitmap)->rows -#define FXFT_Get_Bitmap_PixelMode(bitmap) ((FT_Bitmap*)bitmap)->pixel_mode -#define FXFT_Get_Bitmap_Pitch(bitmap) ((FT_Bitmap*)bitmap)->pitch -#define FXFT_Get_Bitmap_Buffer(bitmap) ((FT_Bitmap*)bitmap)->buffer -#define FXFT_Get_Glyph_BitmapLeft(face) ((FT_Face)face)->glyph->bitmap_left -#define FXFT_Get_Glyph_BitmapTop(face) ((FT_Face)face)->glyph->bitmap_top -#define FXFT_Outline_Decompose(outline, funcs, params) \ - FT_Outline_Decompose(outline, funcs, params) -#define FXFT_Set_Char_Size(face, char_width, char_height, horz_resolution, \ - vert_resolution) \ - FT_Set_Char_Size(face, char_width, char_height, horz_resolution, \ - vert_resolution) -#define FXFT_Get_Glyph(slot, aglyph) FT_Get_Glyph(slot, aglyph) -#define FXFT_Glyph_Get_CBox(glyph, bbox_mode, acbox) \ - FT_Glyph_Get_CBox(glyph, bbox_mode, acbox) -#define FXFT_Done_Glyph(glyph) FT_Done_Glyph(glyph) -#define FXFT_Library_SetLcdFilter(library, filter) \ - FT_Library_SetLcdFilter((FT_Library)(library), filter) -int FXFT_unicode_from_adobe_name(const char* glyph_name); -void FXFT_adobe_name_from_unicode(char* name, wchar_t unicode); -#ifdef __cplusplus -}; -#endif - -#endif // CORE_INCLUDE_FXGE_FX_FREETYPE_H_ diff --git a/core/include/fxge/fx_ge.h b/core/include/fxge/fx_ge.h deleted file mode 100644 index 3eb9303a80..0000000000 --- a/core/include/fxge/fx_ge.h +++ /dev/null @@ -1,733 +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_INCLUDE_FXGE_FX_GE_H_ -#define CORE_INCLUDE_FXGE_FX_GE_H_ - -#include "core/include/fxge/fx_dib.h" -#include "core/include/fxge/fx_font.h" - -class CFX_Font; -class CFX_FontMgr; -class CFX_FontCache; -class CFX_FaceCache; -class CPDF_ShadingPattern; -class IFX_RenderDeviceDriver; -class CCodec_ModuleMgr; -class SkPictureRecorder; - -class CFX_GEModule { - public: - static void Create(const char** pUserFontPaths); - - static void Use(CFX_GEModule* pMgr); - - static CFX_GEModule* Get(); - - static void Destroy(); - - public: - CFX_FontCache* GetFontCache(); - CFX_FontMgr* GetFontMgr() { return m_pFontMgr; } - void SetTextGamma(FX_FLOAT gammaValue); - const uint8_t* GetTextGammaTable(); - - void SetCodecModule(CCodec_ModuleMgr* pCodecModule) { - m_pCodecModule = pCodecModule; - } - CCodec_ModuleMgr* GetCodecModule() { return m_pCodecModule; } - FXFT_Library m_FTLibrary; - void* GetPlatformData() { return m_pPlatformData; } - - protected: - explicit CFX_GEModule(const char** pUserFontPaths); - - ~CFX_GEModule(); - void InitPlatform(); - void DestroyPlatform(); - - private: - uint8_t m_GammaValue[256]; - CFX_FontCache* m_pFontCache; - CFX_FontMgr* m_pFontMgr; - CCodec_ModuleMgr* m_pCodecModule; - void* m_pPlatformData; - const char** m_pUserFontPaths; -}; -typedef struct { - FX_FLOAT m_PointX; - - FX_FLOAT m_PointY; - - int m_Flag; -} FX_PATHPOINT; -#define FXPT_CLOSEFIGURE 0x01 -#define FXPT_LINETO 0x02 -#define FXPT_BEZIERTO 0x04 -#define FXPT_MOVETO 0x06 -#define FXPT_TYPE 0x06 -#define FXFILL_ALTERNATE 1 -#define FXFILL_WINDING 2 -class CFX_ClipRgn { - public: - CFX_ClipRgn(int device_width, int device_height); - - CFX_ClipRgn(const FX_RECT& rect); - - CFX_ClipRgn(const CFX_ClipRgn& src); - - ~CFX_ClipRgn(); - - typedef enum { RectI, MaskF } ClipType; - - void Reset(const FX_RECT& rect); - - ClipType GetType() const { return m_Type; } - - const FX_RECT& GetBox() const { return m_Box; } - - CFX_DIBitmapRef GetMask() const { return m_Mask; } - - void IntersectRect(const FX_RECT& rect); - - void IntersectMaskF(int left, int top, CFX_DIBitmapRef Mask); - - protected: - ClipType m_Type; - - FX_RECT m_Box; - - CFX_DIBitmapRef m_Mask; - - void IntersectMaskRect(FX_RECT rect, FX_RECT mask_box, CFX_DIBitmapRef Mask); -}; -#define FX_GAMMA(value) (value) -#define FX_GAMMA_INVERSE(value) (value) -inline FX_ARGB ArgbGamma(FX_ARGB argb) { - return argb; -} -inline FX_ARGB ArgbGammaInverse(FX_ARGB argb) { - return argb; -} -class CFX_PathData { - public: - CFX_PathData(); - - CFX_PathData(const CFX_PathData& src); - - ~CFX_PathData(); - - int GetPointCount() const { return m_PointCount; } - - int GetFlag(int index) const { return m_pPoints[index].m_Flag; } - - FX_FLOAT GetPointX(int index) const { return m_pPoints[index].m_PointX; } - - FX_FLOAT GetPointY(int index) const { return m_pPoints[index].m_PointY; } - - FX_PATHPOINT* GetPoints() const { return m_pPoints; } - - void SetPointCount(int nPoints); - void AllocPointCount(int nPoints); - void AddPointCount(int addPoints); - - CFX_FloatRect GetBoundingBox() const; - - CFX_FloatRect GetBoundingBox(FX_FLOAT line_width, FX_FLOAT miter_limit) const; - - void Transform(const CFX_Matrix* pMatrix); - - FX_BOOL IsRect() const; - - FX_BOOL GetZeroAreaPath(CFX_PathData& NewPath, - CFX_Matrix* pMatrix, - FX_BOOL& bThin, - FX_BOOL bAdjust) const; - - FX_BOOL IsRect(const CFX_Matrix* pMatrix, CFX_FloatRect* rect) const; - - void Append(const CFX_PathData* pSrc, const CFX_Matrix* pMatrix); - void AppendRect(FX_FLOAT left, FX_FLOAT bottom, FX_FLOAT right, FX_FLOAT top); - - void SetPoint(int index, FX_FLOAT x, FX_FLOAT y, int flag); - - void TrimPoints(int nPoints); - - void Copy(const CFX_PathData& src); - - protected: - friend class CPDF_Path; - - int m_PointCount; - - FX_PATHPOINT* m_pPoints; - - int m_AllocCount; -}; -class CFX_GraphStateData { - public: - CFX_GraphStateData(); - - CFX_GraphStateData(const CFX_GraphStateData& src); - - ~CFX_GraphStateData(); - - void Copy(const CFX_GraphStateData& src); - - void SetDashCount(int count); - - typedef enum { LineCapButt = 0, LineCapRound = 1, LineCapSquare = 2 } LineCap; - LineCap m_LineCap; - int m_DashCount; - FX_FLOAT* m_DashArray; - FX_FLOAT m_DashPhase; - - typedef enum { - LineJoinMiter = 0, - LineJoinRound = 1, - LineJoinBevel = 2, - } LineJoin; - LineJoin m_LineJoin; - FX_FLOAT m_MiterLimit; - FX_FLOAT m_LineWidth; -}; -#define FXDC_DEVICE_CLASS 1 -#define FXDC_PIXEL_WIDTH 2 -#define FXDC_PIXEL_HEIGHT 3 -#define FXDC_BITS_PIXEL 4 -#define FXDC_HORZ_SIZE 5 -#define FXDC_VERT_SIZE 6 -#define FXDC_RENDER_CAPS 7 -#define FXDC_DITHER_BITS 8 -#define FXDC_DISPLAY 1 -#define FXDC_PRINTER 2 -#define FXRC_GET_BITS 0x01 -#define FXRC_BIT_MASK 0x02 -#define FXRC_ALPHA_MASK 0x04 -#define FXRC_ALPHA_PATH 0x10 -#define FXRC_ALPHA_IMAGE 0x20 -#define FXRC_ALPHA_OUTPUT 0x40 -#define FXRC_BLEND_MODE 0x80 -#define FXRC_SOFT_CLIP 0x100 -#define FXRC_CMYK_OUTPUT 0x200 -#define FXRC_BITMASK_OUTPUT 0x400 -#define FXRC_BYTEMASK_OUTPUT 0x800 -#define FXRENDER_IMAGE_LOSSY 0x1000 -#define FXRC_FILLSTROKE_PATH 0x2000 -#define FXRC_SHADING 0x4000 -#define FXFILL_ALTERNATE 1 -#define FXFILL_WINDING 2 -#define FXFILL_FULLCOVER 4 -#define FXFILL_RECT_AA 8 -#define FX_FILL_STROKE 16 -#define FX_STROKE_ADJUST 32 -#define FX_STROKE_TEXT_MODE 64 -#define FX_FILL_TEXT_MODE 128 -#define FX_ZEROAREA_FILL 256 -#define FXFILL_NOPATHSMOOTH 512 -#define FXTEXT_CLEARTYPE 0x01 -#define FXTEXT_BGR_STRIPE 0x02 -#define FXTEXT_PRINTGRAPHICTEXT 0x04 -#define FXTEXT_NO_NATIVETEXT 0x08 -#define FXTEXT_PRINTIMAGETEXT 0x10 -#define FXTEXT_NOSMOOTH 0x20 -typedef struct { - uint32_t m_GlyphIndex; - FX_FLOAT m_OriginX, m_OriginY; - int m_FontCharWidth; - FX_BOOL m_bGlyphAdjust; - FX_FLOAT m_AdjustMatrix[4]; - uint32_t m_ExtGID; - FX_BOOL m_bFontStyle; -} FXTEXT_CHARPOS; - -class CFX_RenderDevice { - public: - CFX_RenderDevice(); - virtual ~CFX_RenderDevice(); - - void SetDeviceDriver(IFX_RenderDeviceDriver* pDriver); - IFX_RenderDeviceDriver* GetDeviceDriver() const { return m_pDeviceDriver; } - - FX_BOOL StartRendering(); - void EndRendering(); - void SaveState(); - void RestoreState(FX_BOOL bKeepSaved = FALSE); - - int GetWidth() const { return m_Width; } - int GetHeight() const { return m_Height; } - int GetDeviceClass() const { return m_DeviceClass; } - int GetBPP() const { return m_bpp; } - int GetRenderCaps() const { return m_RenderCaps; } - int GetDeviceCaps(int id) const; - CFX_Matrix GetCTM() const; - - CFX_DIBitmap* GetBitmap() const { return m_pBitmap; } - void SetBitmap(CFX_DIBitmap* pBitmap) { m_pBitmap = pBitmap; } - - FX_BOOL CreateCompatibleBitmap(CFX_DIBitmap* pDIB, - int width, - int height) const; - - const FX_RECT& GetClipBox() const { return m_ClipBox; } - - FX_BOOL SetClip_PathFill(const CFX_PathData* pPathData, - const CFX_Matrix* pObject2Device, - int fill_mode); - - FX_BOOL SetClip_Rect(const FX_RECT& pRect); - FX_BOOL SetClip_PathStroke(const CFX_PathData* pPathData, - const CFX_Matrix* pObject2Device, - const CFX_GraphStateData* pGraphState); - - FX_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 alpha_flag = 0, - void* pIccTransform = NULL, - int blend_type = FXDIB_BLEND_NORMAL); - - FX_BOOL SetPixel(int x, - int y, - uint32_t color, - int alpha_flag = 0, - void* pIccTransform = NULL); - - FX_BOOL FillRect(const FX_RECT* pRect, - uint32_t color, - int alpha_flag = 0, - void* pIccTransform = NULL, - int blend_type = FXDIB_BLEND_NORMAL); - - FX_BOOL DrawCosmeticLine(FX_FLOAT x1, - FX_FLOAT y1, - FX_FLOAT x2, - FX_FLOAT y2, - uint32_t color, - int fill_mode = 0, - int alpha_flag = 0, - void* pIccTransform = NULL, - int blend_type = FXDIB_BLEND_NORMAL); - - FX_BOOL GetDIBits(CFX_DIBitmap* pBitmap, - int left, - int top, - void* pIccTransform = NULL); - - CFX_DIBitmap* GetBackDrop(); - - FX_BOOL SetDIBits(const CFX_DIBSource* pBitmap, - int left, - int top, - int blend_type = FXDIB_BLEND_NORMAL, - void* pIccTransform = NULL); - - FX_BOOL StretchDIBits(const CFX_DIBSource* pBitmap, - int left, - int top, - int dest_width, - int dest_height, - uint32_t flags = 0, - void* pIccTransform = NULL, - int blend_type = FXDIB_BLEND_NORMAL); - - FX_BOOL SetBitMask(const CFX_DIBSource* pBitmap, - int left, - int top, - uint32_t color, - int alpha_flag = 0, - void* pIccTransform = NULL); - - FX_BOOL StretchBitMask(const CFX_DIBSource* pBitmap, - int left, - int top, - int dest_width, - int dest_height, - uint32_t color, - uint32_t flags = 0, - int alpha_flag = 0, - void* pIccTransform = NULL); - - FX_BOOL StartDIBits(const CFX_DIBSource* pBitmap, - int bitmap_alpha, - uint32_t color, - const CFX_Matrix* pMatrix, - uint32_t flags, - void*& handle, - int alpha_flag = 0, - void* pIccTransform = NULL, - int blend_type = FXDIB_BLEND_NORMAL); - - FX_BOOL ContinueDIBits(void* handle, IFX_Pause* pPause); - - void CancelDIBits(void* handle); - - FX_BOOL DrawNormalText(int nChars, - const FXTEXT_CHARPOS* pCharPos, - CFX_Font* pFont, - CFX_FontCache* pCache, - FX_FLOAT font_size, - const CFX_Matrix* pText2Device, - uint32_t fill_color, - uint32_t text_flags, - int alpha_flag = 0, - void* pIccTransform = NULL); - - FX_BOOL DrawTextPath(int nChars, - const FXTEXT_CHARPOS* pCharPos, - CFX_Font* pFont, - CFX_FontCache* pCache, - FX_FLOAT font_size, - const CFX_Matrix* pText2User, - const CFX_Matrix* pUser2Device, - const CFX_GraphStateData* pGraphState, - uint32_t fill_color, - uint32_t stroke_color, - CFX_PathData* pClippingPath, - int nFlag = 0, - int alpha_flag = 0, - void* pIccTransform = NULL, - int blend_type = FXDIB_BLEND_NORMAL); - virtual void Begin() {} - virtual void End() {} - - private: - void InitDeviceInfo(); - void UpdateClipBox(); - FX_BOOL DrawFillStrokePath(const CFX_PathData* pPathData, - const CFX_Matrix* pObject2Device, - const CFX_GraphStateData* pGraphState, - uint32_t fill_color, - uint32_t stroke_color, - int fill_mode, - int alpha_flag, - void* pIccTransform, - int blend_type); - - CFX_DIBitmap* m_pBitmap; - int m_Width; - int m_Height; - int m_bpp; - int m_RenderCaps; - int m_DeviceClass; - FX_RECT m_ClipBox; - IFX_RenderDeviceDriver* m_pDeviceDriver; -}; - -class CFX_FxgeDevice : public CFX_RenderDevice { - public: - CFX_FxgeDevice(); - ~CFX_FxgeDevice() override; - - bool Attach(CFX_DIBitmap* pBitmap, - int dither_bits = 0, - bool bRgbByteOrder = false, - CFX_DIBitmap* pOriDevice = NULL, - bool bGroupKnockout = false); - - bool Create(int width, - int height, - FXDIB_Format format, - int dither_bits = 0, - CFX_DIBitmap* pOriDevice = NULL); - - protected: - bool m_bOwnedBitmap; -}; - -class CFX_SkiaDevice : public CFX_RenderDevice { - public: - CFX_SkiaDevice(); - ~CFX_SkiaDevice() override; - - FX_BOOL Attach(CFX_DIBitmap* pBitmap, - int dither_bits = 0, - FX_BOOL bRgbByteOrder = FALSE, - CFX_DIBitmap* pOriDevice = NULL, - FX_BOOL bGroupKnockout = FALSE); - - FX_BOOL AttachRecorder(SkPictureRecorder* recorder); - - FX_BOOL Create(int width, - int height, - FXDIB_Format format, - int dither_bits = 0, - CFX_DIBitmap* pOriDevice = NULL); - - SkPictureRecorder* CreateRecorder(int size_x, int size_y); - - protected: - FX_BOOL m_bOwnedBitmap; -}; - -class IFX_RenderDeviceDriver { - public: - static IFX_RenderDeviceDriver* CreateFxgeDriver( - CFX_DIBitmap* pBitmap, - FX_BOOL bRgbByteOrder = FALSE, - CFX_DIBitmap* pOriDevice = NULL, - FX_BOOL bGroupKnockout = FALSE); - - virtual ~IFX_RenderDeviceDriver() {} - virtual void Begin() {} - virtual void End() {} - - virtual int GetDeviceCaps(int caps_id) = 0; - - virtual CFX_Matrix GetCTM() const { return CFX_Matrix(); } - - virtual FX_BOOL IsPSPrintDriver() { return FALSE; } - - virtual FX_BOOL StartRendering() { return TRUE; } - - virtual void EndRendering() {} - - virtual void SaveState() = 0; - - virtual void RestoreState(FX_BOOL bKeepSaved = FALSE) = 0; - - virtual FX_BOOL SetClip_PathFill(const CFX_PathData* pPathData, - const CFX_Matrix* pObject2Device, - int fill_mode) = 0; - - virtual FX_BOOL SetClip_PathStroke(const CFX_PathData* pPathData, - const CFX_Matrix* pObject2Device, - const CFX_GraphStateData* pGraphState) { - return FALSE; - } - - virtual FX_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 alpha_flag = 0, - void* pIccTransform = NULL, - int blend_type = FXDIB_BLEND_NORMAL) = 0; - - virtual FX_BOOL SetPixel(int x, - int y, - uint32_t color, - int alpha_flag = 0, - void* pIccTransform = NULL) { - return FALSE; - } - - virtual FX_BOOL FillRect(const FX_RECT* pRect, - uint32_t fill_color, - int alpha_flag = 0, - void* pIccTransform = NULL, - int blend_type = FXDIB_BLEND_NORMAL) { - return FALSE; - } - - virtual FX_BOOL DrawCosmeticLine(FX_FLOAT x1, - FX_FLOAT y1, - FX_FLOAT x2, - FX_FLOAT y2, - uint32_t color, - int alpha_flag = 0, - void* pIccTransform = NULL, - int blend_type = FXDIB_BLEND_NORMAL) { - return FALSE; - } - - virtual FX_BOOL GetClipBox(FX_RECT* pRect) = 0; - - virtual FX_BOOL GetDIBits(CFX_DIBitmap* pBitmap, - int left, - int top, - void* pIccTransform = NULL, - FX_BOOL bDEdge = FALSE) { - return FALSE; - } - virtual CFX_DIBitmap* GetBackDrop() { return NULL; } - - virtual FX_BOOL SetDIBits(const CFX_DIBSource* pBitmap, - uint32_t color, - const FX_RECT* pSrcRect, - int dest_left, - int dest_top, - int blend_type, - int alpha_flag = 0, - void* pIccTransform = NULL) = 0; - - virtual FX_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 alpha_flag = 0, - void* pIccTransform = NULL, - int blend_type = FXDIB_BLEND_NORMAL) = 0; - - virtual FX_BOOL StartDIBits(const CFX_DIBSource* pBitmap, - int bitmap_alpha, - uint32_t color, - const CFX_Matrix* pMatrix, - uint32_t flags, - void*& handle, - int alpha_flag = 0, - void* pIccTransform = NULL, - int blend_type = FXDIB_BLEND_NORMAL) = 0; - - virtual FX_BOOL ContinueDIBits(void* handle, IFX_Pause* pPause) { - 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_Matrix* pObject2Device, - FX_FLOAT font_size, - uint32_t color, - int alpha_flag = 0, - void* pIccTransform = NULL) { - return FALSE; - } - - virtual void* GetPlatformSurface() const { return NULL; } - virtual int GetDriverType() const { return 0; } - virtual void ClearDriver() {} - - virtual FX_BOOL DrawShading(CPDF_ShadingPattern* pPattern, - CFX_Matrix* pMatrix, - int alpha, - FX_BOOL bAlphaMode) { - return false; - } -}; - -class IFX_PSOutput { - public: - virtual void Release() = 0; - virtual void OutputPS(const FX_CHAR* str, int len) = 0; - - protected: - virtual ~IFX_PSOutput() {} -}; - -class CPSFont; -class CFX_PSRenderer { - public: - CFX_PSRenderer(); - - ~CFX_PSRenderer(); - - void Init(IFX_PSOutput* pOutput, - int ps_level, - int width, - int height, - FX_BOOL bCmykOutput); - FX_BOOL StartRendering(); - void EndRendering(); - - void SaveState(); - - void RestoreState(FX_BOOL bKeepSaved = FALSE); - - void SetClip_PathFill(const CFX_PathData* pPathData, - const CFX_Matrix* pObject2Device, - int fill_mode); - - void SetClip_PathStroke(const CFX_PathData* pPathData, - const CFX_Matrix* pObject2Device, - const CFX_GraphStateData* pGraphState); - - FX_RECT GetClipBox() { return m_ClipBox; } - - FX_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 alpha_flag = 0, - void* pIccTransform = NULL); - - FX_BOOL SetDIBits(const CFX_DIBSource* pBitmap, - uint32_t color, - int dest_left, - int dest_top, - int alpha_flag = 0, - void* pIccTransform = NULL); - - FX_BOOL StretchDIBits(const CFX_DIBSource* pBitmap, - uint32_t color, - int dest_left, - int dest_top, - int dest_width, - int dest_height, - uint32_t flags, - int alpha_flag = 0, - void* pIccTransform = NULL); - - FX_BOOL DrawDIBits(const CFX_DIBSource* pBitmap, - uint32_t color, - const CFX_Matrix* pMatrix, - uint32_t flags, - int alpha_flag = 0, - void* pIccTransform = NULL); - - FX_BOOL DrawText(int nChars, - const FXTEXT_CHARPOS* pCharPos, - CFX_Font* pFont, - CFX_FontCache* pCache, - const CFX_Matrix* pObject2Device, - FX_FLOAT font_size, - uint32_t color, - int alpha_flag = 0, - void* pIccTransform = NULL); - - private: - IFX_PSOutput* m_pOutput; - - int m_PSLevel; - - CFX_GraphStateData m_CurGraphState; - - FX_BOOL m_bGraphStateSet; - - FX_BOOL m_bCmykOutput; - - FX_BOOL m_bColorSet; - - uint32_t m_LastColor; - - FX_RECT m_ClipBox; - - CFX_ArrayTemplate<CPSFont*> m_PSFontList; - - CFX_ArrayTemplate<FX_RECT> m_ClipBoxStack; - FX_BOOL m_bInited; - - void OutputPath(const CFX_PathData* pPathData, - const CFX_Matrix* pObject2Device); - - void SetGraphState(const CFX_GraphStateData* pGraphState); - - void SetColor(uint32_t color, int alpha_flag, void* pIccTransform); - - void FindPSFontGlyph(CFX_FaceCache* pFaceCache, - CFX_Font* pFont, - const FXTEXT_CHARPOS& charpos, - int& ps_fontnum, - int& ps_glyphindex); - - void WritePSBinary(const uint8_t* data, int len); -}; - -#endif // CORE_INCLUDE_FXGE_FX_GE_H_ diff --git a/core/include/fxge/fx_ge_apple.h b/core/include/fxge/fx_ge_apple.h deleted file mode 100644 index 16298581b3..0000000000 --- a/core/include/fxge/fx_ge_apple.h +++ /dev/null @@ -1,27 +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_INCLUDE_FXGE_FX_GE_APPLE_H_ -#define CORE_INCLUDE_FXGE_FX_GE_APPLE_H_ - -#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ -class CFX_QuartzDevice : public CFX_RenderDevice { - public: - CFX_QuartzDevice(); - ~CFX_QuartzDevice(); - FX_BOOL Attach(CGContextRef context, int32_t nDeviceClass = FXDC_DISPLAY); - FX_BOOL Attach(CFX_DIBitmap* pBitmap); - FX_BOOL Create(int32_t width, int32_t height, FXDIB_Format format); - - CGContextRef GetContext(); - - protected: - CGContextRef m_pContext; - FX_BOOL m_bOwnedBitmap; -}; -#endif - -#endif // CORE_INCLUDE_FXGE_FX_GE_APPLE_H_ diff --git a/core/include/fxge/fx_ge_win32.h b/core/include/fxge/fx_ge_win32.h deleted file mode 100644 index f1864590c5..0000000000 --- a/core/include/fxge/fx_ge_win32.h +++ /dev/null @@ -1,98 +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_INCLUDE_FXGE_FX_GE_WIN32_H_ -#define CORE_INCLUDE_FXGE_FX_GE_WIN32_H_ - -#ifdef _WIN32 -#ifndef _WINDOWS_ -#include <windows.h> -#endif -#define WINDIB_OPEN_MEMORY 0x1 -#define WINDIB_OPEN_PATHNAME 0x2 -typedef struct WINDIB_Open_Args_ { - int flags; - - const uint8_t* memory_base; - - size_t memory_size; - - const FX_WCHAR* path_name; -} WINDIB_Open_Args_; -class CFX_WindowsDIB : public CFX_DIBitmap { - public: - static CFX_ByteString GetBitmapInfo(const CFX_DIBitmap* pBitmap); - - static CFX_DIBitmap* LoadFromBuf(BITMAPINFO* pbmi, void* pData); - - static HBITMAP GetDDBitmap(const CFX_DIBitmap* pBitmap, HDC hDC); - - static CFX_DIBitmap* LoadFromDDB(HDC hDC, - HBITMAP hBitmap, - uint32_t* pPalette = NULL, - uint32_t size = 256); - - static CFX_DIBitmap* LoadFromFile(const FX_WCHAR* filename); - - static CFX_DIBitmap* LoadFromFile(const FX_CHAR* filename) { - return LoadFromFile(CFX_WideString::FromLocal(filename).c_str()); - } - - static CFX_DIBitmap* LoadDIBitmap(WINDIB_Open_Args_ args); - - CFX_WindowsDIB(HDC hDC, int width, int height); - - ~CFX_WindowsDIB(); - - HDC GetDC() const { return m_hMemDC; } - - HBITMAP GetWindowsBitmap() const { return m_hBitmap; } - - void LoadFromDevice(HDC hDC, int left, int top); - - void SetToDevice(HDC hDC, int left, int top); - - protected: - HDC m_hMemDC; - - HBITMAP m_hBitmap; - - HBITMAP m_hOldBitmap; -}; -class CFX_WindowsDevice : public CFX_RenderDevice { - public: - static IFX_RenderDeviceDriver* CreateDriver(HDC hDC, - FX_BOOL bCmykOutput = FALSE); - - CFX_WindowsDevice(HDC hDC, - FX_BOOL bCmykOutput = FALSE, - FX_BOOL bForcePSOutput = FALSE, - int psLevel = 2); - - HDC GetDC() const; - - FX_BOOL m_bForcePSOutput; - - static int m_psLevel; -}; -class CFX_WinBitmapDevice : public CFX_RenderDevice { - public: - CFX_WinBitmapDevice(int width, int height, FXDIB_Format format); - - ~CFX_WinBitmapDevice(); - - HDC GetDC() { return m_hDC; } - - protected: - HBITMAP m_hBitmap; - - HBITMAP m_hOldBitmap; - - HDC m_hDC; -}; -#endif - -#endif // CORE_INCLUDE_FXGE_FX_GE_WIN32_H_ |