OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2010 The Android Open Source Project | 2 * Copyright 2010 The Android Open Source Project |
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 "SkBitmap.h" | 8 #include "SkBitmap.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 "SkFlate.h" | 12 #include "SkFlate.h" |
13 #include "SkImageEncoder.h" | 13 #include "SkImageEncoder.h" |
14 #include "SkMatrix.h" | 14 #include "SkMatrix.h" |
15 #include "SkPDFCanon.h" | 15 #include "SkPDFCanon.h" |
16 #include "SkPDFCatalog.h" | 16 #include "SkPDFCatalog.h" |
17 #include "SkPDFDevice.h" | 17 #include "SkPDFDevice.h" |
18 #include "SkPDFStream.h" | 18 #include "SkPDFStream.h" |
19 #include "SkPDFTypes.h" | 19 #include "SkPDFTypes.h" |
20 #include "SkReadBuffer.h" | 20 #include "SkReadBuffer.h" |
21 #include "SkScalar.h" | 21 #include "SkScalar.h" |
22 #include "SkStream.h" | 22 #include "SkStream.h" |
23 #include "SkTypes.h" | 23 #include "SkTypes.h" |
24 #include "Test.h" | 24 #include "Test.h" |
25 | 25 |
26 class SkPDFTestDict : public SkPDFDict { | |
27 public: | |
28 virtual void getResources(const SkTSet<SkPDFObject*>& knownResourceObjects, | |
29 SkTSet<SkPDFObject*>* newResourceObjects) { | |
30 for (int i = 0; i < fResources.count(); i++) { | |
31 newResourceObjects->add(fResources[i]); | |
32 fResources[i]->ref(); | |
33 } | |
34 } | |
35 | |
36 void addResource(SkPDFObject* object) { | |
37 fResources.append(1, &object); | |
38 } | |
39 | |
40 private: | |
41 SkTDArray<SkPDFObject*> fResources; | |
42 }; | |
43 | |
44 #define DUMMY_TEXT "DCT compessed stream." | 26 #define DUMMY_TEXT "DCT compessed stream." |
45 | 27 |
46 static bool stream_equals(const SkDynamicMemoryWStream& stream, size_t offset, | 28 static bool stream_equals(const SkDynamicMemoryWStream& stream, size_t offset, |
47 const void* buffer, size_t len) { | 29 const void* buffer, size_t len) { |
48 SkAutoDataUnref data(stream.copyToData()); | 30 SkAutoDataUnref data(stream.copyToData()); |
49 if (offset + len > data->size()) { | 31 if (offset + len > data->size()) { |
50 return false; | 32 return false; |
51 } | 33 } |
52 return memcmp(data->bytes() + offset, buffer, len) == 0; | 34 return memcmp(data->bytes() + offset, buffer, len) == 0; |
53 } | 35 } |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
190 | 172 |
191 char expectedResult[] = "2 0 R"; | 173 char expectedResult[] = "2 0 R"; |
192 SkDynamicMemoryWStream buffer; | 174 SkDynamicMemoryWStream buffer; |
193 int2ref->emitObject(&buffer, &catalog); | 175 int2ref->emitObject(&buffer, &catalog); |
194 REPORTER_ASSERT(reporter, buffer.getOffset() == strlen(expectedResult)); | 176 REPORTER_ASSERT(reporter, buffer.getOffset() == strlen(expectedResult)); |
195 REPORTER_ASSERT(reporter, stream_equals(buffer, 0, expectedResult, | 177 REPORTER_ASSERT(reporter, stream_equals(buffer, 0, expectedResult, |
196 buffer.getOffset())); | 178 buffer.getOffset())); |
197 } | 179 } |
198 | 180 |
199 static void TestSubstitute(skiatest::Reporter* reporter) { | 181 static void TestSubstitute(skiatest::Reporter* reporter) { |
200 SkAutoTUnref<SkPDFTestDict> proxy(new SkPDFTestDict()); | 182 SkAutoTUnref<SkPDFDict> proxy(new SkPDFDict()); |
201 SkAutoTUnref<SkPDFTestDict> stub(new SkPDFTestDict()); | 183 SkAutoTUnref<SkPDFDict> stub(new SkPDFDict()); |
202 | 184 |
203 proxy->insert("Value", new SkPDFInt(33))->unref(); | 185 proxy->insert("Value", new SkPDFInt(33))->unref(); |
204 stub->insert("Value", new SkPDFInt(44))->unref(); | 186 stub->insert("Value", new SkPDFInt(44))->unref(); |
205 | 187 |
206 SkPDFCatalog catalog; | 188 SkPDFCatalog catalog; |
207 catalog.addObject(proxy.get(), false); | 189 catalog.addObject(proxy.get(), false); |
208 catalog.setSubstitute(proxy.get(), stub.get()); | 190 catalog.setSubstitute(proxy.get(), stub.get()); |
209 | 191 |
210 REPORTER_ASSERT(reporter, stub.get() == catalog.getSubstituteObject(proxy)); | 192 REPORTER_ASSERT(reporter, stub.get() == catalog.getSubstituteObject(proxy)); |
211 REPORTER_ASSERT(reporter, proxy.get() != catalog.getSubstituteObject(stub)); | 193 REPORTER_ASSERT(reporter, proxy.get() != catalog.getSubstituteObject(stub)); |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
359 // Filter just created; should be unvisited. | 341 // Filter just created; should be unvisited. |
360 REPORTER_ASSERT(reporter, !filter->visited()); | 342 REPORTER_ASSERT(reporter, !filter->visited()); |
361 SkPaint paint; | 343 SkPaint paint; |
362 paint.setImageFilter(filter.get()); | 344 paint.setImageFilter(filter.get()); |
363 canvas->drawRect(SkRect::MakeWH(100, 100), paint); | 345 canvas->drawRect(SkRect::MakeWH(100, 100), paint); |
364 doc->close(); | 346 doc->close(); |
365 | 347 |
366 // Filter was used in rendering; should be visited. | 348 // Filter was used in rendering; should be visited. |
367 REPORTER_ASSERT(reporter, filter->visited()); | 349 REPORTER_ASSERT(reporter, filter->visited()); |
368 } | 350 } |
OLD | NEW |