| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "modules/canvas2d/HitRegion.h" | 5 #include "modules/canvas2d/HitRegion.h" |
| 6 | 6 |
| 7 #include "core/dom/AXObjectCache.h" | 7 #include "core/dom/AXObjectCache.h" |
| 8 #include "core/layout/LayoutBoxModelObject.h" | 8 #include "core/layout/LayoutBoxModelObject.h" |
| 9 | 9 |
| 10 namespace blink { | 10 namespace blink { |
| (...skipping 17 matching lines...) Expand all Loading... |
| 28 void HitRegion::removePixels(const Path& clearArea) | 28 void HitRegion::removePixels(const Path& clearArea) |
| 29 { | 29 { |
| 30 m_path.subtractPath(clearArea); | 30 m_path.subtractPath(clearArea); |
| 31 } | 31 } |
| 32 | 32 |
| 33 DEFINE_TRACE(HitRegion) | 33 DEFINE_TRACE(HitRegion) |
| 34 { | 34 { |
| 35 visitor->trace(m_control); | 35 visitor->trace(m_control); |
| 36 } | 36 } |
| 37 | 37 |
| 38 void HitRegionManager::addHitRegion(PassRefPtrWillBeRawPtr<HitRegion> passHitReg
ion) | 38 void HitRegionManager::addHitRegion(RawPtr<HitRegion> passHitRegion) |
| 39 { | 39 { |
| 40 RefPtrWillBeRawPtr<HitRegion> hitRegion = passHitRegion; | 40 RawPtr<HitRegion> hitRegion = passHitRegion; |
| 41 | 41 |
| 42 m_hitRegionList.add(hitRegion); | 42 m_hitRegionList.add(hitRegion); |
| 43 | 43 |
| 44 if (!hitRegion->id().isEmpty()) | 44 if (!hitRegion->id().isEmpty()) |
| 45 m_hitRegionIdMap.set(hitRegion->id(), hitRegion); | 45 m_hitRegionIdMap.set(hitRegion->id(), hitRegion); |
| 46 | 46 |
| 47 if (hitRegion->control()) | 47 if (hitRegion->control()) |
| 48 m_hitRegionControlMap.set(hitRegion->control(), hitRegion); | 48 m_hitRegionControlMap.set(hitRegion->control(), hitRegion); |
| 49 } | 49 } |
| 50 | 50 |
| (...skipping 25 matching lines...) Expand all Loading... |
| 76 void HitRegionManager::removeHitRegionsInRect(const FloatRect& rect, const Affin
eTransform& ctm) | 76 void HitRegionManager::removeHitRegionsInRect(const FloatRect& rect, const Affin
eTransform& ctm) |
| 77 { | 77 { |
| 78 Path clearArea; | 78 Path clearArea; |
| 79 clearArea.addRect(rect); | 79 clearArea.addRect(rect); |
| 80 clearArea.transform(ctm); | 80 clearArea.transform(ctm); |
| 81 | 81 |
| 82 HitRegionIterator itEnd = m_hitRegionList.rend(); | 82 HitRegionIterator itEnd = m_hitRegionList.rend(); |
| 83 HitRegionList toBeRemoved; | 83 HitRegionList toBeRemoved; |
| 84 | 84 |
| 85 for (HitRegionIterator it = m_hitRegionList.rbegin(); it != itEnd; ++it) { | 85 for (HitRegionIterator it = m_hitRegionList.rbegin(); it != itEnd; ++it) { |
| 86 RefPtrWillBeRawPtr<HitRegion> hitRegion = *it; | 86 RawPtr<HitRegion> hitRegion = *it; |
| 87 hitRegion->removePixels(clearArea); | 87 hitRegion->removePixels(clearArea); |
| 88 if (hitRegion->path().isEmpty()) | 88 if (hitRegion->path().isEmpty()) |
| 89 toBeRemoved.add(hitRegion); | 89 toBeRemoved.add(hitRegion); |
| 90 } | 90 } |
| 91 | 91 |
| 92 itEnd = toBeRemoved.rend(); | 92 itEnd = toBeRemoved.rend(); |
| 93 for (HitRegionIterator it = toBeRemoved.rbegin(); it != itEnd; ++it) | 93 for (HitRegionIterator it = toBeRemoved.rbegin(); it != itEnd; ++it) |
| 94 removeHitRegion(it->get()); | 94 removeHitRegion(it->get()); |
| 95 } | 95 } |
| 96 | 96 |
| (...skipping 15 matching lines...) Expand all Loading... |
| 112 return m_hitRegionControlMap.get(control); | 112 return m_hitRegionControlMap.get(control); |
| 113 | 113 |
| 114 return nullptr; | 114 return nullptr; |
| 115 } | 115 } |
| 116 | 116 |
| 117 HitRegion* HitRegionManager::getHitRegionAtPoint(const FloatPoint& point) const | 117 HitRegion* HitRegionManager::getHitRegionAtPoint(const FloatPoint& point) const |
| 118 { | 118 { |
| 119 HitRegionIterator itEnd = m_hitRegionList.rend(); | 119 HitRegionIterator itEnd = m_hitRegionList.rend(); |
| 120 | 120 |
| 121 for (HitRegionIterator it = m_hitRegionList.rbegin(); it != itEnd; ++it) { | 121 for (HitRegionIterator it = m_hitRegionList.rbegin(); it != itEnd; ++it) { |
| 122 RefPtrWillBeRawPtr<HitRegion> hitRegion = *it; | 122 RawPtr<HitRegion> hitRegion = *it; |
| 123 if (hitRegion->contains(point)) | 123 if (hitRegion->contains(point)) |
| 124 return hitRegion.get(); | 124 return hitRegion.get(); |
| 125 } | 125 } |
| 126 | 126 |
| 127 return nullptr; | 127 return nullptr; |
| 128 } | 128 } |
| 129 | 129 |
| 130 unsigned HitRegionManager::getHitRegionsCount() const | 130 unsigned HitRegionManager::getHitRegionsCount() const |
| 131 { | 131 { |
| 132 return m_hitRegionList.size(); | 132 return m_hitRegionList.size(); |
| 133 } | 133 } |
| 134 | 134 |
| 135 DEFINE_TRACE(HitRegionManager) | 135 DEFINE_TRACE(HitRegionManager) |
| 136 { | 136 { |
| 137 #if ENABLE(OILPAN) | 137 #if ENABLE(OILPAN) |
| 138 visitor->trace(m_hitRegionList); | 138 visitor->trace(m_hitRegionList); |
| 139 visitor->trace(m_hitRegionIdMap); | 139 visitor->trace(m_hitRegionIdMap); |
| 140 visitor->trace(m_hitRegionControlMap); | 140 visitor->trace(m_hitRegionControlMap); |
| 141 #endif | 141 #endif |
| 142 } | 142 } |
| 143 | 143 |
| 144 } // namespace blink | 144 } // namespace blink |
| OLD | NEW |