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 | 8 |
9 | 9 |
10 #include "SkPDFCatalog.h" | 10 #include "SkPDFCatalog.h" |
(...skipping 481 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
492 SkPDFName* SkPDFDict::Iter::next(SkPDFObject** value) { | 492 SkPDFName* SkPDFDict::Iter::next(SkPDFObject** value) { |
493 if (fIter != fStop) { | 493 if (fIter != fStop) { |
494 const Rec* cur = fIter; | 494 const Rec* cur = fIter; |
495 fIter++; | 495 fIter++; |
496 *value = cur->value; | 496 *value = cur->value; |
497 return cur->key; | 497 return cur->key; |
498 } | 498 } |
499 *value = NULL; | 499 *value = NULL; |
500 return NULL; | 500 return NULL; |
501 } | 501 } |
| 502 |
| 503 /////////////////////////////////////////////////////////////////////////////// |
| 504 SkPDFObject* SkPDFResourceDict::insertResource( |
| 505 SkPDFName* type, SkPDFName* key, SkPDFObject* value) { |
| 506 SkPDFDict* typeDict = getResourceTypeDict(type); |
| 507 typeDict->insert(key, value); |
| 508 return value; |
| 509 } |
| 510 |
| 511 SkPDFObject* SkPDFResourceDict::insertResource( |
| 512 const char type[], const char key[], SkPDFObject* value) { |
| 513 return insertResource(new SkPDFName(type), new SkPDFName(key), value); |
| 514 } |
| 515 |
| 516 SkPDFObject* SkPDFResourceDict::insertResourceAsRef( |
| 517 const char type[], const char key[], SkPDFObject* value) { |
| 518 SkAutoTUnref<SkPDFObjRef> ref( new SkPDFObjRef(value)); |
| 519 insertResource(new SkPDFName(type), new SkPDFName(key), ref); |
| 520 fResources.add(value); |
| 521 |
| 522 return value; |
| 523 } |
| 524 |
| 525 void SkPDFResourceDict::getResources( |
| 526 const SkTSet<SkPDFObject*>& knownResourceObjects, |
| 527 SkTSet<SkPDFObject*>* newResourceObjects) { |
| 528 GetResourcesHelper(&fResources.toArray(), |
| 529 knownResourceObjects, |
| 530 newResourceObjects); |
| 531 } |
| 532 |
| 533 SkPDFDict* SkPDFResourceDict::getResourceTypeDict(SkPDFName* type) { |
| 534 for (int i = 0; i < fTypes.count(); i++) { |
| 535 if (*(fTypes[i].key) == *type) { |
| 536 return fTypes[i].value; |
| 537 } |
| 538 } |
| 539 |
| 540 // If not found, create a new record. |
| 541 struct DictRec* newEntry = fTypes.append(); |
| 542 newEntry->key = type; |
| 543 SkAutoTUnref<SkPDFDict> newDict(new SkPDFDict()); |
| 544 newEntry->value = newDict; |
| 545 insert(type, newDict); // ref counting handled in SkPDFDict::insert |
| 546 return newDict.get(); |
| 547 } |
OLD | NEW |