OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2004, 2005, 2007 Nikolas Zimmermann <zimmermann@kde.org> | 2 * Copyright (C) 2004, 2005, 2007 Nikolas Zimmermann <zimmermann@kde.org> |
3 * Copyright (C) 2004, 2005, 2006 Rob Buis <buis@kde.org> | 3 * Copyright (C) 2004, 2005, 2006 Rob Buis <buis@kde.org> |
4 * | 4 * |
5 * This library is free software; you can redistribute it and/or | 5 * This library is free software; you can redistribute it and/or |
6 * modify it under the terms of the GNU Library General Public | 6 * modify it under the terms of the GNU Library General Public |
7 * License as published by the Free Software Foundation; either | 7 * License as published by the Free Software Foundation; either |
8 * version 2 of the License, or (at your option) any later version. | 8 * version 2 of the License, or (at your option) any later version. |
9 * | 9 * |
10 * This library is distributed in the hope that it will be useful, | 10 * This library is distributed in the hope that it will be useful, |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
90 SVGFilterPrimitiveStandardAttributes::svgAttributeChanged(attrName); | 90 SVGFilterPrimitiveStandardAttributes::svgAttributeChanged(attrName); |
91 } | 91 } |
92 | 92 |
93 PassRefPtrWillBeRawPtr<FilterEffect> SVGFEColorMatrixElement::build(SVGFilterBui
lder* filterBuilder, Filter* filter) | 93 PassRefPtrWillBeRawPtr<FilterEffect> SVGFEColorMatrixElement::build(SVGFilterBui
lder* filterBuilder, Filter* filter) |
94 { | 94 { |
95 FilterEffect* input1 = filterBuilder->getEffectById(AtomicString(m_in1->curr
entValue()->value())); | 95 FilterEffect* input1 = filterBuilder->getEffectById(AtomicString(m_in1->curr
entValue()->value())); |
96 | 96 |
97 if (!input1) | 97 if (!input1) |
98 return nullptr; | 98 return nullptr; |
99 | 99 |
100 Vector<float> filterValues; | |
101 ColorMatrixType filterType = m_type->currentValue()->enumValue(); | 100 ColorMatrixType filterType = m_type->currentValue()->enumValue(); |
102 | 101 Vector<float> filterValues = m_values->currentValue()->toFloatVector(); |
103 // Use defaults if values is empty (SVG 1.1 15.10). | |
104 if (!hasAttribute(SVGNames::valuesAttr)) { | |
105 switch (filterType) { | |
106 case FECOLORMATRIX_TYPE_MATRIX: | |
107 for (size_t i = 0; i < 20; i++) | |
108 filterValues.append((i % 6) ? 0 : 1); | |
109 break; | |
110 case FECOLORMATRIX_TYPE_HUEROTATE: | |
111 filterValues.append(0); | |
112 break; | |
113 case FECOLORMATRIX_TYPE_SATURATE: | |
114 filterValues.append(1); | |
115 break; | |
116 default: | |
117 break; | |
118 } | |
119 } else { | |
120 RefPtrWillBeRawPtr<SVGNumberList> values = m_values->currentValue(); | |
121 size_t size = values->length(); | |
122 | |
123 if ((filterType == FECOLORMATRIX_TYPE_MATRIX && size != 20) | |
124 || (filterType == FECOLORMATRIX_TYPE_HUEROTATE && size != 1) | |
125 || (filterType == FECOLORMATRIX_TYPE_SATURATE && size != 1)) | |
126 return nullptr; | |
127 | |
128 filterValues = values->toFloatVector(); | |
129 } | |
130 | |
131 RefPtrWillBeRawPtr<FilterEffect> effect = FEColorMatrix::create(filter, filt
erType, filterValues); | 102 RefPtrWillBeRawPtr<FilterEffect> effect = FEColorMatrix::create(filter, filt
erType, filterValues); |
132 effect->inputEffects().append(input1); | 103 effect->inputEffects().append(input1); |
133 return effect.release(); | 104 return effect.release(); |
134 } | 105 } |
135 | 106 |
136 } // namespace blink | 107 } // namespace blink |
OLD | NEW |