// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CC_TREES_CLIP_EXPANDER_H_
#define CC_TREES_CLIP_EXPANDER_H_

#include "cc/cc_export.h"
#include "ui/gfx/geometry/rect.h"

namespace cc {

class PropertyTrees;

class CC_EXPORT ClipExpander {
 public:
  explicit ClipExpander(int filter_effect_id);
  ClipExpander(const ClipExpander& other);

  bool operator==(const ClipExpander& other) const;

  bool operator!=(const ClipExpander& other) const { return !(*this == other); }

  // Maps "forward" to determine which pixels in a destination rect are affected
  // by pixels in the given source rect.
  gfx::Rect MapRect(const gfx::Rect& rect,
                    const PropertyTrees* property_trees) const;

  // Maps "backward" to determine which pixels in the source affect the pixels
  // in the given destination rect.
  gfx::Rect MapRectReverse(const gfx::Rect& rect,
                           const PropertyTrees* property_trees) const;

  // The id of the effect node in whose transform space the expansion happens.
  int target_effect_id() const { return target_effect_id_; }

 private:
  int target_effect_id_;
};

}  // namespace cc

#endif  // CC_TREES_CLIP_EXPANDER_H_
