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 #include "SkDeflate.h" | 9 #include "SkDeflate.h" |
10 #include "SkPDFTypes.h" | 10 #include "SkPDFTypes.h" |
(...skipping 20 matching lines...) Expand all Loading... |
31 SkSafeUnref(fObject); | 31 SkSafeUnref(fObject); |
32 return; | 32 return; |
33 default: | 33 default: |
34 return; | 34 return; |
35 } | 35 } |
36 } | 36 } |
37 | 37 |
38 SkPDFUnion& SkPDFUnion::operator=(SkPDFUnion&& other) { | 38 SkPDFUnion& SkPDFUnion::operator=(SkPDFUnion&& other) { |
39 if (this != &other) { | 39 if (this != &other) { |
40 this->~SkPDFUnion(); | 40 this->~SkPDFUnion(); |
41 SkNEW_PLACEMENT_ARGS(this, SkPDFUnion, (other.move())); | 41 new (this) SkPDFUnion(other.move()); |
42 } | 42 } |
43 return *this; | 43 return *this; |
44 } | 44 } |
45 | 45 |
46 SkPDFUnion::SkPDFUnion(SkPDFUnion&& other) { | 46 SkPDFUnion::SkPDFUnion(SkPDFUnion&& other) { |
47 SkASSERT(this != &other); | 47 SkASSERT(this != &other); |
48 memcpy(this, &other, sizeof(*this)); | 48 memcpy(this, &other, sizeof(*this)); |
49 other.fType = Type::kDestroyed; | 49 other.fType = Type::kDestroyed; |
50 } | 50 } |
51 | 51 |
52 #if 0 | 52 #if 0 |
53 SkPDFUnion SkPDFUnion::copy() const { | 53 SkPDFUnion SkPDFUnion::copy() const { |
54 SkPDFUnion u(fType); | 54 SkPDFUnion u(fType); |
55 memcpy(&u, this, sizeof(u)); | 55 memcpy(&u, this, sizeof(u)); |
56 switch (fType) { | 56 switch (fType) { |
57 case Type::kNameSkS: | 57 case Type::kNameSkS: |
58 case Type::kStringSkS: | 58 case Type::kStringSkS: |
59 SkNEW_PLACEMENT_ARGS(pun(u.fSkString), SkString, | 59 new (pun(u.fSkString)) SkString (
*pun(fSkString)); |
60 (*pun(fSkString))); | |
61 return u.move(); | 60 return u.move(); |
62 case Type::kObjRef: | 61 case Type::kObjRef: |
63 case Type::kObject: | 62 case Type::kObject: |
64 SkRef(u.fObject); | 63 SkRef(u.fObject); |
65 return u.move(); | 64 return u.move(); |
66 default: | 65 default: |
67 return u.move(); | 66 return u.move(); |
68 } | 67 } |
69 } | 68 } |
70 SkPDFUnion& SkPDFUnion::operator=(const SkPDFUnion& other) { | 69 SkPDFUnion& SkPDFUnion::operator=(const SkPDFUnion& other) { |
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
219 | 218 |
220 SkPDFUnion SkPDFUnion::String(const char* value) { | 219 SkPDFUnion SkPDFUnion::String(const char* value) { |
221 SkPDFUnion u(Type::kString); | 220 SkPDFUnion u(Type::kString); |
222 SkASSERT(value); | 221 SkASSERT(value); |
223 u.fStaticString = value; | 222 u.fStaticString = value; |
224 return u.move(); | 223 return u.move(); |
225 } | 224 } |
226 | 225 |
227 SkPDFUnion SkPDFUnion::Name(const SkString& s) { | 226 SkPDFUnion SkPDFUnion::Name(const SkString& s) { |
228 SkPDFUnion u(Type::kNameSkS); | 227 SkPDFUnion u(Type::kNameSkS); |
229 SkNEW_PLACEMENT_ARGS(pun(u.fSkString), SkString, (s)); | 228 new (pun(u.fSkString)) SkString(s); |
230 return u.move(); | 229 return u.move(); |
231 } | 230 } |
232 | 231 |
233 SkPDFUnion SkPDFUnion::String(const SkString& s) { | 232 SkPDFUnion SkPDFUnion::String(const SkString& s) { |
234 SkPDFUnion u(Type::kStringSkS); | 233 SkPDFUnion u(Type::kStringSkS); |
235 SkNEW_PLACEMENT_ARGS(pun(u.fSkString), SkString, (s)); | 234 new (pun(u.fSkString)) SkString(s); |
236 return u.move(); | 235 return u.move(); |
237 } | 236 } |
238 | 237 |
239 SkPDFUnion SkPDFUnion::ObjRef(SkPDFObject* ptr) { | 238 SkPDFUnion SkPDFUnion::ObjRef(SkPDFObject* ptr) { |
240 SkPDFUnion u(Type::kObjRef); | 239 SkPDFUnion u(Type::kObjRef); |
241 SkASSERT(ptr); | 240 SkASSERT(ptr); |
242 u.fObject = ptr; | 241 u.fObject = ptr; |
243 return u.move(); | 242 return u.move(); |
244 } | 243 } |
245 | 244 |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
291 stream->writeText("]"); | 290 stream->writeText("]"); |
292 } | 291 } |
293 | 292 |
294 void SkPDFArray::addResources(SkPDFObjNumMap* catalog, | 293 void SkPDFArray::addResources(SkPDFObjNumMap* catalog, |
295 const SkPDFSubstituteMap& substitutes) const { | 294 const SkPDFSubstituteMap& substitutes) const { |
296 for (const SkPDFUnion& value : fValues) { | 295 for (const SkPDFUnion& value : fValues) { |
297 value.addResources(catalog, substitutes); | 296 value.addResources(catalog, substitutes); |
298 } | 297 } |
299 } | 298 } |
300 | 299 |
301 void SkPDFArray::append(SkPDFUnion&& value) { | 300 void SkPDFArray::append(SkPDFUnion&& value) { new (fValues.append()) SkPDFUnion(
value.move()); } |
302 SkNEW_PLACEMENT_ARGS(fValues.append(), SkPDFUnion, (value.move())); | |
303 } | |
304 | 301 |
305 void SkPDFArray::appendInt(int32_t value) { | 302 void SkPDFArray::appendInt(int32_t value) { |
306 this->append(SkPDFUnion::Int(value)); | 303 this->append(SkPDFUnion::Int(value)); |
307 } | 304 } |
308 | 305 |
309 void SkPDFArray::appendBool(bool value) { | 306 void SkPDFArray::appendBool(bool value) { |
310 this->append(SkPDFUnion::Bool(value)); | 307 this->append(SkPDFUnion::Bool(value)); |
311 } | 308 } |
312 | 309 |
313 void SkPDFArray::appendScalar(SkScalar value) { | 310 void SkPDFArray::appendScalar(SkScalar value) { |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
371 const SkPDFSubstituteMap& substitutes) const { | 368 const SkPDFSubstituteMap& substitutes) const { |
372 for (int i = 0; i < fRecords.count(); i++) { | 369 for (int i = 0; i < fRecords.count(); i++) { |
373 fRecords[i].fKey.addResources(catalog, substitutes); | 370 fRecords[i].fKey.addResources(catalog, substitutes); |
374 fRecords[i].fValue.addResources(catalog, substitutes); | 371 fRecords[i].fValue.addResources(catalog, substitutes); |
375 } | 372 } |
376 } | 373 } |
377 | 374 |
378 void SkPDFDict::set(SkPDFUnion&& name, SkPDFUnion&& value) { | 375 void SkPDFDict::set(SkPDFUnion&& name, SkPDFUnion&& value) { |
379 Record* rec = fRecords.append(); | 376 Record* rec = fRecords.append(); |
380 SkASSERT(name.isName()); | 377 SkASSERT(name.isName()); |
381 SkNEW_PLACEMENT_ARGS(&rec->fKey, SkPDFUnion, (name.move())); | 378 new (&rec->fKey) SkPDFUnion(name.move()); |
382 SkNEW_PLACEMENT_ARGS(&rec->fValue, SkPDFUnion, (value.move())); | 379 new (&rec->fValue) SkPDFUnion(value.move()); |
383 } | 380 } |
384 | 381 |
385 int SkPDFDict::size() const { return fRecords.count(); } | 382 int SkPDFDict::size() const { return fRecords.count(); } |
386 | 383 |
387 void SkPDFDict::insertObjRef(const char key[], SkPDFObject* value) { | 384 void SkPDFDict::insertObjRef(const char key[], SkPDFObject* value) { |
388 this->set(SkPDFUnion::Name(key), SkPDFUnion::ObjRef(value)); | 385 this->set(SkPDFUnion::Name(key), SkPDFUnion::ObjRef(value)); |
389 } | 386 } |
390 void SkPDFDict::insertObjRef(const SkString& key, SkPDFObject* value) { | 387 void SkPDFDict::insertObjRef(const SkString& key, SkPDFObject* value) { |
391 this->set(SkPDFUnion::Name(key), SkPDFUnion::ObjRef(value)); | 388 this->set(SkPDFUnion::Name(key), SkPDFUnion::ObjRef(value)); |
392 } | 389 } |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
502 fObjects.push(obj); | 499 fObjects.push(obj); |
503 return true; | 500 return true; |
504 } | 501 } |
505 | 502 |
506 int32_t SkPDFObjNumMap::getObjectNumber(SkPDFObject* obj) const { | 503 int32_t SkPDFObjNumMap::getObjectNumber(SkPDFObject* obj) const { |
507 int32_t* objectNumberFound = fObjectNumbers.find(obj); | 504 int32_t* objectNumberFound = fObjectNumbers.find(obj); |
508 SkASSERT(objectNumberFound); | 505 SkASSERT(objectNumberFound); |
509 return *objectNumberFound; | 506 return *objectNumberFound; |
510 } | 507 } |
511 | 508 |
OLD | NEW |