| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2013 Google Inc. | 2 * Copyright 2013 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 "Resources.h" | 8 #include "Resources.h" |
| 9 #include "SkAnnotationKeys.h" | 9 #include "SkAnnotationKeys.h" |
| 10 #include "SkBitmapProcShader.h" | 10 #include "SkBitmapProcShader.h" |
| (...skipping 616 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 627 static sk_sp<SkPicture> copy_picture_via_serialization(SkPicture* src) { | 627 static sk_sp<SkPicture> copy_picture_via_serialization(SkPicture* src) { |
| 628 SkDynamicMemoryWStream wstream; | 628 SkDynamicMemoryWStream wstream; |
| 629 src->serialize(&wstream); | 629 src->serialize(&wstream); |
| 630 SkAutoTDelete<SkStreamAsset> rstream(wstream.detachAsStream()); | 630 SkAutoTDelete<SkStreamAsset> rstream(wstream.detachAsStream()); |
| 631 return SkPicture::MakeFromStream(rstream); | 631 return SkPicture::MakeFromStream(rstream); |
| 632 } | 632 } |
| 633 | 633 |
| 634 struct AnnotationRec { | 634 struct AnnotationRec { |
| 635 const SkRect fRect; | 635 const SkRect fRect; |
| 636 const char* fKey; | 636 const char* fKey; |
| 637 SkData* fValue; | 637 sk_sp<SkData> fValue; |
| 638 }; | 638 }; |
| 639 | 639 |
| 640 class TestAnnotationCanvas : public SkCanvas { | 640 class TestAnnotationCanvas : public SkCanvas { |
| 641 skiatest::Reporter* fReporter; | 641 skiatest::Reporter* fReporter; |
| 642 const AnnotationRec* fRec; | 642 const AnnotationRec* fRec; |
| 643 int fCount; | 643 int fCount; |
| 644 int fCurrIndex; | 644 int fCurrIndex; |
| 645 | 645 |
| 646 public: | 646 public: |
| 647 TestAnnotationCanvas(skiatest::Reporter* reporter, const AnnotationRec rec[]
, int count) | 647 TestAnnotationCanvas(skiatest::Reporter* reporter, const AnnotationRec rec[]
, int count) |
| 648 : SkCanvas(100, 100) | 648 : SkCanvas(100, 100) |
| 649 , fReporter(reporter) | 649 , fReporter(reporter) |
| 650 , fRec(rec) | 650 , fRec(rec) |
| 651 , fCount(count) | 651 , fCount(count) |
| 652 , fCurrIndex(0) | 652 , fCurrIndex(0) |
| 653 {} | 653 {} |
| 654 | 654 |
| 655 ~TestAnnotationCanvas() { | 655 ~TestAnnotationCanvas() { |
| 656 REPORTER_ASSERT(fReporter, fCount == fCurrIndex); | 656 REPORTER_ASSERT(fReporter, fCount == fCurrIndex); |
| 657 } | 657 } |
| 658 | 658 |
| 659 protected: | 659 protected: |
| 660 void onDrawAnnotation(const SkRect& rect, const char key[], SkData* value) { | 660 void onDrawAnnotation(const SkRect& rect, const char key[], SkData* value) { |
| 661 REPORTER_ASSERT(fReporter, fCurrIndex < fCount); | 661 REPORTER_ASSERT(fReporter, fCurrIndex < fCount); |
| 662 REPORTER_ASSERT(fReporter, rect == fRec[fCurrIndex].fRect); | 662 REPORTER_ASSERT(fReporter, rect == fRec[fCurrIndex].fRect); |
| 663 REPORTER_ASSERT(fReporter, !strcmp(key, fRec[fCurrIndex].fKey)); | 663 REPORTER_ASSERT(fReporter, !strcmp(key, fRec[fCurrIndex].fKey)); |
| 664 REPORTER_ASSERT(fReporter, value->equals(fRec[fCurrIndex].fValue)); | 664 REPORTER_ASSERT(fReporter, value->equals(fRec[fCurrIndex].fValue.get()))
; |
| 665 fCurrIndex += 1; | 665 fCurrIndex += 1; |
| 666 } | 666 } |
| 667 }; | 667 }; |
| 668 | 668 |
| 669 /* | 669 /* |
| 670 * Test the 3 annotation types by recording them into a picture, serializing, a
nd then playing | 670 * Test the 3 annotation types by recording them into a picture, serializing, a
nd then playing |
| 671 * them back into another canvas. | 671 * them back into another canvas. |
| 672 */ | 672 */ |
| 673 DEF_TEST(Annotations, reporter) { | 673 DEF_TEST(Annotations, reporter) { |
| 674 SkPictureRecorder recorder; | 674 SkPictureRecorder recorder; |
| 675 SkCanvas* recordingCanvas = recorder.beginRecording(SkRect::MakeWH(100, 100)
); | 675 SkCanvas* recordingCanvas = recorder.beginRecording(SkRect::MakeWH(100, 100)
); |
| 676 | 676 |
| 677 const char* str0 = "rect-with-url"; | 677 const char* str0 = "rect-with-url"; |
| 678 const SkRect r0 = SkRect::MakeWH(10, 10); | 678 const SkRect r0 = SkRect::MakeWH(10, 10); |
| 679 SkAutoTUnref<SkData> d0(SkData::NewWithCString(str0)); | 679 sk_sp<SkData> d0(SkData::MakeWithCString(str0)); |
| 680 SkAnnotateRectWithURL(recordingCanvas, r0, d0); | 680 SkAnnotateRectWithURL(recordingCanvas, r0, d0.get()); |
| 681 | 681 |
| 682 const char* str1 = "named-destination"; | 682 const char* str1 = "named-destination"; |
| 683 const SkRect r1 = SkRect::MakeXYWH(5, 5, 0, 0); // collapsed to a point | 683 const SkRect r1 = SkRect::MakeXYWH(5, 5, 0, 0); // collapsed to a point |
| 684 SkAutoTUnref<SkData> d1(SkData::NewWithCString(str1)); | 684 sk_sp<SkData> d1(SkData::MakeWithCString(str1)); |
| 685 SkAnnotateNamedDestination(recordingCanvas, {r1.x(), r1.y()}, d1); | 685 SkAnnotateNamedDestination(recordingCanvas, {r1.x(), r1.y()}, d1.get()); |
| 686 | 686 |
| 687 const char* str2 = "link-to-destination"; | 687 const char* str2 = "link-to-destination"; |
| 688 const SkRect r2 = SkRect::MakeXYWH(20, 20, 5, 6); | 688 const SkRect r2 = SkRect::MakeXYWH(20, 20, 5, 6); |
| 689 SkAutoTUnref<SkData> d2(SkData::NewWithCString(str2)); | 689 sk_sp<SkData> d2(SkData::MakeWithCString(str2)); |
| 690 SkAnnotateLinkToDestination(recordingCanvas, r2, d2); | 690 SkAnnotateLinkToDestination(recordingCanvas, r2, d2.get()); |
| 691 | 691 |
| 692 const AnnotationRec recs[] = { | 692 const AnnotationRec recs[] = { |
| 693 { r0, SkAnnotationKeys::URL_Key(), d0 }, | 693 { r0, SkAnnotationKeys::URL_Key(), std::move(d0) }, |
| 694 { r1, SkAnnotationKeys::Define_Named_Dest_Key(), d1 }, | 694 { r1, SkAnnotationKeys::Define_Named_Dest_Key(), std::move(d1) }, |
| 695 { r2, SkAnnotationKeys::Link_Named_Dest_Key(), d2 }, | 695 { r2, SkAnnotationKeys::Link_Named_Dest_Key(), std::move(d2) }, |
| 696 }; | 696 }; |
| 697 | 697 |
| 698 sk_sp<SkPicture> pict0(recorder.finishRecordingAsPicture()); | 698 sk_sp<SkPicture> pict0(recorder.finishRecordingAsPicture()); |
| 699 sk_sp<SkPicture> pict1(copy_picture_via_serialization(pict0.get())); | 699 sk_sp<SkPicture> pict1(copy_picture_via_serialization(pict0.get())); |
| 700 | 700 |
| 701 TestAnnotationCanvas canvas(reporter, recs, SK_ARRAY_COUNT(recs)); | 701 TestAnnotationCanvas canvas(reporter, recs, SK_ARRAY_COUNT(recs)); |
| 702 canvas.drawPicture(pict1); | 702 canvas.drawPicture(pict1); |
| 703 } | 703 } |
| OLD | NEW |