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

Side by Side Diff: chrome/renderer/paint_aggregator.h

Issue 6685072: Move a bunch more random files from chrome\renderer to content\renderer. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 9 months 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 | « chrome/renderer/page_load_histograms.cc ('k') | chrome/renderer/paint_aggregator.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef CHROME_RENDERER_PAINT_AGGREGATOR_H_
6 #define CHROME_RENDERER_PAINT_AGGREGATOR_H_
7 #pragma once
8
9 #include <vector>
10
11 #include "base/basictypes.h"
12 #include "ui/gfx/rect.h"
13
14 // This class is responsible for aggregating multiple invalidation and scroll
15 // commands to produce a scroll and repaint sequence.
16 class PaintAggregator {
17 public:
18 // This structure describes an aggregation of InvalidateRect and ScrollRect
19 // calls. If |scroll_rect| is non-empty, then that rect should be scrolled
20 // by the amount specified by |scroll_delta|. If |paint_rects| is non-empty,
21 // then those rects should be repainted. If |scroll_rect| and |paint_rects|
22 // are non-empty, then scrolling should be performed before repainting.
23 // |scroll_delta| can only specify scrolling in one direction (i.e., the x
24 // and y members cannot both be non-zero).
25 struct PendingUpdate {
26 PendingUpdate();
27 ~PendingUpdate();
28
29 // Returns the rect damaged by scrolling within |scroll_rect| by
30 // |scroll_delta|. This rect must be repainted.
31 gfx::Rect GetScrollDamage() const;
32
33 // Returns the smallest rect containing all paint rects.
34 gfx::Rect GetPaintBounds() const;
35
36 gfx::Point scroll_delta;
37 gfx::Rect scroll_rect;
38 std::vector<gfx::Rect> paint_rects;
39 };
40
41 // There is a PendingUpdate if InvalidateRect or ScrollRect were called and
42 // ClearPendingUpdate was not called.
43 bool HasPendingUpdate() const;
44 void ClearPendingUpdate();
45
46 // Fills |update| and clears the pending update.
47 void PopPendingUpdate(PendingUpdate* update);
48
49 // The given rect should be repainted.
50 void InvalidateRect(const gfx::Rect& rect);
51
52 // The given rect should be scrolled by the given amounts.
53 void ScrollRect(int dx, int dy, const gfx::Rect& clip_rect);
54
55 private:
56 gfx::Rect ScrollPaintRect(const gfx::Rect& paint_rect, int dx, int dy) const;
57 bool ShouldInvalidateScrollRect(const gfx::Rect& rect) const;
58 void InvalidateScrollRect();
59 void CombinePaintRects();
60
61 PendingUpdate update_;
62 };
63
64 #endif // CHROME_RENDERER_PAINT_AGGREGATOR_H_
OLDNEW
« no previous file with comments | « chrome/renderer/page_load_histograms.cc ('k') | chrome/renderer/paint_aggregator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698