OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2012 Google Inc. | 2 * Copyright 2012 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #include "SkBitmapDevice.h" | 8 #include "SkBitmapDevice.h" |
9 #include "SkCanvas.h" | 9 #include "SkCanvas.h" |
10 #include "SkColorPriv.h" | 10 #include "SkColorPriv.h" |
11 #include "SkData.h" | 11 #include "SkData.h" |
12 #include "SkDecodingImageGenerator.h" | 12 #include "SkDecodingImageGenerator.h" |
13 #include "SkError.h" | 13 #include "SkError.h" |
14 #include "SkImageEncoder.h" | 14 #include "SkImageEncoder.h" |
15 #include "SkImageGenerator.h" | 15 #include "SkImageGenerator.h" |
16 #include "SkPaint.h" | 16 #include "SkPaint.h" |
17 #include "SkPicture.h" | 17 #include "SkPicture.h" |
18 #include "SkPictureUtils.h" | 18 #include "SkPictureUtils.h" |
19 #include "SkRRect.h" | 19 #include "SkRRect.h" |
20 #include "SkRandom.h" | 20 #include "SkRandom.h" |
21 #include "SkShader.h" | 21 #include "SkShader.h" |
22 #include "SkStream.h" | 22 #include "SkStream.h" |
23 #include "Test.h" | 23 #include "Test.h" |
24 | 24 |
25 static const int gColorScale = 30; | 25 static const int gColorScale = 30; |
26 static const int gColorOffset = 60; | 26 static const int gColorOffset = 60; |
27 | 27 |
28 static void make_bm(SkBitmap* bm, int w, int h, SkColor color, bool immutable) { | 28 static void make_bm(SkBitmap* bm, int w, int h, SkColor color, bool immutable) { |
29 bm->setConfig(SkBitmap::kARGB_8888_Config, w, h); | 29 bm->allocN32Pixels(w, h); |
30 bm->allocPixels(); | |
31 bm->eraseColor(color); | 30 bm->eraseColor(color); |
32 if (immutable) { | 31 if (immutable) { |
33 bm->setImmutable(); | 32 bm->setImmutable(); |
34 } | 33 } |
35 } | 34 } |
36 | 35 |
37 static void make_checkerboard(SkBitmap* bm, int w, int h, bool immutable) { | 36 static void make_checkerboard(SkBitmap* bm, int w, int h, bool immutable) { |
38 SkASSERT(w % 2 == 0); | 37 SkASSERT(w % 2 == 0); |
39 SkASSERT(h % 2 == 0); | 38 SkASSERT(h % 2 == 0); |
40 bm->setConfig(SkBitmap::kA8_Config, w, h); | 39 bm->allocPixels(SkImageInfo::Make(w, h, kAlpha_8_SkColorType, |
41 bm->allocPixels(); | 40 kPremul_SkAlphaType)); |
42 SkAutoLockPixels lock(*bm); | 41 SkAutoLockPixels lock(*bm); |
43 for (int y = 0; y < h; y += 2) { | 42 for (int y = 0; y < h; y += 2) { |
44 uint8_t* s = bm->getAddr8(0, y); | 43 uint8_t* s = bm->getAddr8(0, y); |
45 for (int x = 0; x < w; x += 2) { | 44 for (int x = 0; x < w; x += 2) { |
46 *s++ = 0xFF; | 45 *s++ = 0xFF; |
47 *s++ = 0x00; | 46 *s++ = 0x00; |
48 } | 47 } |
49 s = bm->getAddr8(0, y + 1); | 48 s = bm->getAddr8(0, y + 1); |
50 for (int x = 0; x < w; x += 2) { | 49 for (int x = 0; x < w; x += 2) { |
51 *s++ = 0x00; | 50 *s++ = 0x00; |
(...skipping 662 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
714 } | 713 } |
715 } | 714 } |
716 | 715 |
717 #ifndef SK_DEBUG | 716 #ifndef SK_DEBUG |
718 // Only test this is in release mode. We deliberately crash in debug mode, since
a valid caller | 717 // Only test this is in release mode. We deliberately crash in debug mode, since
a valid caller |
719 // should never do this. | 718 // should never do this. |
720 static void test_bad_bitmap() { | 719 static void test_bad_bitmap() { |
721 // This bitmap has a width and height but no pixels. As a result, attempting
to record it will | 720 // This bitmap has a width and height but no pixels. As a result, attempting
to record it will |
722 // fail. | 721 // fail. |
723 SkBitmap bm; | 722 SkBitmap bm; |
724 bm.setConfig(SkBitmap::kARGB_8888_Config, 100, 100); | 723 bm.setConfig(SkImageInfo::MakeN32Premul(100, 100)); |
725 SkPicture picture; | 724 SkPicture picture; |
726 SkCanvas* recordingCanvas = picture.beginRecording(100, 100); | 725 SkCanvas* recordingCanvas = picture.beginRecording(100, 100); |
727 recordingCanvas->drawBitmap(bm, 0, 0); | 726 recordingCanvas->drawBitmap(bm, 0, 0); |
728 picture.endRecording(); | 727 picture.endRecording(); |
729 | 728 |
730 SkCanvas canvas; | 729 SkCanvas canvas; |
731 canvas.drawPicture(picture); | 730 canvas.drawPicture(picture); |
732 } | 731 } |
733 #endif | 732 #endif |
734 | 733 |
(...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1041 canvas->drawBitmap(bitmap, 0.0f, 0.0f, &paint); | 1040 canvas->drawBitmap(bitmap, 0.0f, 0.0f, &paint); |
1042 canvas->drawBitmapRectToRect(bitmap, &rect, rect, &paint, SkCanvas::kNone_Dr
awBitmapRectFlag); | 1041 canvas->drawBitmapRectToRect(bitmap, &rect, rect, &paint, SkCanvas::kNone_Dr
awBitmapRectFlag); |
1043 canvas->drawBitmapMatrix(bitmap, SkMatrix::I(), &paint); | 1042 canvas->drawBitmapMatrix(bitmap, SkMatrix::I(), &paint); |
1044 canvas->drawBitmapNine(bitmap, irect, rect, &paint); | 1043 canvas->drawBitmapNine(bitmap, irect, rect, &paint); |
1045 canvas->drawSprite(bitmap, 1, 1); | 1044 canvas->drawSprite(bitmap, 1, 1); |
1046 } | 1045 } |
1047 | 1046 |
1048 static void test_draw_bitmaps(SkCanvas* canvas) { | 1047 static void test_draw_bitmaps(SkCanvas* canvas) { |
1049 SkBitmap empty; | 1048 SkBitmap empty; |
1050 draw_bitmaps(empty, canvas); | 1049 draw_bitmaps(empty, canvas); |
1051 empty.setConfig(SkBitmap::kARGB_8888_Config, 10, 10); | 1050 empty.setConfig(SkImageInfo::MakeN32Premul(10, 10)); |
1052 draw_bitmaps(empty, canvas); | 1051 draw_bitmaps(empty, canvas); |
1053 } | 1052 } |
1054 | 1053 |
1055 DEF_TEST(Picture_EmptyBitmap, r) { | 1054 DEF_TEST(Picture_EmptyBitmap, r) { |
1056 SkPicture picture; | 1055 SkPicture picture; |
1057 test_draw_bitmaps(picture.beginRecording(10, 10)); | 1056 test_draw_bitmaps(picture.beginRecording(10, 10)); |
1058 picture.endRecording(); | 1057 picture.endRecording(); |
1059 } | 1058 } |
1060 | 1059 |
1061 DEF_TEST(Canvas_EmptyBitmap, r) { | 1060 DEF_TEST(Canvas_EmptyBitmap, r) { |
1062 SkBitmap dst; | 1061 SkBitmap dst; |
1063 dst.setConfig(SkBitmap::kARGB_8888_Config, 10, 10); | 1062 dst.allocN32Pixels(10, 10); |
1064 dst.allocPixels(); | |
1065 SkCanvas canvas(dst); | 1063 SkCanvas canvas(dst); |
1066 | 1064 |
1067 test_draw_bitmaps(&canvas); | 1065 test_draw_bitmaps(&canvas); |
1068 } | 1066 } |
OLD | NEW |