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

Unified Diff: ui/views/view.h

Issue 1053143002: Make View::Paint use ui::PaintRecorder to access PaintContext's canvas (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: paintrecorder: . Created 5 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 side-by-side diff with in-line comments
Download patch
Index: ui/views/view.h
diff --git a/ui/views/view.h b/ui/views/view.h
index 81363cd8e37d88de9aeb1c61884d3962fc8525a8..00813e06a7008c5c9b30f9e8ecb867a8c72aaecc 100644
--- a/ui/views/view.h
+++ b/ui/views/view.h
@@ -51,6 +51,7 @@ struct AXViewState;
class Compositor;
class Layer;
class NativeTheme;
+class PaintContext;
class TextInputClient;
class Texture;
class ThemeProvider;
@@ -491,77 +492,11 @@ class VIEWS_EXPORT View : public ui::LayerDelegate,
virtual void SchedulePaint();
virtual void SchedulePaintInRect(const gfx::Rect& r);
- class PaintContext {
- public:
- explicit PaintContext(gfx::Canvas* canvas)
- : PaintContext(canvas, gfx::Rect()) {}
- PaintContext(gfx::Canvas* canvas, const gfx::Rect& invalidation)
- : canvas_(canvas), invalidation_(invalidation) {
-#if DCHECK_IS_ON()
- root_visited_ = nullptr;
-#endif
- }
-
- // TODO(danakj): Remove this once everything is painting to display lists.
- gfx::Canvas* canvas() const { return canvas_; }
-
- bool CanCheckInvalidated() const { return !invalidation_.IsEmpty(); }
-
- // When true, the |bounds| touches an invalidated area, so should be
- // re-painted. When false, re-painting can be skipped. Bounds should be in
- // the local space with offsets up to the painting root in the PaintContext.
- bool IsRectInvalidated(const gfx::Rect& bounds) const {
- DCHECK(CanCheckInvalidated());
- return invalidation_.Intersects(bounds + offset_);
- }
-
- PaintContext CloneWithPaintOffset(const gfx::Vector2d& offset) const {
- return PaintContext(*this, offset);
- }
-
- PaintContext CloneWithoutInvalidation() const {
- return PaintContext(canvas_, gfx::Rect());
- }
-
-#if DCHECK_IS_ON()
- void Visited(void* visited) const {
- if (!root_visited_)
- root_visited_ = visited;
- }
- void* RootVisited() const { return root_visited_; }
- const gfx::Vector2d& PaintOffset() const { return offset_; }
-#endif
-
- private:
- PaintContext(const PaintContext& other, const gfx::Vector2d& offset)
- : canvas_(other.canvas_),
- invalidation_(other.invalidation_),
- offset_(other.offset_ + offset) {
-#if DCHECK_IS_ON()
- root_visited_ = other.root_visited_;
-#endif
- }
-
- gfx::Canvas* canvas_;
- // Invalidation in the space of the paint root (ie the space of the layer
- // backing the paint taking place).
- gfx::Rect invalidation_;
- // Offset from the PaintContext to the space of the paint root and the
- // |invalidation_|.
- gfx::Vector2d offset_;
-
-#if DCHECK_IS_ON()
- // Used to verify that the |invalidation_| is only used to compare against
- // rects in the same space.
- mutable void* root_visited_;
-#endif
- };
-
// Called by the framework to paint a View. Performs translation and clipping
// for View coordinates and language direction as required, allows the View
// to paint itself via the various OnPaint*() event handlers and then paints
// the hierarchy beneath it.
- void Paint(const PaintContext& parent_context);
+ void Paint(const ui::PaintContext& parent_context);
// The background object is owned by this object and may be NULL.
void set_background(Background* b);
@@ -1137,7 +1072,7 @@ class VIEWS_EXPORT View : public ui::LayerDelegate,
// Responsible for calling Paint() on child Views. Override to control the
// order child Views are painted.
- virtual void PaintChildren(const PaintContext& context);
+ virtual void PaintChildren(const ui::PaintContext& context);
// Override to provide rendering in any part of the View's bounds. Typically
// this is the "contents" of the view. If you override this method you will
@@ -1176,7 +1111,7 @@ class VIEWS_EXPORT View : public ui::LayerDelegate,
void UpdateChildLayerBounds(const gfx::Vector2d& offset);
// Overridden from ui::LayerDelegate:
- void OnPaintLayer(gfx::Canvas* canvas) override;
+ void OnPaintLayer(const ui::PaintContext& context) override;
void OnDelegatedFrameDamage(const gfx::Rect& damage_rect_in_dip) override;
void OnDeviceScaleFactorChanged(float device_scale_factor) override;
base::Closure PrepareForLayerBoundsChange() override;

Powered by Google App Engine
This is Rietveld 408576698