aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/CodecAnimTest.cpp
diff options
context:
space:
mode:
authorGravatar Leon Scroggins III <scroggo@google.com>2017-12-05 13:55:24 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-12-05 19:28:08 +0000
commitc8037dc5edda42cacd839df4e1c7d8cfd0953309 (patch)
treec40be4cadc3ed50a129b05c553c37f69a3310306 /tests/CodecAnimTest.cpp
parent89662e698163dbc5a23a7838ce7142cdb1494c88 (diff)
Reland "Hide SkEncodedInfo"
This partially reverts commit 1793e7bb46c1f9d430c1a699a1c3d3168159b659. Hide SkEncodedInfo Bug: skia:7353 Bug: skia:6839 This contains information that is not necessary for clients to know. The Color enum tells the number of components in the input, but this is only interesting internally (to the SkSwizzler). Similarly, the Alpha enum differs from SkAlphaType in that it has kBinary instead of kPremul. This is useful information only internally for determining whether the SkColorSpaceXform needs to premultiply. The bitsPerComponent is potentially useful for a client; Android (in SkAndroidCodec) uses it to determine the SkColorType. Rather than exposing bitsPerComponent, make SkAndroidCodec a friend so it can access the SkEncodedInfo. A future change will change SkCodec to recommend F16 for bitsPerComponent > 8, but that will be more involved; it was the reason for the revert of this CL. Switch conversionSupported to use an SkColorType, which is enough info. Replace the SkEncodedInfo::Alpha field on SkCodec::FrameInfo with an SkAlphaType. SkCodec still needs an SkEncodedInfo, so move its header (which is already not SK_API) to include/private. TBR=mtklein@chromium.org,reed@google.com Change-Id: I928b1f55317602cb37d29da63b53026c8d139cee Reviewed-on: https://skia-review.googlesource.com/80860 Reviewed-by: Leon Scroggins <scroggo@google.com> Commit-Queue: Leon Scroggins <scroggo@google.com>
Diffstat (limited to 'tests/CodecAnimTest.cpp')
-rw-r--r--tests/CodecAnimTest.cpp36
1 files changed, 15 insertions, 21 deletions
diff --git a/tests/CodecAnimTest.cpp b/tests/CodecAnimTest.cpp
index e354ea6cbf..b274ee538a 100644
--- a/tests/CodecAnimTest.cpp
+++ b/tests/CodecAnimTest.cpp
@@ -67,9 +67,8 @@ static bool restore_previous(const SkCodec::FrameInfo& info) {
}
DEF_TEST(Codec_frames, r) {
- #define kOpaque SkEncodedInfo::kOpaque_Alpha
- #define kUnpremul SkEncodedInfo::kUnpremul_Alpha
- #define kBinary SkEncodedInfo::kBinary_Alpha
+ #define kOpaque kOpaque_SkAlphaType
+ #define kUnpremul kUnpremul_SkAlphaType
#define kKeep SkCodecAnimation::DisposalMethod::kKeep
#define kRestoreBG SkCodecAnimation::DisposalMethod::kRestoreBGColor
#define kRestorePrev SkCodecAnimation::DisposalMethod::kRestorePrevious
@@ -79,8 +78,8 @@ DEF_TEST(Codec_frames, r) {
// One less than fFramecount, since the first frame is always
// independent.
std::vector<int> fRequiredFrames;
- // Same, since the first frame should match getEncodedInfo
- std::vector<SkEncodedInfo::Alpha> fAlphas;
+ // Same, since the first frame should match getInfo
+ std::vector<SkAlphaType> fAlphas;
// The size of this one should match fFrameCount for animated, empty
// otherwise.
std::vector<int> fDurations;
@@ -89,15 +88,15 @@ DEF_TEST(Codec_frames, r) {
} gRecs[] = {
{ "required.gif", 7,
{ 0, 1, 2, 3, 4, 5 },
- { kOpaque, kBinary, kBinary, kBinary, kBinary, kBinary },
+ { kOpaque, kUnpremul, kUnpremul, kUnpremul, kUnpremul, kUnpremul },
{ 100, 100, 100, 100, 100, 100, 100 },
0,
{ kKeep, kRestoreBG, kKeep, kKeep, kKeep, kRestoreBG, kKeep } },
{ "alphabetAnim.gif", 13,
{ SkCodec::kNone, 0, 0, 0, 0, 5, 6, SkCodec::kNone,
SkCodec::kNone, 9, 10, 11 },
- { kBinary, kBinary, kBinary, kBinary, kBinary, kBinary,
- kBinary, kBinary, kBinary, kBinary, kBinary, kBinary },
+ { kUnpremul, kUnpremul, kUnpremul, kUnpremul, kUnpremul, kUnpremul,
+ kUnpremul, kUnpremul, kUnpremul, kUnpremul, kUnpremul, kUnpremul },
{ 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100 },
0,
{ kKeep, kRestorePrev, kRestorePrev, kRestorePrev, kRestorePrev,
@@ -116,8 +115,8 @@ DEF_TEST(Codec_frames, r) {
{ "randPixelsAnim.gif", 13,
// required frames
{ 0, 1, 2, 3, 4, 3, 6, 7, 7, 7, 9, 9 },
- { kBinary, kBinary, kBinary, kBinary, kBinary, kBinary,
- kBinary, kBinary, kBinary, kBinary, kBinary, kBinary },
+ { kUnpremul, kUnpremul, kUnpremul, kUnpremul, kUnpremul, kUnpremul,
+ kUnpremul, kUnpremul, kUnpremul, kUnpremul, kUnpremul, kUnpremul },
// durations
{ 0, 1000, 170, 40, 220, 7770, 90, 90, 90, 90, 90, 90, 90 },
// repetition count
@@ -161,7 +160,6 @@ DEF_TEST(Codec_frames, r) {
};
#undef kOpaque
#undef kUnpremul
- #undef kBinary
#undef kKeep
#undef kRestorePrev
#undef kRestoreBG
@@ -270,22 +268,20 @@ DEF_TEST(Codec_frames, r) {
rec.fName, i, rec.fDurations[i], frameInfo.fDuration);
}
- auto to_string = [](SkEncodedInfo::Alpha alpha) {
+ auto to_string = [](SkAlphaType alpha) {
switch (alpha) {
- case SkEncodedInfo::kUnpremul_Alpha:
+ case kUnpremul_SkAlphaType:
return "unpremul";
- case SkEncodedInfo::kOpaque_Alpha:
+ case kOpaque_SkAlphaType:
return "opaque";
- case SkEncodedInfo::kBinary_Alpha:
- return "binary";
default:
SkASSERT(false);
return "unknown";
}
};
- auto expectedAlpha = 0 == i ? codec->getEncodedInfo().alpha() : rec.fAlphas[i-1];
- auto alpha = frameInfo.fAlpha;
+ auto expectedAlpha = 0 == i ? codec->getInfo().alphaType() : rec.fAlphas[i-1];
+ auto alpha = frameInfo.fAlphaType;
if (expectedAlpha != alpha) {
ERRORF(r, "%s's frame %i has wrong alpha type! expected: %s\tactual: %s",
rec.fName, i, to_string(expectedAlpha), to_string(alpha));
@@ -319,9 +315,7 @@ DEF_TEST(Codec_frames, r) {
auto decode = [&](SkBitmap* bm, int index, int cachedIndex) {
auto decodeInfo = info;
if (index > 0) {
- auto alphaType = frameInfos[index].fAlpha == SkEncodedInfo::kOpaque_Alpha
- ? kOpaque_SkAlphaType : kPremul_SkAlphaType;
- decodeInfo = info.makeAlphaType(alphaType);
+ decodeInfo = info.makeAlphaType(frameInfos[index].fAlphaType);
}
bm->allocPixels(decodeInfo);
if (cachedIndex != SkCodec::kNone) {