| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "cc/output/render_surface_filters.h" | 5 #include "cc/output/render_surface_filters.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "cc/output/filter_operation.h" | 10 #include "cc/output/filter_operation.h" |
| (...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 155 skia::RefPtr<SkColorFilter> color_filter = | 155 skia::RefPtr<SkColorFilter> color_filter = |
| 156 skia::AdoptRef(SkColorMatrixFilter::Create(matrix)); | 156 skia::AdoptRef(SkColorMatrixFilter::Create(matrix)); |
| 157 return skia::AdoptRef( | 157 return skia::AdoptRef( |
| 158 SkColorFilterImageFilter::Create(color_filter.get(), input.get())); | 158 SkColorFilterImageFilter::Create(color_filter.get(), input.get())); |
| 159 } | 159 } |
| 160 | 160 |
| 161 } // namespace | 161 } // namespace |
| 162 | 162 |
| 163 skia::RefPtr<SkImageFilter> RenderSurfaceFilters::BuildImageFilter( | 163 skia::RefPtr<SkImageFilter> RenderSurfaceFilters::BuildImageFilter( |
| 164 const FilterOperations& filters, | 164 const FilterOperations& filters, |
| 165 const gfx::Vector2dF& scale, |
| 165 const gfx::SizeF& size) { | 166 const gfx::SizeF& size) { |
| 166 skia::RefPtr<SkImageFilter> image_filter; | 167 skia::RefPtr<SkImageFilter> image_filter; |
| 167 SkScalar matrix[20]; | 168 SkScalar matrix[20]; |
| 168 for (size_t i = 0; i < filters.size(); ++i) { | 169 for (size_t i = 0; i < filters.size(); ++i) { |
| 169 const FilterOperation& op = filters.at(i); | 170 const FilterOperation& op = filters.at(i); |
| 170 switch (op.type()) { | 171 switch (op.type()) { |
| 171 case FilterOperation::GRAYSCALE: | 172 case FilterOperation::GRAYSCALE: |
| 172 GetGrayscaleMatrix(1.f - op.amount(), matrix); | 173 GetGrayscaleMatrix(1.f - op.amount(), matrix); |
| 173 image_filter = CreateMatrixImageFilter(matrix, image_filter); | 174 image_filter = CreateMatrixImageFilter(matrix, image_filter); |
| 174 break; | 175 break; |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 256 image_filter = CreateMatrixImageFilter(matrix, image_filter); | 257 image_filter = CreateMatrixImageFilter(matrix, image_filter); |
| 257 } else if (image_filter) { | 258 } else if (image_filter) { |
| 258 image_filter = skia::AdoptRef(SkComposeImageFilter::Create( | 259 image_filter = skia::AdoptRef(SkComposeImageFilter::Create( |
| 259 op.image_filter().get(), image_filter.get())); | 260 op.image_filter().get(), image_filter.get())); |
| 260 } else { | 261 } else { |
| 261 image_filter = op.image_filter(); | 262 image_filter = op.image_filter(); |
| 262 } | 263 } |
| 263 break; | 264 break; |
| 264 } | 265 } |
| 265 case FilterOperation::ALPHA_THRESHOLD: { | 266 case FilterOperation::ALPHA_THRESHOLD: { |
| 266 skia::RefPtr<SkImageFilter> alpha_filter = skia::AdoptRef( | 267 SkMatrix transform; |
| 267 SkAlphaThresholdFilter::Create( | 268 transform.setScale(scale.x(), scale.y()); |
| 268 op.region(), op.amount(), op.outer_threshold())); | 269 skia::RefPtr<SkImageFilter> alpha_filter = |
| 270 skia::AdoptRef(SkAlphaThresholdFilter::Create( |
| 271 op.region(), transform, op.amount(), op.outer_threshold())); |
| 269 if (image_filter.get()) { | 272 if (image_filter.get()) { |
| 270 image_filter = skia::AdoptRef(SkComposeImageFilter::Create( | 273 image_filter = skia::AdoptRef(SkComposeImageFilter::Create( |
| 271 alpha_filter.get(), image_filter.get())); | 274 alpha_filter.get(), image_filter.get())); |
| 272 } else { | 275 } else { |
| 273 image_filter = alpha_filter; | 276 image_filter = alpha_filter; |
| 274 } | 277 } |
| 275 break; | 278 break; |
| 276 } | 279 } |
| 277 } | 280 } |
| 278 } | 281 } |
| 279 return image_filter; | 282 return image_filter; |
| 280 } | 283 } |
| 281 | 284 |
| 282 } // namespace cc | 285 } // namespace cc |
| OLD | NEW |