Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(12)

Side by Side Diff: core/src/fxge/ge/fx_ge_text.cpp

Issue 1287263003: Merge to XFA: OutputText() is dead code. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@xfa
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « core/include/fxge/fx_font.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #include "../../../include/fxge/fx_ge.h" 7 #include "../../../include/fxge/fx_ge.h"
8 #include "../../../include/fxge/fx_freetype.h" 8 #include "../../../include/fxge/fx_freetype.h"
9 #include "../../../include/fxcodec/fx_codec.h" 9 #include "../../../include/fxcodec/fx_codec.h"
10 #include "text_int.h" 10 #include "text_int.h"
(...skipping 1599 matching lines...) Expand 10 before | Expand all | Expand 10 after
1610 } 1610 }
1611 } else { 1611 } else {
1612 _ContrastAdjust(pSrcBuf, pDestBuf, bmwidth, bmheight, src_pitch, 1612 _ContrastAdjust(pSrcBuf, pDestBuf, bmwidth, bmheight, src_pitch,
1613 dest_pitch); 1613 dest_pitch);
1614 _GammaAdjust(pDestBuf, bmwidth, bmheight, dest_pitch, 1614 _GammaAdjust(pDestBuf, bmwidth, bmheight, dest_pitch,
1615 CFX_GEModule::Get()->GetTextGammaTable()); 1615 CFX_GEModule::Get()->GetTextGammaTable());
1616 } 1616 }
1617 } 1617 }
1618 return pGlyphBitmap; 1618 return pGlyphBitmap;
1619 } 1619 }
1620 FX_BOOL _OutputGlyph(void* dib,
1621 int x,
1622 int y,
1623 CFX_Font* pFont,
1624 int glyph_index,
1625 FX_ARGB argb) {
1626 CFX_DIBitmap* pDib = (CFX_DIBitmap*)dib;
1627 FXFT_Face face = pFont->GetFace();
1628 int error = FXFT_Load_Glyph(face, glyph_index, FXFT_LOAD_NO_BITMAP);
1629 if (error) {
1630 return FALSE;
1631 }
1632 error = FXFT_Render_Glyph(face, FXFT_RENDER_MODE_NORMAL);
1633 if (error) {
1634 return FALSE;
1635 }
1636 int bmwidth = FXFT_Get_Bitmap_Width(FXFT_Get_Glyph_Bitmap(face));
1637 int bmheight = FXFT_Get_Bitmap_Rows(FXFT_Get_Glyph_Bitmap(face));
1638 int left = FXFT_Get_Glyph_BitmapLeft(face);
1639 int top = FXFT_Get_Glyph_BitmapTop(face);
1640 const uint8_t* src_buf =
1641 (const uint8_t*)FXFT_Get_Bitmap_Buffer(FXFT_Get_Glyph_Bitmap(face));
1642 int src_pitch = FXFT_Get_Bitmap_Pitch(FXFT_Get_Glyph_Bitmap(face));
1643 CFX_DIBitmap mask;
1644 mask.Create(bmwidth, bmheight, FXDIB_8bppMask);
1645 uint8_t* dest_buf = mask.GetBuffer();
1646 int dest_pitch = mask.GetPitch();
1647 for (int row = 0; row < bmheight; row++) {
1648 const uint8_t* src_scan = src_buf + row * src_pitch;
1649 uint8_t* dest_scan = dest_buf + row * dest_pitch;
1650 FXSYS_memcpy(dest_scan, src_scan, dest_pitch);
1651 }
1652 pDib->CompositeMask(x + left, y - top, bmwidth, bmheight, &mask, argb, 0, 0);
1653 return TRUE;
1654 }
1655 FX_BOOL OutputText(void* dib,
1656 int x,
1657 int y,
1658 CFX_Font* pFont,
1659 double font_size,
1660 CFX_AffineMatrix* pText_matrix,
1661 unsigned short const* text,
1662 unsigned long argb) {
1663 if (!pFont) {
1664 return FALSE;
1665 }
1666 FXFT_Face face = pFont->GetFace();
1667 FXFT_Select_Charmap(pFont->m_Face, FXFT_ENCODING_UNICODE);
1668 if (pText_matrix) {
1669 FXFT_Matrix ft_matrix;
1670 ft_matrix.xx = (signed long)(pText_matrix->a / 64 * 65536);
1671 ft_matrix.xy = (signed long)(pText_matrix->c / 64 * 65536);
1672 ft_matrix.yx = (signed long)(pText_matrix->b / 64 * 65536);
1673 ft_matrix.yy = (signed long)(pText_matrix->d / 64 * 65536);
1674 FXFT_Set_Transform(face, &ft_matrix, 0);
1675 }
1676 FX_FLOAT x_pos = 0;
1677 for (; *text != 0; text++) {
1678 FX_WCHAR unicode = *text;
1679 int glyph_index = FXFT_Get_Char_Index(pFont->m_Face, unicode);
1680 if (glyph_index <= 0) {
1681 continue;
1682 }
1683 int err = FXFT_Load_Glyph(
1684 pFont->m_Face, glyph_index,
1685 FXFT_LOAD_NO_SCALE | FXFT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH);
1686 if (err) {
1687 continue;
1688 }
1689 int w = FXFT_Get_Glyph_HoriAdvance(pFont->m_Face);
1690 int em = FXFT_Get_Face_UnitsPerEM(pFont->m_Face);
1691 FX_FLOAT x1, y1;
1692 pText_matrix->Transform(x_pos, 0, x1, y1);
1693 _OutputGlyph(dib, (int)x1 + x, (int)-y1 + y, pFont, glyph_index, argb);
1694 x_pos += (FX_FLOAT)w / em;
1695 }
1696 return TRUE;
1697 }
1698 FX_BOOL OutputGlyph(void* dib,
1699 int x,
1700 int y,
1701 CFX_Font* pFont,
1702 double font_size,
1703 CFX_AffineMatrix* pMatrix,
1704 unsigned long glyph_index,
1705 unsigned long argb) {
1706 FXFT_Matrix ft_matrix;
1707 if (pMatrix) {
1708 ft_matrix.xx = (signed long)(pMatrix->a * font_size / 64 * 65536);
1709 ft_matrix.xy = (signed long)(pMatrix->c * font_size / 64 * 65536);
1710 ft_matrix.yx = (signed long)(pMatrix->b * font_size / 64 * 65536);
1711 ft_matrix.yy = (signed long)(pMatrix->d * font_size / 64 * 65536);
1712 } else {
1713 ft_matrix.xx = (signed long)(font_size / 64 * 65536);
1714 ft_matrix.xy = ft_matrix.yx = 0;
1715 ft_matrix.yy = (signed long)(font_size / 64 * 65536);
1716 }
1717 FXFT_Set_Transform(pFont->m_Face, &ft_matrix, 0);
1718 FX_BOOL ret = _OutputGlyph(dib, x, y, pFont, glyph_index, argb);
1719 return ret;
1720 }
1721 const CFX_PathData* CFX_FaceCache::LoadGlyphPath(CFX_Font* pFont, 1620 const CFX_PathData* CFX_FaceCache::LoadGlyphPath(CFX_Font* pFont,
1722 FX_DWORD glyph_index, 1621 FX_DWORD glyph_index,
1723 int dest_width) { 1622 int dest_width) {
1724 if (m_Face == NULL || glyph_index == (FX_DWORD)-1) { 1623 if (m_Face == NULL || glyph_index == (FX_DWORD)-1) {
1725 return NULL; 1624 return NULL;
1726 } 1625 }
1727 CFX_PathData* pGlyphPath = NULL; 1626 CFX_PathData* pGlyphPath = NULL;
1728 void* key; 1627 void* key;
1729 if (pFont->GetSubstFont()) 1628 if (pFont->GetSubstFont())
1730 key = (void*)(uintptr_t)( 1629 key = (void*)(uintptr_t)(
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
1944 void _CFX_UniqueKeyGen::Generate(int count, ...) { 1843 void _CFX_UniqueKeyGen::Generate(int count, ...) {
1945 va_list argList; 1844 va_list argList;
1946 va_start(argList, count); 1845 va_start(argList, count);
1947 for (int i = 0; i < count; i++) { 1846 for (int i = 0; i < count; i++) {
1948 int p = va_arg(argList, int); 1847 int p = va_arg(argList, int);
1949 ((FX_DWORD*)m_Key)[i] = p; 1848 ((FX_DWORD*)m_Key)[i] = p;
1950 } 1849 }
1951 va_end(argList); 1850 va_end(argList);
1952 m_KeyLen = count * sizeof(FX_DWORD); 1851 m_KeyLen = count * sizeof(FX_DWORD);
1953 } 1852 }
OLDNEW
« no previous file with comments | « core/include/fxge/fx_font.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698