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

Side by Side Diff: tests/CanvasTest.cpp

Issue 1068883004: restore clipstack to heap-ptr, so clients can ref it (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 years, 8 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
« no previous file with comments | « src/core/SkCanvas.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 27 matching lines...) Expand all
38 * of a single canvas API call. 38 * of a single canvas API call.
39 * 39 *
40 * SIMPLE_TEST_STEP(MytestStep, someCanvasAPIMethod()); 40 * SIMPLE_TEST_STEP(MytestStep, someCanvasAPIMethod());
41 * 41 *
42 * There is another macro called SIMPLE_TEST_STEP_WITH_ASSERT that 42 * There is another macro called SIMPLE_TEST_STEP_WITH_ASSERT that
43 * works the same way as SIMPLE_TEST_STEP, and additionally verifies 43 * works the same way as SIMPLE_TEST_STEP, and additionally verifies
44 * that the invoked method returns a non-zero value. 44 * that the invoked method returns a non-zero value.
45 */ 45 */
46 #include "SkBitmap.h" 46 #include "SkBitmap.h"
47 #include "SkCanvas.h" 47 #include "SkCanvas.h"
48 #include "SkClipStack.h"
48 #include "SkDeferredCanvas.h" 49 #include "SkDeferredCanvas.h"
49 #include "SkDevice.h" 50 #include "SkDevice.h"
50 #include "SkDocument.h" 51 #include "SkDocument.h"
51 #include "SkMatrix.h" 52 #include "SkMatrix.h"
52 #include "SkNWayCanvas.h" 53 #include "SkNWayCanvas.h"
53 #include "SkPaint.h" 54 #include "SkPaint.h"
54 #include "SkPath.h" 55 #include "SkPath.h"
55 #include "SkPicture.h" 56 #include "SkPicture.h"
56 #include "SkPictureRecord.h" 57 #include "SkPictureRecord.h"
57 #include "SkPictureRecorder.h" 58 #include "SkPictureRecorder.h"
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 SkBitmap bm; 211 SkBitmap bm;
211 bm.setInfo(SkImageInfo::MakeN32Premul(size.width(), size.height())); 212 bm.setInfo(SkImageInfo::MakeN32Premul(size.width(), size.height()));
212 SkCanvas c(bm); 213 SkCanvas c(bm);
213 214
214 Canvas2CanvasClipVisitor visitor(&c); 215 Canvas2CanvasClipVisitor visitor(&c);
215 canvas->replayClips(&visitor); 216 canvas->replayClips(&visitor);
216 217
217 REPORTER_ASSERT(reporter, equal_clips(c, *canvas)); 218 REPORTER_ASSERT(reporter, equal_clips(c, *canvas));
218 } 219 }
219 220
221 static void test_clipstack(skiatest::Reporter* reporter) {
222 // The clipstack is refcounted, and needs to be able to out-live the canvas if a client has
223 // ref'd it.
224 const SkClipStack* cs = NULL;
225 {
226 SkCanvas canvas(10, 10);
227 cs = SkRef(canvas.getClipStack());
228 }
229 REPORTER_ASSERT(reporter, cs->unique());
230 cs->unref();
231 }
232
220 // Format strings that describe the test context. The %s token is where 233 // Format strings that describe the test context. The %s token is where
221 // the name of the test step is inserted. The context is required for 234 // the name of the test step is inserted. The context is required for
222 // disambiguating the error in the case of failures that are reported in 235 // disambiguating the error in the case of failures that are reported in
223 // functions that are called multiple times in different contexts (test 236 // functions that are called multiple times in different contexts (test
224 // cases and test steps). 237 // cases and test steps).
225 static const char* const kDefaultAssertMessageFormat = "%s"; 238 static const char* const kDefaultAssertMessageFormat = "%s";
226 static const char* const kCanvasDrawAssertMessageFormat = 239 static const char* const kCanvasDrawAssertMessageFormat =
227 "Drawing test step %s with SkCanvas"; 240 "Drawing test step %s with SkCanvas";
228 static const char* const kDeferredDrawAssertMessageFormat = 241 static const char* const kDeferredDrawAssertMessageFormat =
229 "Drawing test step %s with SkDeferredCanvas"; 242 "Drawing test step %s with SkDeferredCanvas";
(...skipping 434 matching lines...) Expand 10 before | Expand all | Expand 10 after
664 // report correct clipping and device bounds information 677 // report correct clipping and device bounds information
665 // Issue: http://code.google.com/p/skia/issues/detail?id=501 678 // Issue: http://code.google.com/p/skia/issues/detail?id=501
666 679
667 if (false) { // avoid bit rot, suppress warning 680 if (false) { // avoid bit rot, suppress warning
668 TestNWayCanvasStateConsistency(reporter, d, testStep, referenceCanvas); 681 TestNWayCanvasStateConsistency(reporter, d, testStep, referenceCanvas);
669 } 682 }
670 683
671 if (false) { // avoid bit rot, suppress warning 684 if (false) { // avoid bit rot, suppress warning
672 test_clipVisitor(reporter, &referenceCanvas); 685 test_clipVisitor(reporter, &referenceCanvas);
673 } 686 }
687 test_clipstack(reporter);
674 } 688 }
675 689
676 static void test_newraster(skiatest::Reporter* reporter) { 690 static void test_newraster(skiatest::Reporter* reporter) {
677 SkImageInfo info = SkImageInfo::MakeN32Premul(10, 10); 691 SkImageInfo info = SkImageInfo::MakeN32Premul(10, 10);
678 const size_t minRowBytes = info.minRowBytes(); 692 const size_t minRowBytes = info.minRowBytes();
679 const size_t size = info.getSafeSize(minRowBytes); 693 const size_t size = info.getSafeSize(minRowBytes);
680 SkAutoMalloc storage(size); 694 SkAutoMalloc storage(size);
681 SkPMColor* baseAddr = static_cast<SkPMColor*>(storage.get()); 695 SkPMColor* baseAddr = static_cast<SkPMColor*>(storage.get());
682 sk_bzero(baseAddr, size); 696 sk_bzero(baseAddr, size);
683 697
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
756 canvas.restore(); 770 canvas.restore();
757 canvas.save(); 771 canvas.save();
758 path.moveTo(5, 5); 772 path.moveTo(5, 5);
759 canvas.clipPath(path); 773 canvas.clipPath(path);
760 canvas.restore(); 774 canvas.restore();
761 canvas.save(); 775 canvas.save();
762 path.moveTo(7, 7); 776 path.moveTo(7, 7);
763 canvas.clipPath(path); // should not assert here 777 canvas.clipPath(path); // should not assert here
764 canvas.restore(); 778 canvas.restore();
765 } 779 }
OLDNEW
« no previous file with comments | « src/core/SkCanvas.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698