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

Side by Side Diff: third_party/WebKit/Source/platform/graphics/filters/FEConvolveMatrix.cpp

Issue 1387573003: Pass SkiaImageFilterBuilder& to FilterEffect::createImageFilter (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 2 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org> 2 * Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org>
3 * Copyright (C) 2004, 2005 Rob Buis <buis@kde.org> 3 * Copyright (C) 2004, 2005 Rob Buis <buis@kde.org>
4 * Copyright (C) 2005 Eric Seidel <eric@webkit.org> 4 * Copyright (C) 2005 Eric Seidel <eric@webkit.org>
5 * Copyright (C) 2009 Dirk Schulze <krit@webkit.org> 5 * Copyright (C) 2009 Dirk Schulze <krit@webkit.org>
6 * Copyright (C) 2010 Zoltan Herczeg <zherczeg@webkit.org> 6 * Copyright (C) 2010 Zoltan Herczeg <zherczeg@webkit.org>
7 * Copyright (C) 2013 Google Inc. All rights reserved. 7 * Copyright (C) 2013 Google Inc. All rights reserved.
8 * 8 *
9 * This library is free software; you can redistribute it and/or 9 * This library is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Library General Public 10 * modify it under the terms of the GNU Library General Public
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 return false; 129 return false;
130 if (m_targetOffset.x() < 0 || m_targetOffset.x() >= m_kernelSize.width()) 130 if (m_targetOffset.x() < 0 || m_targetOffset.x() >= m_kernelSize.width())
131 return false; 131 return false;
132 if (m_targetOffset.y() < 0 || m_targetOffset.y() >= m_kernelSize.height()) 132 if (m_targetOffset.y() < 0 || m_targetOffset.y() >= m_kernelSize.height())
133 return false; 133 return false;
134 if (!m_divisor) 134 if (!m_divisor)
135 return false; 135 return false;
136 return true; 136 return true;
137 } 137 }
138 138
139 PassRefPtr<SkImageFilter> FEConvolveMatrix::createImageFilter(SkiaImageFilterBui lder* builder) 139 PassRefPtr<SkImageFilter> FEConvolveMatrix::createImageFilter(SkiaImageFilterBui lder& builder)
140 { 140 {
141 if (!parametersValid()) 141 if (!parametersValid())
142 return createTransparentBlack(builder); 142 return createTransparentBlack(builder);
143 143
144 RefPtr<SkImageFilter> input(builder->build(inputEffect(0), operatingColorSpa ce())); 144 RefPtr<SkImageFilter> input(builder.build(inputEffect(0), operatingColorSpac e()));
145 SkISize kernelSize(SkISize::Make(m_kernelSize.width(), m_kernelSize.height() )); 145 SkISize kernelSize(SkISize::Make(m_kernelSize.width(), m_kernelSize.height() ));
146 // parametersValid() above checks that the kernel area fits in int. 146 // parametersValid() above checks that the kernel area fits in int.
147 int numElements = safeCast<int>(m_kernelSize.area()); 147 int numElements = safeCast<int>(m_kernelSize.area());
148 SkScalar gain = SkFloatToScalar(1.0f / m_divisor); 148 SkScalar gain = SkFloatToScalar(1.0f / m_divisor);
149 SkScalar bias = SkFloatToScalar(m_bias * 255); 149 SkScalar bias = SkFloatToScalar(m_bias * 255);
150 SkIPoint target = SkIPoint::Make(m_targetOffset.x(), m_targetOffset.y()); 150 SkIPoint target = SkIPoint::Make(m_targetOffset.x(), m_targetOffset.y());
151 SkMatrixConvolutionImageFilter::TileMode tileMode = toSkiaTileMode(m_edgeMod e); 151 SkMatrixConvolutionImageFilter::TileMode tileMode = toSkiaTileMode(m_edgeMod e);
152 bool convolveAlpha = !m_preserveAlpha; 152 bool convolveAlpha = !m_preserveAlpha;
153 OwnPtr<SkScalar[]> kernel = adoptArrayPtr(new SkScalar[numElements]); 153 OwnPtr<SkScalar[]> kernel = adoptArrayPtr(new SkScalar[numElements]);
154 for (int i = 0; i < numElements; ++i) 154 for (int i = 0; i < numElements; ++i)
155 kernel[i] = SkFloatToScalar(m_kernelMatrix[numElements - 1 - i]); 155 kernel[i] = SkFloatToScalar(m_kernelMatrix[numElements - 1 - i]);
156 SkImageFilter::CropRect cropRect = getCropRect(builder->cropOffset()); 156 SkImageFilter::CropRect cropRect = getCropRect(builder.cropOffset());
157 return adoptRef(SkMatrixConvolutionImageFilter::Create(kernelSize, kernel.ge t(), gain, bias, target, tileMode, convolveAlpha, input.get(), &cropRect)); 157 return adoptRef(SkMatrixConvolutionImageFilter::Create(kernelSize, kernel.ge t(), gain, bias, target, tileMode, convolveAlpha, input.get(), &cropRect));
158 } 158 }
159 159
160 static TextStream& operator<<(TextStream& ts, const EdgeModeType& type) 160 static TextStream& operator<<(TextStream& ts, const EdgeModeType& type)
161 { 161 {
162 switch (type) { 162 switch (type) {
163 case EDGEMODE_UNKNOWN: 163 case EDGEMODE_UNKNOWN:
164 ts << "UNKNOWN"; 164 ts << "UNKNOWN";
165 break; 165 break;
166 case EDGEMODE_DUPLICATE: 166 case EDGEMODE_DUPLICATE:
(...skipping 19 matching lines...) Expand all
186 << "divisor=\"" << m_divisor << "\" " 186 << "divisor=\"" << m_divisor << "\" "
187 << "bias=\"" << m_bias << "\" " 187 << "bias=\"" << m_bias << "\" "
188 << "target=\"" << m_targetOffset << "\" " 188 << "target=\"" << m_targetOffset << "\" "
189 << "edgeMode=\"" << m_edgeMode << "\" " 189 << "edgeMode=\"" << m_edgeMode << "\" "
190 << "preserveAlpha=\"" << m_preserveAlpha << "\"]\n"; 190 << "preserveAlpha=\"" << m_preserveAlpha << "\"]\n";
191 inputEffect(0)->externalRepresentation(ts, indent + 1); 191 inputEffect(0)->externalRepresentation(ts, indent + 1);
192 return ts; 192 return ts;
193 } 193 }
194 194
195 } // namespace blink 195 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698