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

Side by Side Diff: cc/render_surface_filters.cc

Issue 11358050: Remove most remaining webcore points and sizes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebasedd Created 8 years, 1 month 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 | Annotate | Revision Log
« no previous file with comments | « cc/render_surface_filters.h ('k') | cc/scoped_texture_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "config.h" 5 #include "config.h"
6 6
7 #include "cc/render_surface_filters.h" 7 #include "cc/render_surface_filters.h"
8 8
9 #include "FloatSize.h"
10 #include "base/logging.h" 9 #include "base/logging.h"
11 #include "third_party/skia/include/core/SkCanvas.h" 10 #include "third_party/skia/include/core/SkCanvas.h"
12 #include "third_party/skia/include/effects/SkBlurImageFilter.h" 11 #include "third_party/skia/include/effects/SkBlurImageFilter.h"
13 #include "third_party/skia/include/effects/SkColorMatrixFilter.h" 12 #include "third_party/skia/include/effects/SkColorMatrixFilter.h"
14 #include "third_party/skia/include/effects/SkMagnifierImageFilter.h" 13 #include "third_party/skia/include/effects/SkMagnifierImageFilter.h"
15 #include "third_party/skia/include/gpu/SkGpuDevice.h" 14 #include "third_party/skia/include/gpu/SkGpuDevice.h"
16 #include "third_party/skia/include/gpu/SkGrPixelRef.h" 15 #include "third_party/skia/include/gpu/SkGrPixelRef.h"
16 #include "ui/gfx/size_f.h"
17 #include <public/WebFilterOperation.h> 17 #include <public/WebFilterOperation.h>
18 #include <public/WebFilterOperations.h> 18 #include <public/WebFilterOperations.h>
19 #include <public/WebGraphicsContext3D.h> 19 #include <public/WebGraphicsContext3D.h>
20 20
21 namespace cc { 21 namespace cc {
22 22
23 namespace { 23 namespace {
24 24
25 void getBrightnessMatrix(float amount, SkScalar matrix[20]) 25 void getBrightnessMatrix(float amount, SkScalar matrix[20])
26 { 26 {
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 matrix[10] = 0.213f - 0.213f * amount; 60 matrix[10] = 0.213f - 0.213f * amount;
61 matrix[11] = 0.715f - 0.715f * amount; 61 matrix[11] = 0.715f - 0.715f * amount;
62 matrix[12] = 1.f - (matrix[10] + matrix[11]); 62 matrix[12] = 1.f - (matrix[10] + matrix[11]);
63 matrix[13] = matrix[14] = 0; 63 matrix[13] = matrix[14] = 0;
64 matrix[15] = matrix[16] = matrix[17] = matrix[19] = 0; 64 matrix[15] = matrix[16] = matrix[17] = matrix[19] = 0;
65 matrix[18] = 1; 65 matrix[18] = 1;
66 } 66 }
67 67
68 void getHueRotateMatrix(float hue, SkScalar matrix[20]) 68 void getHueRotateMatrix(float hue, SkScalar matrix[20])
69 { 69 {
70 float cosHue = cosf(hue * piFloat / 180); 70 const float kPi = 3.1415926535897932384626433832795f;
71 float sinHue = sinf(hue * piFloat / 180); 71
72 float cosHue = cosf(hue * kPi / 180);
73 float sinHue = sinf(hue * kPi / 180);
72 matrix[0] = 0.213f + cosHue * 0.787f - sinHue * 0.213f; 74 matrix[0] = 0.213f + cosHue * 0.787f - sinHue * 0.213f;
73 matrix[1] = 0.715f - cosHue * 0.715f - sinHue * 0.715f; 75 matrix[1] = 0.715f - cosHue * 0.715f - sinHue * 0.715f;
74 matrix[2] = 0.072f - cosHue * 0.072f + sinHue * 0.928f; 76 matrix[2] = 0.072f - cosHue * 0.072f + sinHue * 0.928f;
75 matrix[3] = matrix[4] = 0; 77 matrix[3] = matrix[4] = 0;
76 matrix[5] = 0.213f - cosHue * 0.213f + sinHue * 0.143f; 78 matrix[5] = 0.213f - cosHue * 0.213f + sinHue * 0.143f;
77 matrix[6] = 0.715f + cosHue * 0.285f + sinHue * 0.140f; 79 matrix[6] = 0.715f + cosHue * 0.285f + sinHue * 0.140f;
78 matrix[7] = 0.072f - cosHue * 0.072f - sinHue * 0.283f; 80 matrix[7] = 0.072f - cosHue * 0.072f - sinHue * 0.283f;
79 matrix[8] = matrix[9] = 0; 81 matrix[8] = matrix[9] = 0;
80 matrix[10] = 0.213f - cosHue * 0.213f - sinHue * 0.787f; 82 matrix[10] = 0.213f - cosHue * 0.213f - sinHue * 0.787f;
81 matrix[11] = 0.715f - cosHue * 0.715f + sinHue * 0.715f; 83 matrix[11] = 0.715f - cosHue * 0.715f + sinHue * 0.715f;
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 memcpy(matrix, op.matrix(), sizeof(SkScalar[20])); 231 memcpy(matrix, op.matrix(), sizeof(SkScalar[20]));
230 return true; 232 return true;
231 } 233 }
232 default: 234 default:
233 return false; 235 return false;
234 } 236 }
235 } 237 }
236 238
237 class FilterBufferState { 239 class FilterBufferState {
238 public: 240 public:
239 FilterBufferState(GrContext* grContext, const FloatSize& size, unsigned text ureId) 241 FilterBufferState(GrContext* grContext, const gfx::SizeF& size, unsigned tex tureId)
240 : m_grContext(grContext) 242 : m_grContext(grContext)
241 , m_currentTexture(0) 243 , m_currentTexture(0)
242 { 244 {
243 // Wrap the source texture in a Ganesh platform texture. 245 // Wrap the source texture in a Ganesh platform texture.
244 GrPlatformTextureDesc platformTextureDescription; 246 GrPlatformTextureDesc platformTextureDescription;
245 platformTextureDescription.fWidth = size.width(); 247 platformTextureDescription.fWidth = size.width();
246 platformTextureDescription.fHeight = size.height(); 248 platformTextureDescription.fHeight = size.height();
247 platformTextureDescription.fConfig = kSkia8888_GrPixelConfig; 249 platformTextureDescription.fConfig = kSkia8888_GrPixelConfig;
248 platformTextureDescription.fTextureHandle = textureId; 250 platformTextureDescription.fTextureHandle = textureId;
249 SkAutoTUnref<GrTexture> texture(grContext->createPlatformTexture(platfor mTextureDescription)); 251 SkAutoTUnref<GrTexture> texture(grContext->createPlatformTexture(platfor mTextureDescription));
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
358 case WebKit::WebFilterOperation::FilterTypeOpacity: 360 case WebKit::WebFilterOperation::FilterTypeOpacity:
359 case WebKit::WebFilterOperation::FilterTypeColorMatrix: 361 case WebKit::WebFilterOperation::FilterTypeColorMatrix:
360 break; 362 break;
361 } 363 }
362 } 364 }
363 if (haveAccumulatedColorMatrix) 365 if (haveAccumulatedColorMatrix)
364 newList.append(WebKit::WebFilterOperation::createColorMatrixFilter(accum ulatedColorMatrix)); 366 newList.append(WebKit::WebFilterOperation::createColorMatrixFilter(accum ulatedColorMatrix));
365 return newList; 367 return newList;
366 } 368 }
367 369
368 SkBitmap RenderSurfaceFilters::apply(const WebKit::WebFilterOperations& filters, unsigned textureId, const FloatSize& size, WebKit::WebGraphicsContext3D* contex t3D, GrContext* grContext) 370 SkBitmap RenderSurfaceFilters::apply(const WebKit::WebFilterOperations& filters, unsigned textureId, const gfx::SizeF& size, WebKit::WebGraphicsContext3D* conte xt3D, GrContext* grContext)
369 { 371 {
370 if (!context3D || !grContext) 372 if (!context3D || !grContext)
371 return SkBitmap(); 373 return SkBitmap();
372 374
373 WebKit::WebFilterOperations optimizedFilters = optimize(filters); 375 WebKit::WebFilterOperations optimizedFilters = optimize(filters);
374 FilterBufferState state(grContext, size, textureId); 376 FilterBufferState state(grContext, size, textureId);
375 if (!state.init(optimizedFilters.size())) 377 if (!state.init(optimizedFilters.size()))
376 return SkBitmap(); 378 return SkBitmap();
377 379
378 for (unsigned i = 0; i < optimizedFilters.size(); ++i) { 380 for (unsigned i = 0; i < optimizedFilters.size(); ++i) {
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
432 NOTREACHED(); 434 NOTREACHED();
433 break; 435 break;
434 } 436 }
435 state.swap(); 437 state.swap();
436 } 438 }
437 context3D->flush(); 439 context3D->flush();
438 return state.source(); 440 return state.source();
439 } 441 }
440 442
441 } // namespace cc 443 } // namespace cc
OLDNEW
« no previous file with comments | « cc/render_surface_filters.h ('k') | cc/scoped_texture_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698