DMUtil.cpp revision 84b18c7e3e042bf206e1ace3d1b6ea5bb929fe51
1#include "DMUtil.h"
2
3#include "SkPicture.h"
4
5namespace DM {
6
7SkString UnderJoin(const char* a, const char* b) {
8    SkString s;
9    s.appendf("%s_%s", a, b);
10    return s;
11}
12
13SkPicture* RecordPicture(skiagm::GM* gm, uint32_t recordFlags, SkPictureFactory* factory) {
14    const SkISize size = gm->getISize();
15    SkPictureRecorder recorder(factory);
16    SkCanvas* canvas = recorder.beginRecording(size.width(), size.height(), recordFlags);
17    canvas->concat(gm->getInitialTransform());
18    gm->draw(canvas);
19    canvas->flush();
20    return recorder.endRecording();
21}
22
23static void setup_bitmap(SkColorType ct, int width, int height, SkBitmap* bitmap) {
24    bitmap->allocPixels(SkImageInfo::Make(width, height, ct, kPremul_SkAlphaType));
25    bitmap->eraseColor(0x00000000);
26}
27
28void SetupBitmap(const SkColorType ct, skiagm::GM* gm, SkBitmap* bitmap) {
29    setup_bitmap(ct, gm->getISize().width(), gm->getISize().height(), bitmap);
30}
31
32void SetupBitmap(const SkColorType ct, SkBenchmark* bench, SkBitmap* bitmap) {
33    setup_bitmap(ct, bench->getSize().x(), bench->getSize().y(), bitmap);
34}
35
36void DrawPicture(SkPicture* picture, SkBitmap* bitmap) {
37    SkASSERT(picture != NULL);
38    SkASSERT(bitmap != NULL);
39    SkCanvas canvas(*bitmap);
40    canvas.drawPicture(*picture);
41    canvas.flush();
42}
43
44bool BitmapsEqual(const SkBitmap& a, const SkBitmap& b) {
45    const SkAutoLockPixels lockA(a), lockB(b);
46    return a.getSize() == b.getSize() && 0 == memcmp(a.getPixels(), b.getPixels(), b.getSize());
47}
48
49}  // namespace DM
50