| OLD | NEW | 
|---|
| 1 | 1 | 
| 2 /* | 2 /* | 
| 3  * Copyright 2011 Google Inc. | 3  * Copyright 2011 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 #include "SkAnnotation.h" | 8 #include "SkAnnotation.h" | 
| 9 #include "SkCanvas.h" | 9 #include "SkCanvas.h" | 
| 10 #include "SkData.h" | 10 #include "SkData.h" | 
| 11 #include "SkDocument.h" | 11 #include "SkDocument.h" | 
| 12 #include "SkStream.h" | 12 #include "SkStream.h" | 
| 13 #include "Test.h" | 13 #include "Test.h" | 
| 14 | 14 | 
| 15 #if SK_SUPPORT_PDF |  | 
| 16 |  | 
| 17 /** Returns true if data (may contain null characters) contains needle (null | 15 /** Returns true if data (may contain null characters) contains needle (null | 
| 18  *  terminated). */ | 16  *  terminated). */ | 
| 19 static bool ContainsString(const char* data, size_t dataSize, const char* needle
    ) { | 17 static bool ContainsString(const char* data, size_t dataSize, const char* needle
    ) { | 
| 20     size_t nSize = strlen(needle); | 18     size_t nSize = strlen(needle); | 
| 21     for (size_t i = 0; i < dataSize - nSize; i++) { | 19     for (size_t i = 0; i < dataSize - nSize; i++) { | 
| 22         if (strncmp(&data[i], needle, nSize) == 0) { | 20         if (strncmp(&data[i], needle, nSize) == 0) { | 
| 23             return true; | 21             return true; | 
| 24         } | 22         } | 
| 25     } | 23     } | 
| 26     return false; | 24     return false; | 
| 27 } | 25 } | 
| 28 | 26 | 
| 29 DEF_TEST(Annotation_NoDraw, reporter) { | 27 DEF_TEST(Annotation_NoDraw, reporter) { | 
| 30     SkBitmap bm; | 28     SkBitmap bm; | 
| 31     bm.allocN32Pixels(10, 10); | 29     bm.allocN32Pixels(10, 10); | 
| 32     bm.eraseColor(SK_ColorTRANSPARENT); | 30     bm.eraseColor(SK_ColorTRANSPARENT); | 
| 33 | 31 | 
| 34     SkCanvas canvas(bm); | 32     SkCanvas canvas(bm); | 
| 35     SkRect r = SkRect::MakeWH(SkIntToScalar(10), SkIntToScalar(10)); | 33     SkRect r = SkRect::MakeWH(SkIntToScalar(10), SkIntToScalar(10)); | 
| 36 | 34 | 
| 37     SkAutoDataUnref data(SkData::NewWithCString("http://www.gooogle.com")); | 35     SkAutoDataUnref data(SkData::NewWithCString("http://www.gooogle.com")); | 
| 38 | 36 | 
| 39     REPORTER_ASSERT(reporter, 0 == *bm.getAddr32(0, 0)); | 37     REPORTER_ASSERT(reporter, 0 == *bm.getAddr32(0, 0)); | 
| 40     SkAnnotateRectWithURL(&canvas, r, data.get()); | 38     SkAnnotateRectWithURL(&canvas, r, data.get()); | 
| 41     REPORTER_ASSERT(reporter, 0 == *bm.getAddr32(0, 0)); | 39     REPORTER_ASSERT(reporter, 0 == *bm.getAddr32(0, 0)); | 
| 42 } | 40 } | 
| 43 | 41 | 
| 44 DEF_TEST(Annotation_PdfLink, reporter) { | 42 DEF_TEST(Annotation_PdfLink, reporter) { | 
|  | 43     REQUIRE_PDF_DOCUMENT(Annotation_PdfLink, reporter); | 
| 45     SkDynamicMemoryWStream outStream; | 44     SkDynamicMemoryWStream outStream; | 
| 46     SkAutoTUnref<SkDocument> doc(SkDocument::CreatePDF(&outStream)); | 45     SkAutoTUnref<SkDocument> doc(SkDocument::CreatePDF(&outStream)); | 
| 47     SkCanvas* canvas = doc->beginPage(612.0f, 792.0f); | 46     SkCanvas* canvas = doc->beginPage(612.0f, 792.0f); | 
| 48     REPORTER_ASSERT(reporter, canvas); | 47     REPORTER_ASSERT(reporter, canvas); | 
| 49 | 48 | 
| 50     SkRect r = SkRect::MakeXYWH(SkIntToScalar(72), SkIntToScalar(72), | 49     SkRect r = SkRect::MakeXYWH(SkIntToScalar(72), SkIntToScalar(72), | 
| 51                                 SkIntToScalar(288), SkIntToScalar(72)); | 50                                 SkIntToScalar(288), SkIntToScalar(72)); | 
| 52     SkAutoDataUnref data(SkData::NewWithCString("http://www.gooogle.com")); | 51     SkAutoDataUnref data(SkData::NewWithCString("http://www.gooogle.com")); | 
| 53     SkAnnotateRectWithURL(canvas, r, data.get()); | 52     SkAnnotateRectWithURL(canvas, r, data.get()); | 
| 54 | 53 | 
| 55     REPORTER_ASSERT(reporter, doc->close()); | 54     REPORTER_ASSERT(reporter, doc->close()); | 
| 56     SkAutoDataUnref out(outStream.copyToData()); | 55     SkAutoDataUnref out(outStream.copyToData()); | 
| 57     const char* rawOutput = (const char*)out->data(); | 56     const char* rawOutput = (const char*)out->data(); | 
| 58 | 57 | 
| 59     REPORTER_ASSERT(reporter, ContainsString(rawOutput, out->size(), "/Annots ")
    ); | 58     REPORTER_ASSERT(reporter, ContainsString(rawOutput, out->size(), "/Annots ")
    ); | 
| 60 } | 59 } | 
| 61 | 60 | 
| 62 DEF_TEST(Annotation_NamedDestination, reporter) { | 61 DEF_TEST(Annotation_NamedDestination, reporter) { | 
|  | 62     REQUIRE_PDF_DOCUMENT(Annotation_NamedDestination, reporter); | 
| 63     SkDynamicMemoryWStream outStream; | 63     SkDynamicMemoryWStream outStream; | 
| 64     SkAutoTUnref<SkDocument> doc(SkDocument::CreatePDF(&outStream)); | 64     SkAutoTUnref<SkDocument> doc(SkDocument::CreatePDF(&outStream)); | 
| 65     SkCanvas* canvas = doc->beginPage(612.0f, 792.0f); | 65     SkCanvas* canvas = doc->beginPage(612.0f, 792.0f); | 
| 66     REPORTER_ASSERT(reporter, canvas); | 66     REPORTER_ASSERT(reporter, canvas); | 
| 67 | 67 | 
| 68     SkPoint p = SkPoint::Make(SkIntToScalar(72), SkIntToScalar(72)); | 68     SkPoint p = SkPoint::Make(SkIntToScalar(72), SkIntToScalar(72)); | 
| 69     SkAutoDataUnref data(SkData::NewWithCString("example")); | 69     SkAutoDataUnref data(SkData::NewWithCString("example")); | 
| 70     SkAnnotateNamedDestination(canvas, p, data.get()); | 70     SkAnnotateNamedDestination(canvas, p, data.get()); | 
| 71 | 71 | 
| 72     REPORTER_ASSERT(reporter, doc->close()); | 72     REPORTER_ASSERT(reporter, doc->close()); | 
| 73     SkAutoDataUnref out(outStream.copyToData()); | 73     SkAutoDataUnref out(outStream.copyToData()); | 
| 74     const char* rawOutput = (const char*)out->data(); | 74     const char* rawOutput = (const char*)out->data(); | 
| 75 | 75 | 
| 76     REPORTER_ASSERT(reporter, | 76     REPORTER_ASSERT(reporter, | 
| 77         ContainsString(rawOutput, out->size(), "/example ")); | 77         ContainsString(rawOutput, out->size(), "/example ")); | 
| 78 } | 78 } | 
| 79 #endif  // SK_SUPPORT_PDF |  | 
| OLD | NEW | 
|---|