1// Copyright 2014 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 CC_TREES_OCCLUSION_H_
6#define CC_TREES_OCCLUSION_H_
7
8#include "base/basictypes.h"
9#include "cc/base/cc_export.h"
10#include "cc/base/simple_enclosed_region.h"
11#include "ui/gfx/rect.h"
12#include "ui/gfx/transform.h"
13
14namespace cc {
15
16class CC_EXPORT Occlusion {
17 public:
18  Occlusion();
19  Occlusion(const gfx::Transform& draw_transform,
20            const SimpleEnclosedRegion& occlusion_from_outside_target,
21            const SimpleEnclosedRegion& occlusion_from_inside_target);
22
23  bool IsOccluded(const gfx::Rect& content_rect) const;
24  gfx::Rect GetUnoccludedContentRect(const gfx::Rect& content_rect) const;
25
26 private:
27  gfx::Rect GetUnoccludedRectInTargetSurface(
28      const gfx::Rect& content_rect) const;
29
30  gfx::Transform draw_transform_;
31  SimpleEnclosedRegion occlusion_from_outside_target_;
32  SimpleEnclosedRegion occlusion_from_inside_target_;
33};
34
35}  // namespace cc
36
37#endif  // CC_TREES_OCCLUSION_H_
38