summaryrefslogtreecommitdiff
path: root/xfa
diff options
context:
space:
mode:
authorDan Sinclair <dsinclair@chromium.org>2017-02-16 13:42:11 -0500
committerChromium commit bot <commit-bot@chromium.org>2017-02-16 19:05:27 +0000
commit2c02faed1da2375a91c7f9c003beb606a0611074 (patch)
tree81529e4ecb5e30bcd7274ae91376776f928d6e7f /xfa
parentabf240c57ff461f04a1766cce585cf54521e2170 (diff)
downloadpdfium-2c02faed1da2375a91c7f9c003beb606a0611074.tar.xz
Change FXTEXT_CHARPOS to use CFX_PointF
This CL updates the Origin x,y coordinates in FXTEXT_CHARPOS to be an CFX_PointF. Change-Id: I67281db2cb82687e12490145f7c99aee908e5fa8 Reviewed-on: https://pdfium-review.googlesource.com/2718 Commit-Queue: dsinclair <dsinclair@chromium.org> Reviewed-by: Nicolás Peña <npm@chromium.org>
Diffstat (limited to 'xfa')
-rw-r--r--xfa/fde/fde_visualset.h2
-rw-r--r--xfa/fgas/layout/fgas_rtfbreak.cpp102
-rw-r--r--xfa/fgas/layout/fgas_textbreak.cpp44
-rw-r--r--xfa/fxbarcode/oned/BC_OneDimWriter.cpp6
-rw-r--r--xfa/fxfa/app/cxfa_textlayout.cpp34
-rw-r--r--xfa/fxgraphics/cfx_graphics.cpp6
6 files changed, 89 insertions, 105 deletions
diff --git a/xfa/fde/fde_visualset.h b/xfa/fde/fde_visualset.h
index 0c6341fead..3260caee79 100644
--- a/xfa/fde/fde_visualset.h
+++ b/xfa/fde/fde_visualset.h
@@ -17,7 +17,7 @@
#include "xfa/fde/fde_object.h"
#include "xfa/fgas/font/cfgas_fontmgr.h"
-struct FXTEXT_CHARPOS;
+class FXTEXT_CHARPOS;
enum FDE_VISUALOBJTYPE {
FDE_VISUALOBJ_Canvas = 0x00,
diff --git a/xfa/fgas/layout/fgas_rtfbreak.cpp b/xfa/fgas/layout/fgas_rtfbreak.cpp
index 62e33fe9c2..24436ecf1f 100644
--- a/xfa/fgas/layout/fgas_rtfbreak.cpp
+++ b/xfa/fgas/layout/fgas_rtfbreak.cpp
@@ -1307,76 +1307,62 @@ int32_t CFX_RTFBreak::GetDisplayPos(const FX_RTFTEXTOBJ* pText,
ptOffset.y = fFontSize * (1000 - rtBBox.height) / 2000.0f;
}
}
- pCharPos->m_OriginX = fX + ptOffset.x;
- pCharPos->m_OriginY = fY - ptOffset.y;
+ pCharPos->m_Origin = CFX_PointF(fX + ptOffset.x, fY - ptOffset.y);
}
if (!bRTLPiece && dwCharType != FX_CHARTYPE_Combination) {
- if (bVerticalDoc) {
+ if (bVerticalDoc)
fY += fCharHeight;
- } else {
+ else
fX += fCharWidth;
- }
}
if (!bEmptyChar) {
pCharPos->m_bGlyphAdjust = true;
+
+ if (iCharRotation == 0) {
+ pCharPos->m_AdjustMatrix[0] = -1;
+ pCharPos->m_AdjustMatrix[1] = 0;
+ pCharPos->m_AdjustMatrix[2] = 0;
+ pCharPos->m_AdjustMatrix[3] = 1;
+ pCharPos->m_Origin.y += fAscent * iVerScale / 100.0f;
+ } else if (iCharRotation == 1) {
+ pCharPos->m_AdjustMatrix[0] = 0;
+ pCharPos->m_AdjustMatrix[1] = -1;
+ pCharPos->m_AdjustMatrix[2] = -1;
+ pCharPos->m_AdjustMatrix[3] = 0;
+ pCharPos->m_Origin.x -= fDescent;
+ } else if (iCharRotation == 2) {
+ pCharPos->m_AdjustMatrix[0] = 1;
+ pCharPos->m_AdjustMatrix[1] = 0;
+ pCharPos->m_AdjustMatrix[2] = 0;
+ pCharPos->m_AdjustMatrix[3] = -1;
+ pCharPos->m_Origin.x += fCharWidth;
+ } else {
+ pCharPos->m_AdjustMatrix[0] = 0;
+ pCharPos->m_AdjustMatrix[1] = 1;
+ pCharPos->m_AdjustMatrix[2] = 1;
+ pCharPos->m_AdjustMatrix[3] = 0;
+ }
+
if (bVerticalDoc) {
- if (iCharRotation == 0) {
- pCharPos->m_AdjustMatrix[0] = -1;
- pCharPos->m_AdjustMatrix[1] = 0;
- pCharPos->m_AdjustMatrix[2] = 0;
- pCharPos->m_AdjustMatrix[3] = 1;
- pCharPos->m_OriginY += fAscent * iVerScale / 100.0f;
- } else if (iCharRotation == 1) {
- pCharPos->m_AdjustMatrix[0] = 0;
- pCharPos->m_AdjustMatrix[1] = -1;
- pCharPos->m_AdjustMatrix[2] = -1;
- pCharPos->m_AdjustMatrix[3] = 0;
- pCharPos->m_OriginX -=
- fDescent + fAscent * iVerScale / 100.0f - fAscent;
+ if (iCharRotation == 1) {
+ pCharPos->m_Origin.x -= fAscent * iVerScale / 100.0f - fAscent;
} else if (iCharRotation == 2) {
- pCharPos->m_AdjustMatrix[0] = 1;
- pCharPos->m_AdjustMatrix[1] = 0;
- pCharPos->m_AdjustMatrix[2] = 0;
- pCharPos->m_AdjustMatrix[3] = -1;
- pCharPos->m_OriginX += fCharWidth;
- pCharPos->m_OriginY += fAscent;
- } else {
- pCharPos->m_AdjustMatrix[0] = 0;
- pCharPos->m_AdjustMatrix[1] = 1;
- pCharPos->m_AdjustMatrix[2] = 1;
- pCharPos->m_AdjustMatrix[3] = 0;
- pCharPos->m_OriginX += fAscent;
- pCharPos->m_OriginY += fCharWidth;
+ pCharPos->m_Origin.y += fAscent;
+ } else if (iCharRotation != 0) {
+ pCharPos->m_Origin.x += fAscent;
+ pCharPos->m_Origin.y += fCharWidth;
}
} else {
- if (iCharRotation == 0) {
- pCharPos->m_AdjustMatrix[0] = -1;
- pCharPos->m_AdjustMatrix[1] = 0;
- pCharPos->m_AdjustMatrix[2] = 0;
- pCharPos->m_AdjustMatrix[3] = 1;
- pCharPos->m_OriginY += fAscent * iVerScale / 100.0f - fAscent;
- } else if (iCharRotation == 1) {
- pCharPos->m_AdjustMatrix[0] = 0;
- pCharPos->m_AdjustMatrix[1] = -1;
- pCharPos->m_AdjustMatrix[2] = -1;
- pCharPos->m_AdjustMatrix[3] = 0;
- pCharPos->m_OriginX -= fDescent;
- pCharPos->m_OriginY -= fAscent + fDescent;
- } else if (iCharRotation == 2) {
- pCharPos->m_AdjustMatrix[0] = 1;
- pCharPos->m_AdjustMatrix[1] = 0;
- pCharPos->m_AdjustMatrix[2] = 0;
- pCharPos->m_AdjustMatrix[3] = -1;
- pCharPos->m_OriginX += fCharWidth;
- pCharPos->m_OriginY -= fAscent;
- } else {
- pCharPos->m_AdjustMatrix[0] = 0;
- pCharPos->m_AdjustMatrix[1] = 1;
- pCharPos->m_AdjustMatrix[2] = 1;
- pCharPos->m_AdjustMatrix[3] = 0;
- pCharPos->m_OriginX += fAscent * iVerScale / 100.0f;
- }
+ if (iCharRotation == 0)
+ pCharPos->m_Origin.y -= fAscent;
+ else if (iCharRotation == 1)
+ pCharPos->m_Origin.y -= fAscent + fDescent;
+ else if (iCharRotation == 2)
+ pCharPos->m_Origin.y -= fAscent;
+ else
+ pCharPos->m_Origin.x += fAscent * iVerScale / 100.0f;
}
+
if (iHorScale != 100 || iVerScale != 100) {
pCharPos->m_AdjustMatrix[0] =
pCharPos->m_AdjustMatrix[0] * iHorScale / 100.0f;
diff --git a/xfa/fgas/layout/fgas_textbreak.cpp b/xfa/fgas/layout/fgas_textbreak.cpp
index 69773f8eb0..79af4707ed 100644
--- a/xfa/fgas/layout/fgas_textbreak.cpp
+++ b/xfa/fgas/layout/fgas_textbreak.cpp
@@ -1447,22 +1447,21 @@ int32_t CFX_TxtBreak::GetDisplayPos(const FX_TXTRUN* pTxtRun,
}
}
if (!bEmptyChar || (bEmptyChar && !bSkipSpace)) {
- pCharPos->m_OriginX = fX;
- pCharPos->m_OriginY = fY;
+ pCharPos->m_Origin = CFX_PointF(fX, fY);
if ((dwStyles & FX_TXTLAYOUTSTYLE_CombText) != 0) {
int32_t iFormWidth = iCharWidth;
pFont->GetCharWidth(wForm, iFormWidth, false);
FX_FLOAT fOffset = fFontSize * (iCharWidth - iFormWidth) / 2000.0f;
- if (bVerticalDoc) {
- pCharPos->m_OriginY += fOffset;
- } else {
- pCharPos->m_OriginX += fOffset;
- }
+ if (bVerticalDoc)
+ pCharPos->m_Origin.y += fOffset;
+ else
+ pCharPos->m_Origin.x += fOffset;
}
+
if (chartype == FX_CHARTYPE_Combination) {
CFX_Rect rtBBox;
if (pFont->GetCharBBox(wForm, &rtBBox, false)) {
- pCharPos->m_OriginY =
+ pCharPos->m_Origin.y =
fYBase + fFontSize -
fFontSize * (FX_FLOAT)rtBBox.height / (FX_FLOAT)iMaxHeight;
}
@@ -1471,9 +1470,8 @@ int32_t CFX_TxtBreak::GetDisplayPos(const FX_TXTRUN* pTxtRun,
if ((dwLastProps & FX_CHARTYPEBITSMASK) ==
FX_CHARTYPE_Combination) {
CFX_Rect rtBox;
- if (pFont->GetCharBBox(wLast, &rtBox, false)) {
- pCharPos->m_OriginY -= fFontSize * rtBox.height / iMaxHeight;
- }
+ if (pFont->GetCharBBox(wLast, &rtBox, false))
+ pCharPos->m_Origin.y -= fFontSize * rtBox.height / iMaxHeight;
}
}
}
@@ -1490,8 +1488,8 @@ int32_t CFX_TxtBreak::GetDisplayPos(const FX_TXTRUN* pTxtRun,
ptOffset.y = fFontSize * (iAscent - rtBBox.top - 150) / iMaxHeight;
}
}
- pCharPos->m_OriginX += ptOffset.x;
- pCharPos->m_OriginY -= ptOffset.y;
+ pCharPos->m_Origin.x += ptOffset.x;
+ pCharPos->m_Origin.y -= ptOffset.y;
}
if (!bRTLPiece && chartype != FX_CHARTYPE_Combination) {
if (bVerticalDoc) {
@@ -1508,26 +1506,26 @@ int32_t CFX_TxtBreak::GetDisplayPos(const FX_TXTRUN* pTxtRun,
pCharPos->m_AdjustMatrix[1] = 0;
pCharPos->m_AdjustMatrix[2] = 0;
pCharPos->m_AdjustMatrix[3] = 1;
- pCharPos->m_OriginY += fAscent;
+ pCharPos->m_Origin.y += fAscent;
} else if (iCharRotation == 1) {
pCharPos->m_AdjustMatrix[0] = 0;
pCharPos->m_AdjustMatrix[1] = -1;
pCharPos->m_AdjustMatrix[2] = -1;
pCharPos->m_AdjustMatrix[3] = 0;
- pCharPos->m_OriginX -= fDescent;
+ pCharPos->m_Origin.x -= fDescent;
} else if (iCharRotation == 2) {
pCharPos->m_AdjustMatrix[0] = 1;
pCharPos->m_AdjustMatrix[1] = 0;
pCharPos->m_AdjustMatrix[2] = 0;
pCharPos->m_AdjustMatrix[3] = -1;
- pCharPos->m_OriginX += fCharWidth;
- pCharPos->m_OriginY += fAscent;
+ pCharPos->m_Origin.x += fCharWidth;
+ pCharPos->m_Origin.y += fAscent;
} else {
pCharPos->m_AdjustMatrix[0] = 0;
pCharPos->m_AdjustMatrix[1] = 1;
pCharPos->m_AdjustMatrix[2] = 1;
pCharPos->m_AdjustMatrix[3] = 0;
- pCharPos->m_OriginX += fAscent;
+ pCharPos->m_Origin.x += fAscent;
}
} else {
if (iCharRotation == 0) {
@@ -1540,21 +1538,21 @@ int32_t CFX_TxtBreak::GetDisplayPos(const FX_TXTRUN* pTxtRun,
pCharPos->m_AdjustMatrix[1] = -1;
pCharPos->m_AdjustMatrix[2] = -1;
pCharPos->m_AdjustMatrix[3] = 0;
- pCharPos->m_OriginX -= fDescent;
- pCharPos->m_OriginY -= fAscent + fDescent;
+ pCharPos->m_Origin.x -= fDescent;
+ pCharPos->m_Origin.y -= fAscent + fDescent;
} else if (iCharRotation == 2) {
pCharPos->m_AdjustMatrix[0] = 1;
pCharPos->m_AdjustMatrix[1] = 0;
pCharPos->m_AdjustMatrix[2] = 0;
pCharPos->m_AdjustMatrix[3] = -1;
- pCharPos->m_OriginX += fCharWidth;
- pCharPos->m_OriginY -= fAscent;
+ pCharPos->m_Origin.x += fCharWidth;
+ pCharPos->m_Origin.y -= fAscent;
} else {
pCharPos->m_AdjustMatrix[0] = 0;
pCharPos->m_AdjustMatrix[1] = 1;
pCharPos->m_AdjustMatrix[2] = 1;
pCharPos->m_AdjustMatrix[3] = 0;
- pCharPos->m_OriginX += fAscent;
+ pCharPos->m_Origin.x += fAscent;
}
}
if (iHorScale != 100 || iVerScale != 100) {
diff --git a/xfa/fxbarcode/oned/BC_OneDimWriter.cpp b/xfa/fxbarcode/oned/BC_OneDimWriter.cpp
index 93a53a88a1..bc0d61fd25 100644
--- a/xfa/fxbarcode/oned/BC_OneDimWriter.cpp
+++ b/xfa/fxbarcode/oned/BC_OneDimWriter.cpp
@@ -177,8 +177,7 @@ void CBC_OneDimWriter::CalcTextInfo(const CFX_ByteString& text,
(FX_FLOAT)FXSYS_abs(cFont->GetDescent()) * (FX_FLOAT)fontSize / 1000.0f;
FX_FLOAT left = leftPositon;
FX_FLOAT top = 0.0;
- charPos[0].m_OriginX = penX + left;
- charPos[0].m_OriginY = penY + top;
+ charPos[0].m_Origin = CFX_PointF(penX + left, penY + top);
charPos[0].m_GlyphIndex = encoding->GlyphFromCharCode(pCharCode[0]);
charPos[0].m_FontCharWidth = cFont->GetGlyphWidth(charPos[0].m_GlyphIndex);
#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_
@@ -186,8 +185,7 @@ void CBC_OneDimWriter::CalcTextInfo(const CFX_ByteString& text,
#endif
penX += (FX_FLOAT)(charPos[0].m_FontCharWidth) * (FX_FLOAT)fontSize / 1000.0f;
for (int32_t i = 1; i < length; i++) {
- charPos[i].m_OriginX = penX + left;
- charPos[i].m_OriginY = penY + top;
+ charPos[i].m_Origin = CFX_PointF(penX + left, penY + top);
charPos[i].m_GlyphIndex = encoding->GlyphFromCharCode(pCharCode[i]);
charPos[i].m_FontCharWidth = cFont->GetGlyphWidth(charPos[i].m_GlyphIndex);
#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_
diff --git a/xfa/fxfa/app/cxfa_textlayout.cpp b/xfa/fxfa/app/cxfa_textlayout.cpp
index ad0fc057e2..07d1644b95 100644
--- a/xfa/fxfa/app/cxfa_textlayout.cpp
+++ b/xfa/fxfa/app/cxfa_textlayout.cpp
@@ -1187,11 +1187,11 @@ void CXFA_TextLayout::RenderPath(CFDE_RenderDevice* pDevice,
int32_t iChars = GetDisplayPos(pPiece, pCharPos);
if (iChars > 0) {
CFX_PointF pt1, pt2;
- FX_FLOAT fEndY = pCharPos[0].m_OriginY + 1.05f;
+ FX_FLOAT fEndY = pCharPos[0].m_Origin.y + 1.05f;
if (pPiece->iPeriod == XFA_ATTRIBUTEENUM_Word) {
for (int32_t i = 0; i < pPiece->iUnderline; i++) {
for (int32_t j = 0; j < iChars; j++) {
- pt1.x = pCharPos[j].m_OriginX;
+ pt1.x = pCharPos[j].m_Origin.x;
pt2.x =
pt1.x + pCharPos[j].m_FontCharWidth * pPiece->fFontSize / 1000.0f;
pt1.y = pt2.y = fEndY;
@@ -1200,9 +1200,9 @@ void CXFA_TextLayout::RenderPath(CFDE_RenderDevice* pDevice,
fEndY += 2.0f;
}
} else {
- pt1.x = pCharPos[0].m_OriginX;
+ pt1.x = pCharPos[0].m_Origin.x;
pt2.x =
- pCharPos[iChars - 1].m_OriginX +
+ pCharPos[iChars - 1].m_Origin.x +
pCharPos[iChars - 1].m_FontCharWidth * pPiece->fFontSize / 1000.0f;
for (int32_t i = 0; i < pPiece->iUnderline; i++) {
pt1.y = pt2.y = fEndY;
@@ -1210,9 +1210,9 @@ void CXFA_TextLayout::RenderPath(CFDE_RenderDevice* pDevice,
fEndY += 2.0f;
}
}
- fEndY = pCharPos[0].m_OriginY - pPiece->rtPiece.height * 0.25f;
- pt1.x = pCharPos[0].m_OriginX;
- pt2.x = pCharPos[iChars - 1].m_OriginX +
+ fEndY = pCharPos[0].m_Origin.y - pPiece->rtPiece.height * 0.25f;
+ pt1.x = pCharPos[0].m_Origin.x;
+ pt2.x = pCharPos[iChars - 1].m_Origin.x +
pCharPos[iChars - 1].m_FontCharWidth * pPiece->fFontSize / 1000.0f;
for (int32_t i = 0; i < pPiece->iLineThrough; i++) {
pt1.y = pt2.y = fEndY;
@@ -1253,25 +1253,29 @@ void CXFA_TextLayout::RenderPath(CFDE_RenderDevice* pDevice,
if (iChars < 1)
return;
- fOrgX = pCharPos[iChars - 1].m_OriginX +
+ fOrgX = pCharPos[iChars - 1].m_Origin.x +
pCharPos[iChars - 1].m_FontCharWidth * pPiece->fFontSize / 1000.0f;
pPiece = pPieceLine->m_textPieces[iPieceNext].get();
iChars = GetDisplayPos(pPiece, pCharPos);
if (iChars < 1)
return;
- fEndX = pCharPos[0].m_OriginX;
- CFX_PointF pt1, pt2;
- pt1.x = fOrgX, pt2.x = fEndX;
- FX_FLOAT fEndY = pCharPos[0].m_OriginY + 1.05f;
+ fEndX = pCharPos[0].m_Origin.x;
+ CFX_PointF pt1;
+ CFX_PointF pt2;
+ pt1.x = fOrgX;
+ pt2.x = fEndX;
+ FX_FLOAT fEndY = pCharPos[0].m_Origin.y + 1.05f;
for (int32_t i = 0; i < pPiece->iUnderline; i++) {
- pt1.y = pt2.y = fEndY;
+ pt1.y = fEndY;
+ pt2.y = fEndY;
pPath->AddLine(pt1, pt2);
fEndY += 2.0f;
}
- fEndY = pCharPos[0].m_OriginY - pPiece->rtPiece.height * 0.25f;
+ fEndY = pCharPos[0].m_Origin.y - pPiece->rtPiece.height * 0.25f;
for (int32_t i = 0; i < pPiece->iLineThrough; i++) {
- pt1.y = pt2.y = fEndY;
+ pt1.y = fEndY;
+ pt2.y = fEndY;
pPath->AddLine(pt1, pt2);
fEndY += 2.0f;
}
diff --git a/xfa/fxgraphics/cfx_graphics.cpp b/xfa/fxgraphics/cfx_graphics.cpp
index f1abfb7cb5..2b8bd17aad 100644
--- a/xfa/fxgraphics/cfx_graphics.cpp
+++ b/xfa/fxgraphics/cfx_graphics.cpp
@@ -1484,8 +1484,7 @@ FWL_Error CFX_Graphics::CalcTextInfo(const CFX_WideString& text,
FX_FLOAT left = (FX_FLOAT)(0);
FX_FLOAT top = (FX_FLOAT)(0);
charCodes[0] = text.GetAt(0);
- charPos[0].m_OriginX = penX + left;
- charPos[0].m_OriginY = penY + top;
+ charPos[0].m_Origin = CFX_PointF(penX + left, penY + top);
charPos[0].m_GlyphIndex = encoding->GlyphFromCharCode(charCodes[0]);
charPos[0].m_FontCharWidth = FXSYS_round(
m_info.font->GetGlyphWidth(charPos[0].m_GlyphIndex) * m_info.fontHScale);
@@ -1498,8 +1497,7 @@ FWL_Error CFX_Graphics::CalcTextInfo(const CFX_WideString& text,
m_info.fontSpacing;
for (int32_t i = 1; i < length; i++) {
charCodes[i] = text.GetAt(i);
- charPos[i].m_OriginX = penX + left;
- charPos[i].m_OriginY = penY + top;
+ charPos[i].m_Origin = CFX_PointF(penX + left, penY + top);
charPos[i].m_GlyphIndex = encoding->GlyphFromCharCode(charCodes[i]);
charPos[i].m_FontCharWidth =
FXSYS_round(m_info.font->GetGlyphWidth(charPos[i].m_GlyphIndex) *