summaryrefslogtreecommitdiff
path: root/core/fxge/ge
diff options
context:
space:
mode:
authorDan Sinclair <dsinclair@chromium.org>2017-02-16 14:02:22 -0500
committerChromium commit bot <commit-bot@chromium.org>2017-02-16 19:23:59 +0000
commit49f7deb494064351c72ef4d31577e04f634e63f3 (patch)
tree05b46ee6b9c1f6cc9924e07af5ab2e095f647302 /core/fxge/ge
parent2c02faed1da2375a91c7f9c003beb606a0611074 (diff)
downloadpdfium-49f7deb494064351c72ef4d31577e04f634e63f3.tar.xz
Convert fx_font points to CFX_Point{F}s
This converts the two Origin{X,Y} points in fx_font to CFX_Point{F} points. Change-Id: Id7cbb34a6e76043f1b26e9d7091d89f300dfc563 Reviewed-on: https://pdfium-review.googlesource.com/2720 Reviewed-by: Nicolás Peña <npm@chromium.org> Commit-Queue: dsinclair <dsinclair@chromium.org>
Diffstat (limited to 'core/fxge/ge')
-rw-r--r--core/fxge/ge/cfx_renderdevice.cpp33
-rw-r--r--core/fxge/ge/fx_ge_text.cpp10
2 files changed, 24 insertions, 19 deletions
diff --git a/core/fxge/ge/cfx_renderdevice.cpp b/core/fxge/ge/cfx_renderdevice.cpp
index f2bf48912c..86e74cafc4 100644
--- a/core/fxge/ge/cfx_renderdevice.cpp
+++ b/core/fxge/ge/cfx_renderdevice.cpp
@@ -27,19 +27,19 @@ namespace {
void AdjustGlyphSpace(std::vector<FXTEXT_GLYPHPOS>* pGlyphAndPos) {
ASSERT(pGlyphAndPos->size() > 1);
std::vector<FXTEXT_GLYPHPOS>& glyphs = *pGlyphAndPos;
- bool bVertical = glyphs.back().m_OriginX == glyphs.front().m_OriginX;
- if (!bVertical && (glyphs.back().m_OriginY != glyphs.front().m_OriginY))
+ bool bVertical = glyphs.back().m_Origin.x == glyphs.front().m_Origin.x;
+ if (!bVertical && (glyphs.back().m_Origin.y != glyphs.front().m_Origin.y))
return;
for (size_t i = glyphs.size() - 1; i > 1; --i) {
FXTEXT_GLYPHPOS& next = glyphs[i];
- int next_origin = bVertical ? next.m_OriginY : next.m_OriginX;
- FX_FLOAT next_origin_f = bVertical ? next.m_fOriginY : next.m_fOriginX;
+ int next_origin = bVertical ? next.m_Origin.y : next.m_Origin.x;
+ FX_FLOAT next_origin_f = bVertical ? next.m_fOrigin.y : next.m_fOrigin.x;
FXTEXT_GLYPHPOS& current = glyphs[i - 1];
- int& current_origin = bVertical ? current.m_OriginY : current.m_OriginX;
+ int& current_origin = bVertical ? current.m_Origin.y : current.m_Origin.x;
FX_FLOAT current_origin_f =
- bVertical ? current.m_fOriginY : current.m_fOriginX;
+ bVertical ? current.m_fOrigin.y : current.m_fOrigin.x;
int space = next_origin - current_origin;
FX_FLOAT space_f = next_origin_f - current_origin_f;
@@ -927,15 +927,14 @@ bool CFX_RenderDevice::DrawNormalText(int nChars,
for (size_t i = 0; i < glyphs.size(); ++i) {
FXTEXT_GLYPHPOS& glyph = glyphs[i];
const FXTEXT_CHARPOS& charpos = pCharPos[i];
- glyph.m_fOriginX = charpos.m_Origin.x;
- glyph.m_fOriginY = charpos.m_Origin.y;
- text2Device.TransformPoint(glyph.m_fOriginX, glyph.m_fOriginY);
+ glyph.m_fOrigin = text2Device.Transform(charpos.m_Origin);
if (anti_alias < FXFT_RENDER_MODE_LCD)
- glyph.m_OriginX = FXSYS_round(glyph.m_fOriginX);
+ glyph.m_Origin.x = FXSYS_round(glyph.m_fOrigin.x);
else
- glyph.m_OriginX = (int)FXSYS_floor(glyph.m_fOriginX);
- glyph.m_OriginY = FXSYS_round(glyph.m_fOriginY);
+ glyph.m_Origin.x = static_cast<int>(FXSYS_floor(glyph.m_fOrigin.x));
+ glyph.m_Origin.y = FXSYS_round(glyph.m_fOrigin.y);
+
if (charpos.m_bGlyphAdjust) {
CFX_Matrix new_matrix(
charpos.m_AdjustMatrix[0], charpos.m_AdjustMatrix[1],
@@ -981,8 +980,8 @@ bool CFX_RenderDevice::DrawNormalText(int nChars,
continue;
const CFX_DIBitmap* pGlyph = &glyph.m_pGlyph->m_Bitmap;
bitmap.TransferBitmap(
- glyph.m_OriginX + glyph.m_pGlyph->m_Left - pixel_left,
- glyph.m_OriginY - glyph.m_pGlyph->m_Top - pixel_top,
+ glyph.m_Origin.x + glyph.m_pGlyph->m_Left - pixel_left,
+ glyph.m_Origin.y - glyph.m_pGlyph->m_Top - pixel_top,
pGlyph->GetWidth(), pGlyph->GetHeight(), pGlyph, 0, 0);
}
return SetBitMask(&bitmap, bmp_rect.left, bmp_rect.top, fill_color);
@@ -1016,13 +1015,13 @@ bool CFX_RenderDevice::DrawNormalText(int nChars,
if (!glyph.m_pGlyph)
continue;
- pdfium::base::CheckedNumeric<int> left = glyph.m_OriginX;
+ pdfium::base::CheckedNumeric<int> left = glyph.m_Origin.x;
left += glyph.m_pGlyph->m_Left;
left -= pixel_left;
if (!left.IsValid())
return false;
- pdfium::base::CheckedNumeric<int> top = glyph.m_OriginY;
+ pdfium::base::CheckedNumeric<int> top = glyph.m_Origin.y;
top -= glyph.m_pGlyph->m_Top;
top -= pixel_top;
if (!top.IsValid())
@@ -1042,7 +1041,7 @@ bool CFX_RenderDevice::DrawNormalText(int nChars,
}
bool bBGRStripe = !!(text_flags & FXTEXT_BGR_STRIPE);
ncols /= 3;
- int x_subpixel = (int)(glyph.m_fOriginX * 3) % 3;
+ int x_subpixel = static_cast<int>(glyph.m_fOrigin.x * 3) % 3;
int start_col =
pdfium::base::ValueOrDieForType<int>(pdfium::base::CheckMax(left, 0));
pdfium::base::CheckedNumeric<int> end_col_safe = left;
diff --git a/core/fxge/ge/fx_ge_text.cpp b/core/fxge/ge/fx_ge_text.cpp
index cc7ef7c6d7..669969db0b 100644
--- a/core/fxge/ge/fx_ge_text.cpp
+++ b/core/fxge/ge/fx_ge_text.cpp
@@ -28,6 +28,12 @@ void ResetTransform(FT_Face face) {
} // namespace
+FXTEXT_GLYPHPOS::FXTEXT_GLYPHPOS() : m_pGlyph(nullptr) {}
+
+FXTEXT_GLYPHPOS::FXTEXT_GLYPHPOS(const FXTEXT_GLYPHPOS&) = default;
+
+FXTEXT_GLYPHPOS::~FXTEXT_GLYPHPOS(){};
+
ScopedFontTransform::ScopedFontTransform(FT_Face face, FXFT_Matrix* matrix)
: m_Face(face) {
FXFT_Set_Transform(m_Face, matrix, 0);
@@ -48,7 +54,7 @@ FX_RECT FXGE_GetGlyphsBBox(const std::vector<FXTEXT_GLYPHPOS>& glyphs,
if (!pGlyph)
continue;
- FX_SAFE_INT32 char_left = glyph.m_OriginX;
+ FX_SAFE_INT32 char_left = glyph.m_Origin.x;
char_left += pGlyph->m_Left;
if (!char_left.IsValid())
continue;
@@ -64,7 +70,7 @@ FX_RECT FXGE_GetGlyphsBBox(const std::vector<FXTEXT_GLYPHPOS>& glyphs,
if (!char_right.IsValid())
continue;
- FX_SAFE_INT32 char_top = glyph.m_OriginY;
+ FX_SAFE_INT32 char_top = glyph.m_Origin.y;
char_top -= pGlyph->m_Top;
if (!char_top.IsValid())
continue;