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