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

Side by Side Diff: src/core/SkColorFilterShader.cpp

Issue 1827433002: Reland of [2] of "switch colorfilters to sk_sp (patchset #11 id:200001 of https://codereview.chromium.o… (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: 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/core/SkColorFilterShader.h ('k') | src/core/SkColorMatrixFilterRowMajor255.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 "SkColorFilterShader.h" 8 #include "SkColorFilterShader.h"
9 #include "SkReadBuffer.h" 9 #include "SkReadBuffer.h"
10 #include "SkWriteBuffer.h" 10 #include "SkWriteBuffer.h"
11 #include "SkShader.h" 11 #include "SkShader.h"
12 #include "SkString.h" 12 #include "SkString.h"
13 13
14 #if SK_SUPPORT_GPU 14 #if SK_SUPPORT_GPU
15 #include "GrFragmentProcessor.h" 15 #include "GrFragmentProcessor.h"
16 #endif 16 #endif
17 17
18 SkColorFilterShader::SkColorFilterShader(SkShader* shader, SkColorFilter* filter ) 18 SkColorFilterShader::SkColorFilterShader(sk_sp<SkShader> shader, sk_sp<SkColorFi lter> filter)
19 : fShader(SkRef(shader)) 19 : fShader(std::move(shader))
20 , fFilter(SkRef(filter)) 20 , fFilter(std::move(filter))
21 { 21 {
22 SkASSERT(shader); 22 SkASSERT(fShader);
23 SkASSERT(filter); 23 SkASSERT(fFilter);
24 } 24 }
25 25
26 SkFlattenable* SkColorFilterShader::CreateProc(SkReadBuffer& buffer) { 26 SkFlattenable* SkColorFilterShader::CreateProc(SkReadBuffer& buffer) {
27 auto shader = buffer.readShader(); 27 auto shader = buffer.readShader();
28 SkAutoTUnref<SkColorFilter> filter(buffer.readColorFilter()); 28 auto filter = buffer.readColorFilter();
29 if (!shader || !filter.get()) { 29 if (!shader || !filter) {
30 return nullptr; 30 return nullptr;
31 } 31 }
32 return new SkColorFilterShader(shader.get(), filter); 32 return new SkColorFilterShader(shader, filter);
33 } 33 }
34 34
35 void SkColorFilterShader::flatten(SkWriteBuffer& buffer) const { 35 void SkColorFilterShader::flatten(SkWriteBuffer& buffer) const {
36 buffer.writeFlattenable(fShader); 36 buffer.writeFlattenable(fShader.get());
37 buffer.writeFlattenable(fFilter); 37 buffer.writeFlattenable(fFilter.get());
38 } 38 }
39 39
40 uint32_t SkColorFilterShader::FilterShaderContext::getFlags() const { 40 uint32_t SkColorFilterShader::FilterShaderContext::getFlags() const {
41 const SkColorFilterShader& filterShader = static_cast<const SkColorFilterSha der&>(fShader); 41 const SkColorFilterShader& filterShader = static_cast<const SkColorFilterSha der&>(fShader);
42 42
43 uint32_t shaderF = fShaderContext->getFlags(); 43 uint32_t shaderF = fShaderContext->getFlags();
44 uint32_t filterF = filterShader.fFilter->getFlags(); 44 uint32_t filterF = filterShader.fFilter->getFlags();
45 45
46 // If the filter does not support a given feature, but sure to clear the cor responding flag 46 // If the filter does not support a given feature, but sure to clear the cor responding flag
47 // in the shader flags. 47 // in the shader flags.
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 // TODO: add "fFilter->toString(str);" once SkColorFilter::toString is added 130 // TODO: add "fFilter->toString(str);" once SkColorFilter::toString is added
131 131
132 this->INHERITED::toString(str); 132 this->INHERITED::toString(str);
133 133
134 str->append(")"); 134 str->append(")");
135 } 135 }
136 #endif 136 #endif
137 137
138 //////////////////////////////////////////////////////////////////////////////// /////////////////// 138 //////////////////////////////////////////////////////////////////////////////// ///////////////////
139 139
140 sk_sp<SkShader> SkShader::makeWithColorFilter(SkColorFilter* filter) const { 140 sk_sp<SkShader> SkShader::makeWithColorFilter(sk_sp<SkColorFilter> filter) const {
141 SkShader* base = const_cast<SkShader*>(this); 141 SkShader* base = const_cast<SkShader*>(this);
142 if (!filter) { 142 if (!filter) {
143 return sk_ref_sp(base); 143 return sk_ref_sp(base);
144 } 144 }
145 return sk_make_sp<SkColorFilterShader>(base, filter); 145 return sk_make_sp<SkColorFilterShader>(sk_ref_sp(base), filter);
146 } 146 }
OLDNEW
« no previous file with comments | « src/core/SkColorFilterShader.h ('k') | src/core/SkColorMatrixFilterRowMajor255.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698