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

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

Issue 1775043002: SkPDF: Add sk_sp setters; .release() becomes std::move() (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: fix -Wpessimizing-move Created 4 years, 9 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/SkPDFGraphicState.cpp » ('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 /* 2 /*
3 * Copyright 2010 The Android Open Source Project 3 * Copyright 2010 The Android Open Source Project
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 "SkPDFFormXObject.h" 10 #include "SkPDFFormXObject.h"
11 11
12 #include "SkMatrix.h" 12 #include "SkMatrix.h"
13 #include "SkPDFDevice.h" 13 #include "SkPDFDevice.h"
14 #include "SkPDFUtils.h" 14 #include "SkPDFUtils.h"
15 #include "SkStream.h" 15 #include "SkStream.h"
16 #include "SkTypes.h" 16 #include "SkTypes.h"
17 17
18 SkPDFFormXObject::SkPDFFormXObject(SkPDFDevice* device) { 18 SkPDFFormXObject::SkPDFFormXObject(SkPDFDevice* device) {
19 // We don't want to keep around device because we'd have two copies 19 // We don't want to keep around device because we'd have two copies
20 // of content, so reference or copy everything we need (content and 20 // of content, so reference or copy everything we need (content and
21 // resources). 21 // resources).
22 sk_sp<SkPDFDict> resourceDict(device->createResourceDict()); 22 auto resourceDict = device->makeResourceDict();
23 23
24 SkAutoTDelete<SkStreamAsset> content(device->content()); 24 auto content = device->content();
25 this->setData(content.get()); 25 this->setData(content.get());
26 26
27 sk_sp<SkPDFArray> bboxArray(device->copyMediaBox()); 27 sk_sp<SkPDFArray> bboxArray(device->copyMediaBox());
28 this->init(nullptr, resourceDict.get(), bboxArray.get()); 28 this->init(nullptr, resourceDict.get(), bboxArray.get());
29 29
30 // We invert the initial transform and apply that to the xobject so that 30 // We invert the initial transform and apply that to the xobject so that
31 // it doesn't get applied twice. We can't just undo it because it's 31 // it doesn't get applied twice. We can't just undo it because it's
32 // embedded in things like shaders and images. 32 // embedded in things like shaders and images.
33 if (!device->initialTransform().isIdentity()) { 33 if (!device->initialTransform().isIdentity()) {
34 SkMatrix inverse; 34 SkMatrix inverse;
(...skipping 18 matching lines...) Expand all
53 } 53 }
54 54
55 /** 55 /**
56 * Common initialization code. 56 * Common initialization code.
57 * Note that bbox is unreferenced here, so calling code does not need worry. 57 * Note that bbox is unreferenced here, so calling code does not need worry.
58 */ 58 */
59 void SkPDFFormXObject::init(const char* colorSpace, 59 void SkPDFFormXObject::init(const char* colorSpace,
60 SkPDFDict* resourceDict, SkPDFArray* bbox) { 60 SkPDFDict* resourceDict, SkPDFArray* bbox) {
61 this->insertName("Type", "XObject"); 61 this->insertName("Type", "XObject");
62 this->insertName("Subtype", "Form"); 62 this->insertName("Subtype", "Form");
63 this->insertObject("Resources", SkRef(resourceDict)); 63 this->insertObject("Resources", sk_sp<SkPDFDict>(SkRef(resourceDict)));
64 this->insertObject("BBox", SkRef(bbox)); 64 this->insertObject("BBox", sk_sp<SkPDFArray>(SkRef(bbox)));
65 65
66 // Right now SkPDFFormXObject is only used for saveLayer, which implies 66 // Right now SkPDFFormXObject is only used for saveLayer, which implies
67 // isolated blending. Do this conditionally if that changes. 67 // isolated blending. Do this conditionally if that changes.
68 auto group = sk_make_sp<SkPDFDict>("Group"); 68 auto group = sk_make_sp<SkPDFDict>("Group");
69 group->insertName("S", "Transparency"); 69 group->insertName("S", "Transparency");
70 70
71 if (colorSpace != nullptr) { 71 if (colorSpace != nullptr) {
72 group->insertName("CS", colorSpace); 72 group->insertName("CS", colorSpace);
73 } 73 }
74 group->insertBool("I", true); // Isolated. 74 group->insertBool("I", true); // Isolated.
75 this->insertObject("Group", group.release()); 75 this->insertObject("Group", std::move(group));
76 } 76 }
77 77
78 SkPDFFormXObject::~SkPDFFormXObject() {} 78 SkPDFFormXObject::~SkPDFFormXObject() {}
OLDNEW
« no previous file with comments | « src/pdf/SkPDFFont.cpp ('k') | src/pdf/SkPDFGraphicState.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698