Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(170)

Side by Side Diff: src/pdf/SkPDFResourceDict.cpp

Issue 1069103003: SkPDF: Refactor SkPDFObject heiararchy. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: 2015-04-25 (Saturday) 09:40:48 EDT Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/pdf/SkPDFFont.cpp ('k') | src/pdf/SkPDFTypes.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "SkPDFResourceDict.h" 8 #include "SkPDFResourceDict.h"
9 #include "SkPostConfig.h" 9 #include "SkPostConfig.h"
10 10
(...skipping 28 matching lines...) Expand all
39 SkPDFResourceDict::SkPDFResourceType type) { 39 SkPDFResourceDict::SkPDFResourceType type) {
40 SkASSERT(type >= 0); 40 SkASSERT(type >= 0);
41 SkASSERT(type < SkPDFResourceDict::kResourceTypeCount); 41 SkASSERT(type < SkPDFResourceDict::kResourceTypeCount);
42 42
43 return resource_type_prefixes[type]; 43 return resource_type_prefixes[type];
44 } 44 }
45 45
46 static const char* get_resource_type_name( 46 static const char* get_resource_type_name(
47 SkPDFResourceDict::SkPDFResourceType type) { 47 SkPDFResourceDict::SkPDFResourceType type) {
48 SkASSERT(type >= 0); 48 SkASSERT(type >= 0);
49 SkASSERT(type < SkPDFResourceDict::kResourceTypeCount); 49 SkASSERT(type < SK_ARRAY_COUNT(resource_type_names));
50 50
51 return resource_type_names[type]; 51 return resource_type_names[type];
52 } 52 }
53 53
54 SkString SkPDFResourceDict::getResourceName( 54 SkString SkPDFResourceDict::getResourceName(
55 SkPDFResourceDict::SkPDFResourceType type, int key) { 55 SkPDFResourceDict::SkPDFResourceType type, int key) {
56 SkString keyString; 56 SkString keyString;
57 keyString.printf("%c%d", get_resource_type_prefix(type), key); 57 keyString.printf("%c%d", get_resource_type_prefix(type), key);
58 return keyString; 58 return keyString;
59 } 59 }
60 60
61 static void add_subdict( 61 static void add_subdict(
62 const SkTDArray<SkPDFObject*>& resourceList, 62 const SkTDArray<SkPDFObject*>& resourceList,
63 SkPDFResourceDict::SkPDFResourceType type, 63 SkPDFResourceDict::SkPDFResourceType type,
64 SkPDFDict* dst) { 64 SkPDFDict* dst) {
65 if (0 == resourceList.count()) { 65 if (0 == resourceList.count()) {
66 return; 66 return;
67 } 67 }
68 SkAutoTUnref<SkPDFDict> resources(SkNEW(SkPDFDict)); 68 SkAutoTUnref<SkPDFDict> resources(SkNEW(SkPDFDict));
69 for (int i = 0; i < resourceList.count(); i++) { 69 for (int i = 0; i < resourceList.count(); i++) {
70 SkString keyString = SkPDFResourceDict::getResourceName(type, i); 70 resources->insertObjRef(SkPDFResourceDict::getResourceName(type, i),
71 SkAutoTUnref<SkPDFName> keyName(SkNEW_ARGS(SkPDFName, (keyString))); 71 SkRef(resourceList[i]));
72 SkAutoTUnref<SkPDFObjRef> ref(
73 SkNEW_ARGS(SkPDFObjRef, (resourceList[i])));
74 resources->insert(keyName, ref);
75 } 72 }
76 dst->insert(get_resource_type_name(type), resources); 73 dst->insertObject(get_resource_type_name(type), resources.detach());
77 } 74 }
78 75
79 SkPDFDict* SkPDFResourceDict::Create( 76 SkPDFDict* SkPDFResourceDict::Create(
80 const SkTDArray<SkPDFObject*>* gStateResources, 77 const SkTDArray<SkPDFObject*>* gStateResources,
81 const SkTDArray<SkPDFObject*>* patternResources, 78 const SkTDArray<SkPDFObject*>* patternResources,
82 const SkTDArray<SkPDFObject*>* xObjectResources, 79 const SkTDArray<SkPDFObject*>* xObjectResources,
83 const SkTDArray<SkPDFObject*>* fontResources) { 80 const SkTDArray<SkPDFObject*>* fontResources) {
84 SkAutoTUnref<SkPDFDict> dict(SkNEW(SkPDFDict)); 81 SkAutoTUnref<SkPDFDict> dict(SkNEW(SkPDFDict));
85 static const char kProcs[][7] = { 82 static const char kProcs[][7] = {
86 "PDF", "Text", "ImageB", "ImageC", "ImageI"}; 83 "PDF", "Text", "ImageB", "ImageC", "ImageI"};
87 SkAutoTUnref<SkPDFArray> procSets(SkNEW(SkPDFArray)); 84 SkAutoTUnref<SkPDFArray> procSets(SkNEW(SkPDFArray));
88 85
89 procSets->reserve(SK_ARRAY_COUNT(kProcs)); 86 procSets->reserve(SK_ARRAY_COUNT(kProcs));
90 for (size_t i = 0; i < SK_ARRAY_COUNT(kProcs); i++) { 87 for (size_t i = 0; i < SK_ARRAY_COUNT(kProcs); i++) {
91 procSets->appendName(kProcs[i]); 88 procSets->appendName(kProcs[i]);
92 } 89 }
93 dict->insert("ProcSets", procSets); 90 dict->insertObject("ProcSets", procSets.detach());
94 91
95 if (gStateResources) { 92 if (gStateResources) {
96 add_subdict(*gStateResources, kExtGState_ResourceType, dict); 93 add_subdict(*gStateResources, kExtGState_ResourceType, dict);
97 } 94 }
98 if (patternResources) { 95 if (patternResources) {
99 add_subdict(*patternResources, kPattern_ResourceType, dict); 96 add_subdict(*patternResources, kPattern_ResourceType, dict);
100 } 97 }
101 if (xObjectResources) { 98 if (xObjectResources) {
102 add_subdict(*xObjectResources, kXObject_ResourceType, dict); 99 add_subdict(*xObjectResources, kXObject_ResourceType, dict);
103 } 100 }
104 if (fontResources) { 101 if (fontResources) {
105 add_subdict(*fontResources, kFont_ResourceType, dict); 102 add_subdict(*fontResources, kFont_ResourceType, dict);
106 } 103 }
107 return dict.detach(); 104 return dict.detach();
108 } 105 }
OLDNEW
« no previous file with comments | « src/pdf/SkPDFFont.cpp ('k') | src/pdf/SkPDFTypes.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698