1ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 2ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// found in the LICENSE file. 4ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 5ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#ifndef CC_BASE_INVALIDATION_REGION_H_ 6ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#define CC_BASE_INVALIDATION_REGION_H_ 7ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 8ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "cc/base/cc_export.h" 9ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "cc/base/region.h" 10ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "ui/gfx/rect.h" 11ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 12ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochnamespace cc { 13ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 14ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// This class behaves similarly to Region, but it may have false positives. That 15ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// is, InvalidationRegion can be simplified to encompass a larger area than the 16ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// collection of rects unioned. 17ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochclass CC_EXPORT InvalidationRegion { 18ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch public: 19ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch InvalidationRegion(); 20ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch ~InvalidationRegion(); 21ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 22ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch void Swap(Region* region); 23ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch void Clear(); 245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void Union(const gfx::Rect& rect); 25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) bool IsEmpty() const { return region_.IsEmpty(); } 26ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 27ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch private: 28ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch void SimplifyIfNeeded(); 29ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 30ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch Region region_; 31ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch}; 32ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 33ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch} // namespace cc 34ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 35ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#endif // CC_BASE_INVALIDATION_REGION_H_ 36