#include "cc/trees/occlusion_tracker.h"
#include <stddef.h>
#include <algorithm>
#include "cc/base/math_util.h"
#include "cc/base/region.h"
#include "cc/layers/layer.h"
#include "cc/layers/layer_impl.h"
#include "cc/layers/render_surface_impl.h"
#include "cc/trees/layer_tree_impl.h"
#include "ui/gfx/geometry/quad_f.h"
#include "ui/gfx/geometry/rect_conversions.h"
namespace cc {
OcclusionTracker::OcclusionTracker(const gfx::Rect& screen_space_clip_rect)
: … { … }
OcclusionTracker::~OcclusionTracker() = default;
Occlusion OcclusionTracker::GetCurrentOcclusionForLayer(
const gfx::Transform& draw_transform) const { … }
Occlusion OcclusionTracker::GetCurrentOcclusionForContributingSurface(
const gfx::Transform& draw_transform) const { … }
const RenderSurfaceImpl*
OcclusionTracker::OcclusionSurfaceForContributingSurface() const { … }
void OcclusionTracker::EnterLayer(
const EffectTreeLayerListIterator::Position& iterator) { … }
void OcclusionTracker::LeaveLayer(
const EffectTreeLayerListIterator::Position& iterator) { … }
static gfx::Rect ScreenSpaceClipRectInTargetSurface(
const RenderSurfaceImpl* target_surface,
const gfx::Rect& screen_space_clip_rect) { … }
static SimpleEnclosedRegion TransformSurfaceOpaqueRegion(
const SimpleEnclosedRegion& region,
bool have_clip_rect,
const gfx::Rect& clip_rect_in_new_target,
const gfx::Transform& transform) { … }
void OcclusionTracker::EnterRenderTarget(
const RenderSurfaceImpl* new_target_surface) { … }
static bool IsOccludingBlendMode(SkBlendMode blend_mode) { … }
void OcclusionTracker::FinishedRenderTarget(
const RenderSurfaceImpl* finished_target_surface) { … }
static void ReduceOcclusionBelowSurface(
const RenderSurfaceImpl* contributing_surface,
const gfx::Rect& surface_rect,
const gfx::Transform& surface_transform,
SimpleEnclosedRegion* occlusion_from_inside_target) { … }
void OcclusionTracker::LeaveToRenderTarget(
const RenderSurfaceImpl* new_target_surface) { … }
void OcclusionTracker::MarkOccludedBehindLayer(const LayerImpl* layer) { … }
Region OcclusionTracker::ComputeVisibleRegionInScreen(
const LayerTreeImpl* layer_tree) const { … }
}