| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2012 Google Inc. | 3 * Copyright 2012 Google Inc. |
| 4 * | 4 * |
| 5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
| 6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
| 7 */ | 7 */ |
| 8 | 8 |
| 9 /* Description: | 9 /* Description: |
| 10 * This test defines a series of elementatry test steps that perform | 10 * This test defines a series of elementatry test steps that perform |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 77 } | 77 } |
| 78 | 78 |
| 79 private: | 79 private: |
| 80 SkCanvas* fTarget; | 80 SkCanvas* fTarget; |
| 81 }; | 81 }; |
| 82 | 82 |
| 83 static void test_clipVisitor(skiatest::Reporter* reporter, SkCanvas* canvas) { | 83 static void test_clipVisitor(skiatest::Reporter* reporter, SkCanvas* canvas) { |
| 84 SkISize size = canvas->getDeviceSize(); | 84 SkISize size = canvas->getDeviceSize(); |
| 85 | 85 |
| 86 SkBitmap bm; | 86 SkBitmap bm; |
| 87 bm.setConfig(SkBitmap::kARGB_8888_Config, size.width(), size.height()); | 87 bm.setConfig(SkImageInfo::MakeN32Premul(size.width(), size.height())); |
| 88 SkCanvas c(bm); | 88 SkCanvas c(bm); |
| 89 | 89 |
| 90 Canvas2CanvasClipVisitor visitor(&c); | 90 Canvas2CanvasClipVisitor visitor(&c); |
| 91 canvas->replayClips(&visitor); | 91 canvas->replayClips(&visitor); |
| 92 | 92 |
| 93 REPORTER_ASSERT(reporter, c.getTotalClip() == canvas->getTotalClip()); | 93 REPORTER_ASSERT(reporter, c.getTotalClip() == canvas->getTotalClip()); |
| 94 } | 94 } |
| 95 | 95 |
| 96 static const int kWidth = 2; | 96 static const int kWidth = 2; |
| 97 static const int kHeight = 2; | 97 static const int kHeight = 2; |
| (...skipping 30 matching lines...) Expand all Loading... |
| 128 "test step %s, SkProxyCanvas indirect canvas state consistency"; | 128 "test step %s, SkProxyCanvas indirect canvas state consistency"; |
| 129 static const char* const kNWayStateAssertMessageFormat = | 129 static const char* const kNWayStateAssertMessageFormat = |
| 130 "test step %s, SkNWayCanvas state consistency"; | 130 "test step %s, SkNWayCanvas state consistency"; |
| 131 static const char* const kNWayIndirect1StateAssertMessageFormat = | 131 static const char* const kNWayIndirect1StateAssertMessageFormat = |
| 132 "test step %s, SkNWayCanvas indirect canvas 1 state consistency"; | 132 "test step %s, SkNWayCanvas indirect canvas 1 state consistency"; |
| 133 static const char* const kNWayIndirect2StateAssertMessageFormat = | 133 static const char* const kNWayIndirect2StateAssertMessageFormat = |
| 134 "test step %s, SkNWayCanvas indirect canvas 2 state consistency"; | 134 "test step %s, SkNWayCanvas indirect canvas 2 state consistency"; |
| 135 static const char* const kPdfAssertMessageFormat = | 135 static const char* const kPdfAssertMessageFormat = |
| 136 "PDF sanity check failed %s"; | 136 "PDF sanity check failed %s"; |
| 137 | 137 |
| 138 static void createBitmap(SkBitmap* bm, SkBitmap::Config config, SkColor color) { | 138 static void createBitmap(SkBitmap* bm, SkColor color) { |
| 139 bm->setConfig(config, kWidth, kHeight); | 139 bm->allocN32Pixels(kWidth, kHeight); |
| 140 bm->allocPixels(); | |
| 141 bm->eraseColor(color); | 140 bm->eraseColor(color); |
| 142 } | 141 } |
| 143 | 142 |
| 144 static SkSurface* createSurface(SkColor color) { | 143 static SkSurface* createSurface(SkColor color) { |
| 145 SkSurface* surface = SkSurface::NewRasterPMColor(kWidth, kHeight); | 144 SkSurface* surface = SkSurface::NewRasterPMColor(kWidth, kHeight); |
| 146 surface->getCanvas()->clear(color); | 145 surface->getCanvas()->clear(color); |
| 147 return surface; | 146 return surface; |
| 148 } | 147 } |
| 149 | 148 |
| 150 class CanvasTestStep; | 149 class CanvasTestStep; |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 213 const SkColor kTestColor = 0x01020304; | 212 const SkColor kTestColor = 0x01020304; |
| 214 const SkPaint kTestPaint; | 213 const SkPaint kTestPaint; |
| 215 const SkPoint kTestPoints[3] = { | 214 const SkPoint kTestPoints[3] = { |
| 216 {SkIntToScalar(0), SkIntToScalar(0)}, | 215 {SkIntToScalar(0), SkIntToScalar(0)}, |
| 217 {SkIntToScalar(2), SkIntToScalar(1)}, | 216 {SkIntToScalar(2), SkIntToScalar(1)}, |
| 218 {SkIntToScalar(0), SkIntToScalar(2)} | 217 {SkIntToScalar(0), SkIntToScalar(2)} |
| 219 }; | 218 }; |
| 220 const size_t kTestPointCount = 3; | 219 const size_t kTestPointCount = 3; |
| 221 static SkBitmap testBitmap() { | 220 static SkBitmap testBitmap() { |
| 222 SkBitmap bitmap; | 221 SkBitmap bitmap; |
| 223 createBitmap(&bitmap, SkBitmap::kARGB_8888_Config, 0x05060708); | 222 createBitmap(&bitmap, 0x05060708); |
| 224 return bitmap; | 223 return bitmap; |
| 225 } | 224 } |
| 226 SkBitmap kTestBitmap; // cannot be created during static init | 225 SkBitmap kTestBitmap; // cannot be created during static init |
| 227 SkString kTestText("Hello World"); | 226 SkString kTestText("Hello World"); |
| 228 SkPoint kTestPoints2[] = { | 227 SkPoint kTestPoints2[] = { |
| 229 { SkIntToScalar(0), SkIntToScalar(1) }, | 228 { SkIntToScalar(0), SkIntToScalar(1) }, |
| 230 { SkIntToScalar(1), SkIntToScalar(1) }, | 229 { SkIntToScalar(1), SkIntToScalar(1) }, |
| 231 { SkIntToScalar(2), SkIntToScalar(1) }, | 230 { SkIntToScalar(2), SkIntToScalar(1) }, |
| 232 { SkIntToScalar(3), SkIntToScalar(1) }, | 231 { SkIntToScalar(3), SkIntToScalar(1) }, |
| 233 { SkIntToScalar(4), SkIntToScalar(1) }, | 232 { SkIntToScalar(4), SkIntToScalar(1) }, |
| (...skipping 557 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 791 } | 790 } |
| 792 }; | 791 }; |
| 793 | 792 |
| 794 // unused | 793 // unused |
| 795 static void TestProxyCanvasStateConsistency( | 794 static void TestProxyCanvasStateConsistency( |
| 796 skiatest::Reporter* reporter, | 795 skiatest::Reporter* reporter, |
| 797 CanvasTestStep* testStep, | 796 CanvasTestStep* testStep, |
| 798 const SkCanvas& referenceCanvas) { | 797 const SkCanvas& referenceCanvas) { |
| 799 | 798 |
| 800 SkBitmap indirectStore; | 799 SkBitmap indirectStore; |
| 801 createBitmap(&indirectStore, SkBitmap::kARGB_8888_Config, 0xFFFFFFFF); | 800 createBitmap(&indirectStore, 0xFFFFFFFF); |
| 802 SkBitmapDevice indirectDevice(indirectStore); | 801 SkBitmapDevice indirectDevice(indirectStore); |
| 803 SkCanvas indirectCanvas(&indirectDevice); | 802 SkCanvas indirectCanvas(&indirectDevice); |
| 804 SkProxyCanvas proxyCanvas(&indirectCanvas); | 803 SkProxyCanvas proxyCanvas(&indirectCanvas); |
| 805 testStep->setAssertMessageFormat(kProxyDrawAssertMessageFormat); | 804 testStep->setAssertMessageFormat(kProxyDrawAssertMessageFormat); |
| 806 testStep->draw(&proxyCanvas, reporter); | 805 testStep->draw(&proxyCanvas, reporter); |
| 807 // Verify that the SkProxyCanvas reports consitent state | 806 // Verify that the SkProxyCanvas reports consitent state |
| 808 testStep->setAssertMessageFormat(kProxyStateAssertMessageFormat); | 807 testStep->setAssertMessageFormat(kProxyStateAssertMessageFormat); |
| 809 AssertCanvasStatesEqual(reporter, &proxyCanvas, &referenceCanvas, | 808 AssertCanvasStatesEqual(reporter, &proxyCanvas, &referenceCanvas, |
| 810 testStep); | 809 testStep); |
| 811 // Verify that the indirect canvas reports consitent state | 810 // Verify that the indirect canvas reports consitent state |
| 812 testStep->setAssertMessageFormat(kProxyIndirectStateAssertMessageFormat); | 811 testStep->setAssertMessageFormat(kProxyIndirectStateAssertMessageFormat); |
| 813 AssertCanvasStatesEqual(reporter, &indirectCanvas, &referenceCanvas, | 812 AssertCanvasStatesEqual(reporter, &indirectCanvas, &referenceCanvas, |
| 814 testStep); | 813 testStep); |
| 815 } | 814 } |
| 816 | 815 |
| 817 // unused | 816 // unused |
| 818 static void TestNWayCanvasStateConsistency( | 817 static void TestNWayCanvasStateConsistency( |
| 819 skiatest::Reporter* reporter, | 818 skiatest::Reporter* reporter, |
| 820 CanvasTestStep* testStep, | 819 CanvasTestStep* testStep, |
| 821 const SkCanvas& referenceCanvas) { | 820 const SkCanvas& referenceCanvas) { |
| 822 | 821 |
| 823 SkBitmap indirectStore1; | 822 SkBitmap indirectStore1; |
| 824 createBitmap(&indirectStore1, SkBitmap::kARGB_8888_Config, 0xFFFFFFFF); | 823 createBitmap(&indirectStore1, 0xFFFFFFFF); |
| 825 SkBitmapDevice indirectDevice1(indirectStore1); | 824 SkBitmapDevice indirectDevice1(indirectStore1); |
| 826 SkCanvas indirectCanvas1(&indirectDevice1); | 825 SkCanvas indirectCanvas1(&indirectDevice1); |
| 827 | 826 |
| 828 SkBitmap indirectStore2; | 827 SkBitmap indirectStore2; |
| 829 createBitmap(&indirectStore2, SkBitmap::kARGB_8888_Config, 0xFFFFFFFF); | 828 createBitmap(&indirectStore2, 0xFFFFFFFF); |
| 830 SkBitmapDevice indirectDevice2(indirectStore2); | 829 SkBitmapDevice indirectDevice2(indirectStore2); |
| 831 SkCanvas indirectCanvas2(&indirectDevice2); | 830 SkCanvas indirectCanvas2(&indirectDevice2); |
| 832 | 831 |
| 833 SkISize canvasSize = referenceCanvas.getDeviceSize(); | 832 SkISize canvasSize = referenceCanvas.getDeviceSize(); |
| 834 SkNWayCanvas nWayCanvas(canvasSize.width(), canvasSize.height()); | 833 SkNWayCanvas nWayCanvas(canvasSize.width(), canvasSize.height()); |
| 835 nWayCanvas.addCanvas(&indirectCanvas1); | 834 nWayCanvas.addCanvas(&indirectCanvas1); |
| 836 nWayCanvas.addCanvas(&indirectCanvas2); | 835 nWayCanvas.addCanvas(&indirectCanvas2); |
| 837 | 836 |
| 838 testStep->setAssertMessageFormat(kNWayDrawAssertMessageFormat); | 837 testStep->setAssertMessageFormat(kNWayDrawAssertMessageFormat); |
| 839 testStep->draw(&nWayCanvas, reporter); | 838 testStep->draw(&nWayCanvas, reporter); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 852 | 851 |
| 853 /* | 852 /* |
| 854 * This sub-test verifies that the test step passes when executed | 853 * This sub-test verifies that the test step passes when executed |
| 855 * with SkCanvas and with classes derrived from SkCanvas. It also verifies | 854 * with SkCanvas and with classes derrived from SkCanvas. It also verifies |
| 856 * that the all canvas derivatives report the same state as an SkCanvas | 855 * that the all canvas derivatives report the same state as an SkCanvas |
| 857 * after having executed the test step. | 856 * after having executed the test step. |
| 858 */ | 857 */ |
| 859 static void TestOverrideStateConsistency(skiatest::Reporter* reporter, | 858 static void TestOverrideStateConsistency(skiatest::Reporter* reporter, |
| 860 CanvasTestStep* testStep) { | 859 CanvasTestStep* testStep) { |
| 861 SkBitmap referenceStore; | 860 SkBitmap referenceStore; |
| 862 createBitmap(&referenceStore, SkBitmap::kARGB_8888_Config, 0xFFFFFFFF); | 861 createBitmap(&referenceStore, 0xFFFFFFFF); |
| 863 SkBitmapDevice referenceDevice(referenceStore); | 862 SkBitmapDevice referenceDevice(referenceStore); |
| 864 SkCanvas referenceCanvas(&referenceDevice); | 863 SkCanvas referenceCanvas(&referenceDevice); |
| 865 testStep->setAssertMessageFormat(kCanvasDrawAssertMessageFormat); | 864 testStep->setAssertMessageFormat(kCanvasDrawAssertMessageFormat); |
| 866 testStep->draw(&referenceCanvas, reporter); | 865 testStep->draw(&referenceCanvas, reporter); |
| 867 | 866 |
| 868 SkDeferredCanvasTester::TestDeferredCanvasStateConsistency(reporter, testSte
p, referenceCanvas, false); | 867 SkDeferredCanvasTester::TestDeferredCanvasStateConsistency(reporter, testSte
p, referenceCanvas, false); |
| 869 | 868 |
| 870 SkDeferredCanvasTester::TestDeferredCanvasStateConsistency(reporter, testSte
p, referenceCanvas, true); | 869 SkDeferredCanvasTester::TestDeferredCanvasStateConsistency(reporter, testSte
p, referenceCanvas, true); |
| 871 | 870 |
| 872 // The following test code is disabled because SkProxyCanvas is | 871 // The following test code is disabled because SkProxyCanvas is |
| (...skipping 28 matching lines...) Expand all Loading... |
| 901 SkPictureTester::TestPictureFlattenedObjectReuse(reporter, | 900 SkPictureTester::TestPictureFlattenedObjectReuse(reporter, |
| 902 testStepArray()[testStep], 0); | 901 testStepArray()[testStep], 0); |
| 903 if (testStepArray()[testStep]->enablePdfTesting()) { | 902 if (testStepArray()[testStep]->enablePdfTesting()) { |
| 904 TestPdfDevice(reporter, testStepArray()[testStep]); | 903 TestPdfDevice(reporter, testStepArray()[testStep]); |
| 905 } | 904 } |
| 906 } | 905 } |
| 907 | 906 |
| 908 // Explicitly call reset(), so we don't leak the pixels (since kTestBitmap i
s a global) | 907 // Explicitly call reset(), so we don't leak the pixels (since kTestBitmap i
s a global) |
| 909 kTestBitmap.reset(); | 908 kTestBitmap.reset(); |
| 910 } | 909 } |
| OLD | NEW |