| 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 |