| Index: fpdfsdk/fxedit/fxet_pageobjs.cpp
|
| diff --git a/fpdfsdk/fxedit/fxet_pageobjs.cpp b/fpdfsdk/fxedit/fxet_pageobjs.cpp
|
| index b862e7396dbed4fa95a31722954482a8908b23b6..6e7deed00d88bcf8f3c02559ad9ba0df28490e47 100644
|
| --- a/fpdfsdk/fxedit/fxet_pageobjs.cpp
|
| +++ b/fpdfsdk/fxedit/fxet_pageobjs.cpp
|
| @@ -107,32 +107,31 @@ void IFX_Edit::DrawUnderline(CFX_RenderDevice* pDevice,
|
| pDevice->SetClip_Rect(rcTemp.ToFxRect());
|
| }
|
|
|
| - if (IFX_Edit_Iterator* pIterator = pEdit->GetIterator()) {
|
| - if (pEdit->GetFontMap()) {
|
| - if (pRange)
|
| - pIterator->SetAt(pRange->BeginPos);
|
| - else
|
| - pIterator->SetAt(0);
|
| -
|
| - while (pIterator->NextWord()) {
|
| - CPVT_WordPlace place = pIterator->GetAt();
|
| - if (pRange && place.WordCmp(pRange->EndPos) > 0)
|
| - break;
|
| -
|
| - CPVT_Word word;
|
| - if (pIterator->GetWord(word)) {
|
| - CFX_PathData pathUnderline;
|
| - CFX_FloatRect rcUnderline = GetUnderLineRect(word);
|
| - rcUnderline.left += ptOffset.x;
|
| - rcUnderline.right += ptOffset.x;
|
| - rcUnderline.top += ptOffset.y;
|
| - rcUnderline.bottom += ptOffset.y;
|
| - pathUnderline.AppendRect(rcUnderline.left, rcUnderline.bottom,
|
| - rcUnderline.right, rcUnderline.top);
|
| -
|
| - pDevice->DrawPath(&pathUnderline, pUser2Device, NULL, color, 0,
|
| - FXFILL_WINDING);
|
| - }
|
| + IFX_Edit_Iterator* pIterator = pEdit->GetIterator();
|
| + if (pEdit->GetFontMap()) {
|
| + if (pRange)
|
| + pIterator->SetAt(pRange->BeginPos);
|
| + else
|
| + pIterator->SetAt(0);
|
| +
|
| + while (pIterator->NextWord()) {
|
| + CPVT_WordPlace place = pIterator->GetAt();
|
| + if (pRange && place.WordCmp(pRange->EndPos) > 0)
|
| + break;
|
| +
|
| + CPVT_Word word;
|
| + if (pIterator->GetWord(word)) {
|
| + CFX_PathData pathUnderline;
|
| + CFX_FloatRect rcUnderline = GetUnderLineRect(word);
|
| + rcUnderline.left += ptOffset.x;
|
| + rcUnderline.right += ptOffset.x;
|
| + rcUnderline.top += ptOffset.y;
|
| + rcUnderline.bottom += ptOffset.y;
|
| + pathUnderline.AppendRect(rcUnderline.left, rcUnderline.bottom,
|
| + rcUnderline.right, rcUnderline.top);
|
| +
|
| + pDevice->DrawPath(&pathUnderline, pUser2Device, NULL, color, 0,
|
| + FXFILL_WINDING);
|
| }
|
| }
|
| }
|
| @@ -176,95 +175,93 @@ void IFX_Edit::DrawEdit(CFX_RenderDevice* pDevice,
|
| pDevice->SetClip_Rect(rcTemp.ToFxRect());
|
| }
|
|
|
| - if (IFX_Edit_Iterator* pIterator = pEdit->GetIterator()) {
|
| - if (IPVT_FontMap* pFontMap = pEdit->GetFontMap()) {
|
| - if (pRange)
|
| - pIterator->SetAt(pRange->BeginPos);
|
| - else
|
| - pIterator->SetAt(0);
|
| -
|
| - CPVT_WordPlace oldplace;
|
| -
|
| - while (pIterator->NextWord()) {
|
| - CPVT_WordPlace place = pIterator->GetAt();
|
| - if (pRange && place.WordCmp(pRange->EndPos) > 0)
|
| - break;
|
| -
|
| - if (wrSelect.IsExist()) {
|
| - bSelect = place.WordCmp(wrSelect.BeginPos) > 0 &&
|
| - place.WordCmp(wrSelect.EndPos) <= 0;
|
| - if (bSelect) {
|
| - crCurFill = crWhite;
|
| - } else {
|
| - crCurFill = crTextFill;
|
| - }
|
| - }
|
| - if (pSystemHandler && pSystemHandler->IsSelectionImplemented()) {
|
| + IFX_Edit_Iterator* pIterator = pEdit->GetIterator();
|
| + if (IPVT_FontMap* pFontMap = pEdit->GetFontMap()) {
|
| + if (pRange)
|
| + pIterator->SetAt(pRange->BeginPos);
|
| + else
|
| + pIterator->SetAt(0);
|
| +
|
| + CPVT_WordPlace oldplace;
|
| +
|
| + while (pIterator->NextWord()) {
|
| + CPVT_WordPlace place = pIterator->GetAt();
|
| + if (pRange && place.WordCmp(pRange->EndPos) > 0)
|
| + break;
|
| +
|
| + if (wrSelect.IsExist()) {
|
| + bSelect = place.WordCmp(wrSelect.BeginPos) > 0 &&
|
| + place.WordCmp(wrSelect.EndPos) <= 0;
|
| + if (bSelect) {
|
| + crCurFill = crWhite;
|
| + } else {
|
| crCurFill = crTextFill;
|
| - crOldFill = crCurFill;
|
| }
|
| - CPVT_Word word;
|
| - if (pIterator->GetWord(word)) {
|
| - if (bSelect) {
|
| - CPVT_Line line;
|
| - pIterator->GetLine(line);
|
| -
|
| - if (pSystemHandler && pSystemHandler->IsSelectionImplemented()) {
|
| - CFX_FloatRect rc(word.ptWord.x, line.ptLine.y + line.fLineDescent,
|
| - word.ptWord.x + word.fWidth,
|
| - line.ptLine.y + line.fLineAscent);
|
| - rc.Intersect(rcClip);
|
| - pSystemHandler->OutputSelectedRect(pFFLData, rc);
|
| - } else {
|
| - CFX_PathData pathSelBK;
|
| - pathSelBK.AppendRect(word.ptWord.x,
|
| - line.ptLine.y + line.fLineDescent,
|
| - word.ptWord.x + word.fWidth,
|
| - line.ptLine.y + line.fLineAscent);
|
| -
|
| - pDevice->DrawPath(&pathSelBK, pUser2Device, NULL, crSelBK, 0,
|
| - FXFILL_WINDING);
|
| - }
|
| + }
|
| + if (pSystemHandler && pSystemHandler->IsSelectionImplemented()) {
|
| + crCurFill = crTextFill;
|
| + crOldFill = crCurFill;
|
| + }
|
| + CPVT_Word word;
|
| + if (pIterator->GetWord(word)) {
|
| + if (bSelect) {
|
| + CPVT_Line line;
|
| + pIterator->GetLine(line);
|
| +
|
| + if (pSystemHandler && pSystemHandler->IsSelectionImplemented()) {
|
| + CFX_FloatRect rc(word.ptWord.x, line.ptLine.y + line.fLineDescent,
|
| + word.ptWord.x + word.fWidth,
|
| + line.ptLine.y + line.fLineAscent);
|
| + rc.Intersect(rcClip);
|
| + pSystemHandler->OutputSelectedRect(pFFLData, rc);
|
| + } else {
|
| + CFX_PathData pathSelBK;
|
| + pathSelBK.AppendRect(
|
| + word.ptWord.x, line.ptLine.y + line.fLineDescent,
|
| + word.ptWord.x + word.fWidth, line.ptLine.y + line.fLineAscent);
|
| +
|
| + pDevice->DrawPath(&pathSelBK, pUser2Device, NULL, crSelBK, 0,
|
| + FXFILL_WINDING);
|
| }
|
| + }
|
|
|
| - if (bContinuous) {
|
| - if (place.LineCmp(oldplace) != 0 || word.nFontIndex != nFontIndex ||
|
| - crOldFill != crCurFill) {
|
| - if (sTextBuf.GetLength() > 0) {
|
| - DrawTextString(
|
| - pDevice,
|
| - CFX_FloatPoint(ptBT.x + ptOffset.x, ptBT.y + ptOffset.y),
|
| - pFontMap->GetPDFFont(nFontIndex), fFontSize, pUser2Device,
|
| - sTextBuf.AsStringC(), crOldFill, crTextStroke, nHorzScale);
|
| -
|
| - sTextBuf.Clear();
|
| - }
|
| - nFontIndex = word.nFontIndex;
|
| - ptBT = word.ptWord;
|
| - crOldFill = crCurFill;
|
| - }
|
| + if (bContinuous) {
|
| + if (place.LineCmp(oldplace) != 0 || word.nFontIndex != nFontIndex ||
|
| + crOldFill != crCurFill) {
|
| + if (sTextBuf.GetLength() > 0) {
|
| + DrawTextString(
|
| + pDevice,
|
| + CFX_FloatPoint(ptBT.x + ptOffset.x, ptBT.y + ptOffset.y),
|
| + pFontMap->GetPDFFont(nFontIndex), fFontSize, pUser2Device,
|
| + sTextBuf.AsStringC(), crOldFill, crTextStroke, nHorzScale);
|
|
|
| - sTextBuf << GetPDFWordString(pFontMap, word.nFontIndex, word.Word,
|
| - SubWord)
|
| - .AsStringC();
|
| - } else {
|
| - DrawTextString(
|
| - pDevice, CFX_FloatPoint(word.ptWord.x + ptOffset.x,
|
| - word.ptWord.y + ptOffset.y),
|
| - pFontMap->GetPDFFont(word.nFontIndex), fFontSize, pUser2Device,
|
| - GetPDFWordString(pFontMap, word.nFontIndex, word.Word, SubWord),
|
| - crCurFill, crTextStroke, nHorzScale);
|
| + sTextBuf.Clear();
|
| + }
|
| + nFontIndex = word.nFontIndex;
|
| + ptBT = word.ptWord;
|
| + crOldFill = crCurFill;
|
| }
|
| - oldplace = place;
|
| +
|
| + sTextBuf << GetPDFWordString(pFontMap, word.nFontIndex, word.Word,
|
| + SubWord)
|
| + .AsStringC();
|
| + } else {
|
| + DrawTextString(
|
| + pDevice, CFX_FloatPoint(word.ptWord.x + ptOffset.x,
|
| + word.ptWord.y + ptOffset.y),
|
| + pFontMap->GetPDFFont(word.nFontIndex), fFontSize, pUser2Device,
|
| + GetPDFWordString(pFontMap, word.nFontIndex, word.Word, SubWord),
|
| + crCurFill, crTextStroke, nHorzScale);
|
| }
|
| + oldplace = place;
|
| }
|
| + }
|
|
|
| - if (sTextBuf.GetLength() > 0) {
|
| - DrawTextString(
|
| - pDevice, CFX_FloatPoint(ptBT.x + ptOffset.x, ptBT.y + ptOffset.y),
|
| - pFontMap->GetPDFFont(nFontIndex), fFontSize, pUser2Device,
|
| - sTextBuf.AsStringC(), crOldFill, crTextStroke, nHorzScale);
|
| - }
|
| + if (sTextBuf.GetLength() > 0) {
|
| + DrawTextString(pDevice,
|
| + CFX_FloatPoint(ptBT.x + ptOffset.x, ptBT.y + ptOffset.y),
|
| + pFontMap->GetPDFFont(nFontIndex), fFontSize, pUser2Device,
|
| + sTextBuf.AsStringC(), crOldFill, crTextStroke, nHorzScale);
|
| }
|
| }
|
|
|
| @@ -297,102 +294,100 @@ void IFX_Edit::DrawRichEdit(CFX_RenderDevice* pDevice,
|
| pDevice->SetClip_Rect(rcTemp.ToFxRect());
|
| }
|
|
|
| - if (IFX_Edit_Iterator* pIterator = pEdit->GetIterator()) {
|
| - if (IPVT_FontMap* pFontMap = pEdit->GetFontMap()) {
|
| - if (pRange)
|
| - pIterator->SetAt(pRange->BeginPos);
|
| - else
|
| - pIterator->SetAt(0);
|
| + IFX_Edit_Iterator* pIterator = pEdit->GetIterator();
|
| + if (IPVT_FontMap* pFontMap = pEdit->GetFontMap()) {
|
| + if (pRange)
|
| + pIterator->SetAt(pRange->BeginPos);
|
| + else
|
| + pIterator->SetAt(0);
|
|
|
| - CPVT_WordPlace oldplace;
|
| + CPVT_WordPlace oldplace;
|
|
|
| - while (pIterator->NextWord()) {
|
| - CPVT_WordPlace place = pIterator->GetAt();
|
| - if (pRange && place.WordCmp(pRange->EndPos) > 0)
|
| - break;
|
| + while (pIterator->NextWord()) {
|
| + CPVT_WordPlace place = pIterator->GetAt();
|
| + if (pRange && place.WordCmp(pRange->EndPos) > 0)
|
| + break;
|
|
|
| - CPVT_Word word;
|
| - if (pIterator->GetWord(word)) {
|
| - word.WordProps.fFontSize = word.fFontSize;
|
| + CPVT_Word word;
|
| + if (pIterator->GetWord(word)) {
|
| + word.WordProps.fFontSize = word.fFontSize;
|
|
|
| - crCurText = ArgbEncode(255, word.WordProps.dwWordColor);
|
| + crCurText = ArgbEncode(255, word.WordProps.dwWordColor);
|
|
|
| - if (wrSelect.IsExist()) {
|
| - bSelect = place.WordCmp(wrSelect.BeginPos) > 0 &&
|
| - place.WordCmp(wrSelect.EndPos) <= 0;
|
| - if (bSelect) {
|
| - crCurText = crWhite;
|
| - }
|
| + if (wrSelect.IsExist()) {
|
| + bSelect = place.WordCmp(wrSelect.BeginPos) > 0 &&
|
| + place.WordCmp(wrSelect.EndPos) <= 0;
|
| + if (bSelect) {
|
| + crCurText = crWhite;
|
| }
|
| + }
|
|
|
| - if (bSelect) {
|
| - CPVT_Line line;
|
| - pIterator->GetLine(line);
|
| + if (bSelect) {
|
| + CPVT_Line line;
|
| + pIterator->GetLine(line);
|
|
|
| - CFX_PathData pathSelBK;
|
| - pathSelBK.AppendRect(word.ptWord.x + ptOffset.x,
|
| - line.ptLine.y + line.fLineDescent + ptOffset.y,
|
| - word.ptWord.x + word.fWidth + ptOffset.x,
|
| - line.ptLine.y + line.fLineAscent + ptOffset.y);
|
| + CFX_PathData pathSelBK;
|
| + pathSelBK.AppendRect(word.ptWord.x + ptOffset.x,
|
| + line.ptLine.y + line.fLineDescent + ptOffset.y,
|
| + word.ptWord.x + word.fWidth + ptOffset.x,
|
| + line.ptLine.y + line.fLineAscent + ptOffset.y);
|
|
|
| - pDevice->DrawPath(&pathSelBK, pUser2Device, NULL, crSelBK, 0,
|
| - FXFILL_WINDING);
|
| - }
|
| + pDevice->DrawPath(&pathSelBK, pUser2Device, NULL, crSelBK, 0,
|
| + FXFILL_WINDING);
|
| + }
|
|
|
| - if (place.LineCmp(oldplace) != 0 ||
|
| - word.WordProps.fCharSpace > 0.0f ||
|
| - word.WordProps.nHorzScale != 100 ||
|
| - FXSYS_memcmp(&word.WordProps, &wp, sizeof(CPVT_WordProps)) != 0 ||
|
| - crOld != crCurText) {
|
| - if (sTextBuf.GetLength() > 0) {
|
| - DrawTextString(
|
| - pDevice,
|
| - CFX_FloatPoint(ptBT.x + ptOffset.x, ptBT.y + ptOffset.y),
|
| - pFontMap->GetPDFFont(wp.nFontIndex), wp.fFontSize,
|
| - pUser2Device, sTextBuf.AsStringC(), crOld, 0, wp.nHorzScale);
|
| + if (place.LineCmp(oldplace) != 0 || word.WordProps.fCharSpace > 0.0f ||
|
| + word.WordProps.nHorzScale != 100 ||
|
| + FXSYS_memcmp(&word.WordProps, &wp, sizeof(CPVT_WordProps)) != 0 ||
|
| + crOld != crCurText) {
|
| + if (sTextBuf.GetLength() > 0) {
|
| + DrawTextString(
|
| + pDevice,
|
| + CFX_FloatPoint(ptBT.x + ptOffset.x, ptBT.y + ptOffset.y),
|
| + pFontMap->GetPDFFont(wp.nFontIndex), wp.fFontSize, pUser2Device,
|
| + sTextBuf.AsStringC(), crOld, 0, wp.nHorzScale);
|
|
|
| - sTextBuf.Clear();
|
| - }
|
| - wp = word.WordProps;
|
| - ptBT = word.ptWord;
|
| - crOld = crCurText;
|
| + sTextBuf.Clear();
|
| }
|
| + wp = word.WordProps;
|
| + ptBT = word.ptWord;
|
| + crOld = crCurText;
|
| + }
|
|
|
| - sTextBuf << GetPDFWordString(pFontMap, word.WordProps.nFontIndex,
|
| - word.Word, 0)
|
| - .AsStringC();
|
| -
|
| - if (word.WordProps.nWordStyle & PVTWORD_STYLE_UNDERLINE) {
|
| - CFX_PathData pathUnderline;
|
| - CFX_FloatRect rcUnderline = GetUnderLineRect(word);
|
| - pathUnderline.AppendRect(rcUnderline.left, rcUnderline.bottom,
|
| - rcUnderline.right, rcUnderline.top);
|
| + sTextBuf << GetPDFWordString(pFontMap, word.WordProps.nFontIndex,
|
| + word.Word, 0)
|
| + .AsStringC();
|
|
|
| - pDevice->DrawPath(&pathUnderline, pUser2Device, NULL, crCurText, 0,
|
| - FXFILL_WINDING);
|
| - }
|
| + if (word.WordProps.nWordStyle & PVTWORD_STYLE_UNDERLINE) {
|
| + CFX_PathData pathUnderline;
|
| + CFX_FloatRect rcUnderline = GetUnderLineRect(word);
|
| + pathUnderline.AppendRect(rcUnderline.left, rcUnderline.bottom,
|
| + rcUnderline.right, rcUnderline.top);
|
|
|
| - if (word.WordProps.nWordStyle & PVTWORD_STYLE_CROSSOUT) {
|
| - CFX_PathData pathCrossout;
|
| - CFX_FloatRect rcCrossout = GetCrossoutRect(word);
|
| - pathCrossout.AppendRect(rcCrossout.left, rcCrossout.bottom,
|
| - rcCrossout.right, rcCrossout.top);
|
| + pDevice->DrawPath(&pathUnderline, pUser2Device, NULL, crCurText, 0,
|
| + FXFILL_WINDING);
|
| + }
|
|
|
| - pDevice->DrawPath(&pathCrossout, pUser2Device, NULL, crCurText, 0,
|
| - FXFILL_WINDING);
|
| - }
|
| + if (word.WordProps.nWordStyle & PVTWORD_STYLE_CROSSOUT) {
|
| + CFX_PathData pathCrossout;
|
| + CFX_FloatRect rcCrossout = GetCrossoutRect(word);
|
| + pathCrossout.AppendRect(rcCrossout.left, rcCrossout.bottom,
|
| + rcCrossout.right, rcCrossout.top);
|
|
|
| - oldplace = place;
|
| + pDevice->DrawPath(&pathCrossout, pUser2Device, NULL, crCurText, 0,
|
| + FXFILL_WINDING);
|
| }
|
| - }
|
|
|
| - if (sTextBuf.GetLength() > 0) {
|
| - DrawTextString(
|
| - pDevice, CFX_FloatPoint(ptBT.x + ptOffset.x, ptBT.y + ptOffset.y),
|
| - pFontMap->GetPDFFont(wp.nFontIndex), wp.fFontSize, pUser2Device,
|
| - sTextBuf.AsStringC(), crOld, 0, wp.nHorzScale);
|
| + oldplace = place;
|
| }
|
| }
|
| +
|
| + if (sTextBuf.GetLength() > 0) {
|
| + DrawTextString(
|
| + pDevice, CFX_FloatPoint(ptBT.x + ptOffset.x, ptBT.y + ptOffset.y),
|
| + pFontMap->GetPDFFont(wp.nFontIndex), wp.fFontSize, pUser2Device,
|
| + sTextBuf.AsStringC(), crOld, 0, wp.nHorzScale);
|
| + }
|
| }
|
|
|
| pDevice->RestoreState();
|
| @@ -471,52 +466,49 @@ void IFX_Edit::GeneratePageObjects(
|
|
|
| ObjArray.RemoveAll();
|
|
|
| - if (IFX_Edit_Iterator* pIterator = pEdit->GetIterator()) {
|
| - if (IPVT_FontMap* pFontMap = pEdit->GetFontMap()) {
|
| - if (pRange)
|
| - pIterator->SetAt(pRange->BeginPos);
|
| - else
|
| - pIterator->SetAt(0);
|
| -
|
| - CPVT_WordPlace oldplace;
|
| -
|
| - while (pIterator->NextWord()) {
|
| - CPVT_WordPlace place = pIterator->GetAt();
|
| - if (pRange && place.WordCmp(pRange->EndPos) > 0)
|
| - break;
|
| -
|
| - CPVT_Word word;
|
| - if (pIterator->GetWord(word)) {
|
| - if (place.LineCmp(oldplace) != 0 ||
|
| - nOldFontIndex != word.nFontIndex) {
|
| - if (sTextBuf.GetLength() > 0) {
|
| - ObjArray.Add(AddTextObjToPageObjects(
|
| - pObjectHolder, crText, pFontMap->GetPDFFont(nOldFontIndex),
|
| - fFontSize, 0.0f, 100,
|
| - CFX_FloatPoint(ptBT.x + ptOffset.x, ptBT.y + ptOffset.y),
|
| - sTextBuf.AsStringC()));
|
| -
|
| - sTextBuf.Clear();
|
| - }
|
| -
|
| - ptBT = word.ptWord;
|
| - nOldFontIndex = word.nFontIndex;
|
| + IFX_Edit_Iterator* pIterator = pEdit->GetIterator();
|
| + if (IPVT_FontMap* pFontMap = pEdit->GetFontMap()) {
|
| + if (pRange)
|
| + pIterator->SetAt(pRange->BeginPos);
|
| + else
|
| + pIterator->SetAt(0);
|
| +
|
| + CPVT_WordPlace oldplace;
|
| +
|
| + while (pIterator->NextWord()) {
|
| + CPVT_WordPlace place = pIterator->GetAt();
|
| + if (pRange && place.WordCmp(pRange->EndPos) > 0)
|
| + break;
|
| +
|
| + CPVT_Word word;
|
| + if (pIterator->GetWord(word)) {
|
| + if (place.LineCmp(oldplace) != 0 || nOldFontIndex != word.nFontIndex) {
|
| + if (sTextBuf.GetLength() > 0) {
|
| + ObjArray.Add(AddTextObjToPageObjects(
|
| + pObjectHolder, crText, pFontMap->GetPDFFont(nOldFontIndex),
|
| + fFontSize, 0.0f, 100,
|
| + CFX_FloatPoint(ptBT.x + ptOffset.x, ptBT.y + ptOffset.y),
|
| + sTextBuf.AsStringC()));
|
| +
|
| + sTextBuf.Clear();
|
| }
|
|
|
| - sTextBuf << GetPDFWordString(pFontMap, word.nFontIndex, word.Word, 0)
|
| - .AsStringC();
|
| - oldplace = place;
|
| + ptBT = word.ptWord;
|
| + nOldFontIndex = word.nFontIndex;
|
| }
|
| - }
|
|
|
| - if (sTextBuf.GetLength() > 0) {
|
| - ObjArray.Add(AddTextObjToPageObjects(
|
| - pObjectHolder, crText, pFontMap->GetPDFFont(nOldFontIndex),
|
| - fFontSize, 0.0f, 100,
|
| - CFX_FloatPoint(ptBT.x + ptOffset.x, ptBT.y + ptOffset.y),
|
| - sTextBuf.AsStringC()));
|
| + sTextBuf << GetPDFWordString(pFontMap, word.nFontIndex, word.Word, 0)
|
| + .AsStringC();
|
| + oldplace = place;
|
| }
|
| }
|
| +
|
| + if (sTextBuf.GetLength() > 0) {
|
| + ObjArray.Add(AddTextObjToPageObjects(
|
| + pObjectHolder, crText, pFontMap->GetPDFFont(nOldFontIndex), fFontSize,
|
| + 0.0f, 100, CFX_FloatPoint(ptBT.x + ptOffset.x, ptBT.y + ptOffset.y),
|
| + sTextBuf.AsStringC()));
|
| + }
|
| }
|
| }
|
|
|
| @@ -535,82 +527,80 @@ void IFX_Edit::GenerateRichPageObjects(
|
|
|
| ObjArray.RemoveAll();
|
|
|
| - if (IFX_Edit_Iterator* pIterator = pEdit->GetIterator()) {
|
| - if (IPVT_FontMap* pFontMap = pEdit->GetFontMap()) {
|
| - if (pRange)
|
| - pIterator->SetAt(pRange->BeginPos);
|
| - else
|
| - pIterator->SetAt(0);
|
| -
|
| - CPVT_WordPlace oldplace;
|
| -
|
| - while (pIterator->NextWord()) {
|
| - CPVT_WordPlace place = pIterator->GetAt();
|
| - if (pRange && place.WordCmp(pRange->EndPos) > 0)
|
| - break;
|
| -
|
| - CPVT_Word word;
|
| - if (pIterator->GetWord(word)) {
|
| - word.WordProps.fFontSize = word.fFontSize;
|
| -
|
| - crCurText = ArgbEncode(255, word.WordProps.dwWordColor);
|
| -
|
| - if (place.LineCmp(oldplace) != 0 ||
|
| - word.WordProps.fCharSpace > 0.0f ||
|
| - word.WordProps.nHorzScale != 100 ||
|
| - FXSYS_memcmp(&word.WordProps, &wp, sizeof(CPVT_WordProps)) != 0 ||
|
| - crOld != crCurText) {
|
| - if (sTextBuf.GetLength() > 0) {
|
| - ObjArray.Add(AddTextObjToPageObjects(
|
| - pObjectHolder, crOld, pFontMap->GetPDFFont(wp.nFontIndex),
|
| - wp.fFontSize, wp.fCharSpace, wp.nHorzScale,
|
| - CFX_FloatPoint(ptBT.x + ptOffset.x, ptBT.y + ptOffset.y),
|
| - sTextBuf.AsStringC()));
|
| -
|
| - sTextBuf.Clear();
|
| - }
|
| -
|
| - wp = word.WordProps;
|
| - ptBT = word.ptWord;
|
| - crOld = crCurText;
|
| + IFX_Edit_Iterator* pIterator = pEdit->GetIterator();
|
| + if (IPVT_FontMap* pFontMap = pEdit->GetFontMap()) {
|
| + if (pRange)
|
| + pIterator->SetAt(pRange->BeginPos);
|
| + else
|
| + pIterator->SetAt(0);
|
| +
|
| + CPVT_WordPlace oldplace;
|
| +
|
| + while (pIterator->NextWord()) {
|
| + CPVT_WordPlace place = pIterator->GetAt();
|
| + if (pRange && place.WordCmp(pRange->EndPos) > 0)
|
| + break;
|
| +
|
| + CPVT_Word word;
|
| + if (pIterator->GetWord(word)) {
|
| + word.WordProps.fFontSize = word.fFontSize;
|
| +
|
| + crCurText = ArgbEncode(255, word.WordProps.dwWordColor);
|
| +
|
| + if (place.LineCmp(oldplace) != 0 || word.WordProps.fCharSpace > 0.0f ||
|
| + word.WordProps.nHorzScale != 100 ||
|
| + FXSYS_memcmp(&word.WordProps, &wp, sizeof(CPVT_WordProps)) != 0 ||
|
| + crOld != crCurText) {
|
| + if (sTextBuf.GetLength() > 0) {
|
| + ObjArray.Add(AddTextObjToPageObjects(
|
| + pObjectHolder, crOld, pFontMap->GetPDFFont(wp.nFontIndex),
|
| + wp.fFontSize, wp.fCharSpace, wp.nHorzScale,
|
| + CFX_FloatPoint(ptBT.x + ptOffset.x, ptBT.y + ptOffset.y),
|
| + sTextBuf.AsStringC()));
|
| +
|
| + sTextBuf.Clear();
|
| }
|
|
|
| - sTextBuf << GetPDFWordString(pFontMap, word.WordProps.nFontIndex,
|
| - word.Word, 0)
|
| - .AsStringC();
|
| + wp = word.WordProps;
|
| + ptBT = word.ptWord;
|
| + crOld = crCurText;
|
| + }
|
|
|
| - if (word.WordProps.nWordStyle & PVTWORD_STYLE_UNDERLINE) {
|
| - CFX_FloatRect rcUnderline = GetUnderLineRect(word);
|
| - rcUnderline.left += ptOffset.x;
|
| - rcUnderline.right += ptOffset.x;
|
| - rcUnderline.top += ptOffset.y;
|
| - rcUnderline.bottom += ptOffset.y;
|
| + sTextBuf << GetPDFWordString(pFontMap, word.WordProps.nFontIndex,
|
| + word.Word, 0)
|
| + .AsStringC();
|
|
|
| - AddRectToPageObjects(pObjectHolder, crCurText, rcUnderline);
|
| - }
|
| + if (word.WordProps.nWordStyle & PVTWORD_STYLE_UNDERLINE) {
|
| + CFX_FloatRect rcUnderline = GetUnderLineRect(word);
|
| + rcUnderline.left += ptOffset.x;
|
| + rcUnderline.right += ptOffset.x;
|
| + rcUnderline.top += ptOffset.y;
|
| + rcUnderline.bottom += ptOffset.y;
|
|
|
| - if (word.WordProps.nWordStyle & PVTWORD_STYLE_CROSSOUT) {
|
| - CFX_FloatRect rcCrossout = GetCrossoutRect(word);
|
| - rcCrossout.left += ptOffset.x;
|
| - rcCrossout.right += ptOffset.x;
|
| - rcCrossout.top += ptOffset.y;
|
| - rcCrossout.bottom += ptOffset.y;
|
| + AddRectToPageObjects(pObjectHolder, crCurText, rcUnderline);
|
| + }
|
|
|
| - AddRectToPageObjects(pObjectHolder, crCurText, rcCrossout);
|
| - }
|
| + if (word.WordProps.nWordStyle & PVTWORD_STYLE_CROSSOUT) {
|
| + CFX_FloatRect rcCrossout = GetCrossoutRect(word);
|
| + rcCrossout.left += ptOffset.x;
|
| + rcCrossout.right += ptOffset.x;
|
| + rcCrossout.top += ptOffset.y;
|
| + rcCrossout.bottom += ptOffset.y;
|
|
|
| - oldplace = place;
|
| + AddRectToPageObjects(pObjectHolder, crCurText, rcCrossout);
|
| }
|
| - }
|
|
|
| - if (sTextBuf.GetLength() > 0) {
|
| - ObjArray.Add(AddTextObjToPageObjects(
|
| - pObjectHolder, crOld, pFontMap->GetPDFFont(wp.nFontIndex),
|
| - wp.fFontSize, wp.fCharSpace, wp.nHorzScale,
|
| - CFX_FloatPoint(ptBT.x + ptOffset.x, ptBT.y + ptOffset.y),
|
| - sTextBuf.AsStringC()));
|
| + oldplace = place;
|
| }
|
| }
|
| +
|
| + if (sTextBuf.GetLength() > 0) {
|
| + ObjArray.Add(AddTextObjToPageObjects(
|
| + pObjectHolder, crOld, pFontMap->GetPDFFont(wp.nFontIndex),
|
| + wp.fFontSize, wp.fCharSpace, wp.nHorzScale,
|
| + CFX_FloatPoint(ptBT.x + ptOffset.x, ptBT.y + ptOffset.y),
|
| + sTextBuf.AsStringC()));
|
| + }
|
| }
|
| }
|
|
|
| @@ -619,29 +609,28 @@ void IFX_Edit::GenerateUnderlineObjects(CPDF_PageObjectHolder* pObjectHolder,
|
| const CFX_FloatPoint& ptOffset,
|
| const CPVT_WordRange* pRange,
|
| FX_COLORREF color) {
|
| - if (IFX_Edit_Iterator* pIterator = pEdit->GetIterator()) {
|
| - if (pEdit->GetFontMap()) {
|
| - if (pRange)
|
| - pIterator->SetAt(pRange->BeginPos);
|
| - else
|
| - pIterator->SetAt(0);
|
| -
|
| - CPVT_WordPlace oldplace;
|
| -
|
| - while (pIterator->NextWord()) {
|
| - CPVT_WordPlace place = pIterator->GetAt();
|
| - if (pRange && place.WordCmp(pRange->EndPos) > 0)
|
| - break;
|
| -
|
| - CPVT_Word word;
|
| - if (pIterator->GetWord(word)) {
|
| - CFX_FloatRect rcUnderline = GetUnderLineRect(word);
|
| - rcUnderline.left += ptOffset.x;
|
| - rcUnderline.right += ptOffset.x;
|
| - rcUnderline.top += ptOffset.y;
|
| - rcUnderline.bottom += ptOffset.y;
|
| - AddRectToPageObjects(pObjectHolder, color, rcUnderline);
|
| - }
|
| + IFX_Edit_Iterator* pIterator = pEdit->GetIterator();
|
| + if (pEdit->GetFontMap()) {
|
| + if (pRange)
|
| + pIterator->SetAt(pRange->BeginPos);
|
| + else
|
| + pIterator->SetAt(0);
|
| +
|
| + CPVT_WordPlace oldplace;
|
| +
|
| + while (pIterator->NextWord()) {
|
| + CPVT_WordPlace place = pIterator->GetAt();
|
| + if (pRange && place.WordCmp(pRange->EndPos) > 0)
|
| + break;
|
| +
|
| + CPVT_Word word;
|
| + if (pIterator->GetWord(word)) {
|
| + CFX_FloatRect rcUnderline = GetUnderLineRect(word);
|
| + rcUnderline.left += ptOffset.x;
|
| + rcUnderline.right += ptOffset.x;
|
| + rcUnderline.top += ptOffset.y;
|
| + rcUnderline.bottom += ptOffset.y;
|
| + AddRectToPageObjects(pObjectHolder, color, rcUnderline);
|
| }
|
| }
|
| }
|
|
|