1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// found in the LICENSE file. 4cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#ifndef UI_VIEWS_CULL_SET_H_ 6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#define UI_VIEWS_CULL_SET_H_ 7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/containers/hash_tables.h" 9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/macros.h" 10cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "ui/views/views_export.h" 12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace views { 14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class View; 16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// A CullSet defines a set of View pointers which have been possibly culled 18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// from painting or other bounds-checking operations. It wraps a set of 19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// pointers to views, or NULL if no such set is available. 20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class VIEWS_EXPORT CullSet { 21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) public: 22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Default constructor builds a CullSet that will always return true for 23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // ShouldPaint(). 24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) CullSet(); 25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) ~CullSet(); 26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Wraps a set of pointers to Views, as might be provided by 28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // gfx::RTree::Query(), that intersect the damage rect and therefore need 29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // to be painted. CullSet takes ownership of the provided pointer. 30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) CullSet(scoped_ptr<base::hash_set<intptr_t> > cull_set); 31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Returns true if |view| needs to be painted. 33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) bool ShouldPaint(const View* view) const; 34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) private: 36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) friend class BoundsTreeTestView; 37cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 38cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // The set of Views that collided with the query rectangle provided to the 39cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // RTree data structure, or NULL if one is not available. 40cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) scoped_ptr<base::hash_set<intptr_t> > cull_set_; 41cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 42cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(CullSet); 43cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}; 44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} // namespace views 46cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 47cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#endif // UI_VIEWS_CULL_SET_H_ 48