OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2012 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 741 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
752 | 752 |
753 context.fillRect(FloatRect(50, 50, 50, 50), opaque, CompositeSourceOver); | 753 context.fillRect(FloatRect(50, 50, 50, 50), opaque, CompositeSourceOver); |
754 EXPECT_EQ_RECT(IntRect(50, 50, 50, 50), context.opaqueRegion().asRect()); | 754 EXPECT_EQ_RECT(IntRect(50, 50, 50, 50), context.opaqueRegion().asRect()); |
755 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); | 755 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); |
756 | 756 |
757 context.fillRect(FloatRect(50, 50, 50, 50), opaque, CompositeSourceOver); | 757 context.fillRect(FloatRect(50, 50, 50, 50), opaque, CompositeSourceOver); |
758 EXPECT_EQ_RECT(IntRect(50, 50, 50, 50), context.opaqueRegion().asRect()); | 758 EXPECT_EQ_RECT(IntRect(50, 50, 50, 50), context.opaqueRegion().asRect()); |
759 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); | 759 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); |
760 } | 760 } |
761 | 761 |
| 762 static inline void writePixels(GraphicsContext* context, const SkBitmap& bm, int
x, int y) |
| 763 { |
| 764 SkAutoLockPixels locker(bm); |
| 765 context->writePixels(bm.info(), bm.getPixels(), bm.rowBytes(), x, y); |
| 766 } |
| 767 |
762 TEST(GraphicsContextTest, trackOpaqueWritePixelsTest) | 768 TEST(GraphicsContextTest, trackOpaqueWritePixelsTest) |
763 { | 769 { |
764 SkBitmap bitmap; | 770 SkBitmap bitmap; |
765 bitmap.allocN32Pixels(200, 200); | 771 bitmap.allocN32Pixels(200, 200); |
766 bitmap.eraseColor(0); | 772 bitmap.eraseColor(0); |
767 SkCanvas canvas(bitmap); | 773 SkCanvas canvas(bitmap); |
768 | 774 |
769 GraphicsContext context(&canvas); | 775 GraphicsContext context(&canvas); |
770 context.setRegionTrackingMode(GraphicsContext::RegionTrackingOpaque); | 776 context.setRegionTrackingMode(GraphicsContext::RegionTrackingOpaque); |
771 | 777 |
772 Color opaque(1.0f, 0.0f, 0.0f, 1.0f); | 778 Color opaque(1.0f, 0.0f, 0.0f, 1.0f); |
773 | 779 |
774 SkBitmap opaqueBitmap; | 780 SkBitmap opaqueBitmap; |
775 opaqueBitmap.allocN32Pixels(10, 10, true /* opaque */); | 781 opaqueBitmap.allocN32Pixels(10, 10, true /* opaque */); |
776 for (int y = 0; y < opaqueBitmap.height(); ++y) | 782 for (int y = 0; y < opaqueBitmap.height(); ++y) |
777 for (int x = 0; x < opaqueBitmap.width(); ++x) | 783 for (int x = 0; x < opaqueBitmap.width(); ++x) |
778 *opaqueBitmap.getAddr32(x, y) = 0xFFFFFFFF; | 784 *opaqueBitmap.getAddr32(x, y) = 0xFFFFFFFF; |
779 | 785 |
780 SkBitmap alphaBitmap; | 786 SkBitmap alphaBitmap; |
781 alphaBitmap.allocN32Pixels(10, 10); | 787 alphaBitmap.allocN32Pixels(10, 10); |
782 for (int y = 0; y < alphaBitmap.height(); ++y) | 788 for (int y = 0; y < alphaBitmap.height(); ++y) |
783 for (int x = 0; x < alphaBitmap.width(); ++x) | 789 for (int x = 0; x < alphaBitmap.width(); ++x) |
784 *alphaBitmap.getAddr32(x, y) = 0x00000000; | 790 *alphaBitmap.getAddr32(x, y) = 0x00000000; |
785 | 791 |
786 SkPaint paint; | 792 SkPaint paint; |
787 paint.setXfermodeMode(SkXfermode::kSrc_Mode); | 793 paint.setXfermodeMode(SkXfermode::kSrc_Mode); |
788 | 794 |
789 context.writePixels(opaqueBitmap, 50, 50); | 795 writePixels(&context, opaqueBitmap, 50, 50); |
790 EXPECT_EQ_RECT(IntRect(50, 50, 10, 10), context.opaqueRegion().asRect()); | 796 EXPECT_EQ_RECT(IntRect(50, 50, 10, 10), context.opaqueRegion().asRect()); |
791 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); | 797 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); |
792 | 798 |
793 context.fillRect(FloatRect(10, 10, 90, 90), opaque, CompositeSourceOver); | 799 context.fillRect(FloatRect(10, 10, 90, 90), opaque, CompositeSourceOver); |
794 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect()); | 800 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect()); |
795 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); | 801 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); |
796 | 802 |
797 context.writePixels(alphaBitmap, 10, 0); | 803 writePixels(&context, alphaBitmap, 10, 0); |
798 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect()); | 804 EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect()); |
799 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); | 805 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); |
800 | 806 |
801 context.writePixels(alphaBitmap, 10, 1); | 807 writePixels(&context, alphaBitmap, 10, 1); |
802 EXPECT_EQ_RECT(IntRect(10, 11, 90, 89), context.opaqueRegion().asRect()); | 808 EXPECT_EQ_RECT(IntRect(10, 11, 90, 89), context.opaqueRegion().asRect()); |
803 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); | 809 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); |
804 | 810 |
805 context.writePixels(alphaBitmap, 0, 10); | 811 writePixels(&context, alphaBitmap, 0, 10); |
806 EXPECT_EQ_RECT(IntRect(10, 11, 90, 89), context.opaqueRegion().asRect()); | 812 EXPECT_EQ_RECT(IntRect(10, 11, 90, 89), context.opaqueRegion().asRect()); |
807 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); | 813 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); |
808 | 814 |
809 context.writePixels(alphaBitmap, 1, 10); | 815 writePixels(&context, alphaBitmap, 1, 10); |
810 EXPECT_EQ_RECT(IntRect(11, 11, 89, 89), context.opaqueRegion().asRect()); | 816 EXPECT_EQ_RECT(IntRect(11, 11, 89, 89), context.opaqueRegion().asRect()); |
811 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); | 817 EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect()); |
812 } | 818 } |
813 | 819 |
814 TEST(GraphicsContextTest, trackOpaqueDrawBitmapTest) | 820 TEST(GraphicsContextTest, trackOpaqueDrawBitmapTest) |
815 { | 821 { |
816 SkBitmap bitmap; | 822 SkBitmap bitmap; |
817 bitmap.allocN32Pixels(200, 200); | 823 bitmap.allocN32Pixels(200, 200); |
818 bitmap.eraseColor(0); | 824 bitmap.eraseColor(0); |
819 SkCanvas canvas(bitmap); | 825 SkCanvas canvas(bitmap); |
(...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1208 // endRecording finally makes the picture accessible | 1214 // endRecording finally makes the picture accessible |
1209 RefPtr<DisplayList> dl = context.endRecording(); | 1215 RefPtr<DisplayList> dl = context.endRecording(); |
1210 SkPicture* pic = dl->picture(); | 1216 SkPicture* pic = dl->picture(); |
1211 EXPECT_TRUE(pic); | 1217 EXPECT_TRUE(pic); |
1212 EXPECT_EQ(1, pic->getRefCnt()); | 1218 EXPECT_EQ(1, pic->getRefCnt()); |
1213 | 1219 |
1214 context.endRecording(); | 1220 context.endRecording(); |
1215 } | 1221 } |
1216 | 1222 |
1217 } // namespace | 1223 } // namespace |
OLD | NEW |