summaryrefslogtreecommitdiff
path: root/core/src
diff options
context:
space:
mode:
Diffstat (limited to 'core/src')
-rw-r--r--core/src/fpdfapi/fpdf_parser/fpdf_parser_parser_embeddertest.cpp3
-rw-r--r--core/src/fpdftext/fpdf_text_int.cpp7
-rw-r--r--core/src/fpdftext/text_int.h1
-rw-r--r--core/src/fxcodec/codec/codec_int.h1
-rw-r--r--core/src/fxge/ge/fx_ge_text.cpp32
5 files changed, 39 insertions, 5 deletions
diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser_embeddertest.cpp b/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser_embeddertest.cpp
index fed7dbd395..1929db7e8f 100644
--- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser_embeddertest.cpp
+++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser_embeddertest.cpp
@@ -31,6 +31,5 @@ TEST_F(FPDFParserEmbeddertest, Bug_544880) {
}
TEST_F(FPDFParserEmbeddertest, Feature_Linearized_Loading) {
- EXPECT_TRUE(
- OpenDocument("feature_linearized_loading.pdf", true));
+ EXPECT_TRUE(OpenDocument("feature_linearized_loading.pdf", true));
}
diff --git a/core/src/fpdftext/fpdf_text_int.cpp b/core/src/fpdftext/fpdf_text_int.cpp
index 0754757940..d467fb91e0 100644
--- a/core/src/fpdftext/fpdf_text_int.cpp
+++ b/core/src/fpdftext/fpdf_text_int.cpp
@@ -82,26 +82,32 @@ CPDFText_ParseOptions::CPDFText_ParseOptions()
: m_bGetCharCodeOnly(FALSE),
m_bNormalizeObjs(TRUE),
m_bOutputHyphen(FALSE) {}
+
IPDF_TextPage* IPDF_TextPage::CreateTextPage(
const CPDF_Page* pPage,
CPDFText_ParseOptions ParserOptions) {
return new CPDF_TextPage(pPage, ParserOptions);
}
+
IPDF_TextPage* IPDF_TextPage::CreateTextPage(const CPDF_Page* pPage,
int flags) {
return new CPDF_TextPage(pPage, flags);
}
+
IPDF_TextPage* IPDF_TextPage::CreateTextPage(const CPDF_PageObjects* pObjs,
int flags) {
return new CPDF_TextPage(pObjs, flags);
}
+
IPDF_TextPageFind* IPDF_TextPageFind::CreatePageFind(
const IPDF_TextPage* pTextPage) {
return pTextPage ? new CPDF_TextPageFind(pTextPage) : nullptr;
}
+
IPDF_LinkExtract* IPDF_LinkExtract::CreateLinkExtract() {
return new CPDF_LinkExtract();
}
+
#define TEXT_BLANK_CHAR L' '
#define TEXT_LINEFEED_CHAR L'\n'
#define TEXT_RETURN_CHAR L'\r'
@@ -1391,7 +1397,6 @@ void CPDF_TextPage::ProcessMarkedContent(PDFTEXT_Obj Obj) {
for (n = 0; n < nContentMark; n++) {
CPDF_ContentMarkItem& item = pMarkData->GetItem(n);
CFX_ByteString tagStr = (CFX_ByteString)item.GetName();
-
pDict = ToDictionary(static_cast<CPDF_Object*>(item.GetParam()));
CPDF_String* temp =
ToString(pDict ? pDict->GetElement(FX_BSTRC("ActualText")) : nullptr);
diff --git a/core/src/fpdftext/text_int.h b/core/src/fpdftext/text_int.h
index 576ab7ca9a..46249150ce 100644
--- a/core/src/fpdftext/text_int.h
+++ b/core/src/fpdftext/text_int.h
@@ -195,6 +195,7 @@ class CPDF_TextPageFind : public IPDF_TextPageFind {
CFX_RectArray m_resArray;
FX_BOOL m_IsFind;
};
+
class CPDF_LinkExt {
public:
CPDF_LinkExt() {}
diff --git a/core/src/fxcodec/codec/codec_int.h b/core/src/fxcodec/codec/codec_int.h
index 199df82512..5513abce73 100644
--- a/core/src/fxcodec/codec/codec_int.h
+++ b/core/src/fxcodec/codec/codec_int.h
@@ -390,6 +390,7 @@ class CCodec_Jbig2Module : public ICodec_Jbig2Module {
IFX_Pause* pPause) override;
void DestroyJbig2Context(void* pJbig2Context) override;
};
+
struct DecodeData {
public:
DecodeData(unsigned char* src_data, OPJ_SIZE_T src_size)
diff --git a/core/src/fxge/ge/fx_ge_text.cpp b/core/src/fxge/ge/fx_ge_text.cpp
index a8e7bb8c3c..f01bdcfb3e 100644
--- a/core/src/fxge/ge/fx_ge_text.cpp
+++ b/core/src/fxge/ge/fx_ge_text.cpp
@@ -14,6 +14,33 @@
#define FX_GAMMA(value) (value)
#define FX_GAMMA_INVERSE(value) (value)
+namespace {
+
+void ResetTransform(FT_Face face) {
+ FXFT_Matrix matrix;
+ matrix.xx = 0x10000L;
+ matrix.xy = 0;
+ matrix.yx = 0;
+ matrix.yy = 0x10000L;
+ FXFT_Set_Transform(face, &matrix, 0);
+}
+
+// Sets the given transform on the font, and resets it to the identity when it
+// goes out of scope.
+class ScopedFontTransform {
+ public:
+ ScopedFontTransform(FT_Face face, FXFT_Matrix* matrix) : m_Face(face) {
+ FXFT_Set_Transform(m_Face, matrix, 0);
+ }
+
+ ~ScopedFontTransform() { ResetTransform(m_Face); }
+
+ private:
+ FT_Face m_Face;
+};
+
+} // namespace
+
FX_RECT FXGE_GetGlyphsBBox(FXTEXT_GLYPHPOS* pGlyphAndPos,
int nChars,
int anti_alias,
@@ -1156,6 +1183,7 @@ CFX_FaceCache* CFX_FontCache::GetCachedFace(CFX_Font* pFont) {
counted_face_cache->m_nCount++;
return counted_face_cache->m_Obj;
}
+
CFX_FaceCache* face_cache = new CFX_FaceCache(bExternal ? nullptr : face);
CFX_CountedFaceCache* counted_face_cache = new CFX_CountedFaceCache;
counted_face_cache->m_nCount = 2;
@@ -1524,7 +1552,7 @@ CFX_GlyphBitmap* CFX_FaceCache::RenderGlyph(CFX_Font* pFont,
pFont->GetSubstFont()->m_Weight);
}
}
- FXFT_Set_Transform(m_Face, &ft_matrix, 0);
+ ScopedFontTransform scoped_transform(m_Face, &ft_matrix);
int load_flags = (m_Face->face_flags & FT_FACE_FLAG_SFNT)
? FXFT_LOAD_NO_BITMAP
: (FXFT_LOAD_NO_BITMAP | FT_LOAD_NO_HINTING);
@@ -1791,7 +1819,7 @@ CFX_PathData* CFX_Font::LoadGlyphPath(FX_DWORD glyph_index, int dest_width) {
AdjustMMParams(glyph_index, dest_width, m_pSubstFont->m_Weight);
}
}
- FXFT_Set_Transform(m_Face, &ft_matrix, 0);
+ ScopedFontTransform scoped_transform(m_Face, &ft_matrix);
int load_flags = FXFT_LOAD_NO_BITMAP;
if (!(m_Face->face_flags & FT_FACE_FLAG_SFNT) || !FT_IS_TRICKY(m_Face)) {
load_flags |= FT_LOAD_NO_HINTING;