OLD | NEW |
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 #ifndef SkPdfNativeObject_DEFINED | 8 #ifndef SkPdfNativeObject_DEFINED |
9 #define SkPdfNativeObject_DEFINED | 9 #define SkPdfNativeObject_DEFINED |
10 | 10 |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
96 SkTDArray<SkPdfNativeObject*>* fArray; | 96 SkTDArray<SkPdfNativeObject*>* fArray; |
97 Reference fRef; | 97 Reference fRef; |
98 }; | 98 }; |
99 SkTDict<SkPdfNativeObject*>* fMap; | 99 SkTDict<SkPdfNativeObject*>* fMap; |
100 | 100 |
101 // TODO(edisonn): rename data with cache | 101 // TODO(edisonn): rename data with cache |
102 void* fData; | 102 void* fData; |
103 DataType fDataType; | 103 DataType fDataType; |
104 | 104 |
105 | 105 |
106 // Keep this the last entrys | 106 // Keep this the last entries |
107 #ifdef PDF_TRACK_OBJECT_USAGE | 107 #ifdef PDF_TRACK_OBJECT_USAGE |
108 mutable bool fUsed; | 108 mutable bool fUsed; |
109 #endif // PDF_TRACK_OBJECT_USAGE | 109 #endif // PDF_TRACK_OBJECT_USAGE |
110 | 110 |
| 111 #ifdef PDF_TRACK_STREAM_OFFSETS |
111 public: | 112 public: |
| 113 int fStreamId; |
| 114 int fOffsetStart; |
| 115 int fOffsetEnd; |
| 116 #endif // PDF_TRACK_STREAM_OFFSETS |
| 117 |
| 118 public: |
| 119 |
| 120 #ifdef PDF_TRACK_STREAM_OFFSETS |
| 121 int streamId() const { return fStreamId; } |
| 122 int offsetStart() const { return fOffsetStart; } |
| 123 int offsetEnd() const { return fOffsetEnd; } |
| 124 #endif // PDF_TRACK_STREAM_OFFSETS |
| 125 |
112 | 126 |
113 SkPdfNativeObject() : fInRendering(0) | 127 SkPdfNativeObject() : fInRendering(0) |
114 , fObjectType(kInvalid_PdfObjectType) | 128 , fObjectType(kInvalid_PdfObjectType) |
115 , fMap(NULL) | 129 , fMap(NULL) |
116 , fData(NULL) | 130 , fData(NULL) |
117 , fDataType(kEmpty_Data) | 131 , fDataType(kEmpty_Data) |
118 #ifdef PDF_TRACK_OBJECT_USAGE | 132 #ifdef PDF_TRACK_OBJECT_USAGE |
119 , fUsed(false) | 133 , fUsed(false) |
120 #endif // PDF_TRACK_OBJECT_USAGE | 134 #endif // PDF_TRACK_OBJECT_USAGE |
| 135 |
| 136 #ifdef PDF_TRACK_STREAM_OFFSETS |
| 137 , fStreamId(-1) |
| 138 , fOffsetStart(-1) |
| 139 , fOffsetEnd(-1) |
| 140 #endif // PDF_TRACK_STREAM_OFFSETS |
121 {} | 141 {} |
122 | 142 |
123 bool inRendering() const { return fInRendering != 0; } | 143 bool inRendering() const { return fInRendering != 0; } |
124 void startRendering() {fInRendering = 1;} | 144 void startRendering() {fInRendering = 1;} |
125 void doneRendering() {fInRendering = 0;} | 145 void doneRendering() {fInRendering = 0;} |
126 | 146 |
127 inline bool hasData(DataType type) { | 147 inline bool hasData(DataType type) { |
128 return type == fDataType; | 148 return type == fDataType; |
129 } | 149 } |
130 | 150 |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
224 static SkPdfFileSpec nyi; | 244 static SkPdfFileSpec nyi; |
225 return nyi; | 245 return nyi; |
226 } | 246 } |
227 | 247 |
228 // TODO(edisonn): NYI | 248 // TODO(edisonn): NYI |
229 SkPdfTree& treeValue() const { | 249 SkPdfTree& treeValue() const { |
230 static SkPdfTree nyi; | 250 static SkPdfTree nyi; |
231 return nyi; | 251 return nyi; |
232 } | 252 } |
233 | 253 |
234 static void makeBoolean(bool value, SkPdfNativeObject* obj) { | 254 static void makeBoolean(bool value, SkPdfNativeObject* obj GET_TRACK_PARAMET
ERS) { |
| 255 STORE_TRACK_PARAMETERS(obj); |
| 256 |
235 SkASSERT(obj->fObjectType == kInvalid_PdfObjectType); | 257 SkASSERT(obj->fObjectType == kInvalid_PdfObjectType); |
236 | 258 |
237 obj->fObjectType = kBoolean_PdfObjectType; | 259 obj->fObjectType = kBoolean_PdfObjectType; |
238 obj->fBooleanValue = value; | 260 obj->fBooleanValue = value; |
239 } | 261 } |
240 | 262 |
241 static SkPdfNativeObject makeBoolean(bool value) { | 263 static SkPdfNativeObject makeBoolean(bool value GET_TRACK_PARAMETERS) { |
242 SkPdfNativeObject obj; | 264 SkPdfNativeObject obj; |
| 265 |
| 266 STORE_TRACK_PARAMETERS(&obj); |
| 267 |
243 obj.fObjectType = kBoolean_PdfObjectType; | 268 obj.fObjectType = kBoolean_PdfObjectType; |
244 obj.fBooleanValue = value; | 269 obj.fBooleanValue = value; |
245 return obj; | 270 return obj; |
246 } | 271 } |
247 | 272 |
248 static void makeInteger(int64_t value, SkPdfNativeObject* obj) { | 273 static void makeInteger(int64_t value, SkPdfNativeObject* obj GET_TRACK_PARA
METERS) { |
| 274 STORE_TRACK_PARAMETERS(obj); |
| 275 |
249 SkASSERT(obj->fObjectType == kInvalid_PdfObjectType); | 276 SkASSERT(obj->fObjectType == kInvalid_PdfObjectType); |
250 | 277 |
251 obj->fObjectType = kInteger_PdfObjectType; | 278 obj->fObjectType = kInteger_PdfObjectType; |
252 obj->fIntegerValue = value; | 279 obj->fIntegerValue = value; |
253 } | 280 } |
254 | 281 |
255 static void makeReal(double value, SkPdfNativeObject* obj) { | 282 static void makeReal(double value, SkPdfNativeObject* obj GET_TRACK_PARAMETE
RS) { |
| 283 STORE_TRACK_PARAMETERS(obj); |
| 284 |
256 SkASSERT(obj->fObjectType == kInvalid_PdfObjectType); | 285 SkASSERT(obj->fObjectType == kInvalid_PdfObjectType); |
257 | 286 |
258 obj->fObjectType = kReal_PdfObjectType; | 287 obj->fObjectType = kReal_PdfObjectType; |
259 obj->fRealValue = value; | 288 obj->fRealValue = value; |
260 } | 289 } |
261 | 290 |
262 static void makeNull(SkPdfNativeObject* obj) { | 291 static void makeNull(SkPdfNativeObject* obj GET_TRACK_PARAMETERS) { |
| 292 STORE_TRACK_PARAMETERS(obj); |
| 293 |
263 SkASSERT(obj->fObjectType == kInvalid_PdfObjectType); | 294 SkASSERT(obj->fObjectType == kInvalid_PdfObjectType); |
264 | 295 |
265 obj->fObjectType = kNull_PdfObjectType; | 296 obj->fObjectType = kNull_PdfObjectType; |
266 } | 297 } |
267 | 298 |
268 static SkPdfNativeObject makeNull() { | 299 static SkPdfNativeObject makeNull(GET_TRACK_PARAMETERS0) { |
269 SkPdfNativeObject obj; | 300 SkPdfNativeObject obj; |
| 301 |
| 302 STORE_TRACK_PARAMETERS(&obj); |
| 303 |
270 obj.fObjectType = kNull_PdfObjectType; | 304 obj.fObjectType = kNull_PdfObjectType; |
271 return obj; | 305 return obj; |
272 } | 306 } |
273 | 307 |
274 static SkPdfNativeObject kNull; | 308 static SkPdfNativeObject kNull; |
275 | 309 |
276 static void makeNumeric(const unsigned char* start, const unsigned char* end
, SkPdfNativeObject* obj) { | 310 static void makeNumeric(const unsigned char* start, const unsigned char* end
, SkPdfNativeObject* obj GET_TRACK_PARAMETERS) { |
277 SkASSERT(obj->fObjectType == kInvalid_PdfObjectType); | 311 SkASSERT(obj->fObjectType == kInvalid_PdfObjectType); |
278 | 312 |
279 // TODO(edisonn): NYI properly | 313 // TODO(edisonn): NYI properly |
280 // if has dot (impl), or exceeds max int, is real, otherwise is int | 314 // if has dot (impl), or exceeds max int, is real, otherwise is int |
281 bool isInt = true; | 315 bool isInt = true; |
282 for (const unsigned char* current = start; current < end; current++) { | 316 for (const unsigned char* current = start; current < end; current++) { |
283 if (*current == '.') { | 317 if (*current == '.') { |
284 isInt = false; | 318 isInt = false; |
285 break; | 319 break; |
286 } | 320 } |
287 // TODO(edisonn): report parse issue with numbers like "24asdasd123" | 321 // TODO(edisonn): report parse issue with numbers like "24asdasd123" |
288 } | 322 } |
289 if (isInt) { | 323 if (isInt) { |
290 makeInteger(atol((const char*)start), obj); | 324 makeInteger(atol((const char*)start), obj PUT_TRACK_PARAMETERS); |
291 } else { | 325 } else { |
292 makeReal(atof((const char*)start), obj); | 326 makeReal(atof((const char*)start), obj PUT_TRACK_PARAMETERS); |
293 } | 327 } |
294 } | 328 } |
295 | 329 |
296 static void makeReference(unsigned int id, unsigned int gen, SkPdfNativeObje
ct* obj) { | 330 static void makeReference(unsigned int id, unsigned int gen, SkPdfNativeObje
ct* obj GET_TRACK_PARAMETERS) { |
| 331 STORE_TRACK_PARAMETERS(obj); |
| 332 |
297 SkASSERT(obj->fObjectType == kInvalid_PdfObjectType); | 333 SkASSERT(obj->fObjectType == kInvalid_PdfObjectType); |
298 | 334 |
299 obj->fObjectType = kReference_PdfObjectType; | 335 obj->fObjectType = kReference_PdfObjectType; |
300 obj->fRef.fId = id; | 336 obj->fRef.fId = id; |
301 obj->fRef.fGen = gen; | 337 obj->fRef.fGen = gen; |
302 } | 338 } |
303 | 339 |
304 | 340 static void resetAndMakeReference(unsigned int id, unsigned int gen, SkPdfNa
tiveObject* obj GET_TRACK_PARAMETERS) { |
305 static void makeString(const unsigned char* start, SkPdfNativeObject* obj) { | 341 obj->reset(); |
306 makeStringCore(start, strlen((const char*)start), obj, kString_PdfObject
Type); | 342 makeReference(id, gen, obj PUT_TRACK_PARAMETERS); |
307 } | |
308 | |
309 static void makeString(const unsigned char* start, const unsigned char* end,
SkPdfNativeObject* obj) { | |
310 makeStringCore(start, end - start, obj, kString_PdfObjectType); | |
311 } | |
312 | |
313 static void makeString(const unsigned char* start, size_t bytes, SkPdfNative
Object* obj) { | |
314 makeStringCore(start, bytes, obj, kString_PdfObjectType); | |
315 } | 343 } |
316 | 344 |
317 | 345 |
318 static void makeHexString(const unsigned char* start, SkPdfNativeObject* obj
) { | 346 static void makeString(const unsigned char* start, SkPdfNativeObject* obj GE
T_TRACK_PARAMETERS) { |
319 makeStringCore(start, strlen((const char*)start), obj, kHexString_PdfObj
ectType); | 347 makeStringCore(start, strlen((const char*)start), obj, kString_PdfObject
Type PUT_TRACK_PARAMETERS); |
320 } | 348 } |
321 | 349 |
322 static void makeHexString(const unsigned char* start, const unsigned char* e
nd, SkPdfNativeObject* obj) { | 350 static void makeString(const unsigned char* start, const unsigned char* end,
SkPdfNativeObject* obj GET_TRACK_PARAMETERS) { |
323 makeStringCore(start, end - start, obj, kHexString_PdfObjectType); | 351 makeStringCore(start, end - start, obj, kString_PdfObjectType PUT_TRACK_
PARAMETERS); |
324 } | 352 } |
325 | 353 |
326 static void makeHexString(const unsigned char* start, size_t bytes, SkPdfNat
iveObject* obj) { | 354 static void makeString(const unsigned char* start, size_t bytes, SkPdfNative
Object* obj GET_TRACK_PARAMETERS) { |
327 makeStringCore(start, bytes, obj, kHexString_PdfObjectType); | 355 makeStringCore(start, bytes, obj, kString_PdfObjectType PUT_TRACK_PARAME
TERS); |
328 } | 356 } |
329 | 357 |
330 | 358 |
331 static void makeName(const unsigned char* start, SkPdfNativeObject* obj) { | 359 static void makeHexString(const unsigned char* start, SkPdfNativeObject* obj
GET_TRACK_PARAMETERS) { |
332 makeStringCore(start, strlen((const char*)start), obj, kName_PdfObjectTy
pe); | 360 makeStringCore(start, strlen((const char*)start), obj, kHexString_PdfObj
ectType PUT_TRACK_PARAMETERS); |
333 } | 361 } |
334 | 362 |
335 static void makeName(const unsigned char* start, const unsigned char* end, S
kPdfNativeObject* obj) { | 363 static void makeHexString(const unsigned char* start, const unsigned char* e
nd, SkPdfNativeObject* obj GET_TRACK_PARAMETERS) { |
336 makeStringCore(start, end - start, obj, kName_PdfObjectType); | 364 makeStringCore(start, end - start, obj, kHexString_PdfObjectType PUT_TRA
CK_PARAMETERS); |
337 } | 365 } |
338 | 366 |
339 static void makeName(const unsigned char* start, size_t bytes, SkPdfNativeOb
ject* obj) { | 367 static void makeHexString(const unsigned char* start, size_t bytes, SkPdfNat
iveObject* obj GET_TRACK_PARAMETERS) { |
340 makeStringCore(start, bytes, obj, kName_PdfObjectType); | 368 makeStringCore(start, bytes, obj, kHexString_PdfObjectType PUT_TRACK_PAR
AMETERS); |
341 } | 369 } |
342 | 370 |
343 | 371 |
344 static void makeKeyword(const unsigned char* start, SkPdfNativeObject* obj)
{ | 372 static void makeName(const unsigned char* start, SkPdfNativeObject* obj GET_
TRACK_PARAMETERS) { |
345 makeStringCore(start, strlen((const char*)start), obj, kKeyword_PdfObjec
tType); | 373 makeStringCore(start, strlen((const char*)start), obj, kName_PdfObjectTy
pe PUT_TRACK_PARAMETERS); |
346 } | 374 } |
347 | 375 |
348 static void makeKeyword(const unsigned char* start, const unsigned char* end
, SkPdfNativeObject* obj) { | 376 static void makeName(const unsigned char* start, const unsigned char* end, S
kPdfNativeObject* obj GET_TRACK_PARAMETERS) { |
349 makeStringCore(start, end - start, obj, kKeyword_PdfObjectType); | 377 makeStringCore(start, end - start, obj, kName_PdfObjectType PUT_TRACK_PA
RAMETERS); |
350 } | 378 } |
351 | 379 |
352 static void makeKeyword(const unsigned char* start, size_t bytes, SkPdfNativ
eObject* obj) { | 380 static void makeName(const unsigned char* start, size_t bytes, SkPdfNativeOb
ject* obj GET_TRACK_PARAMETERS) { |
353 makeStringCore(start, bytes, obj, kKeyword_PdfObjectType); | 381 makeStringCore(start, bytes, obj, kName_PdfObjectType PUT_TRACK_PARAMETE
RS); |
| 382 } |
| 383 |
| 384 |
| 385 static void makeKeyword(const unsigned char* start, SkPdfNativeObject* obj G
ET_TRACK_PARAMETERS) { |
| 386 makeStringCore(start, strlen((const char*)start), obj, kKeyword_PdfObjec
tType PUT_TRACK_PARAMETERS); |
| 387 } |
| 388 |
| 389 static void makeKeyword(const unsigned char* start, const unsigned char* end
, SkPdfNativeObject* obj GET_TRACK_PARAMETERS) { |
| 390 makeStringCore(start, end - start, obj, kKeyword_PdfObjectType PUT_TRACK
_PARAMETERS); |
| 391 } |
| 392 |
| 393 static void makeKeyword(const unsigned char* start, size_t bytes, SkPdfNativ
eObject* obj GET_TRACK_PARAMETERS) { |
| 394 makeStringCore(start, bytes, obj, kKeyword_PdfObjectType PUT_TRACK_PARAM
ETERS); |
354 } | 395 } |
355 | 396 |
356 | 397 |
357 | 398 |
358 // TODO(edisonn): make the functions to return SkPdfArray, move these functi
ons in SkPdfArray | 399 // TODO(edisonn): make the functions to return SkPdfArray, move these functi
ons in SkPdfArray |
359 static void makeEmptyArray(SkPdfNativeObject* obj) { | 400 static void makeEmptyArray(SkPdfNativeObject* obj GET_TRACK_PARAMETERS) { |
| 401 STORE_TRACK_PARAMETERS(obj); |
| 402 |
360 SkASSERT(obj->fObjectType == kInvalid_PdfObjectType); | 403 SkASSERT(obj->fObjectType == kInvalid_PdfObjectType); |
361 | 404 |
362 obj->fObjectType = kArray_PdfObjectType; | 405 obj->fObjectType = kArray_PdfObjectType; |
363 obj->fArray = new SkTDArray<SkPdfNativeObject*>(); | 406 obj->fArray = new SkTDArray<SkPdfNativeObject*>(); |
364 // return (SkPdfArray*)obj; | 407 // return (SkPdfArray*)obj; |
365 } | 408 } |
366 | 409 |
367 bool appendInArray(SkPdfNativeObject* obj) { | 410 bool appendInArray(SkPdfNativeObject* obj) { |
368 SkASSERT(fObjectType == kArray_PdfObjectType); | 411 SkASSERT(fObjectType == kArray_PdfObjectType); |
369 if (fObjectType != kArray_PdfObjectType) { | 412 if (fObjectType != kArray_PdfObjectType) { |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
420 const SkPdfNativeObject* operator[](int i) const { | 463 const SkPdfNativeObject* operator[](int i) const { |
421 SkPdfMarkObjectUsed(); | 464 SkPdfMarkObjectUsed(); |
422 | 465 |
423 SkASSERT(fObjectType == kArray_PdfObjectType); | 466 SkASSERT(fObjectType == kArray_PdfObjectType); |
424 | 467 |
425 return (*fArray)[i]; | 468 return (*fArray)[i]; |
426 } | 469 } |
427 | 470 |
428 | 471 |
429 // TODO(edisonn): make the functions to return SkPdfDictionary, move these f
unctions in SkPdfDictionary | 472 // TODO(edisonn): make the functions to return SkPdfDictionary, move these f
unctions in SkPdfDictionary |
430 static void makeEmptyDictionary(SkPdfNativeObject* obj) { | 473 static void makeEmptyDictionary(SkPdfNativeObject* obj GET_TRACK_PARAMETERS)
{ |
| 474 STORE_TRACK_PARAMETERS(obj); |
| 475 |
431 SkASSERT(obj->fObjectType == kInvalid_PdfObjectType); | 476 SkASSERT(obj->fObjectType == kInvalid_PdfObjectType); |
432 | 477 |
433 obj->fObjectType = kDictionary_PdfObjectType; | 478 obj->fObjectType = kDictionary_PdfObjectType; |
434 obj->fMap = new SkTDict<SkPdfNativeObject*>(1); | 479 obj->fMap = new SkTDict<SkPdfNativeObject*>(1); |
435 obj->fStr.fBuffer = NULL; | 480 obj->fStr.fBuffer = NULL; |
436 obj->fStr.fBytes = 0; | 481 obj->fStr.fBytes = 0; |
437 } | 482 } |
438 | 483 |
439 // TODO(edisonn): get all the possible names from spec, and compute a hash f
unction | 484 // TODO(edisonn): get all the possible names from spec, and compute a hash f
unction |
440 // that would create no overlaps in the same dictionary | 485 // that would create no overlaps in the same dictionary |
(...skipping 696 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1137 | 1182 |
1138 default: | 1183 default: |
1139 str = "Error"; | 1184 str = "Error"; |
1140 break; | 1185 break; |
1141 } | 1186 } |
1142 | 1187 |
1143 return str; | 1188 return str; |
1144 } | 1189 } |
1145 | 1190 |
1146 private: | 1191 private: |
1147 static void makeStringCore(const unsigned char* start, SkPdfNativeObject* ob
j, ObjectType type) { | 1192 static void makeStringCore(const unsigned char* start, SkPdfNativeObject* ob
j, ObjectType type GET_TRACK_PARAMETERS) { |
1148 makeStringCore(start, strlen((const char*)start), obj, type); | 1193 makeStringCore(start, strlen((const char*)start), obj, type PUT_TRACK_PA
RAMETERS); |
1149 } | 1194 } |
1150 | 1195 |
1151 static void makeStringCore(const unsigned char* start, const unsigned char*
end, SkPdfNativeObject* obj, ObjectType type) { | 1196 static void makeStringCore(const unsigned char* start, const unsigned char*
end, SkPdfNativeObject* obj, ObjectType type GET_TRACK_PARAMETERS) { |
1152 makeStringCore(start, end - start, obj, type); | 1197 makeStringCore(start, end - start, obj, type PUT_TRACK_PARAMETERS); |
1153 } | 1198 } |
1154 | 1199 |
1155 static void makeStringCore(const unsigned char* start, size_t bytes, SkPdfNa
tiveObject* obj, ObjectType type) { | 1200 static void makeStringCore(const unsigned char* start, size_t bytes, SkPdfNa
tiveObject* obj, ObjectType type GET_TRACK_PARAMETERS) { |
| 1201 STORE_TRACK_PARAMETERS(obj); |
| 1202 |
1156 SkASSERT(obj->fObjectType == kInvalid_PdfObjectType); | 1203 SkASSERT(obj->fObjectType == kInvalid_PdfObjectType); |
1157 | 1204 |
1158 obj->fObjectType = type; | 1205 obj->fObjectType = type; |
1159 obj->fStr.fBuffer = start; | 1206 obj->fStr.fBuffer = start; |
1160 obj->fStr.fBytes = bytes; | 1207 obj->fStr.fBytes = bytes; |
1161 } | 1208 } |
1162 | 1209 |
1163 bool applyFilter(const char* name); | 1210 bool applyFilter(const char* name); |
1164 bool applyFlateDecodeFilter(); | 1211 bool applyFlateDecodeFilter(); |
1165 bool applyDCTDecodeFilter(); | 1212 bool applyDCTDecodeFilter(); |
1166 }; | 1213 }; |
1167 | 1214 |
1168 class SkPdfStream : public SkPdfNativeObject {}; | 1215 class SkPdfStream : public SkPdfNativeObject {}; |
1169 class SkPdfArray : public SkPdfNativeObject {}; | 1216 class SkPdfArray : public SkPdfNativeObject {}; |
1170 class SkPdfString : public SkPdfNativeObject {}; | 1217 class SkPdfString : public SkPdfNativeObject {}; |
1171 class SkPdfHexString : public SkPdfNativeObject {}; | 1218 class SkPdfHexString : public SkPdfNativeObject {}; |
1172 class SkPdfInteger : public SkPdfNativeObject {}; | 1219 class SkPdfInteger : public SkPdfNativeObject {}; |
1173 class SkPdfReal : public SkPdfNativeObject {}; | 1220 class SkPdfReal : public SkPdfNativeObject {}; |
1174 class SkPdfNumber : public SkPdfNativeObject {}; | 1221 class SkPdfNumber : public SkPdfNativeObject {}; |
1175 | 1222 |
1176 class SkPdfName : public SkPdfNativeObject { | 1223 class SkPdfName : public SkPdfNativeObject { |
1177 SkPdfName() : SkPdfNativeObject() { | 1224 SkPdfName() : SkPdfNativeObject() { |
1178 SkPdfNativeObject::makeName((const unsigned char*)"", this); | 1225 SkPdfNativeObject::makeName((const unsigned char*)"", this PUT_TRACK_PAR
AMETERS_SRC); |
1179 } | 1226 } |
1180 public: | 1227 public: |
1181 SkPdfName(char* name) : SkPdfNativeObject() { | 1228 SkPdfName(char* name) : SkPdfNativeObject() { |
1182 this->makeName((const unsigned char*)name, this); | 1229 this->makeName((const unsigned char*)name, this PUT_TRACK_PARAMETERS_SRC
); |
1183 } | 1230 } |
1184 }; | 1231 }; |
1185 | 1232 |
1186 #endif // SkPdfNativeObject | 1233 #endif // SkPdfNativeObject |
OLD | NEW |