skia2/gm/skbug_9819.cpp
Mike Reed 568f0ae778 drawBitmap is deprecated
- update call-sites in gms
- start deleting obsolete/duplicated gms

Change-Id: I9ab5aa0a22d4603ccb43715c0583eb587bbe5c8e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/358217
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2021-01-24 14:48:44 +00:00

55 lines
1.7 KiB
C++

/*
* Copyright 2020 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include "gm/gm.h"
#include "include/core/SkBitmap.h"
#include "include/core/SkCanvas.h"
#include "include/core/SkImage.h"
// This GM should draw two yellow boxes; the bug drew one in cyan.
DEF_SIMPLE_GM(skbug_9819, c, 256, 256) {
auto info = SkImageInfo::Make(1,1, kUnknown_SkColorType, kPremul_SkAlphaType);
SkBitmap rgba,
bgra;
rgba.allocPixels(info.makeColorType(kRGBA_8888_SkColorType));
bgra.allocPixels(info.makeColorType(kBGRA_8888_SkColorType));
SkColor yellow = 0xffffff00;
rgba.eraseColor(yellow);
bgra.eraseColor(yellow);
c->save();
c->scale(128,128);
c->drawImage(rgba.asImage(), 0,0);
c->drawImage(bgra.asImage(), 0,1);
c->restore();
auto grade = [&](int x, int y){
SkBitmap bm;
bm.allocPixels(SkImageInfo::Make(1,1,
kGray_8_SkColorType,
kUnpremul_SkAlphaType,
SkColorSpace::MakeSRGB()));
if (!c->readPixels(bm, x,y)) {
// Picture-backed canvases, that sort of thing. Just assume they're good.
MarkGMGood(c, x+128, y);
return;
}
// We test only luma so that grayscale destinations are also correctly graded:
// - yellow (good) is around 237
// - cyan (bad) is around 202
uint8_t gray = *bm.getAddr8(0,0);
(abs(gray - 237) > 2 ? MarkGMBad
: MarkGMGood)(c, x+128,y);
};
grade(64, 64);
grade(64, 192);
}