diff options
Diffstat (limited to 'core/src')
-rw-r--r-- | core/src/fpdfapi/fpdf_parser/fpdf_parser_parser_embeddertest.cpp | 3 | ||||
-rw-r--r-- | core/src/fpdftext/fpdf_text_int.cpp | 7 | ||||
-rw-r--r-- | core/src/fpdftext/text_int.h | 1 | ||||
-rw-r--r-- | core/src/fxcodec/codec/codec_int.h | 1 | ||||
-rw-r--r-- | core/src/fxge/ge/fx_ge_text.cpp | 32 |
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; |