Index: core/src/fxge/ge/fx_ge_text.cpp |
diff --git a/core/src/fxge/ge/fx_ge_text.cpp b/core/src/fxge/ge/fx_ge_text.cpp |
index 124ee7d88d1a58c9e379896951eb26b8ff3e3008..b3273f78ebf80d8879294ac88682de6043c6444c 100644 |
--- a/core/src/fxge/ge/fx_ge_text.cpp |
+++ b/core/src/fxge/ge/fx_ge_text.cpp |
@@ -1617,107 +1617,6 @@ CFX_GlyphBitmap* CFX_FaceCache::RenderGlyph(CFX_Font* pFont, |
} |
return pGlyphBitmap; |
} |
-FX_BOOL _OutputGlyph(void* dib, |
- int x, |
- int y, |
- CFX_Font* pFont, |
- int glyph_index, |
- FX_ARGB argb) { |
- CFX_DIBitmap* pDib = (CFX_DIBitmap*)dib; |
- FXFT_Face face = pFont->GetFace(); |
- int error = FXFT_Load_Glyph(face, glyph_index, FXFT_LOAD_NO_BITMAP); |
- if (error) { |
- return FALSE; |
- } |
- error = FXFT_Render_Glyph(face, FXFT_RENDER_MODE_NORMAL); |
- if (error) { |
- return FALSE; |
- } |
- int bmwidth = FXFT_Get_Bitmap_Width(FXFT_Get_Glyph_Bitmap(face)); |
- int bmheight = FXFT_Get_Bitmap_Rows(FXFT_Get_Glyph_Bitmap(face)); |
- int left = FXFT_Get_Glyph_BitmapLeft(face); |
- int top = FXFT_Get_Glyph_BitmapTop(face); |
- const uint8_t* src_buf = |
- (const uint8_t*)FXFT_Get_Bitmap_Buffer(FXFT_Get_Glyph_Bitmap(face)); |
- int src_pitch = FXFT_Get_Bitmap_Pitch(FXFT_Get_Glyph_Bitmap(face)); |
- CFX_DIBitmap mask; |
- mask.Create(bmwidth, bmheight, FXDIB_8bppMask); |
- uint8_t* dest_buf = mask.GetBuffer(); |
- int dest_pitch = mask.GetPitch(); |
- for (int row = 0; row < bmheight; row++) { |
- const uint8_t* src_scan = src_buf + row * src_pitch; |
- uint8_t* dest_scan = dest_buf + row * dest_pitch; |
- FXSYS_memcpy(dest_scan, src_scan, dest_pitch); |
- } |
- pDib->CompositeMask(x + left, y - top, bmwidth, bmheight, &mask, argb, 0, 0); |
- return TRUE; |
-} |
-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) { |
- if (!pFont) { |
- return FALSE; |
- } |
- FXFT_Face face = pFont->GetFace(); |
- FXFT_Select_Charmap(pFont->m_Face, FXFT_ENCODING_UNICODE); |
- if (pText_matrix) { |
- FXFT_Matrix ft_matrix; |
- ft_matrix.xx = (signed long)(pText_matrix->a / 64 * 65536); |
- ft_matrix.xy = (signed long)(pText_matrix->c / 64 * 65536); |
- ft_matrix.yx = (signed long)(pText_matrix->b / 64 * 65536); |
- ft_matrix.yy = (signed long)(pText_matrix->d / 64 * 65536); |
- FXFT_Set_Transform(face, &ft_matrix, 0); |
- } |
- FX_FLOAT x_pos = 0; |
- for (; *text != 0; text++) { |
- FX_WCHAR unicode = *text; |
- int glyph_index = FXFT_Get_Char_Index(pFont->m_Face, unicode); |
- if (glyph_index <= 0) { |
- continue; |
- } |
- int err = FXFT_Load_Glyph( |
- pFont->m_Face, glyph_index, |
- FXFT_LOAD_NO_SCALE | FXFT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH); |
- if (err) { |
- continue; |
- } |
- int w = FXFT_Get_Glyph_HoriAdvance(pFont->m_Face); |
- int em = FXFT_Get_Face_UnitsPerEM(pFont->m_Face); |
- FX_FLOAT x1, y1; |
- pText_matrix->Transform(x_pos, 0, x1, y1); |
- _OutputGlyph(dib, (int)x1 + x, (int)-y1 + y, pFont, glyph_index, argb); |
- x_pos += (FX_FLOAT)w / em; |
- } |
- return TRUE; |
-} |
-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) { |
- FXFT_Matrix ft_matrix; |
- if (pMatrix) { |
- ft_matrix.xx = (signed long)(pMatrix->a * font_size / 64 * 65536); |
- ft_matrix.xy = (signed long)(pMatrix->c * font_size / 64 * 65536); |
- ft_matrix.yx = (signed long)(pMatrix->b * font_size / 64 * 65536); |
- ft_matrix.yy = (signed long)(pMatrix->d * font_size / 64 * 65536); |
- } else { |
- ft_matrix.xx = (signed long)(font_size / 64 * 65536); |
- ft_matrix.xy = ft_matrix.yx = 0; |
- ft_matrix.yy = (signed long)(font_size / 64 * 65536); |
- } |
- FXFT_Set_Transform(pFont->m_Face, &ft_matrix, 0); |
- FX_BOOL ret = _OutputGlyph(dib, x, y, pFont, glyph_index, argb); |
- return ret; |
-} |
const CFX_PathData* CFX_FaceCache::LoadGlyphPath(CFX_Font* pFont, |
FX_DWORD glyph_index, |
int dest_width) { |