OLD | NEW |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |