Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(324)

Side by Side Diff: core/fxge/skia/fx_skia_device.cpp

Issue 2111553003: fix skia unit tests (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: fix luminosity device bitmap depth Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #if defined(_SKIA_SUPPORT_) 5 #if defined(_SKIA_SUPPORT_)
6 #include <algorithm> 6 #include <algorithm>
7 #include <vector> 7 #include <vector>
8 8
9 #include "core/fxcodec/include/fx_codec.h" 9 #include "core/fxcodec/include/fx_codec.h"
10 10
(...skipping 608 matching lines...) Expand 10 before | Expand all | Expand 10 after
619 } 619 }
620 m_drawText = true; 620 m_drawText = true;
621 return true; 621 return true;
622 } 622 }
623 623
624 void FlushText(CFX_SkiaDeviceDriver* pDriver) { 624 void FlushText(CFX_SkiaDeviceDriver* pDriver) {
625 SkMatrix skMatrix = ToFlippedSkMatrix(m_drawMatrix); 625 SkMatrix skMatrix = ToFlippedSkMatrix(m_drawMatrix);
626 SkPaint skPaint; 626 SkPaint skPaint;
627 skPaint.setAntiAlias(true); 627 skPaint.setAntiAlias(true);
628 skPaint.setColor(m_fillColor); 628 skPaint.setColor(m_fillColor);
629 if (m_pFont->GetFace()) { // exclude placeholder test fonts 629 if (m_pFont->GetFace() && m_pCache) { // exclude placeholder test fonts
Lei Zhang 2016/06/29 18:19:23 Check |m_pCache| first because it's cheaper?
630 sk_sp<SkTypeface> typeface(SkSafeRef(m_pCache->GetDeviceCache(m_pFont))); 630 sk_sp<SkTypeface> typeface(SkSafeRef(m_pCache->GetDeviceCache(m_pFont)));
631 skPaint.setTypeface(typeface); 631 skPaint.setTypeface(typeface);
632 } 632 }
633 skPaint.setTextEncoding(SkPaint::kGlyphID_TextEncoding); 633 skPaint.setTextEncoding(SkPaint::kGlyphID_TextEncoding);
634 skPaint.setTextSize(m_fontSize); 634 skPaint.setTextSize(m_fontSize);
635 skPaint.setSubpixelText(true); 635 skPaint.setSubpixelText(true);
636 SkCanvas* skCanvas = pDriver->SkiaCanvas(); 636 SkCanvas* skCanvas = pDriver->SkiaCanvas();
637 skCanvas->save(); 637 skCanvas->save();
638 skCanvas->concat(skMatrix); 638 skCanvas->concat(skMatrix);
639 skCanvas->drawPosText(m_glyphs.begin(), m_glyphs.count() * 2, 639 skCanvas->drawPosText(m_glyphs.begin(), m_glyphs.count() * 2,
(...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after
998 const FXTEXT_CHARPOS* pCharPos, 998 const FXTEXT_CHARPOS* pCharPos,
999 CFX_Font* pFont, 999 CFX_Font* pFont,
1000 CFX_FontCache* pCache, 1000 CFX_FontCache* pCache,
1001 const CFX_Matrix* pObject2Device, 1001 const CFX_Matrix* pObject2Device,
1002 FX_FLOAT font_size, 1002 FX_FLOAT font_size,
1003 uint32_t color) { 1003 uint32_t color) {
1004 if (m_pCache->DrawText(nChars, pCharPos, pFont, pCache, pObject2Device, 1004 if (m_pCache->DrawText(nChars, pCharPos, pFont, pCache, pObject2Device,
1005 font_size, color, this)) { 1005 font_size, color, this)) {
1006 return TRUE; 1006 return TRUE;
1007 } 1007 }
1008 sk_sp<SkTypeface> typeface(SkSafeRef(pCache->GetDeviceCache(pFont))); 1008 sk_sp<SkTypeface> typeface(
1009 SkSafeRef(pCache ? pCache->GetDeviceCache(pFont) : nullptr));
1009 SkPaint paint; 1010 SkPaint paint;
1010 paint.setAntiAlias(true); 1011 paint.setAntiAlias(true);
1011 paint.setColor(color); 1012 paint.setColor(color);
1012 paint.setTypeface(typeface); 1013 paint.setTypeface(typeface);
1013 paint.setTextEncoding(SkPaint::kGlyphID_TextEncoding); 1014 paint.setTextEncoding(SkPaint::kGlyphID_TextEncoding);
1014 paint.setTextSize(font_size); 1015 paint.setTextSize(font_size);
1015 paint.setSubpixelText(true); 1016 paint.setSubpixelText(true);
1016 m_pCanvas->save(); 1017 m_pCanvas->save();
1017 SkMatrix skMatrix = ToFlippedSkMatrix(*pObject2Device); 1018 SkMatrix skMatrix = ToFlippedSkMatrix(*pObject2Device);
1018 m_pCanvas->concat(skMatrix); 1019 m_pCanvas->concat(skMatrix);
(...skipping 417 matching lines...) Expand 10 before | Expand all | Expand 10 after
1436 void*& handle, 1437 void*& handle,
1437 int blend_type) { 1438 int blend_type) {
1438 DebugValidate(m_pBitmap, m_pOriDevice); 1439 DebugValidate(m_pBitmap, m_pOriDevice);
1439 SkColorType colorType = pSource->IsAlphaMask() 1440 SkColorType colorType = pSource->IsAlphaMask()
1440 ? SkColorType::kAlpha_8_SkColorType 1441 ? SkColorType::kAlpha_8_SkColorType
1441 : SkColorType::kGray_8_SkColorType; 1442 : SkColorType::kGray_8_SkColorType;
1442 SkAlphaType alphaType = 1443 SkAlphaType alphaType =
1443 pSource->IsAlphaMask() ? kPremul_SkAlphaType : kOpaque_SkAlphaType; 1444 pSource->IsAlphaMask() ? kPremul_SkAlphaType : kOpaque_SkAlphaType;
1444 SkColorTable* ct = nullptr; 1445 SkColorTable* ct = nullptr;
1445 void* buffer = pSource->GetBuffer(); 1446 void* buffer = pSource->GetBuffer();
1447 if (!buffer)
1448 return FALSE;
1446 std::unique_ptr<uint8_t, FxFreeDeleter> dst8Storage; 1449 std::unique_ptr<uint8_t, FxFreeDeleter> dst8Storage;
1447 std::unique_ptr<uint32_t, FxFreeDeleter> dst32Storage; 1450 std::unique_ptr<uint32_t, FxFreeDeleter> dst32Storage;
1448 int width = pSource->GetWidth(); 1451 int width = pSource->GetWidth();
1449 int height = pSource->GetHeight(); 1452 int height = pSource->GetHeight();
1450 int rowBytes = pSource->GetPitch(); 1453 int rowBytes = pSource->GetPitch();
1451 switch (pSource->GetBPP()) { 1454 switch (pSource->GetBPP()) {
1452 case 1: { 1455 case 1: {
1453 dst8Storage.reset(FX_Alloc2D(uint8_t, width, height)); 1456 dst8Storage.reset(FX_Alloc2D(uint8_t, width, height));
1454 uint8_t* dst8Pixels = dst8Storage.get(); 1457 uint8_t* dst8Pixels = dst8Storage.get();
1455 for (int y = 0; y < height; ++y) { 1458 for (int y = 0; y < height; ++y) {
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
1519 ct->unref(); 1522 ct->unref();
1520 DebugValidate(m_pBitmap, m_pOriDevice); 1523 DebugValidate(m_pBitmap, m_pOriDevice);
1521 return TRUE; 1524 return TRUE;
1522 } 1525 }
1523 1526
1524 FX_BOOL CFX_SkiaDeviceDriver::ContinueDIBits(void* handle, IFX_Pause* pPause) { 1527 FX_BOOL CFX_SkiaDeviceDriver::ContinueDIBits(void* handle, IFX_Pause* pPause) {
1525 return FALSE; 1528 return FALSE;
1526 } 1529 }
1527 1530
1528 void CFX_SkiaDeviceDriver::PreMultiply() { 1531 void CFX_SkiaDeviceDriver::PreMultiply() {
1529 void* buffer = m_pBitmap->GetBuffer(); 1532 PreMultiply(m_pBitmap);
1533 }
1534
1535 void CFX_SkiaDeviceDriver::PreMultiply(CFX_DIBitmap* pDIBitmap) {
1536 void* buffer = pDIBitmap->GetBuffer();
1530 if (!buffer) 1537 if (!buffer)
1531 return; 1538 return;
1532 if (m_pBitmap->GetBPP() != 32) { 1539 if (pDIBitmap->GetBPP() != 32) {
1533 return; 1540 return;
1534 } 1541 }
1535 int height = m_pBitmap->GetHeight(); 1542 int height = pDIBitmap->GetHeight();
1536 int width = m_pBitmap->GetWidth(); 1543 int width = pDIBitmap->GetWidth();
1537 int rowBytes = m_pBitmap->GetPitch(); 1544 int rowBytes = pDIBitmap->GetPitch();
1538 SkImageInfo unpremultipliedInfo = 1545 SkImageInfo unpremultipliedInfo =
1539 SkImageInfo::Make(width, height, kN32_SkColorType, kUnpremul_SkAlphaType); 1546 SkImageInfo::Make(width, height, kN32_SkColorType, kUnpremul_SkAlphaType);
1540 SkPixmap unpremultiplied(unpremultipliedInfo, buffer, rowBytes); 1547 SkPixmap unpremultiplied(unpremultipliedInfo, buffer, rowBytes);
1541 SkImageInfo premultipliedInfo = 1548 SkImageInfo premultipliedInfo =
1542 SkImageInfo::Make(width, height, kN32_SkColorType, kPremul_SkAlphaType); 1549 SkImageInfo::Make(width, height, kN32_SkColorType, kPremul_SkAlphaType);
1543 SkPixmap premultiplied(premultipliedInfo, buffer, rowBytes); 1550 SkPixmap premultiplied(premultipliedInfo, buffer, rowBytes);
1544 unpremultiplied.readPixels(premultiplied); 1551 unpremultiplied.readPixels(premultiplied);
1545 DebugVerifyBitmapIsPreMultiplied(buffer, width, height); 1552 DebugVerifyBitmapIsPreMultiplied(buffer, width, height);
1546 } 1553 }
1547 1554
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
1601 CFX_FxgeDevice::~CFX_FxgeDevice() { 1608 CFX_FxgeDevice::~CFX_FxgeDevice() {
1602 if (m_bOwnedBitmap && GetBitmap()) 1609 if (m_bOwnedBitmap && GetBitmap())
1603 delete GetBitmap(); 1610 delete GetBitmap();
1604 } 1611 }
1605 1612
1606 void CFX_FxgeDevice::PreMultiply() { 1613 void CFX_FxgeDevice::PreMultiply() {
1607 (static_cast<CFX_SkiaDeviceDriver*>(GetDeviceDriver()))->PreMultiply(); 1614 (static_cast<CFX_SkiaDeviceDriver*>(GetDeviceDriver()))->PreMultiply();
1608 } 1615 }
1609 1616
1610 #endif 1617 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698