| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
| 4 * (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com) | 4 * (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com) |
| 5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com) | 5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com) |
| 6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. | 6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. |
| 7 * All rights reserved. | 7 * All rights reserved. |
| 8 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. | 8 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. |
| 9 * | 9 * |
| 10 * This library is free software; you can redistribute it and/or | 10 * This library is free software; you can redistribute it and/or |
| (...skipping 2310 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2321 | 2321 |
| 2322 bool LayoutBox::mapToVisualRectInAncestorSpace( | 2322 bool LayoutBox::mapToVisualRectInAncestorSpace( |
| 2323 const LayoutBoxModelObject* ancestor, | 2323 const LayoutBoxModelObject* ancestor, |
| 2324 LayoutRect& rect, | 2324 LayoutRect& rect, |
| 2325 VisualRectFlags visualRectFlags) const { | 2325 VisualRectFlags visualRectFlags) const { |
| 2326 inflateVisualRectForFilter(rect); | 2326 inflateVisualRectForFilter(rect); |
| 2327 | 2327 |
| 2328 if (ancestor == this) | 2328 if (ancestor == this) |
| 2329 return true; | 2329 return true; |
| 2330 | 2330 |
| 2331 bool ancestorSkipped; | 2331 AncestorSkipInfo skipInfo(ancestor, true); |
| 2332 bool filterSkipped; | 2332 LayoutObject* container = this->container(&skipInfo); |
| 2333 LayoutObject* container = | |
| 2334 this->container(ancestor, &ancestorSkipped, &filterSkipped); | |
| 2335 LayoutBox* tableRowContainer = nullptr; | 2333 LayoutBox* tableRowContainer = nullptr; |
| 2336 // Skip table row because cells and rows are in the same coordinate space (see | 2334 // Skip table row because cells and rows are in the same coordinate space (see |
| 2337 // below, however for more comments about when |ancestor| is the table row). | 2335 // below, however for more comments about when |ancestor| is the table row). |
| 2338 if (isTableCell()) { | 2336 if (isTableCell()) { |
| 2339 DCHECK(container->isTableRow() && parentBox() == container); | 2337 DCHECK(container->isTableRow() && parentBox() == container); |
| 2340 if (container != ancestor) | 2338 if (container != ancestor) |
| 2341 container = container->parent(); | 2339 container = container->parent(); |
| 2342 else | 2340 else |
| 2343 tableRowContainer = toLayoutBox(container); | 2341 tableRowContainer = toLayoutBox(container); |
| 2344 } | 2342 } |
| 2345 if (!container) | 2343 if (!container) |
| 2346 return true; | 2344 return true; |
| 2347 | 2345 |
| 2348 if (filterSkipped) | 2346 if (skipInfo.filterSkipped()) |
| 2349 inflateVisualRectForFilterUnderContainer(rect, *container, ancestor); | 2347 inflateVisualRectForFilterUnderContainer(rect, *container, ancestor); |
| 2350 | 2348 |
| 2351 // We are now in our parent container's coordinate space. Apply our transform | 2349 // We are now in our parent container's coordinate space. Apply our transform |
| 2352 // to obtain a bounding box in the parent's coordinate space that encloses us. | 2350 // to obtain a bounding box in the parent's coordinate space that encloses us. |
| 2353 if (hasLayer() && layer()->transform()) { | 2351 if (hasLayer() && layer()->transform()) { |
| 2354 // Use enclosingIntRect because we cannot properly compute pixel snapping | 2352 // Use enclosingIntRect because we cannot properly compute pixel snapping |
| 2355 // for painted elements within the transform since we don't know the desired | 2353 // for painted elements within the transform since we don't know the desired |
| 2356 // subpixel accumulation at this point, and the transform may include a | 2354 // subpixel accumulation at this point, and the transform may include a |
| 2357 // scale. | 2355 // scale. |
| 2358 rect = LayoutRect(layer()->transform()->mapRect(enclosingIntRect(rect))); | 2356 rect = LayoutRect(layer()->transform()->mapRect(enclosingIntRect(rect))); |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2394 // FIXME: We ignore the lightweight clipping rect that controls use, since if | 2392 // FIXME: We ignore the lightweight clipping rect that controls use, since if |
| 2395 // |o| is in mid-layout, its controlClipRect will be wrong. For overflow clip | 2393 // |o| is in mid-layout, its controlClipRect will be wrong. For overflow clip |
| 2396 // we use the values cached by the layer. | 2394 // we use the values cached by the layer. |
| 2397 rect.setLocation(topLeft); | 2395 rect.setLocation(topLeft); |
| 2398 | 2396 |
| 2399 if (container->isBox() && container != ancestor && | 2397 if (container->isBox() && container != ancestor && |
| 2400 !toLayoutBox(container)->mapScrollingContentsRectToBoxSpace( | 2398 !toLayoutBox(container)->mapScrollingContentsRectToBoxSpace( |
| 2401 rect, visualRectFlags)) | 2399 rect, visualRectFlags)) |
| 2402 return false; | 2400 return false; |
| 2403 | 2401 |
| 2404 if (ancestorSkipped) { | 2402 if (skipInfo.ancestorSkipped()) { |
| 2405 // If the ancestor is below the container, then we need to map the rect into | 2403 // If the ancestor is below the container, then we need to map the rect into |
| 2406 // ancestor's coordinates. | 2404 // ancestor's coordinates. |
| 2407 LayoutSize containerOffset = | 2405 LayoutSize containerOffset = |
| 2408 ancestor->offsetFromAncestorContainer(container); | 2406 ancestor->offsetFromAncestorContainer(container); |
| 2409 rect.move(-containerOffset); | 2407 rect.move(-containerOffset); |
| 2410 // If the ancestor is fixed, then the rect is already in its coordinates so | 2408 // If the ancestor is fixed, then the rect is already in its coordinates so |
| 2411 // doesn't need viewport-adjusting. | 2409 // doesn't need viewport-adjusting. |
| 2412 if (ancestor->style()->position() != FixedPosition && | 2410 if (ancestor->style()->position() != FixedPosition && |
| 2413 container->isLayoutView() && position == FixedPosition) | 2411 container->isLayoutView() && position == FixedPosition) |
| 2414 rect.move(toLayoutView(container)->offsetForFixedPosition(true)); | 2412 rect.move(toLayoutView(container)->offsetForFixedPosition(true)); |
| (...skipping 3274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5689 block->adjustChildDebugRect(rect); | 5687 block->adjustChildDebugRect(rect); |
| 5690 | 5688 |
| 5691 return rect; | 5689 return rect; |
| 5692 } | 5690 } |
| 5693 | 5691 |
| 5694 bool LayoutBox::shouldClipOverflow() const { | 5692 bool LayoutBox::shouldClipOverflow() const { |
| 5695 return hasOverflowClip() || styleRef().containsPaint() || hasControlClip(); | 5693 return hasOverflowClip() || styleRef().containsPaint() || hasControlClip(); |
| 5696 } | 5694 } |
| 5697 | 5695 |
| 5698 } // namespace blink | 5696 } // namespace blink |
| OLD | NEW |