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

Unified Diff: dm/DMSrcSink.cpp

Issue 1641273003: Support decoding opaque to *premul (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Update SkMaskSwizzler to support opaque to premul Created 4 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: dm/DMSrcSink.cpp
diff --git a/dm/DMSrcSink.cpp b/dm/DMSrcSink.cpp
index 29886807a7117b412ddce12102d6433e7dc289cd..9712fd73a024d2723dd3fa30d0c7956fdbd0f823 100644
--- a/dm/DMSrcSink.cpp
+++ b/dm/DMSrcSink.cpp
@@ -233,10 +233,12 @@ Name BRDSrc::name() const {
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-CodecSrc::CodecSrc(Path path, Mode mode, DstColorType dstColorType, float scale)
+CodecSrc::CodecSrc(Path path, Mode mode, DstColorType dstColorType, SkAlphaType dstAlphaType,
+ float scale)
: fPath(path)
, fMode(mode)
, fDstColorType(dstColorType)
+ , fDstAlphaType(dstAlphaType)
, fScale(scale)
{}
@@ -251,30 +253,26 @@ bool CodecSrc::veto(SinkFlags flags) const {
return flags.type != SinkFlags::kRaster || flags.approach != SinkFlags::kDirect;
}
-bool get_decode_info(SkImageInfo* decodeInfo, const SkImageInfo& defaultInfo,
- SkColorType canvasColorType, CodecSrc::DstColorType dstColorType) {
+bool get_decode_info(SkImageInfo* decodeInfo, SkColorType canvasColorType,
+ CodecSrc::DstColorType dstColorType) {
switch (dstColorType) {
case CodecSrc::kIndex8_Always_DstColorType:
if (kRGB_565_SkColorType == canvasColorType) {
return false;
}
- *decodeInfo = defaultInfo.makeColorType(kIndex_8_SkColorType);
+ *decodeInfo = decodeInfo->makeColorType(kIndex_8_SkColorType);
break;
case CodecSrc::kGrayscale_Always_DstColorType:
if (kRGB_565_SkColorType == canvasColorType) {
return false;
}
- *decodeInfo = defaultInfo.makeColorType(kGray_8_SkColorType);
+ *decodeInfo = decodeInfo->makeColorType(kGray_8_SkColorType);
break;
default:
- *decodeInfo = defaultInfo.makeColorType(canvasColorType);
+ *decodeInfo = decodeInfo->makeColorType(canvasColorType);
break;
}
- // FIXME: Currently we cannot draw unpremultiplied sources.
- if (decodeInfo->alphaType() == kUnpremul_SkAlphaType) {
- *decodeInfo = decodeInfo->makeAlphaType(kPremul_SkAlphaType);
- }
return true;
}
@@ -319,9 +317,8 @@ Error CodecSrc::draw(SkCanvas* canvas) const {
return SkStringPrintf("Couldn't create codec for %s.", fPath.c_str());
}
- SkImageInfo decodeInfo;
- if (!get_decode_info(&decodeInfo, codec->getInfo(), canvas->imageInfo().colorType(),
- fDstColorType)) {
+ SkImageInfo decodeInfo = codec->getInfo().makeAlphaType(fDstAlphaType);
+ if (!get_decode_info(&decodeInfo, canvas->imageInfo().colorType(), fDstColorType)) {
return Error::Nonfatal("Testing non-565 to 565 is uninteresting.");
}
@@ -570,10 +567,11 @@ Name CodecSrc::name() const {
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
AndroidCodecSrc::AndroidCodecSrc(Path path, Mode mode, CodecSrc::DstColorType dstColorType,
- int sampleSize)
+ SkAlphaType dstAlphaType, int sampleSize)
: fPath(path)
, fMode(mode)
, fDstColorType(dstColorType)
+ , fDstAlphaType(dstAlphaType)
, fSampleSize(sampleSize)
{}
@@ -593,9 +591,8 @@ Error AndroidCodecSrc::draw(SkCanvas* canvas) const {
return SkStringPrintf("Couldn't create android codec for %s.", fPath.c_str());
}
- SkImageInfo decodeInfo;
- if (!get_decode_info(&decodeInfo, codec->getInfo(), canvas->imageInfo().colorType(),
- fDstColorType)) {
+ SkImageInfo decodeInfo = codec->getInfo().makeAlphaType(fDstAlphaType);
+ if (!get_decode_info(&decodeInfo, canvas->imageInfo().colorType(), fDstColorType)) {
return Error::Nonfatal("Testing non-565 to 565 is uninteresting.");
}
« no previous file with comments | « dm/DMSrcSink.h ('k') | include/codec/SkCodec.h » ('j') | src/codec/SkMaskSwizzler.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698