diff options
author | Henrique Nakashima <hnakashima@chromium.org> | 2017-10-27 17:31:38 +0000 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2017-10-27 17:31:48 +0000 |
commit | 978ba20ffd0d2b37bf02b9d86828fa701c0c02fa (patch) | |
tree | 8752f17f8e0f604b30c66695dbf12602301c60bf /core | |
parent | d5ec7ab0cd0663184d6056bc6fc87c86ec345342 (diff) | |
download | pdfium-978ba20ffd0d2b37bf02b9d86828fa701c0c02fa.tar.xz |
Revert "Reland "Remove ContrastAdjust().""
This reverts commit d5ec7ab0cd0663184d6056bc6fc87c86ec345342.
Reason for revert: Did not mean to reland, just create the reland CL.
Original change's description:
> Reland "Remove ContrastAdjust()."
>
> Original change's description:
> > Revert "Remove ContrastAdjust()."
> >
> > This reverts commit 53d443f042b590ae2d920def16bc9daf66f8427d.
> >
> > Reason for revert: Breaks PDFToPWGRasterBrowserTest
> >
> > Original change's description:
> > > Remove ContrastAdjust().
> > >
> > > This post-processing increased the contrast of scaled-down features -
> > > mainly lines and fonts, relative to the background. The effect does not
> > > improved readability and in some cases makes the scaled-down version
> > > look like a different document at a glance. Text that is normal
> > > weight appears bold when scaled down in these cases.
> > >
> > > Change-Id: I2544d45e2bcec25d6742d2a60c1316d8df08cce1
> > > Reviewed-on: https://pdfium-review.googlesource.com/15471
> > > Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>
> > > Reviewed-by: dsinclair <dsinclair@chromium.org>
> >
> > TBR=bungeman@chromium.org,dsinclair@chromium.org,hnakashima@chromium.org
> >
> > # Not skipping CQ checks because original CL landed > 1 day ago.
> >
> > Change-Id: I7f61650bc6d917b3c6640da60f3f740ef4498de0
> > Reviewed-on: https://pdfium-review.googlesource.com/16970
> > Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>
> > Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
>
> TBR=bungeman@chromium.org,dsinclair@chromium.org,hnakashima@chromium.org
>
> Change-Id: I77d4377d30908d1e2d4dc842300a761072a5fbd4
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Reviewed-on: https://pdfium-review.googlesource.com/16990
> Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
> Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>
TBR=bungeman@chromium.org,dsinclair@chromium.org,hnakashima@chromium.org
Change-Id: Ie2e91662a1e82c0a793952aab47c2acbde1596d4
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://pdfium-review.googlesource.com/16991
Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>
Diffstat (limited to 'core')
-rw-r--r-- | core/fpdfapi/parser/cpdf_security_handler_embeddertest.cpp | 4 | ||||
-rw-r--r-- | core/fpdfapi/parser/fpdf_parser_decode_embeddertest.cpp | 4 | ||||
-rw-r--r-- | core/fxge/cfx_facecache.cpp | 55 |
3 files changed, 56 insertions, 7 deletions
diff --git a/core/fpdfapi/parser/cpdf_security_handler_embeddertest.cpp b/core/fpdfapi/parser/cpdf_security_handler_embeddertest.cpp index 91e625ab26..3770e98d86 100644 --- a/core/fpdfapi/parser/cpdf_security_handler_embeddertest.cpp +++ b/core/fpdfapi/parser/cpdf_security_handler_embeddertest.cpp @@ -43,11 +43,11 @@ TEST_F(CPDFSecurityHandlerEmbeddertest, OwnerPassword) { TEST_F(CPDFSecurityHandlerEmbeddertest, PasswordAfterGenerateSave) { #if _FX_PLATFORM_ == _FX_PLATFORM_LINUX_ - const char md5[] = "7048dca58e2ed8f93339008b91e4eb4e"; + const char md5[] = "e4a3701ca5b2a759e06455aa8d97d46e"; #elif _FX_PLATFORM_ == _FX_PLATFORM_APPLE_ const char md5[] = "6951b6c9891dfe0332a5b1983e484400"; #else - const char md5[] = "a5dde3c6c37b8716b9b369a03752a728"; + const char md5[] = "50985f3440d3f66c3b599ab138214015"; #endif // _FX_PLATFORM_ == _FX_PLATFORM_LINUX_ { ASSERT_TRUE(OpenDocument("encrypted.pdf", "5678", true)); diff --git a/core/fpdfapi/parser/fpdf_parser_decode_embeddertest.cpp b/core/fpdfapi/parser/fpdf_parser_decode_embeddertest.cpp index bf2fd6d10f..bb186924b6 100644 --- a/core/fpdfapi/parser/fpdf_parser_decode_embeddertest.cpp +++ b/core/fpdfapi/parser/fpdf_parser_decode_embeddertest.cpp @@ -115,9 +115,9 @@ TEST_F(FPDFParserDecodeEmbeddertest, Bug_455199) { #if _FX_PLATFORM_ == _FX_PLATFORM_APPLE_ const char kExpectedMd5sum[] = "b90475ca64d1348c3bf5e2b77ad9187a"; #elif _FX_PLATFORM_ == _FX_PLATFORM_WINDOWS_ - const char kExpectedMd5sum[] = "e5a6fa28298db07484cd922f3e210c88"; + const char kExpectedMd5sum[] = "9a2637b73fd5265309bfddd9c69476cd"; #else - const char kExpectedMd5sum[] = "2baa4c0e1758deba1b9c908e1fbd04ed"; + const char kExpectedMd5sum[] = "f7e129d97c58e91adeace32a4327b925"; #endif CompareBitmap(bitmap, 200, 200, kExpectedMd5sum); FPDFBitmap_Destroy(bitmap); diff --git a/core/fxge/cfx_facecache.cpp b/core/fxge/cfx_facecache.cpp index 3f037ac65a..a3e58ff29c 100644 --- a/core/fxge/cfx_facecache.cpp +++ b/core/fxge/cfx_facecache.cpp @@ -35,8 +35,48 @@ namespace { constexpr uint32_t kInvalidGlyphIndex = static_cast<uint32_t>(-1); +constexpr int kMinPixel = 0; +constexpr int kMaxPixel = 255; + constexpr int kMaxGlyphDimension = 2048; +void ContrastAdjust(uint8_t* pDataIn, + uint8_t* pDataOut, + int nWidth, + int nHeight, + int nSrcRowBytes, + int nDstRowBytes) { + int max = kMinPixel; + int min = kMaxPixel; + for (int row = 0; row < nHeight; row++) { + uint8_t* pRow = pDataIn + row * nSrcRowBytes; + for (int col = 0; col < nWidth; col++) { + int val = pRow[col]; + max = std::max(val, max); + min = std::min(val, min); + } + } + int diff = max - min; + if (diff == kMinPixel || diff == kMaxPixel) { + int rowbytes = std::min(abs(nSrcRowBytes), nDstRowBytes); + for (int row = 0; row < nHeight; row++) { + memcpy(pDataOut + row * nDstRowBytes, pDataIn + row * nSrcRowBytes, + rowbytes); + } + return; + } + float rate = 255.f / diff; + for (int row = 0; row < nHeight; row++) { + uint8_t* pSrcRow = pDataIn + row * nSrcRowBytes; + uint8_t* pDstRow = pDataOut + row * nDstRowBytes; + for (int col = 0; col < nWidth; col++) { + int val = static_cast<int>((pSrcRow[col] - min) * rate + 0.5); + pDstRow[col] = + static_cast<uint8_t>(pdfium::clamp(val, kMinPixel, kMaxPixel)); + } + } +} + struct UniqueKeyGen { void Generate(int count, ...); @@ -184,9 +224,18 @@ std::unique_ptr<CFX_GlyphBitmap> CFX_FaceCache::RenderGlyph( } } else { memset(pDestBuf, 0, dest_pitch * bmheight); - int rowbytes = std::min(abs(src_pitch), dest_pitch); - for (int row = 0; row < bmheight; row++) - memcpy(pDestBuf + row * dest_pitch, pSrcBuf + row * src_pitch, rowbytes); + if (anti_alias == FXFT_RENDER_MODE_MONO && + FXFT_Get_Bitmap_PixelMode(FXFT_Get_Glyph_Bitmap(m_Face)) == + FXFT_PIXEL_MODE_MONO) { + int rowbytes = abs(src_pitch) > dest_pitch ? dest_pitch : abs(src_pitch); + for (int row = 0; row < bmheight; row++) { + memcpy(pDestBuf + row * dest_pitch, pSrcBuf + row * src_pitch, + rowbytes); + } + } else { + ContrastAdjust(pSrcBuf, pDestBuf, bmwidth, bmheight, src_pitch, + dest_pitch); + } } return pGlyphBitmap; } |