diff options
author | Nico Weber <thakis@chromium.org> | 2015-08-04 13:00:21 -0700 |
---|---|---|
committer | Nico Weber <thakis@chromium.org> | 2015-08-04 13:00:21 -0700 |
commit | 9d8ec5a6e37e8d1d4d4edca9040de234e2d4728f (patch) | |
tree | c97037f398d714665aefccb6eb54d0969ad7030c /core/include/fxge | |
parent | 780cee82236d1b3b0f9b01a22424e4b8ec9a6f12 (diff) | |
download | pdfium-9d8ec5a6e37e8d1d4d4edca9040de234e2d4728f.tar.xz |
XFA: clang-format all pdfium code.
No behavior change.
Generated by:
find . -name '*.cpp' -o -name '*.h' | \
grep -E -v 'third_party|thirdparties|lpng_v163|tiff_v403' | \
xargs ../../buildtools/mac/clang-format -i
Then manually merged https://codereview.chromium.org/1269223002/
See thread "tabs vs spaces" on pdfium@googlegroups.com for discussion.
BUG=none
Diffstat (limited to 'core/include/fxge')
-rw-r--r-- | core/include/fxge/fpf.h | 82 | ||||
-rw-r--r-- | core/include/fxge/fx_dib.h | 1068 | ||||
-rw-r--r-- | core/include/fxge/fx_font.h | 819 | ||||
-rw-r--r-- | core/include/fxge/fx_freetype.h | 124 | ||||
-rw-r--r-- | core/include/fxge/fx_ge.h | 1170 | ||||
-rw-r--r-- | core/include/fxge/fx_ge_apple.h | 25 | ||||
-rw-r--r-- | core/include/fxge/fx_ge_win32.h | 111 |
7 files changed, 1776 insertions, 1623 deletions
diff --git a/core/include/fxge/fpf.h b/core/include/fxge/fpf.h index fb9bf4d111..efa001e916 100644 --- a/core/include/fxge/fpf.h +++ b/core/include/fxge/fpf.h @@ -12,55 +12,55 @@ class IFPF_DeviceModule; class IFPF_FontMgr; class IFPF_Font; -class IFPF_DeviceModule -{ -public: - virtual ~IFPF_DeviceModule() { } - virtual void Destroy() = 0; - virtual IFPF_FontMgr* GetFontMgr() = 0; +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 FX_DWORD GetFontStyle() const = 0; - virtual uint8_t GetCharset() const = 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 FX_DWORD 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 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 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 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 FX_DWORD GetFontData(FX_DWORD dwTable, uint8_t* pBuffer, FX_DWORD dwSize) = 0; + virtual int32_t GetHeight() const = 0; + virtual int32_t GetItalicAngle() const = 0; + virtual FX_DWORD GetFontData(FX_DWORD dwTable, + uint8_t* pBuffer, + FX_DWORD dwSize) = 0; -protected: - ~IFPF_Font() { } + protected: + ~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; +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, FX_DWORD dwStyle, FX_DWORD dwMatch = 0) = 0; + virtual IFPF_Font* CreateFont(const CFX_ByteStringC& bsFamilyname, + uint8_t charset, + FX_DWORD dwStyle, + FX_DWORD 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 index 27fc2f987d..ddc47d3db5 100644 --- a/core/include/fxge/fx_dib.h +++ b/core/include/fxge/fx_dib.h @@ -11,595 +11,681 @@ #include "../fxcrt/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, + 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 + 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_PALETTE_LOC 0x01 -#define FXDIB_PALETTE_WIN 0x02 -#define FXDIB_PALETTE_MAC 0x04 -#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 FX_DWORD FX_ARGB; -typedef FX_DWORD FX_COLORREF; -typedef FX_DWORD FX_CMYK; +#define FXDIB_DOWNSAMPLE 0x04 +#define FXDIB_INTERPOL 0x20 +#define FXDIB_BICUBIC_INTERPOL 0x80 +#define FXDIB_NOSMOOTH 0x100 +#define FXDIB_PALETTE_LOC 0x01 +#define FXDIB_PALETTE_WIN 0x02 +#define FXDIB_PALETTE_MAC 0x04 +#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 FX_DWORD FX_ARGB; +typedef FX_DWORD FX_COLORREF; +typedef FX_DWORD FX_CMYK; class CFX_ClipRgn; class CFX_DIBSource; class CFX_DIBitmap; -#define FXSYS_RGB(r, g, b) ((r) | ((g) << 8) | ((b) << 16)) -#define FXSYS_GetRValue(rgb) ((rgb) & 0xff) +#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 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) +#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; +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, 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; +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) (((FX_DWORD)(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 FXARGB_MAKE(a, r, g, b) \ + (((FX_DWORD)(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_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: +#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(); - 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); + } - int GetWidth() const - { - return m_Width; - } + FX_DWORD GetPitch() const { return m_Pitch; } - int GetHeight() const - { - return m_Height; - } + FX_DWORD* GetPalette() const { return m_pPalette; } - FXDIB_Format GetFormat() const - { - return (FXDIB_Format)(m_AlphaFlag * 0x100 + m_bpp); - } + virtual uint8_t* GetBuffer() const { return NULL; } - FX_DWORD GetPitch() const - { - return m_Pitch; - } + virtual const uint8_t* GetScanline(int line) const = 0; - FX_DWORD* GetPalette() const - { - return m_pPalette; - } + virtual FX_BOOL SkipToScanline(int line, IFX_Pause* pPause) const { + return FALSE; + } + 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; + virtual void SetDownSampleSize(int width, int height) const {} - virtual uint8_t* GetBuffer() const - { - return NULL; - } + int GetBPP() const { return m_bpp; } - virtual const uint8_t* GetScanline(int line) const = 0; + FX_BOOL IsAlphaMask() const { return m_AlphaFlag == 1; } - virtual FX_BOOL SkipToScanline(int line, IFX_Pause* pPause) const - { - return FALSE; - } + FX_BOOL HasAlpha() const { return m_AlphaFlag & 2 ? TRUE : FALSE; } - 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; + FX_BOOL IsOpaqueImage() const { return !(m_AlphaFlag & 3); } - virtual void SetDownSampleSize(int width, int height) const {} + FX_BOOL IsCmykImage() const { return m_AlphaFlag & 4 ? TRUE : FALSE; } - int GetBPP() const - { - return m_bpp; - } + int GetPaletteSize() const { + return IsAlphaMask() ? 0 : (m_bpp == 1 ? 2 : (m_bpp == 8 ? 256 : 0)); + } - FX_BOOL IsAlphaMask() const - { - return m_AlphaFlag == 1; - } + FX_DWORD GetPaletteEntry(int index) const; - FX_BOOL HasAlpha() const - { - return m_AlphaFlag & 2 ? TRUE : FALSE; - } + void SetPaletteEntry(int index, FX_DWORD color); + FX_DWORD GetPaletteArgb(int index) const { return GetPaletteEntry(index); } + void SetPaletteArgb(int index, FX_DWORD color) { + SetPaletteEntry(index, color); + } - FX_BOOL IsOpaqueImage() const - { - return !(m_AlphaFlag & 3); - } + void CopyPalette(const FX_DWORD* pSrcPal, FX_DWORD size = 256); - FX_BOOL IsCmykImage() const - { - return m_AlphaFlag & 4 ? TRUE : FALSE; - } + 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, + FX_DWORD flags = 0, + const FX_RECT* pClip = NULL) const; - int GetPaletteSize() const - { - return IsAlphaMask() ? 0 : (m_bpp == 1 ? 2 : (m_bpp == 8 ? 256 : 0)); - } + CFX_DIBitmap* TransformTo(const CFX_AffineMatrix* pMatrix, + int& left, + int& top, + FX_DWORD flags = 0, + const FX_RECT* pClip = NULL) const; - FX_DWORD GetPaletteEntry(int index) const; + CFX_DIBitmap* GetAlphaMask(const FX_RECT* pClip = NULL) const; - void SetPaletteEntry(int index, FX_DWORD color); - FX_DWORD GetPaletteArgb(int index) const - { - return GetPaletteEntry(index); - } - void SetPaletteArgb(int index, FX_DWORD color) - { - SetPaletteEntry(index, color); - } + FX_BOOL CopyAlphaMask(const CFX_DIBSource* pAlphaMask, + const FX_RECT* pClip = NULL); - void CopyPalette(const FX_DWORD* pSrcPal, FX_DWORD size = 256); + 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; - CFX_DIBitmap* Clone(const FX_RECT* pClip = NULL) 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* CloneConvert(FXDIB_Format format, const FX_RECT* pClip = NULL, void* pIccTransform = NULL) const; + CFX_DIBitmap* m_pAlphaMask; - CFX_DIBitmap* StretchTo(int dest_width, int dest_height, FX_DWORD flags = 0, const FX_RECT* pClip = NULL) const; + protected: + CFX_DIBSource(); + int m_Width; - CFX_DIBitmap* TransformTo(const CFX_AffineMatrix* pMatrix, int& left, int &top, - FX_DWORD flags = 0, const FX_RECT* pClip = NULL) const; + int m_Height; - CFX_DIBitmap* GetAlphaMask(const FX_RECT* pClip = NULL) const; + int m_bpp; - FX_BOOL CopyAlphaMask(const CFX_DIBSource* pAlphaMask, const FX_RECT* pClip = NULL); + FX_DWORD m_AlphaFlag; - CFX_DIBitmap* SwapXY(FX_BOOL bXFlip, FX_BOOL bYFlip, const FX_RECT* pClip = NULL) const; + FX_DWORD m_Pitch; - CFX_DIBitmap* FlipImage(FX_BOOL bXFlip, FX_BOOL bYFlip) const; + FX_DWORD* m_pPalette; - 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); + void BuildPalette(); - CFX_DIBitmap* m_pAlphaMask; -protected: + FX_BOOL BuildAlphaMask(); - CFX_DIBSource(); + int FindPalette(FX_DWORD color) const; - int m_Width; - - int m_Height; - - int m_bpp; - - FX_DWORD m_AlphaFlag; - - FX_DWORD m_Pitch; - - FX_DWORD* m_pPalette; - - void BuildPalette(); - - FX_BOOL BuildAlphaMask(); - - int FindPalette(FX_DWORD color) const; - - void GetPalette(FX_DWORD* pal, int alpha) const; + void GetPalette(FX_DWORD* pal, int alpha) const; }; -class CFX_DIBitmap : public CFX_DIBSource -{ -public: - - virtual ~CFX_DIBitmap(); - - CFX_DIBitmap(); - - CFX_DIBitmap(const CFX_DIBitmap& src); - - FX_BOOL Create(int width, int height, FXDIB_Format format, uint8_t* pBuffer = NULL, int pitch = 0); - - FX_BOOL Copy(const CFX_DIBSource* pSrc); - - virtual uint8_t* GetBuffer() const - { - return m_pBuffer; - } - - virtual const uint8_t* GetScanline(int line) const - { - return m_pBuffer ? m_pBuffer + line * m_Pitch : NULL; - } - - 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; - - void TakeOver(CFX_DIBitmap* pSrcBitmap); - - FX_BOOL ConvertFormat(FXDIB_Format format, void* pIccTransform = NULL); - - void Clear(FX_DWORD color); - - FX_DWORD GetPixel(int x, int y) const; - - void SetPixel(int x, int y, FX_DWORD 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, FX_DWORD 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, FX_DWORD 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, FX_DWORD color, int alpha_flag = 0, void* pIccTransform = NULL); - - FX_BOOL ConvertColorScale(FX_DWORD forecolor, FX_DWORD backcolor); - - FX_BOOL DitherFS(const FX_DWORD* 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_DIBitmap : public CFX_DIBSource { + public: + virtual ~CFX_DIBitmap(); + + CFX_DIBitmap(); + + CFX_DIBitmap(const CFX_DIBitmap& src); + + FX_BOOL Create(int width, + int height, + FXDIB_Format format, + uint8_t* pBuffer = NULL, + int pitch = 0); + + FX_BOOL Copy(const CFX_DIBSource* pSrc); + + virtual uint8_t* GetBuffer() const { return m_pBuffer; } + + virtual const uint8_t* GetScanline(int line) const { + return m_pBuffer ? m_pBuffer + line * m_Pitch : NULL; + } + + 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; + + void TakeOver(CFX_DIBitmap* pSrcBitmap); + + FX_BOOL ConvertFormat(FXDIB_Format format, void* pIccTransform = NULL); + + void Clear(FX_DWORD color); + + FX_DWORD GetPixel(int x, int y) const; + + void SetPixel(int x, int y, FX_DWORD 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, + FX_DWORD 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, + FX_DWORD 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, + FX_DWORD color, + int alpha_flag = 0, + void* pIccTransform = NULL); + + FX_BOOL ConvertColorScale(FX_DWORD forecolor, FX_DWORD backcolor); + + FX_BOOL DitherFS(const FX_DWORD* 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: +class CFX_DIBExtractor { + public: + CFX_DIBExtractor(const CFX_DIBSource* pSrc); - CFX_DIBExtractor(const CFX_DIBSource* pSrc); + ~CFX_DIBExtractor(); - ~CFX_DIBExtractor(); + operator CFX_DIBitmap*() { return m_pBitmap; } - operator CFX_DIBitmap*() - { - return m_pBitmap; - } -private: - - CFX_DIBitmap* m_pBitmap; + private: + CFX_DIBitmap* m_pBitmap; }; typedef CFX_CountRef<CFX_DIBitmap> CFX_DIBitmapRef; -class CFX_FilteredDIB : public CFX_DIBSource -{ -public: - - CFX_FilteredDIB(); +class CFX_FilteredDIB : public CFX_DIBSource { + public: + CFX_FilteredDIB(); - ~CFX_FilteredDIB(); + ~CFX_FilteredDIB(); - void LoadSrc(const CFX_DIBSource* pSrc, FX_BOOL bAutoDropSrc = FALSE); + void LoadSrc(const CFX_DIBSource* pSrc, FX_BOOL bAutoDropSrc = FALSE); - virtual FXDIB_Format GetDestFormat() = 0; + virtual FXDIB_Format GetDestFormat() = 0; - virtual FX_DWORD* GetDestPalette() = 0; + virtual FX_DWORD* GetDestPalette() = 0; + virtual void TranslateScanline(uint8_t* dest_buf, + const uint8_t* src_buf) const = 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; - virtual void TranslateDownSamples(uint8_t* dest_buf, const uint8_t* src_buf, int pixels, int Bpp) const = 0; -protected: - virtual const uint8_t* GetScanline(int line) 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; + protected: + virtual const uint8_t* GetScanline(int line) 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; - const CFX_DIBSource* m_pSrc; + const CFX_DIBSource* m_pSrc; - FX_BOOL m_bAutoDropSrc; + FX_BOOL m_bAutoDropSrc; - uint8_t* m_pScanline; + 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, FX_DWORD* pSrcPalette) = 0; +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, + FX_DWORD* pSrcPalette) = 0; }; -class CFX_ScanlineCompositor -{ -public: - CFX_ScanlineCompositor(); - - ~CFX_ScanlineCompositor(); - - FX_BOOL Init(FXDIB_Format dest_format, FXDIB_Format src_format, int32_t width, FX_DWORD* pSrcPalette, - FX_DWORD 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; - FX_DWORD* 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_ScanlineCompositor { + public: + CFX_ScanlineCompositor(); + + ~CFX_ScanlineCompositor(); + + FX_BOOL Init(FXDIB_Format dest_format, + FXDIB_Format src_format, + int32_t width, + FX_DWORD* pSrcPalette, + FX_DWORD 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; + FX_DWORD* 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(); - - - void Compose(CFX_DIBitmap* pDest, const CFX_ClipRgn* pClipRgn, int bitmap_alpha, - FX_DWORD 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); - - virtual FX_BOOL SetInfo(int width, int height, FXDIB_Format src_format, FX_DWORD* pSrcPalette); - - - virtual void ComposeScanline(int line, const uint8_t* scanline, const uint8_t* scan_extra_alpha); -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; - FX_DWORD 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_BitmapComposer : public IFX_ScanlineComposer { + public: + CFX_BitmapComposer(); + + ~CFX_BitmapComposer(); + + void Compose(CFX_DIBitmap* pDest, + const CFX_ClipRgn* pClipRgn, + int bitmap_alpha, + FX_DWORD 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); + + virtual FX_BOOL SetInfo(int width, + int height, + FXDIB_Format src_format, + FX_DWORD* pSrcPalette); + + virtual void ComposeScanline(int line, + const uint8_t* scanline, + const uint8_t* scan_extra_alpha); + + 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; + FX_DWORD 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: +class CFX_BitmapStorer : public IFX_ScanlineComposer { + public: + CFX_BitmapStorer(); - CFX_BitmapStorer(); + ~CFX_BitmapStorer(); - ~CFX_BitmapStorer(); + virtual void ComposeScanline(int line, + const uint8_t* scanline, + const uint8_t* scan_extra_alpha); - virtual void ComposeScanline(int line, const uint8_t* scanline, const uint8_t* scan_extra_alpha); + virtual FX_BOOL SetInfo(int width, + int height, + FXDIB_Format src_format, + FX_DWORD* pSrcPalette); - virtual FX_BOOL SetInfo(int width, int height, FXDIB_Format src_format, FX_DWORD* pSrcPalette); + CFX_DIBitmap* GetBitmap() { return m_pBitmap; } - CFX_DIBitmap* GetBitmap() - { - return m_pBitmap; - } + CFX_DIBitmap* Detach(); - CFX_DIBitmap* Detach(); + void Replace(CFX_DIBitmap* pBitmap); - void Replace(CFX_DIBitmap* pBitmap); -private: - CFX_DIBitmap* m_pBitmap; + private: + CFX_DIBitmap* m_pBitmap; }; class CStretchEngine; -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, - FX_DWORD 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; - FX_DWORD 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_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, + FX_DWORD 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; + FX_DWORD 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_AffineMatrix* pMatrix, - int flags, const FX_RECT* pClip); - - FX_BOOL Continue(IFX_Pause* pPause); - - CFX_AffineMatrix* m_pMatrix; - FX_RECT m_StretchClip; - int m_ResultLeft; - int m_ResultTop; - int m_ResultWidth; - int m_ResultHeight; - CFX_AffineMatrix m_dest2stretch; - CFX_ImageStretcher m_Stretcher; - CFX_BitmapStorer m_Storer; - FX_DWORD m_Flags; - int m_Status; +class CFX_ImageTransformer { + public: + CFX_ImageTransformer(); + ~CFX_ImageTransformer(); + + FX_BOOL Start(const CFX_DIBSource* pSrc, + const CFX_AffineMatrix* pMatrix, + int flags, + const FX_RECT* pClip); + + FX_BOOL Continue(IFX_Pause* pPause); + + CFX_AffineMatrix* m_pMatrix; + FX_RECT m_StretchClip; + int m_ResultLeft; + int m_ResultTop; + int m_ResultWidth; + int m_ResultHeight; + CFX_AffineMatrix m_dest2stretch; + CFX_ImageStretcher m_Stretcher; + CFX_BitmapStorer m_Storer; + FX_DWORD 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, - FX_DWORD mask_color, const CFX_AffineMatrix* pMatrix, - FX_DWORD 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; - FX_DWORD m_MaskColor; - CFX_AffineMatrix m_Matrix; - CFX_ImageTransformer* m_pTransformer; - CFX_ImageStretcher m_Stretcher; - CFX_BitmapComposer m_Composer; - int m_Status; - FX_RECT m_ClipBox; - FX_DWORD m_Flags; - int m_AlphaFlag; - void* m_pIccTransform; - FX_BOOL m_bRgbByteOrder; - int m_BlendType; +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, + FX_DWORD mask_color, + const CFX_AffineMatrix* pMatrix, + FX_DWORD 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; + FX_DWORD m_MaskColor; + CFX_AffineMatrix m_Matrix; + CFX_ImageTransformer* m_pTransformer; + CFX_ImageStretcher m_Stretcher; + CFX_BitmapComposer m_Composer; + int m_Status; + FX_RECT m_ClipBox; + FX_DWORD 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 index c1e135730b..cbc888515f 100644 --- a/core/include/fxge/fx_font.h +++ b/core/include/fxge/fx_font.h @@ -21,448 +21,491 @@ class CFX_FaceCache; class CFX_FontMapper; class IFX_SystemFontInfo; class CFontFileFaceInfo; -#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_EXACTMATCH 0x80000000
-#define FXFONT_CIDFONT 0x100000 -#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(); +#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_EXACTMATCH 0x80000000 +#define FXFONT_CIDFONT 0x100000 +#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(); - FX_BOOL LoadSubst(const CFX_ByteString& face_name, FX_BOOL bTrueType, FX_DWORD flags, - int weight, int italic_angle, int CharsetCP, FX_BOOL bVertical = FALSE); + FX_BOOL LoadSubst(const CFX_ByteString& face_name, + FX_BOOL bTrueType, + FX_DWORD flags, + int weight, + int italic_angle, + int CharsetCP, + FX_BOOL bVertical = FALSE); - FX_BOOL LoadEmbedded(const uint8_t* data, FX_DWORD size); + FX_BOOL LoadEmbedded(const uint8_t* data, FX_DWORD size); - FX_BOOL LoadFile(IFX_FileRead* pFile, int nFaceIndex = 0, int* pFaceCount = NULL);
-
- FX_BOOL LoadClone(const CFX_Font* pFont);
-
+ FX_BOOL LoadFile(IFX_FileRead* pFile, + int nFaceIndex = 0, + int* pFaceCount = NULL); - FXFT_Face GetFace() const - { - return m_Face; - } + FX_BOOL LoadClone(const CFX_Font* pFont); + FXFT_Face GetFace() const { return m_Face; } - const CFX_SubstFont* GetSubstFont() const - { - return m_pSubstFont; - } + const CFX_SubstFont* GetSubstFont() const { return m_pSubstFont; } - CFX_PathData* LoadGlyphPath(FX_DWORD glyph_index, int dest_width = 0); + CFX_PathData* LoadGlyphPath(FX_DWORD glyph_index, int dest_width = 0); - int GetGlyphWidth(FX_DWORD glyph_index); + int GetGlyphWidth(FX_DWORD glyph_index); - int GetAscent() const; + int GetAscent() const; - int GetDescent() const; + int GetDescent() const; - FX_BOOL GetGlyphBBox(FX_DWORD glyph_index, FX_RECT &bbox); + FX_BOOL GetGlyphBBox(FX_DWORD glyph_index, FX_RECT& bbox); - FX_BOOL IsItalic(); + FX_BOOL IsItalic(); - FX_BOOL IsBold(); + FX_BOOL IsBold(); - FX_BOOL IsFixedWidth(); + FX_BOOL IsFixedWidth(); - FX_BOOL IsVertical() const - { - return m_bVertical; - } + FX_BOOL IsVertical() const { return m_bVertical; } - CFX_WideString GetPsName() const; + CFX_WideString GetPsName() const; + CFX_ByteString GetFamilyName() const; - CFX_ByteString GetFamilyName() const; + CFX_ByteString GetFaceName() const; - CFX_ByteString GetFaceName() const; + FX_BOOL IsTTFont(); + FX_BOOL GetBBox(FX_RECT& bbox); - FX_BOOL IsTTFont(); + int GetHeight(); - FX_BOOL GetBBox(FX_RECT &bbox); + int GetULPos(); - int GetHeight(); + int GetULthickness(); - int GetULPos(); + int GetMaxAdvanceWidth(); - int GetULthickness(); + FXFT_Face m_Face; - int GetMaxAdvanceWidth(); + CFX_SubstFont* m_pSubstFont; + FX_BOOL IsEmbedded() { return m_bEmbedded; } - FXFT_Face m_Face; + void AdjustMMParams(int glyph_index, int width, int weight); + uint8_t* m_pFontDataAllocation; + uint8_t* m_pFontData; + uint8_t* m_pGsubData; + FX_DWORD m_dwSize; + CFX_BinaryBuf m_OtfFontData; + void* m_hHandle; + void* m_pPlatformFont; + void* m_pPlatformFontCollection; + void* m_pDwFont; + FX_BOOL m_bDwLoaded; + void ReleasePlatformResource(); - CFX_SubstFont* m_pSubstFont; - FX_BOOL IsEmbedded() - { - return m_bEmbedded; - } + void DeleteFace(); - void AdjustMMParams(int glyph_index, int width, int weight); - uint8_t* m_pFontDataAllocation; - uint8_t* m_pFontData; - uint8_t* m_pGsubData; - FX_DWORD m_dwSize; - CFX_BinaryBuf m_OtfFontData; - void* m_hHandle; - void* m_pPlatformFont; - void* m_pPlatformFontCollection; - void* m_pDwFont; - FX_BOOL m_bDwLoaded; - void ReleasePlatformResource(); - - void DeleteFace(); -protected: - - FX_BOOL m_bEmbedded; - FX_BOOL m_bVertical; - FX_BOOL m_bLogic;
- void* m_pOwnedStream; + protected: + FX_BOOL m_bEmbedded; + FX_BOOL m_bVertical; + FX_BOOL m_bLogic; + void* m_pOwnedStream; }; -#define ENCODING_INTERNAL 0 -#define ENCODING_UNICODE 1 -class IFX_FontEncoding -{ -public: - virtual ~IFX_FontEncoding() {} +#define ENCODING_INTERNAL 0 +#define ENCODING_UNICODE 1 +class IFX_FontEncoding { + public: + virtual ~IFX_FontEncoding() {} - virtual FX_DWORD GlyphFromCharCode(FX_DWORD charcode) = 0; + virtual FX_DWORD GlyphFromCharCode(FX_DWORD charcode) = 0; - virtual CFX_WideString UnicodeFromCharCode(FX_DWORD charcode) const = 0; + virtual CFX_WideString UnicodeFromCharCode(FX_DWORD charcode) const = 0; - virtual FX_DWORD CharCodeFromUnicode(FX_WCHAR Unicode) const = 0; + virtual FX_DWORD CharCodeFromUnicode(FX_WCHAR Unicode) const = 0; }; IFX_FontEncoding* FXGE_CreateUnicodeEncoding(CFX_Font* pFont); -#define FXFM_ENC_TAG(a, b, c, d) (((FX_DWORD)(a) << 24) | ((FX_DWORD)(b) << 16) | ((FX_DWORD)(c) << 8) | (FX_DWORD)(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')
-class IFX_FontEncodingEx : public IFX_FontEncoding
-{
-public:
-
- virtual FX_DWORD GlyphIndexFromName(const FX_CHAR* pStrName) = 0;
-
- virtual CFX_ByteString NameFromGlyphIndex(FX_DWORD dwGlyphIndex) = 0;
-
- virtual FX_DWORD CharCodeFromGlyphIndex(FX_DWORD dwGlyphIndex) = 0;
-};
-IFX_FontEncodingEx* FX_CreateFontEncodingEx(CFX_Font* pFont, FX_DWORD nEncodingID = FXFM_ENCODING_NONE);
-#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; - - FX_DWORD m_SubstFlags; - - int m_Weight; - - int m_ItalicAngle; - - FX_BOOL m_bSubstOfCJK; - - int m_WeightCJK; - - FX_BOOL m_bItlicCJK; +#define FXFM_ENC_TAG(a, b, c, d) \ + (((FX_DWORD)(a) << 24) | ((FX_DWORD)(b) << 16) | ((FX_DWORD)(c) << 8) | \ + (FX_DWORD)(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') +class IFX_FontEncodingEx : public IFX_FontEncoding { + public: + virtual FX_DWORD GlyphIndexFromName(const FX_CHAR* pStrName) = 0; + + virtual CFX_ByteString NameFromGlyphIndex(FX_DWORD dwGlyphIndex) = 0; + + virtual FX_DWORD CharCodeFromGlyphIndex(FX_DWORD dwGlyphIndex) = 0; +}; +IFX_FontEncodingEx* FX_CreateFontEncodingEx( + CFX_Font* pFont, + FX_DWORD nEncodingID = FXFM_ENCODING_NONE); +#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; + + FX_DWORD 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 +#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 typedef struct { - const uint8_t* m_pFontData; - FX_DWORD m_dwSize; + const uint8_t* m_pFontData; + FX_DWORD m_dwSize; } FoxitFonts; -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, FX_DWORD size, int face_index); - FXFT_Face GetCachedTTCFace(int ttc_size, FX_DWORD checksum, - int font_offset, uint8_t*& pFontData); - FXFT_Face AddCachedTTCFace(int ttc_size, FX_DWORD checksum, - uint8_t* pData, FX_DWORD size, int font_offset); - FXFT_Face GetFileFace(const FX_CHAR* filename, int face_index); - FXFT_Face GetFixedFace(const uint8_t* pData, FX_DWORD 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, FX_DWORD flags, - int weight, int italic_angle, int CharsetCP, CFX_SubstFont* pSubstFont); - - void FreeCache(); - - FX_BOOL GetStandardFont(const uint8_t*& pFontData, FX_DWORD& size, int index); - CFX_FontMapper* m_pBuiltinMapper; - CFX_MapByteStringToPtr m_FaceMap; - FXFT_Library m_FTLibrary; - FoxitFonts m_ExternalFonts[16]; +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, + FX_DWORD size, + int face_index); + FXFT_Face GetCachedTTCFace(int ttc_size, + FX_DWORD checksum, + int font_offset, + uint8_t*& pFontData); + FXFT_Face AddCachedTTCFace(int ttc_size, + FX_DWORD checksum, + uint8_t* pData, + FX_DWORD size, + int font_offset); + FXFT_Face GetFileFace(const FX_CHAR* filename, int face_index); + FXFT_Face GetFixedFace(const uint8_t* pData, FX_DWORD 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, + FX_DWORD flags, + int weight, + int italic_angle, + int CharsetCP, + CFX_SubstFont* pSubstFont); + + void FreeCache(); + + FX_BOOL GetStandardFont(const uint8_t*& pFontData, FX_DWORD& size, int index); + CFX_FontMapper* m_pBuiltinMapper; + CFX_MapByteStringToPtr m_FaceMap; + FXFT_Library m_FTLibrary; + FoxitFonts m_ExternalFonts[16]; }; -class IFX_FontEnumerator -{ -public: - virtual ~IFX_FontEnumerator() { } +class IFX_FontEnumerator { + public: + virtual ~IFX_FontEnumerator() {} - virtual void HitFont() = 0; + virtual void HitFont() = 0; - virtual void Finish() = 0; + virtual void Finish() = 0; }; -class IFX_AdditionalFontEnum -{ -public: - virtual ~IFX_AdditionalFontEnum() { } - virtual int CountFiles() = 0; - virtual IFX_FileStream* GetFontFile(int index) = 0; +class IFX_AdditionalFontEnum { + public: + virtual ~IFX_AdditionalFontEnum() {} + virtual int CountFiles() = 0; + virtual IFX_FileStream* GetFontFile(int index) = 0; }; -class CFX_FontMapper -{ -public: - - 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(); - CFX_ByteStringArray 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, FX_DWORD flags, - int weight, int italic_angle, int CharsetCP, CFX_SubstFont* pSubstFont); - FXFT_Face FindSubstFontByUnicode(FX_DWORD dwUnicode, FX_DWORD flags, int weight, int italic_angle);
- FX_BOOL IsBuiltinFace(const FXFT_Face face) const; - -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_DWordArray m_CharsetArray; - CFX_ByteStringArray m_FaceArray; - IFX_SystemFontInfo* m_pFontInfo; - FXFT_Face m_FoxitFaces[FOXIT_FACE_COUNT]; - IFX_FontEnumerator* m_pFontEnumerator; - CFX_FontMgr* const m_pFontMgr; +class CFX_FontMapper { + public: + 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(); + CFX_ByteStringArray 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, + FX_DWORD flags, + int weight, + int italic_angle, + int CharsetCP, + CFX_SubstFont* pSubstFont); + FXFT_Face FindSubstFontByUnicode(FX_DWORD dwUnicode, + FX_DWORD flags, + int weight, + int italic_angle); + FX_BOOL IsBuiltinFace(const FXFT_Face face) const; + + 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_DWordArray m_CharsetArray; + CFX_ByteStringArray 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(); - 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; - virtual void* MapFontByUnicode(FX_DWORD dwUnicode, int weight, FX_BOOL bItalic, int pitch_family) - { - return NULL; - } - virtual void* GetFont(const FX_CHAR* face) = 0; - virtual FX_DWORD GetFontData(void* hFont, FX_DWORD table, uint8_t* buffer, FX_DWORD 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) - { - return 0; - } - virtual void DeleteFont(void* hFont) = 0; - virtual void* RetainFont(void* hFont) - { - return NULL; - } -protected: - ~IFX_SystemFontInfo() { } +class IFX_SystemFontInfo { + public: + static IFX_SystemFontInfo* CreateDefault(); + 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; + virtual void* MapFontByUnicode(FX_DWORD dwUnicode, + int weight, + FX_BOOL bItalic, + int pitch_family) { + return NULL; + } + virtual void* GetFont(const FX_CHAR* face) = 0; + virtual FX_DWORD GetFontData(void* hFont, + FX_DWORD table, + uint8_t* buffer, + FX_DWORD 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) { return 0; } + virtual void DeleteFont(void* hFont) = 0; + virtual void* RetainFont(void* hFont) { return NULL; } + + protected: + ~IFX_SystemFontInfo() {} }; -class CFX_FolderFontInfo : public IFX_SystemFontInfo -{ -public: - CFX_FolderFontInfo(); - virtual ~CFX_FolderFontInfo(); - - 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; - void* MapFontByUnicode(FX_DWORD dwUnicode, int weight, FX_BOOL bItalic, - int pitch_family) override; - void* GetFont(const FX_CHAR* face) override; - FX_DWORD GetFontData(void* hFont, FX_DWORD table, - uint8_t* buffer, FX_DWORD 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: - CFX_MapByteStringToPtr m_FontList; - CFX_ByteStringArray m_PathList; - CFX_FontMapper* m_pMapper; - void ScanPath(CFX_ByteString& path); - void ScanFile(CFX_ByteString& path); - void ReportFace(CFX_ByteString& path, FXSYS_FILE* pFile, FX_DWORD filesize, FX_DWORD offset); +class CFX_FolderFontInfo : public IFX_SystemFontInfo { + public: + CFX_FolderFontInfo(); + virtual ~CFX_FolderFontInfo(); + + 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; + void* MapFontByUnicode(FX_DWORD dwUnicode, + int weight, + FX_BOOL bItalic, + int pitch_family) override; + void* GetFont(const FX_CHAR* face) override; + FX_DWORD GetFontData(void* hFont, + FX_DWORD table, + uint8_t* buffer, + FX_DWORD 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: + CFX_MapByteStringToPtr m_FontList; + CFX_ByteStringArray m_PathList; + CFX_FontMapper* m_pMapper; + void ScanPath(CFX_ByteString& path); + void ScanFile(CFX_ByteString& path); + void ReportFace(CFX_ByteString& path, + FXSYS_FILE* pFile, + FX_DWORD filesize, + FX_DWORD offset); }; -class CFX_CountedFaceCache -{ -public: - CFX_FaceCache* m_Obj; - FX_DWORD m_nCount; +class CFX_CountedFaceCache { + public: + CFX_FaceCache* m_Obj; + FX_DWORD m_nCount; }; -class CFX_FontCache -{ -public: - ~CFX_FontCache(); - CFX_FaceCache* GetCachedFace(CFX_Font* pFont); - void ReleaseCachedFace(CFX_Font* pFont); - void FreeCache(FX_BOOL bRelease = FALSE); - -private: - using CFX_FTCacheMap = std::map<FXFT_Face, CFX_CountedFaceCache*>; - CFX_FTCacheMap m_FTFaceMap; - CFX_FTCacheMap m_ExtFaceMap; +class CFX_FontCache { + public: + ~CFX_FontCache(); + CFX_FaceCache* GetCachedFace(CFX_Font* pFont); + void ReleaseCachedFace(CFX_Font* pFont); + void FreeCache(FX_BOOL bRelease = FALSE); + + 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; +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; +#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: - ~CFX_FaceCache(); - const CFX_GlyphBitmap* LoadGlyphBitmap(CFX_Font* pFont, FX_DWORD glyph_index, FX_BOOL bFontStyle, const CFX_AffineMatrix* pMatrix, - int dest_width, int anti_alias, int& text_flags); - const CFX_PathData* LoadGlyphPath(CFX_Font* pFont, FX_DWORD glyph_index, int dest_width); - - - CFX_FaceCache(FXFT_Face face); -private: - FXFT_Face m_Face; - CFX_GlyphBitmap* RenderGlyph(CFX_Font* pFont, FX_DWORD glyph_index, FX_BOOL bFontStyle, - const CFX_AffineMatrix* pMatrix, int dest_width, int anti_alias); - CFX_GlyphBitmap* RenderGlyph_Nativetext(CFX_Font* pFont, FX_DWORD glyph_index, - const CFX_AffineMatrix* pMatrix, int dest_width, int anti_alias); - CFX_GlyphBitmap* LookUpGlyphBitmap(CFX_Font* pFont, const CFX_AffineMatrix* pMatrix, CFX_ByteStringC& FaceGlyphsKey, - FX_DWORD glyph_index, FX_BOOL bFontStyle, int dest_width, int anti_alias); - CFX_MapByteStringToPtr m_SizeMap; - CFX_MapPtrToPtr m_PathMap; - CFX_DIBitmap* m_pBitmap; - - void InitPlatform(); - void DestroyPlatform(); +class CFX_FaceCache { + public: + ~CFX_FaceCache(); + const CFX_GlyphBitmap* LoadGlyphBitmap(CFX_Font* pFont, + FX_DWORD glyph_index, + FX_BOOL bFontStyle, + const CFX_AffineMatrix* pMatrix, + int dest_width, + int anti_alias, + int& text_flags); + const CFX_PathData* LoadGlyphPath(CFX_Font* pFont, + FX_DWORD glyph_index, + int dest_width); + + CFX_FaceCache(FXFT_Face face); + + private: + FXFT_Face m_Face; + CFX_GlyphBitmap* RenderGlyph(CFX_Font* pFont, + FX_DWORD glyph_index, + FX_BOOL bFontStyle, + const CFX_AffineMatrix* pMatrix, + int dest_width, + int anti_alias); + CFX_GlyphBitmap* RenderGlyph_Nativetext(CFX_Font* pFont, + FX_DWORD glyph_index, + const CFX_AffineMatrix* pMatrix, + int dest_width, + int anti_alias); + CFX_GlyphBitmap* LookUpGlyphBitmap(CFX_Font* pFont, + const CFX_AffineMatrix* pMatrix, + CFX_ByteStringC& FaceGlyphsKey, + FX_DWORD glyph_index, + FX_BOOL bFontStyle, + int dest_width, + int anti_alias); + CFX_MapByteStringToPtr m_SizeMap; + CFX_MapPtrToPtr m_PathMap; + CFX_DIBitmap* m_pBitmap; + + void InitPlatform(); + void DestroyPlatform(); }; typedef struct { - const CFX_GlyphBitmap* m_pGlyph; - int m_OriginX, m_OriginY; - FX_FLOAT m_fOriginX, m_fOriginY; + const CFX_GlyphBitmap* m_pGlyph; + int m_OriginX, m_OriginY; + FX_FLOAT m_fOriginX, m_fOriginY; } FXTEXT_GLYPHPOS; -FX_RECT FXGE_GetGlyphsBBox(FXTEXT_GLYPHPOS* pGlyphAndPos, int nChars, int anti_alias, FX_FLOAT retinaScaleX = 1.0f, FX_FLOAT retinaScaleY = 1.0f); -FX_BOOL OutputGlyph(void* dib, int x, int y, CFX_Font* pFont, double font_size, - CFX_AffineMatrix* pMatrix, unsigned long glyph_index, unsigned long argb); -FX_BOOL OutputText(void* dib, int x, int y, CFX_Font* pFont, double font_size, - CFX_AffineMatrix* pText_matrix, unsigned short const* text, unsigned long argb); -class IFX_GSUBTable -{ -public: - static IFX_GSUBTable* Create(CFX_Font* pFont); - virtual ~IFX_GSUBTable() { } - virtual FX_BOOL GetVerticalGlyph(FX_DWORD glyphnum, FX_DWORD* vglyphnum) = 0; +FX_RECT FXGE_GetGlyphsBBox(FXTEXT_GLYPHPOS* pGlyphAndPos, + int nChars, + int anti_alias, + FX_FLOAT retinaScaleX = 1.0f, + FX_FLOAT retinaScaleY = 1.0f); +FX_BOOL OutputGlyph(void* dib, + int x, + int y, + CFX_Font* pFont, + double font_size, + CFX_AffineMatrix* pMatrix, + unsigned long glyph_index, + unsigned long argb); +FX_BOOL OutputText(void* dib, + int x, + int y, + CFX_Font* pFont, + double font_size, + CFX_AffineMatrix* pText_matrix, + unsigned short const* text, + unsigned long argb); +class IFX_GSUBTable { + public: + static IFX_GSUBTable* Create(CFX_Font* pFont); + virtual ~IFX_GSUBTable() {} + virtual FX_BOOL GetVerticalGlyph(FX_DWORD glyphnum, FX_DWORD* vglyphnum) = 0; }; #endif // CORE_INCLUDE_FXGE_FX_FONT_H_ diff --git a/core/include/fxge/fx_freetype.h b/core/include/fxge/fx_freetype.h index 77f30d51a4..c7c8295961 100644 --- a/core/include/fxge/fx_freetype.h +++ b/core/include/fxge/fx_freetype.h @@ -30,7 +30,8 @@ extern "C" { #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_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 @@ -41,57 +42,73 @@ extern "C" { #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_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 +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)) + 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)) + 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)) + 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_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_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_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) + 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_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_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 @@ -105,23 +122,30 @@ typedef FT_CharMap FXFT_CharMap; #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_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_Glyph_HoriAdvance(face) \ + ((FT_Face)face)->glyph->metrics.horiAdvance #define FXFT_Get_MM_Axis(var, index) &((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_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) &((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_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_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) @@ -133,13 +157,19 @@ typedef FT_CharMap FXFT_CharMap; #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_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); +#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 }; diff --git a/core/include/fxge/fx_ge.h b/core/include/fxge/fx_ge.h index dd349adb29..0aa3f17d4d 100644 --- a/core/include/fxge/fx_ge.h +++ b/core/include/fxge/fx_ge.h @@ -22,708 +22,712 @@ class IFX_RenderDeviceDriver; class CCodec_ModuleMgr; class IFXG_PaintModuleMgr; -class CFX_GEModule -{ -public: - - static void Create(); - - 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: - - CFX_GEModule(); - - ~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; +class CFX_GEModule { + public: + static void Create(); + + 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: + CFX_GEModule(); + + ~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; }; typedef struct { + FX_FLOAT m_PointX; - FX_FLOAT m_PointX; + FX_FLOAT m_PointY; - FX_FLOAT m_PointY; - - int m_Flag; + 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); +#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 FX_RECT& rect); - CFX_ClipRgn(const CFX_ClipRgn& src); + CFX_ClipRgn(const CFX_ClipRgn& src); - ~CFX_ClipRgn(); + ~CFX_ClipRgn(); - typedef enum { - RectI, - MaskF - } ClipType; + typedef enum { RectI, MaskF } ClipType; - void Reset(const FX_RECT& rect); + void Reset(const FX_RECT& rect); - ClipType GetType() const - { - return m_Type; - } + ClipType GetType() const { return m_Type; } - const FX_RECT& GetBox() const - { - return m_Box; - } + const FX_RECT& GetBox() const { return m_Box; } - CFX_DIBitmapRef GetMask() const - { - return m_Mask; - } + CFX_DIBitmapRef GetMask() const { return m_Mask; } - void IntersectRect(const FX_RECT& rect); + void IntersectRect(const FX_RECT& rect); - void IntersectMaskF(int left, int top, CFX_DIBitmapRef Mask); -protected: + void IntersectMaskF(int left, int top, CFX_DIBitmapRef Mask); - ClipType m_Type; + protected: + ClipType m_Type; - FX_RECT m_Box; + FX_RECT m_Box; - CFX_DIBitmapRef m_Mask; + CFX_DIBitmapRef m_Mask; - void IntersectMaskRect(FX_RECT rect, FX_RECT mask_box, CFX_DIBitmapRef 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; +#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; +inline FX_ARGB ArgbGammaInverse(FX_ARGB argb) { + return argb; } -class CFX_PathData -{ -public: - - CFX_PathData(); - - CFX_PathData(const CFX_PathData& src); - - ~CFX_PathData(); +class CFX_PathData { + public: + CFX_PathData(); + CFX_PathData(const CFX_PathData& src); + ~CFX_PathData(); + int GetPointCount() const { return m_PointCount; } - int GetPointCount() const - { - return m_PointCount; - } + int GetFlag(int index) const { return m_pPoints[index].m_Flag; } - 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 GetPointX(int index) const - { - return m_pPoints[index].m_PointX; - } + FX_FLOAT GetPointY(int index) const { return m_pPoints[index].m_PointY; } - 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; - FX_PATHPOINT* GetPoints() const - { - return m_pPoints; - } + CFX_FloatRect GetBoundingBox(FX_FLOAT line_width, FX_FLOAT miter_limit) const; - void SetPointCount(int nPoints); - void AllocPointCount(int nPoints); - void AddPointCount(int addPoints); + void Transform(const CFX_AffineMatrix* pMatrix); - CFX_FloatRect GetBoundingBox() const; + FX_BOOL IsRect() const; - CFX_FloatRect GetBoundingBox(FX_FLOAT line_width, FX_FLOAT miter_limit) const; + FX_BOOL GetZeroAreaPath(CFX_PathData& NewPath, + CFX_AffineMatrix* pMatrix, + FX_BOOL& bThin, + FX_BOOL bAdjust) const; - void Transform(const CFX_AffineMatrix* pMatrix); + FX_BOOL IsRect(const CFX_AffineMatrix* pMatrix, CFX_FloatRect* rect) const; - FX_BOOL IsRect() const; + void Append(const CFX_PathData* pSrc, const CFX_AffineMatrix* pMatrix); + void AppendRect(FX_FLOAT left, FX_FLOAT bottom, FX_FLOAT right, FX_FLOAT top); - FX_BOOL GetZeroAreaPath(CFX_PathData& NewPath, CFX_AffineMatrix* pMatrix, FX_BOOL&bThin, FX_BOOL bAdjust) const; + void SetPoint(int index, FX_FLOAT x, FX_FLOAT y, int flag); - FX_BOOL IsRect(const CFX_AffineMatrix* pMatrix, CFX_FloatRect* rect) const; + void TrimPoints(int nPoints); - void Append(const CFX_PathData* pSrc, const CFX_AffineMatrix* pMatrix); - void AppendRect(FX_FLOAT left, FX_FLOAT bottom, FX_FLOAT right, FX_FLOAT top); + void Copy(const CFX_PathData& src); - void SetPoint(int index, FX_FLOAT x, FX_FLOAT y, int flag); + protected: + friend class CPDF_Path; - void TrimPoints(int nPoints); + int m_PointCount; - void Copy(const CFX_PathData &src); -protected: - friend class CPDF_Path; + FX_PATHPOINT* m_pPoints; - int m_PointCount; - - FX_PATHPOINT* m_pPoints; - - int m_AllocCount; + int m_AllocCount; }; -class CFX_GraphStateData -{ -public: - - CFX_GraphStateData(); - - CFX_GraphStateData(const CFX_GraphStateData& src); +class CFX_GraphStateData { + public: + CFX_GraphStateData(); - ~CFX_GraphStateData(); + CFX_GraphStateData(const CFX_GraphStateData& src); - void Copy(const CFX_GraphStateData& src); + ~CFX_GraphStateData(); - void SetDashCount(int count); + 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 { - 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; - + 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 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 +#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 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 { - FX_DWORD m_GlyphIndex; - FX_FLOAT m_OriginX, m_OriginY; - int m_FontCharWidth; - FX_BOOL m_bGlyphAdjust; - FX_FLOAT m_AdjustMatrix[4]; - FX_DWORD m_ExtGID; - FX_BOOL m_bFontStyle; + FX_DWORD m_GlyphIndex; + FX_FLOAT m_OriginX, m_OriginY; + int m_FontCharWidth; + FX_BOOL m_bGlyphAdjust; + FX_FLOAT m_AdjustMatrix[4]; + FX_DWORD m_ExtGID; + FX_BOOL m_bFontStyle; } FXTEXT_CHARPOS; -class CFX_RenderDevice -{ -public: - CFX_RenderDevice(); - - virtual ~CFX_RenderDevice(); - - void SetDeviceDriver(IFX_RenderDeviceDriver* pDriver); +class CFX_RenderDevice { + public: + CFX_RenderDevice(); - IFX_RenderDeviceDriver* GetDeviceDriver() const - { - return m_pDeviceDriver; - } + virtual ~CFX_RenderDevice(); - FX_BOOL StartRendering(); + void SetDeviceDriver(IFX_RenderDeviceDriver* pDriver); - void EndRendering(); + IFX_RenderDeviceDriver* GetDeviceDriver() const { return m_pDeviceDriver; } + FX_BOOL StartRendering(); + void EndRendering(); - void SaveState(); + void SaveState(); - void RestoreState(FX_BOOL bKeepSaved = FALSE); + 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 GetWidth() const - { - return m_Width; - } + int GetBPP() const { return m_bpp; } - int GetHeight() const - { - return m_Height; - } + int GetRenderCaps() const { return m_RenderCaps; } - int GetDeviceClass() const - { - return m_DeviceClass; - } + int GetDeviceCaps(int id) const; - int GetBPP() const - { - return m_bpp; - } + CFX_Matrix GetCTM() const; - int GetRenderCaps() const - { - return m_RenderCaps; - } + CFX_DIBitmap* GetBitmap() const { return m_pBitmap; } + void SetBitmap(CFX_DIBitmap* pBitmap) { m_pBitmap = pBitmap; } - int GetDeviceCaps(int id) const; + FX_BOOL CreateCompatibleBitmap(CFX_DIBitmap* pDIB, + int width, + int height) const; - CFX_Matrix GetCTM() const; + const FX_RECT& GetClipBox() const { return m_ClipBox; } + FX_BOOL SetClip_PathFill(const CFX_PathData* pPathData, + const CFX_AffineMatrix* pObject2Device, + int fill_mode); - 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_AffineMatrix* pObject2Device, - int fill_mode - ); + FX_BOOL SetClip_Rect(const FX_RECT* pRect); - FX_BOOL SetClip_Rect(const FX_RECT* pRect); - - FX_BOOL SetClip_PathStroke(const CFX_PathData* pPathData, - const CFX_AffineMatrix* pObject2Device, - const CFX_GraphStateData* pGraphState - ); - - FX_BOOL DrawPath(const CFX_PathData* pPathData, + FX_BOOL SetClip_PathStroke(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 - ); - - FX_BOOL SetPixel(int x, int y, FX_DWORD color, - int alpha_flag = 0, void* pIccTransform = NULL); - - FX_BOOL FillRect(const FX_RECT* pRect, FX_DWORD 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, FX_DWORD 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, - FX_DWORD flags = 0, void* pIccTransform = NULL, int blend_type = FXDIB_BLEND_NORMAL); - - FX_BOOL SetBitMask(const CFX_DIBSource* pBitmap, int left, int top, FX_DWORD 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, - FX_DWORD color, FX_DWORD flags = 0, int alpha_flag = 0, void* pIccTransform = NULL); - - 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); - - 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_AffineMatrix* pText2Device, - FX_DWORD fill_color, FX_DWORD 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_AffineMatrix* pText2User, - const CFX_AffineMatrix* pUser2Device, const CFX_GraphStateData* pGraphState, - FX_DWORD fill_color, FX_DWORD 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: - - CFX_DIBitmap* m_pBitmap; - - - - int m_Width; - - int m_Height; - - int m_bpp; - - int m_RenderCaps; - - int m_DeviceClass; - - FX_RECT m_ClipBox; - -protected: - - IFX_RenderDeviceDriver* m_pDeviceDriver; -private: - - void InitDeviceInfo(); - - void UpdateClipBox(); + const CFX_GraphStateData* pGraphState); + + 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); + + FX_BOOL SetPixel(int x, + int y, + FX_DWORD color, + int alpha_flag = 0, + void* pIccTransform = NULL); + + FX_BOOL FillRect(const FX_RECT* pRect, + FX_DWORD 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, + FX_DWORD 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, + FX_DWORD flags = 0, + void* pIccTransform = NULL, + int blend_type = FXDIB_BLEND_NORMAL); + + FX_BOOL SetBitMask(const CFX_DIBSource* pBitmap, + int left, + int top, + FX_DWORD 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, + FX_DWORD color, + FX_DWORD flags = 0, + int alpha_flag = 0, + void* pIccTransform = NULL); + + 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); + + 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_AffineMatrix* pText2Device, + FX_DWORD fill_color, + FX_DWORD 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_AffineMatrix* pText2User, + const CFX_AffineMatrix* pUser2Device, + const CFX_GraphStateData* pGraphState, + FX_DWORD fill_color, + FX_DWORD 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: + CFX_DIBitmap* m_pBitmap; + + int m_Width; + + int m_Height; + + int m_bpp; + + int m_RenderCaps; + + int m_DeviceClass; + + FX_RECT m_ClipBox; + + protected: + IFX_RenderDeviceDriver* m_pDeviceDriver; + + private: + void InitDeviceInfo(); + + void UpdateClipBox(); }; -class CFX_FxgeDevice : public CFX_RenderDevice -{ -public: - - CFX_FxgeDevice(); - - ~CFX_FxgeDevice(); - - FX_BOOL Attach(CFX_DIBitmap* pBitmap, int dither_bits = 0, FX_BOOL bRgbByteOrder = FALSE, CFX_DIBitmap* pOriDevice = NULL, FX_BOOL bGroupKnockout = FALSE); - - FX_BOOL Create(int width, int height, FXDIB_Format format, int dither_bits = 0, CFX_DIBitmap* pOriDevice = NULL); -protected: - - FX_BOOL m_bOwnedBitmap; +class CFX_FxgeDevice : public CFX_RenderDevice { + public: + CFX_FxgeDevice(); + + ~CFX_FxgeDevice(); + + FX_BOOL Attach(CFX_DIBitmap* pBitmap, + int dither_bits = 0, + FX_BOOL bRgbByteOrder = FALSE, + CFX_DIBitmap* pOriDevice = NULL, + FX_BOOL bGroupKnockout = FALSE); + + FX_BOOL Create(int width, + int height, + FXDIB_Format format, + int dither_bits = 0, + CFX_DIBitmap* pOriDevice = NULL); + + protected: + FX_BOOL m_bOwnedBitmap; }; -class CFX_SkiaDevice : public CFX_RenderDevice -{ -public: - - CFX_SkiaDevice(); - - ~CFX_SkiaDevice(); - - FX_BOOL Attach(CFX_DIBitmap* pBitmap, int dither_bits = 0, FX_BOOL bRgbByteOrder = FALSE, CFX_DIBitmap* pOriDevice = NULL, FX_BOOL bGroupKnockout = FALSE); - - FX_BOOL Create(int width, int height, FXDIB_Format format, int dither_bits = 0, CFX_DIBitmap* pOriDevice = NULL); -protected: - - FX_BOOL m_bOwnedBitmap; +class CFX_SkiaDevice : public CFX_RenderDevice { + public: + CFX_SkiaDevice(); + + ~CFX_SkiaDevice(); + + FX_BOOL Attach(CFX_DIBitmap* pBitmap, + int dither_bits = 0, + FX_BOOL bRgbByteOrder = FALSE, + CFX_DIBitmap* pOriDevice = NULL, + FX_BOOL bGroupKnockout = FALSE); + + FX_BOOL Create(int width, + int height, + FXDIB_Format format, + int dither_bits = 0, + CFX_DIBitmap* pOriDevice = NULL); + + 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); +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 ~IFX_RenderDeviceDriver() {} + virtual void Begin() {} + virtual void End() {} - virtual int GetDeviceCaps(int caps_id) = 0; + virtual int GetDeviceCaps(int caps_id) = 0; - virtual CFX_Matrix GetCTM() const - { - return CFX_Matrix(); - } + virtual CFX_Matrix GetCTM() const { return CFX_Matrix(); } - virtual FX_BOOL IsPSPrintDriver() - { - return FALSE; - } + virtual FX_BOOL IsPSPrintDriver() { return FALSE; } - virtual FX_BOOL StartRendering() - { - return TRUE; - } + virtual FX_BOOL StartRendering() { return TRUE; } - virtual void EndRendering() {} + 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_AffineMatrix* pObject2Device, + int fill_mode) = 0; - virtual void SaveState() = 0; - - virtual void RestoreState(FX_BOOL bKeepSaved = FALSE) = 0; - - - virtual FX_BOOL SetClip_PathFill(const CFX_PathData* pPathData, + virtual FX_BOOL SetClip_PathStroke(const CFX_PathData* pPathData, const CFX_AffineMatrix* pObject2Device, - int fill_mode - ) = 0; - - virtual FX_BOOL SetClip_PathStroke(const CFX_PathData* pPathData, - const CFX_AffineMatrix* pObject2Device, - const CFX_GraphStateData* pGraphState - ) - { - return FALSE; - } - - virtual 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 - ) = 0; - - virtual FX_BOOL SetPixel(int x, int y, FX_DWORD color, - int alpha_flag = 0, void* pIccTransform = NULL) - { - return FALSE; - } - - virtual FX_BOOL FillRect(const FX_RECT* pRect, FX_DWORD 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, FX_DWORD 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, FX_DWORD 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, 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) = 0; - - 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) = 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_AffineMatrix* pObject2Device, FX_FLOAT font_size, FX_DWORD color, - int alpha_flag = 0, void* pIccTransform = NULL) - { - return FALSE; - } - - virtual void* GetPlatformSurface() - { - return NULL; - } - - virtual int GetDriverType() - { - return 0; - } - - virtual void ClearDriver() {} + const CFX_GraphStateData* pGraphState) { + return FALSE; + } + + virtual 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) = 0; + + virtual FX_BOOL SetPixel(int x, + int y, + FX_DWORD color, + int alpha_flag = 0, + void* pIccTransform = NULL) { + return FALSE; + } + + virtual FX_BOOL FillRect(const FX_RECT* pRect, + FX_DWORD 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, + FX_DWORD 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, + FX_DWORD 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, + 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) = 0; + + 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) = 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_AffineMatrix* pObject2Device, + FX_FLOAT font_size, + FX_DWORD color, + int alpha_flag = 0, + void* pIccTransform = NULL) { + return FALSE; + } + + virtual void* GetPlatformSurface() { return NULL; } + + virtual int GetDriverType() { return 0; } + + virtual void ClearDriver() {} }; -class IFX_PSOutput -{ -public: - virtual void Release() = 0; - virtual void OutputPS(const FX_CHAR* string, int len) = 0; - -protected: - ~IFX_PSOutput() { } +class IFX_PSOutput { + public: + virtual void Release() = 0; + virtual void OutputPS(const FX_CHAR* string, int len) = 0; + + protected: + ~IFX_PSOutput() {} }; class CPSFont; -class CFX_PSRenderer -{ -public: - - CFX_PSRenderer(); +class CFX_PSRenderer { + public: + CFX_PSRenderer(); - ~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 Init(IFX_PSOutput* pOutput, + int ps_level, + int width, + int height, + FX_BOOL bCmykOutput); + FX_BOOL StartRendering(); + void EndRendering(); - void SaveState(); + void SaveState(); - void RestoreState(FX_BOOL bKeepSaved = FALSE); + void RestoreState(FX_BOOL bKeepSaved = FALSE); - void SetClip_PathFill(const CFX_PathData* pPathData, - const CFX_AffineMatrix* pObject2Device, - int fill_mode - ); + void SetClip_PathFill(const CFX_PathData* pPathData, + const CFX_AffineMatrix* pObject2Device, + int fill_mode); - void SetClip_PathStroke(const CFX_PathData* pPathData, - const CFX_AffineMatrix* pObject2Device, - const CFX_GraphStateData* pGraphState - ); + void SetClip_PathStroke(const CFX_PathData* pPathData, + const CFX_AffineMatrix* pObject2Device, + const CFX_GraphStateData* pGraphState); - FX_RECT GetClipBox() - { - return m_ClipBox; - } + FX_RECT GetClipBox() { return m_ClipBox; } - 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 - ); + 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); - FX_BOOL SetDIBits(const CFX_DIBSource* pBitmap, FX_DWORD color, int dest_left, int dest_top, - int alpha_flag = 0, void* pIccTransform = NULL); + FX_BOOL SetDIBits(const CFX_DIBSource* pBitmap, + FX_DWORD color, + int dest_left, + int dest_top, + int alpha_flag = 0, + void* pIccTransform = NULL); - FX_BOOL StretchDIBits(const CFX_DIBSource* pBitmap, FX_DWORD color, int dest_left, int dest_top, - int dest_width, int dest_height, FX_DWORD flags, - int alpha_flag = 0, void* pIccTransform = NULL); + FX_BOOL StretchDIBits(const CFX_DIBSource* pBitmap, + FX_DWORD color, + int dest_left, + int dest_top, + int dest_width, + int dest_height, + FX_DWORD flags, + int alpha_flag = 0, + void* pIccTransform = NULL); - FX_BOOL DrawDIBits(const CFX_DIBSource* pBitmap, FX_DWORD color, - const CFX_AffineMatrix* pMatrix, FX_DWORD flags, - int alpha_flag = 0, void* pIccTransform = NULL); + FX_BOOL DrawDIBits(const CFX_DIBSource* pBitmap, + FX_DWORD color, + const CFX_AffineMatrix* pMatrix, + FX_DWORD 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_AffineMatrix* pObject2Device, FX_FLOAT font_size, FX_DWORD color, - int alpha_flag = 0, void* pIccTransform = NULL); -private: + FX_BOOL DrawText(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); - IFX_PSOutput* m_pOutput; + private: + IFX_PSOutput* m_pOutput; - int m_PSLevel; + int m_PSLevel; - CFX_GraphStateData m_CurGraphState; + CFX_GraphStateData m_CurGraphState; - FX_BOOL m_bGraphStateSet; + FX_BOOL m_bGraphStateSet; - FX_BOOL m_bCmykOutput; + FX_BOOL m_bCmykOutput; - FX_BOOL m_bColorSet; + FX_BOOL m_bColorSet; - FX_DWORD m_LastColor; + FX_DWORD m_LastColor; - FX_RECT m_ClipBox; + FX_RECT m_ClipBox; - CFX_ArrayTemplate<CPSFont*> m_PSFontList; + CFX_ArrayTemplate<CPSFont*> m_PSFontList; - CFX_ArrayTemplate<FX_RECT> m_ClipBoxStack; - FX_BOOL m_bInited; + CFX_ArrayTemplate<FX_RECT> m_ClipBoxStack; + FX_BOOL m_bInited; - void OutputPath(const CFX_PathData* pPathData, const CFX_AffineMatrix* pObject2Device); + void OutputPath(const CFX_PathData* pPathData, + const CFX_AffineMatrix* pObject2Device); - void SetGraphState(const CFX_GraphStateData* pGraphState); + void SetGraphState(const CFX_GraphStateData* pGraphState); - void SetColor(FX_DWORD color, int alpha_flag, void* pIccTransform); + void SetColor(FX_DWORD 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 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); + 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 index 0fb8bedcfc..16298581b3 100644 --- a/core/include/fxge/fx_ge_apple.h +++ b/core/include/fxge/fx_ge_apple.h @@ -7,21 +7,20 @@ #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); +#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(); + CGContextRef GetContext(); -protected: - CGContextRef m_pContext; - FX_BOOL m_bOwnedBitmap; + protected: + CGContextRef m_pContext; + FX_BOOL m_bOwnedBitmap; }; #endif diff --git a/core/include/fxge/fx_ge_win32.h b/core/include/fxge/fx_ge_win32.h index 5b16146b6a..149c46d40b 100644 --- a/core/include/fxge/fx_ge_win32.h +++ b/core/include/fxge/fx_ge_win32.h @@ -11,96 +11,87 @@ #ifndef _WINDOWS_ #include <windows.h> #endif -#define WINDIB_OPEN_MEMORY 0x1 -#define WINDIB_OPEN_PATHNAME 0x2 -typedef struct WINDIB_Open_Args_ { +#define WINDIB_OPEN_MEMORY 0x1 +#define WINDIB_OPEN_PATHNAME 0x2 +typedef struct WINDIB_Open_Args_ { + int flags; - int flags; + const uint8_t* memory_base; - const uint8_t* memory_base; + size_t memory_size; - size_t memory_size; - - const FX_WCHAR* path_name; + const FX_WCHAR* path_name; } WINDIB_Open_Args_; -class CFX_WindowsDIB : public CFX_DIBitmap -{ -public: - - static CFX_ByteString GetBitmapInfo(const CFX_DIBitmap* pBitmap); +class CFX_WindowsDIB : public CFX_DIBitmap { + public: + static CFX_ByteString GetBitmapInfo(const CFX_DIBitmap* pBitmap); - static CFX_DIBitmap* LoadFromBuf(BITMAPINFO* pbmi, void* pData); + static CFX_DIBitmap* LoadFromBuf(BITMAPINFO* pbmi, void* pData); - static HBITMAP GetDDBitmap(const CFX_DIBitmap* pBitmap, HDC hDC); + static HBITMAP GetDDBitmap(const CFX_DIBitmap* pBitmap, HDC hDC); - static CFX_DIBitmap* LoadFromDDB(HDC hDC, HBITMAP hBitmap, FX_DWORD* pPalette = NULL, FX_DWORD size = 256); + static CFX_DIBitmap* LoadFromDDB(HDC hDC, + HBITMAP hBitmap, + FX_DWORD* pPalette = NULL, + FX_DWORD size = 256); - static CFX_DIBitmap* LoadFromFile(const FX_WCHAR* filename); + 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* LoadFromFile(const FX_CHAR* filename) { + return LoadFromFile(CFX_WideString::FromLocal(filename).c_str()); + } - static CFX_DIBitmap* LoadDIBitmap(WINDIB_Open_Args_ args); + static CFX_DIBitmap* LoadDIBitmap(WINDIB_Open_Args_ args); - CFX_WindowsDIB(HDC hDC, int width, int height); + CFX_WindowsDIB(HDC hDC, int width, int height); - ~CFX_WindowsDIB(); + ~CFX_WindowsDIB(); - HDC GetDC() const - { - return m_hMemDC; - } + HDC GetDC() const { return m_hMemDC; } - HBITMAP GetWindowsBitmap() const - { - return m_hBitmap; - } + HBITMAP GetWindowsBitmap() const { return m_hBitmap; } - void LoadFromDevice(HDC hDC, int left, int top); + void LoadFromDevice(HDC hDC, int left, int top); - void SetToDevice(HDC hDC, int left, int top); -protected: + void SetToDevice(HDC hDC, int left, int top); - HDC m_hMemDC; + protected: + HDC m_hMemDC; - HBITMAP m_hBitmap; + HBITMAP m_hBitmap; - HBITMAP m_hOldBitmap; + HBITMAP m_hOldBitmap; }; -class CFX_WindowsDevice : public CFX_RenderDevice -{ -public: - static IFX_RenderDeviceDriver* CreateDriver(HDC hDC, FX_BOOL bCmykOutput = FALSE); +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); + CFX_WindowsDevice(HDC hDC, + FX_BOOL bCmykOutput = FALSE, + FX_BOOL bForcePSOutput = FALSE, + int psLevel = 2); - HDC GetDC() const; + HDC GetDC() const; - FX_BOOL m_bForcePSOutput; + FX_BOOL m_bForcePSOutput; - static int m_psLevel; + static int m_psLevel; }; -class CFX_WinBitmapDevice : public CFX_RenderDevice -{ -public: - - CFX_WinBitmapDevice(int width, int height, FXDIB_Format format); +class CFX_WinBitmapDevice : public CFX_RenderDevice { + public: + CFX_WinBitmapDevice(int width, int height, FXDIB_Format format); - ~CFX_WinBitmapDevice(); + ~CFX_WinBitmapDevice(); - HDC GetDC() - { - return m_hDC; - } -protected: + HDC GetDC() { return m_hDC; } - HBITMAP m_hBitmap; + protected: + HBITMAP m_hBitmap; - HBITMAP m_hOldBitmap; + HBITMAP m_hOldBitmap; - HDC m_hDC; + HDC m_hDC; }; #endif |