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

Side by Side Diff: cc/content_layer_updater.cc

Issue 11266030: Use gfx:: Geometry types for the resource provider and layer updater classes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: uint8 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/content_layer_updater.h ('k') | cc/gl_renderer.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 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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/content_layer_updater.h" 7 #include "cc/content_layer_updater.h"
8 8
9 #include "FloatRect.h"
10 #include "SkiaUtils.h" 9 #include "SkiaUtils.h"
11 #include "base/debug/trace_event.h" 10 #include "base/debug/trace_event.h"
12 #include "base/time.h" 11 #include "base/time.h"
13 #include "cc/layer_painter.h" 12 #include "cc/layer_painter.h"
14 #include "cc/rendering_stats.h" 13 #include "cc/rendering_stats.h"
15 #include "third_party/skia/include/core/SkCanvas.h" 14 #include "third_party/skia/include/core/SkCanvas.h"
16 #include "third_party/skia/include/core/SkPaint.h" 15 #include "third_party/skia/include/core/SkPaint.h"
17 #include "third_party/skia/include/core/SkRect.h" 16 #include "third_party/skia/include/core/SkRect.h"
17 #include "ui/gfx/rect_conversions.h"
18 #include "ui/gfx/rect_f.h"
18 19
19 namespace cc { 20 namespace cc {
20 21
21 ContentLayerUpdater::ContentLayerUpdater(scoped_ptr<LayerPainter> painter) 22 ContentLayerUpdater::ContentLayerUpdater(scoped_ptr<LayerPainter> painter)
22 : m_painter(painter.Pass()) 23 : m_painter(painter.Pass())
23 { 24 {
24 } 25 }
25 26
26 ContentLayerUpdater::~ContentLayerUpdater() 27 ContentLayerUpdater::~ContentLayerUpdater()
27 { 28 {
28 } 29 }
29 30
30 void ContentLayerUpdater::paintContents(SkCanvas* canvas, const IntRect& content Rect, float contentsWidthScale, float contentsHeightScale, IntRect& resultingOpa queRect, RenderingStats& stats) 31 void ContentLayerUpdater::paintContents(SkCanvas* canvas, const gfx::Rect& conte ntRect, float contentsWidthScale, float contentsHeightScale, gfx::Rect& resultin gOpaqueRect, RenderingStats& stats)
31 { 32 {
32 TRACE_EVENT0("cc", "ContentLayerUpdater::paintContents"); 33 TRACE_EVENT0("cc", "ContentLayerUpdater::paintContents");
33 canvas->save(); 34 canvas->save();
34 canvas->translate(FloatToSkScalar(-contentRect.x()), FloatToSkScalar(-conten tRect.y())); 35 canvas->translate(FloatToSkScalar(-contentRect.x()), FloatToSkScalar(-conten tRect.y()));
35 36
36 IntRect layerRect = contentRect; 37 gfx::Rect layerRect = contentRect;
37 38
38 if (contentsWidthScale != 1 || contentsHeightScale != 1) { 39 if (contentsWidthScale != 1 || contentsHeightScale != 1) {
39 canvas->scale(FloatToSkScalar(contentsWidthScale), FloatToSkScalar(conte ntsHeightScale)); 40 canvas->scale(FloatToSkScalar(contentsWidthScale), FloatToSkScalar(conte ntsHeightScale));
40 41
41 FloatRect rect = contentRect; 42 gfx::RectF rect = gfx::ScaleRect(contentRect, 1 / contentsWidthScale, 1 / contentsHeightScale);
42 rect.scale(1 / contentsWidthScale, 1 / contentsHeightScale); 43 layerRect = gfx::ToEnclosingRect(rect);
43 layerRect = enclosingIntRect(rect);
44 } 44 }
45 45
46 SkPaint paint; 46 SkPaint paint;
47 paint.setAntiAlias(false); 47 paint.setAntiAlias(false);
48 paint.setXfermodeMode(SkXfermode::kClear_Mode); 48 paint.setXfermodeMode(SkXfermode::kClear_Mode);
49 SkRect layerSkRect = SkRect::MakeXYWH(layerRect.x(), layerRect.y(), layerRec t.width(), layerRect.height()); 49 SkRect layerSkRect = SkRect::MakeXYWH(layerRect.x(), layerRect.y(), layerRec t.width(), layerRect.height());
50 canvas->drawRect(layerSkRect, paint); 50 canvas->drawRect(layerSkRect, paint);
51 canvas->clipRect(layerSkRect); 51 canvas->clipRect(layerSkRect);
52 52
53 FloatRect opaqueLayerRect; 53 gfx::RectF opaqueLayerRect;
54 base::TimeTicks paintBeginTime = base::TimeTicks::Now(); 54 base::TimeTicks paintBeginTime = base::TimeTicks::Now();
55 m_painter->paint(canvas, layerRect, opaqueLayerRect); 55 m_painter->paint(canvas, layerRect, opaqueLayerRect);
56 stats.totalPaintTimeInSeconds += (base::TimeTicks::Now() - paintBeginTime).I nSecondsF(); 56 stats.totalPaintTimeInSeconds += (base::TimeTicks::Now() - paintBeginTime).I nSecondsF();
57 canvas->restore(); 57 canvas->restore();
58 58
59 FloatRect opaqueContentRect = opaqueLayerRect; 59 gfx::RectF opaqueContentRect = gfx::ScaleRect(opaqueLayerRect, contentsWidth Scale, contentsHeightScale);
60 opaqueContentRect.scale(contentsWidthScale, contentsHeightScale); 60 resultingOpaqueRect = gfx::ToEnclosedRect(opaqueContentRect);
61 resultingOpaqueRect = enclosedIntRect(opaqueContentRect);
62 61
63 m_contentRect = contentRect; 62 m_contentRect = contentRect;
64 } 63 }
65 64
66 } // namespace cc 65 } // namespace cc
OLDNEW
« no previous file with comments | « cc/content_layer_updater.h ('k') | cc/gl_renderer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698