Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7)

Side by Side Diff: tests/CanvasTest.cpp

Issue 610003002: Override SkCanvas::drawImage() in SkRecorder. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Add tests Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 /* Description: 8 /* Description:
9 * This test defines a series of elementatry test steps that perform 9 * This test defines a series of elementatry test steps that perform
10 * a single or a small group of canvas API calls. Each test step is 10 * a single or a small group of canvas API calls. Each test step is
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 static const char* const kProxyIndirectStateAssertMessageFormat = 144 static const char* const kProxyIndirectStateAssertMessageFormat =
145 "test step %s, SkProxyCanvas indirect canvas state consistency"; 145 "test step %s, SkProxyCanvas indirect canvas state consistency";
146 static const char* const kNWayStateAssertMessageFormat = 146 static const char* const kNWayStateAssertMessageFormat =
147 "test step %s, SkNWayCanvas state consistency"; 147 "test step %s, SkNWayCanvas state consistency";
148 static const char* const kNWayIndirect1StateAssertMessageFormat = 148 static const char* const kNWayIndirect1StateAssertMessageFormat =
149 "test step %s, SkNWayCanvas indirect canvas 1 state consistency"; 149 "test step %s, SkNWayCanvas indirect canvas 1 state consistency";
150 static const char* const kNWayIndirect2StateAssertMessageFormat = 150 static const char* const kNWayIndirect2StateAssertMessageFormat =
151 "test step %s, SkNWayCanvas indirect canvas 2 state consistency"; 151 "test step %s, SkNWayCanvas indirect canvas 2 state consistency";
152 static const char* const kPdfAssertMessageFormat = 152 static const char* const kPdfAssertMessageFormat =
153 "PDF sanity check failed %s"; 153 "PDF sanity check failed %s";
154 154
robertphillips 2014/09/29 17:07:55 create_bitmap ?
Rémi Piotaix 2014/09/29 17:57:55 Done.
155 static void createBitmap(SkBitmap* bm, SkColor color) { 155 static void createBitmap(SkBitmap* bm, SkColor color) {
156 bm->allocN32Pixels(kWidth, kHeight); 156 bm->allocN32Pixels(kWidth, kHeight);
157 bm->eraseColor(color); 157 bm->eraseColor(color);
158 } 158 }
159 159
robertphillips 2014/09/29 17:07:55 create_surface ?
Rémi Piotaix 2014/09/29 17:57:55 Done.
160 static SkSurface* createSurface(SkColor color) { 160 static SkSurface* createSurface(SkColor color) {
161 SkSurface* surface = SkSurface::NewRasterPMColor(kWidth, kHeight); 161 SkSurface* surface = SkSurface::NewRasterPMColor(kWidth, kHeight);
162 surface->getCanvas()->clear(color); 162 surface->getCanvas()->clear(color);
163 return surface; 163 return surface;
164 } 164 }
165 165
166 class CanvasTestStep; 166 class CanvasTestStep;
167 static SkTDArray<CanvasTestStep*>& testStepArray() { 167 static SkTDArray<CanvasTestStep*>& testStepArray() {
168 static SkTDArray<CanvasTestStep*> theTests; 168 static SkTDArray<CanvasTestStep*> theTests;
169 return theTests; 169 return theTests;
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 { SkIntToScalar(2), SkIntToScalar(1) }, 260 { SkIntToScalar(2), SkIntToScalar(1) },
261 { SkIntToScalar(3), SkIntToScalar(1) }, 261 { SkIntToScalar(3), SkIntToScalar(1) },
262 { SkIntToScalar(4), SkIntToScalar(1) }, 262 { SkIntToScalar(4), SkIntToScalar(1) },
263 { SkIntToScalar(5), SkIntToScalar(1) }, 263 { SkIntToScalar(5), SkIntToScalar(1) },
264 { SkIntToScalar(6), SkIntToScalar(1) }, 264 { SkIntToScalar(6), SkIntToScalar(1) },
265 { SkIntToScalar(7), SkIntToScalar(1) }, 265 { SkIntToScalar(7), SkIntToScalar(1) },
266 { SkIntToScalar(8), SkIntToScalar(1) }, 266 { SkIntToScalar(8), SkIntToScalar(1) },
267 { SkIntToScalar(9), SkIntToScalar(1) }, 267 { SkIntToScalar(9), SkIntToScalar(1) },
268 { SkIntToScalar(10), SkIntToScalar(1) }, 268 { SkIntToScalar(10), SkIntToScalar(1) },
269 }; 269 };
270 270 SkSurface* kTestSurface;
271 SkImage* kTestImage;
271 272
272 /////////////////////////////////////////////////////////////////////////////// 273 ///////////////////////////////////////////////////////////////////////////////
273 // Macros for defining test steps 274 // Macros for defining test steps
274 275
275 #define TEST_STEP(NAME, FUNCTION) \ 276 #define TEST_STEP(NAME, FUNCTION) \
276 class NAME##_TestStep : public CanvasTestStep{ \ 277 class NAME##_TestStep : public CanvasTestStep{ \
277 public: \ 278 public: \
278 virtual void draw(SkCanvas* canvas, skiatest::Reporter* reporter) { \ 279 virtual void draw(SkCanvas* canvas, skiatest::Reporter* reporter) { \
279 FUNCTION (canvas, reporter, this); \ 280 FUNCTION (canvas, reporter, this); \
280 } \ 281 } \
281 virtual const char* name() const {return #NAME ;} \ 282 virtual const char* name() const {return #NAME ;} \
282 }; \ 283 }; \
283 static NAME##_TestStep NAME##_TestStepInstance; 284 static NAME##_TestStep NAME##_TestStepInstance;
284 285
285 #define TEST_STEP_NO_PDF(NAME, FUNCTION) \ 286 #define TEST_STEP_NO_PDF(NAME, FUNCTION) \
286 class NAME##_TestStep : public CanvasTestStep{ \ 287 class NAME##_TestStep : public CanvasTestStep{ \
287 public: \ 288 public: \
288 NAME##_TestStep() : CanvasTestStep(false) {} \ 289 NAME##_TestStep() : CanvasTestStep(false) {} \
289 virtual void draw(SkCanvas* canvas, skiatest::Reporter* reporter) { \ 290 virtual void draw(SkCanvas* canvas, skiatest::Reporter* reporter) { \
290 FUNCTION (canvas, reporter, this); \ 291 FUNCTION (canvas, reporter, this); \
291 } \ 292 } \
292 virtual const char* name() const {return #NAME ;} \ 293 virtual const char* name() const {return #NAME ;} \
293 }; \ 294 }; \
294 static NAME##_TestStep NAME##_TestStepInstance; 295 static NAME##_TestStep NAME##_TestStepInstance;
295 296
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
356 SIMPLE_TEST_STEP(DrawPosText, drawPosText(kTestText.c_str(), 357 SIMPLE_TEST_STEP(DrawPosText, drawPosText(kTestText.c_str(),
357 kTestText.size(), kTestPoints2, kTestPaint)); 358 kTestText.size(), kTestPoints2, kTestPaint));
358 SIMPLE_TEST_STEP(DrawTextOnPath, drawTextOnPath(kTestText.c_str(), 359 SIMPLE_TEST_STEP(DrawTextOnPath, drawTextOnPath(kTestText.c_str(),
359 kTestText.size(), kTestPath, NULL, kTestPaint)); 360 kTestText.size(), kTestPath, NULL, kTestPaint));
360 SIMPLE_TEST_STEP(DrawTextOnPathMatrix, drawTextOnPath(kTestText.c_str(), 361 SIMPLE_TEST_STEP(DrawTextOnPathMatrix, drawTextOnPath(kTestText.c_str(),
361 kTestText.size(), kTestPath, &kTestMatrix, kTestPaint)); 362 kTestText.size(), kTestPath, &kTestMatrix, kTestPaint));
362 SIMPLE_TEST_STEP(DrawData, drawData(kTestText.c_str(), kTestText.size())); 363 SIMPLE_TEST_STEP(DrawData, drawData(kTestText.c_str(), kTestText.size()));
363 SIMPLE_TEST_STEP(BeginGroup, beginCommentGroup(kTestText.c_str())); 364 SIMPLE_TEST_STEP(BeginGroup, beginCommentGroup(kTestText.c_str()));
364 SIMPLE_TEST_STEP(AddComment, addComment(kTestText.c_str(), kTestText.c_str())); 365 SIMPLE_TEST_STEP(AddComment, addComment(kTestText.c_str(), kTestText.c_str()));
365 SIMPLE_TEST_STEP(EndGroup, endCommentGroup()); 366 SIMPLE_TEST_STEP(EndGroup, endCommentGroup());
367 SIMPLE_TEST_STEP(DrawImage, drawImage(kTestImage, 0, 0));
368 SIMPLE_TEST_STEP(DrawImageRect, drawImageRect(kTestImage, 0, SkRect::MakeWH(kWid th, kHeight)));
366 369
367 /////////////////////////////////////////////////////////////////////////////// 370 ///////////////////////////////////////////////////////////////////////////////
368 // Complex test steps 371 // Complex test steps
369 372
370 static void SaveMatrixClipStep(SkCanvas* canvas, 373 static void SaveMatrixClipStep(SkCanvas* canvas,
371 skiatest::Reporter* reporter, 374 skiatest::Reporter* reporter,
372 CanvasTestStep* testStep) { 375 CanvasTestStep* testStep) {
373 int saveCount = canvas->getSaveCount(); 376 int saveCount = canvas->getSaveCount();
374 canvas->save(); 377 canvas->save();
375 canvas->translate(SkIntToScalar(1), SkIntToScalar(2)); 378 canvas->translate(SkIntToScalar(1), SkIntToScalar(2));
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
456 canvas->drawVertices(SkCanvas::kTriangleFan_VertexMode, 4, pts, pts, 459 canvas->drawVertices(SkCanvas::kTriangleFan_VertexMode, 4, pts, pts,
457 NULL, NULL, NULL, 0, paint); 460 NULL, NULL, NULL, 0, paint);
458 } 461 }
459 // NYI: issue 240. 462 // NYI: issue 240.
460 TEST_STEP_NO_PDF(DrawVerticesShader, DrawVerticesShaderTestStep); 463 TEST_STEP_NO_PDF(DrawVerticesShader, DrawVerticesShaderTestStep);
461 464
462 static void DrawPictureTestStep(SkCanvas* canvas, 465 static void DrawPictureTestStep(SkCanvas* canvas,
463 skiatest::Reporter*, 466 skiatest::Reporter*,
464 CanvasTestStep*) { 467 CanvasTestStep*) {
465 SkPictureRecorder recorder; 468 SkPictureRecorder recorder;
466 SkCanvas* testCanvas = recorder.beginRecording(SkIntToScalar(kWidth), SkIntT oScalar(kHeight), 469 SkCanvas* testCanvas = recorder.beginRecording(SkIntToScalar(kWidth), SkIntT oScalar(kHeight),
467 NULL, 0); 470 NULL, 0);
468 testCanvas->scale(SkIntToScalar(2), SkIntToScalar(1)); 471 testCanvas->scale(SkIntToScalar(2), SkIntToScalar(1));
469 testCanvas->clipRect(kTestRect); 472 testCanvas->clipRect(kTestRect);
470 testCanvas->drawRect(kTestRect, kTestPaint); 473 testCanvas->drawRect(kTestRect, kTestPaint);
471 SkAutoTUnref<SkPicture> testPicture(recorder.endRecording()); 474 SkAutoTUnref<SkPicture> testPicture(recorder.endRecording());
472 475
473 canvas->drawPicture(testPicture); 476 canvas->drawPicture(testPicture);
474 } 477 }
475 TEST_STEP(DrawPicture, DrawPictureTestStep); 478 TEST_STEP(DrawPicture, DrawPictureTestStep);
476 479
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
682 public: 685 public:
683 686
684 static void TestPictureFlattenedObjectReuse(skiatest::Reporter* reporter, 687 static void TestPictureFlattenedObjectReuse(skiatest::Reporter* reporter,
685 CanvasTestStep* testStep, 688 CanvasTestStep* testStep,
686 uint32_t recordFlags) { 689 uint32_t recordFlags) {
687 // Verify that when a test step is executed twice, no extra resources 690 // Verify that when a test step is executed twice, no extra resources
688 // are flattened during the second execution 691 // are flattened during the second execution
689 testStep->setAssertMessageFormat(kPictureDrawAssertMessageFormat); 692 testStep->setAssertMessageFormat(kPictureDrawAssertMessageFormat);
690 SkPictureRecorder referenceRecorder; 693 SkPictureRecorder referenceRecorder;
691 SkCanvas* referenceCanvas = 694 SkCanvas* referenceCanvas =
692 referenceRecorder.DEPRECATED_beginRecording(SkIntToScalar(kWidth), 695 referenceRecorder.DEPRECATED_beginRecording(SkIntToScalar(kWidth),
693 SkIntToScalar(kHeight), 696 SkIntToScalar(kHeight),
694 NULL, recordFlags); 697 NULL, recordFlags);
695 testStep->draw(referenceCanvas, reporter); 698 testStep->draw(referenceCanvas, reporter);
696 699
697 SkPictureRecorder testRecorder; 700 SkPictureRecorder testRecorder;
698 SkCanvas* testCanvas = 701 SkCanvas* testCanvas =
699 testRecorder.DEPRECATED_beginRecording(SkIntToScalar(kWidth), 702 testRecorder.DEPRECATED_beginRecording(SkIntToScalar(kWidth),
700 SkIntToScalar(kHeight), 703 SkIntToScalar(kHeight),
701 NULL, recordFlags); 704 NULL, recordFlags);
702 testStep->draw(testCanvas, reporter); 705 testStep->draw(testCanvas, reporter);
703 testStep->setAssertMessageFormat(kPictureSecondDrawAssertMessageFormat); 706 testStep->setAssertMessageFormat(kPictureSecondDrawAssertMessageFormat);
704 testStep->draw(testCanvas, reporter); 707 testStep->draw(testCanvas, reporter);
705 708
706 SkPictureRecord* referenceRecord = static_cast<SkPictureRecord*>(referen ceCanvas); 709 SkPictureRecord* referenceRecord = static_cast<SkPictureRecord*>(referen ceCanvas);
707 SkPictureRecord* testRecord = static_cast<SkPictureRecord*>(testCanvas); 710 SkPictureRecord* testRecord = static_cast<SkPictureRecord*>(testCanvas);
708 testStep->setAssertMessageFormat(kPictureResourceReuseMessageFormat); 711 testStep->setAssertMessageFormat(kPictureResourceReuseMessageFormat);
709 AssertFlattenedObjectsEqual(referenceRecord, testRecord, 712 AssertFlattenedObjectsEqual(referenceRecord, testRecord,
710 reporter, testStep); 713 reporter, testStep);
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
898 info = SkImageInfo::MakeN32Premul(0, 0); 901 info = SkImageInfo::MakeN32Premul(0, 0);
899 canvas = SkCanvas::NewRaster(info); 902 canvas = SkCanvas::NewRaster(info);
900 REPORTER_ASSERT(reporter, canvas); 903 REPORTER_ASSERT(reporter, canvas);
901 SkDELETE(canvas); 904 SkDELETE(canvas);
902 } 905 }
903 906
904 DEF_TEST(Canvas, reporter) { 907 DEF_TEST(Canvas, reporter) {
905 // Init global here because bitmap pixels cannot be alocated during 908 // Init global here because bitmap pixels cannot be alocated during
906 // static initialization 909 // static initialization
907 kTestBitmap = testBitmap(); 910 kTestBitmap = testBitmap();
911 kTestSurface = createSurface(SK_ColorGREEN);
912 kTestImage = kTestSurface->newImageSnapshot();
908 913
909 for (int testStep = 0; testStep < testStepArray().count(); testStep++) { 914 for (int testStep = 0; testStep < testStepArray().count(); testStep++) {
910 TestOverrideStateConsistency(reporter, testStepArray()[testStep]); 915 TestOverrideStateConsistency(reporter, testStepArray()[testStep]);
911 SkPictureTester::TestPictureFlattenedObjectReuse(reporter, 916 SkPictureTester::TestPictureFlattenedObjectReuse(reporter,
912 testStepArray()[testStep], 0); 917 testStepArray()[testStep], 0);
913 if (testStepArray()[testStep]->enablePdfTesting()) { 918 if (testStepArray()[testStep]->enablePdfTesting()) {
914 TestPdfDevice(reporter, testStepArray()[testStep]); 919 TestPdfDevice(reporter, testStepArray()[testStep]);
915 } 920 }
916 } 921 }
917 922
918 // Explicitly call reset(), so we don't leak the pixels (since kTestBitmap i s a global) 923 // Explicitly call reset(), so we don't leak the pixels (since kTestBitmap i s a global)
919 kTestBitmap.reset(); 924 kTestBitmap.reset();
925 kTestSurface->unref();
926 kTestImage->unref();
920 927
921 test_newraster(reporter); 928 test_newraster(reporter);
922 } 929 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698