123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- // 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.
- #include "cc/layers/touch_action_region.h"
- #include "ui/gfx/geometry/rect.h"
- namespace cc {
- TouchActionRegion::TouchActionRegion() {}
- TouchActionRegion::TouchActionRegion(
- const TouchActionRegion& touch_action_region) = default;
- TouchActionRegion::TouchActionRegion(TouchActionRegion&& touch_action_region) =
- default;
- TouchActionRegion::~TouchActionRegion() = default;
- Region TouchActionRegion::GetAllRegions() const {
- Region all_regions;
- for (const auto& pair : map_)
- all_regions.Union(pair.second);
- return all_regions;
- }
- void TouchActionRegion::Union(TouchAction touch_action, const gfx::Rect& rect) {
- map_[touch_action].Union(rect);
- }
- const Region& TouchActionRegion::GetRegionForTouchAction(
- TouchAction touch_action) const {
- static const Region* empty_region = new Region;
- auto it = map_.find(touch_action);
- if (it == map_.end())
- return *empty_region;
- return it->second;
- }
- TouchAction TouchActionRegion::GetAllowedTouchAction(
- const gfx::Point& point) const {
- TouchAction allowed_touch_action = TouchAction::kAuto;
- for (const auto& pair : map_) {
- if (!pair.second.Contains(point))
- continue;
- allowed_touch_action &= pair.first;
- }
- return allowed_touch_action;
- }
- TouchActionRegion& TouchActionRegion::operator=(
- const TouchActionRegion& other) {
- map_ = other.map_;
- return *this;
- }
- TouchActionRegion& TouchActionRegion::operator=(TouchActionRegion&& other) =
- default;
- bool TouchActionRegion::operator==(const TouchActionRegion& other) const {
- return map_ == other.map_;
- }
- } // namespace cc
|