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

Side by Side Diff: src/core/SkColorFilter.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/SkCanvas.cpp ('k') | src/core/SkColorFilterShader.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 2006 The Android Open Source Project 2 * Copyright 2006 The Android Open Source Project
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 "SkColorFilter.h" 8 #include "SkColorFilter.h"
9 #include "SkReadBuffer.h" 9 #include "SkReadBuffer.h"
10 #include "SkRefCnt.h" 10 #include "SkRefCnt.h"
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 } 107 }
108 const GrFragmentProcessor* series[] = { innerFP, outerFP }; 108 const GrFragmentProcessor* series[] = { innerFP, outerFP };
109 return GrFragmentProcessor::RunInSeries(series, 2); 109 return GrFragmentProcessor::RunInSeries(series, 2);
110 } 110 }
111 #endif 111 #endif
112 112
113 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkComposeColorFilter) 113 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkComposeColorFilter)
114 114
115 protected: 115 protected:
116 void flatten(SkWriteBuffer& buffer) const override { 116 void flatten(SkWriteBuffer& buffer) const override {
117 buffer.writeFlattenable(fOuter); 117 buffer.writeFlattenable(fOuter.get());
118 buffer.writeFlattenable(fInner); 118 buffer.writeFlattenable(fInner.get());
119 } 119 }
120 120
121 private: 121 private:
122 SkComposeColorFilter(SkColorFilter* outer, SkColorFilter* inner, int compose dFilterCount) 122 SkComposeColorFilter(sk_sp<SkColorFilter> outer, sk_sp<SkColorFilter> inner,
123 : fOuter(SkRef(outer)) 123 int composedFilterCount)
124 , fInner(SkRef(inner)) 124 : fOuter(std::move(outer))
125 , fInner(std::move(inner))
125 , fComposedFilterCount(composedFilterCount) 126 , fComposedFilterCount(composedFilterCount)
126 { 127 {
127 SkASSERT(composedFilterCount >= 2); 128 SkASSERT(composedFilterCount >= 2);
128 SkASSERT(composedFilterCount <= SK_MAX_COMPOSE_COLORFILTER_COUNT); 129 SkASSERT(composedFilterCount <= SK_MAX_COMPOSE_COLORFILTER_COUNT);
129 } 130 }
130 131
131 int privateComposedFilterCount() const override { 132 int privateComposedFilterCount() const override {
132 return fComposedFilterCount; 133 return fComposedFilterCount;
133 } 134 }
134 135
135 SkAutoTUnref<SkColorFilter> fOuter; 136 sk_sp<SkColorFilter> fOuter;
136 SkAutoTUnref<SkColorFilter> fInner; 137 sk_sp<SkColorFilter> fInner;
137 const int fComposedFilterCount; 138 const int fComposedFilterCount;
138 139
139 friend class SkColorFilter; 140 friend class SkColorFilter;
140 141
141 typedef SkColorFilter INHERITED; 142 typedef SkColorFilter INHERITED;
142 }; 143 };
143 144
144 SkFlattenable* SkComposeColorFilter::CreateProc(SkReadBuffer& buffer) { 145 SkFlattenable* SkComposeColorFilter::CreateProc(SkReadBuffer& buffer) {
145 SkAutoTUnref<SkColorFilter> outer(buffer.readColorFilter()); 146 sk_sp<SkColorFilter> outer(buffer.readColorFilter());
146 SkAutoTUnref<SkColorFilter> inner(buffer.readColorFilter()); 147 sk_sp<SkColorFilter> inner(buffer.readColorFilter());
147 return CreateComposeFilter(outer, inner); 148 return MakeComposeFilter(std::move(outer), std::move(inner)).release();
148 } 149 }
149 150
150 //////////////////////////////////////////////////////////////////////////////// /////////////////// 151 //////////////////////////////////////////////////////////////////////////////// ///////////////////
151 152
152 SkColorFilter* SkColorFilter::CreateComposeFilter(SkColorFilter* outer, SkColorF ilter* inner) { 153 sk_sp<SkColorFilter> SkColorFilter::MakeComposeFilter(sk_sp<SkColorFilter> outer ,
154 sk_sp<SkColorFilter> inner ) {
153 if (!outer) { 155 if (!outer) {
154 return SkSafeRef(inner); 156 return inner;
155 } 157 }
156 if (!inner) { 158 if (!inner) {
157 return SkSafeRef(outer); 159 return outer;
158 } 160 }
159 161
160 // Give the subclass a shot at a more optimal composition... 162 // Give the subclass a shot at a more optimal composition...
161 SkColorFilter* composition = outer->newComposed(inner); 163 auto composition = outer->makeComposed(inner);
162 if (composition) { 164 if (composition) {
163 return composition; 165 return composition;
164 } 166 }
165 167
166 int count = inner->privateComposedFilterCount() + outer->privateComposedFilt erCount(); 168 int count = inner->privateComposedFilterCount() + outer->privateComposedFilt erCount();
167 if (count > SK_MAX_COMPOSE_COLORFILTER_COUNT) { 169 if (count > SK_MAX_COMPOSE_COLORFILTER_COUNT) {
168 return nullptr; 170 return nullptr;
169 } 171 }
170 return new SkComposeColorFilter(outer, inner, count); 172 return sk_sp<SkColorFilter>(new SkComposeColorFilter(std::move(outer), std:: move(inner),count));
171 } 173 }
172 174
173 #include "SkModeColorFilter.h" 175 #include "SkModeColorFilter.h"
174 176
175 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkColorFilter) 177 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkColorFilter)
176 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkComposeColorFilter) 178 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkComposeColorFilter)
177 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkModeColorFilter) 179 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkModeColorFilter)
178 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END 180 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END
179 181
OLDNEW
« no previous file with comments | « src/core/SkCanvas.cpp ('k') | src/core/SkColorFilterShader.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698