| 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 |