Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(231)

Side by Side Diff: Source/core/layout/LayoutInline.cpp

Issue 1269123002: Preparation for combining paths of focus rings and outlines (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Remove debug from fast/css/focus-ring-recursive-continuations.html Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. 4 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
5 * 5 *
6 * This library is free software; you can redistribute it and/or 6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public 7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either 8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version. 9 * version 2 of the License, or (at your option) any later version.
10 * 10 *
(...skipping 1034 matching lines...) Expand 10 before | Expand all | Expand 10 after
1045 1045
1046 LayoutRect LayoutInline::clippedOverflowRect(const LayoutBoxModelObject* paintIn validationContainer, const PaintInvalidationState* paintInvalidationState) const 1046 LayoutRect LayoutInline::clippedOverflowRect(const LayoutBoxModelObject* paintIn validationContainer, const PaintInvalidationState* paintInvalidationState) const
1047 { 1047 {
1048 const LayoutBoxModelObject* continuation = this->continuation(); 1048 const LayoutBoxModelObject* continuation = this->continuation();
1049 if ((!firstLineBoxIncludingCulling() && !continuation) || style()->visibilit y() != VISIBLE) 1049 if ((!firstLineBoxIncludingCulling() && !continuation) || style()->visibilit y() != VISIBLE)
1050 return LayoutRect(); 1050 return LayoutRect();
1051 1051
1052 LayoutRect overflowRect(linesVisualOverflowBoundingBox()); 1052 LayoutRect overflowRect(linesVisualOverflowBoundingBox());
1053 mapRectToPaintInvalidationBacking(paintInvalidationContainer, overflowRect, paintInvalidationState); 1053 mapRectToPaintInvalidationBacking(paintInvalidationContainer, overflowRect, paintInvalidationState);
1054 1054
1055 LayoutUnit outlineSize = style()->outlineSize(); 1055 LayoutUnit outlineOutset = style()->outlineOutsetExtent();
1056 if (outlineSize) { 1056 if (outlineOutset) {
1057 for (LayoutObject* curr = firstChild(); curr; curr = curr->nextSibling() ) { 1057 for (LayoutObject* curr = firstChild(); curr; curr = curr->nextSibling() ) {
1058 if (!curr->isText()) 1058 if (!curr->isText())
1059 overflowRect.unite(curr->rectWithOutlineForPaintInvalidation(pai ntInvalidationContainer, outlineSize)); 1059 overflowRect.unite(curr->rectWithOutlineForPaintInvalidation(pai ntInvalidationContainer, outlineOutset));
1060 } 1060 }
1061 1061
1062 if (continuation && !continuation->isInline() && continuation->parent()) 1062 if (continuation && !continuation->isInline() && continuation->parent())
1063 overflowRect.unite(continuation->rectWithOutlineForPaintInvalidation (paintInvalidationContainer, outlineSize)); 1063 overflowRect.unite(continuation->rectWithOutlineForPaintInvalidation (paintInvalidationContainer, outlineOutset));
1064 } 1064 }
1065 1065
1066 return overflowRect; 1066 return overflowRect;
1067 } 1067 }
1068 1068
1069 LayoutRect LayoutInline::rectWithOutlineForPaintInvalidation(const LayoutBoxMode lObject* paintInvalidationContainer, LayoutUnit outlineWidth, const PaintInvalid ationState* paintInvalidationState) const 1069 LayoutRect LayoutInline::rectWithOutlineForPaintInvalidation(const LayoutBoxMode lObject* paintInvalidationContainer, LayoutUnit outlineWidth, const PaintInvalid ationState* paintInvalidationState) const
1070 { 1070 {
1071 LayoutRect r(LayoutBoxModelObject::rectWithOutlineForPaintInvalidation(paint InvalidationContainer, outlineWidth, paintInvalidationState)); 1071 LayoutRect r(LayoutBoxModelObject::rectWithOutlineForPaintInvalidation(paint InvalidationContainer, outlineWidth, paintInvalidationState));
1072 for (LayoutObject* curr = firstChild(); curr; curr = curr->nextSibling()) { 1072 for (LayoutObject* curr = firstChild(); curr; curr = curr->nextSibling()) {
1073 if (!curr->isText()) 1073 if (!curr->isText())
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after
1369 1369
1370 void operator()(const FloatRect& rect) 1370 void operator()(const FloatRect& rect)
1371 { 1371 {
1372 if (!rect.isEmpty()) 1372 if (!rect.isEmpty())
1373 AbsoluteLayoutRectsGeneratorContext::operator()(rect); 1373 AbsoluteLayoutRectsGeneratorContext::operator()(rect);
1374 } 1374 }
1375 }; 1375 };
1376 1376
1377 } // unnamed namespace 1377 } // unnamed namespace
1378 1378
1379 void LayoutInline::addFocusRingRects(Vector<LayoutRect>& rects, const LayoutPoin t& additionalOffset) const 1379 void LayoutInline::addOutlineRects(Vector<LayoutRect>& rects, const LayoutPoint& additionalOffset) const
1380 { 1380 {
1381 // Add line boxes only if this object is the first object of addFocusRingRec ts(). 1381 // Add line boxes only if this object is the first object of addOutlineRects ().
1382 // Otherwise the parent (LayoutBlockFlow or LayoutInline) should have added line box rects 1382 // Otherwise the parent (LayoutBlockFlow or LayoutInline) should have added line box rects
1383 // covering those of this object. 1383 // covering those of this object.
1384 if (rects.isEmpty()) { 1384 if (rects.isEmpty()) {
1385 AbsoluteLayoutRectsIgnoringEmptyRectsGeneratorContext context(rects, add itionalOffset); 1385 AbsoluteLayoutRectsIgnoringEmptyRectsGeneratorContext context(rects, add itionalOffset);
1386 generateLineBoxRects(context); 1386 generateLineBoxRects(context);
1387 } 1387 }
1388 1388
1389 addFocusRingRectsForNormalChildren(rects, additionalOffset); 1389 addOutlineRectsForNormalChildren(rects, additionalOffset);
1390 1390
1391 if (LayoutBoxModelObject* continuation = this->continuation()) { 1391 if (LayoutBoxModelObject* continuation = this->continuation()) {
1392 if (continuation->isInline()) 1392 if (continuation->isInline())
1393 continuation->addFocusRingRects(rects, additionalOffset + (continuat ion->containingBlock()->location() - containingBlock()->location())); 1393 continuation->addOutlineRects(rects, additionalOffset + (continuatio n->containingBlock()->location() - containingBlock()->location()));
1394 else 1394 else
1395 continuation->addFocusRingRects(rects, additionalOffset + (toLayoutB ox(continuation)->location() - containingBlock()->location())); 1395 continuation->addOutlineRects(rects, additionalOffset + (toLayoutBox (continuation)->location() - containingBlock()->location()));
1396 } 1396 }
1397 } 1397 }
1398 1398
1399 void LayoutInline::computeSelfHitTestRects(Vector<LayoutRect>& rects, const Layo utPoint& layerOffset) const 1399 void LayoutInline::computeSelfHitTestRects(Vector<LayoutRect>& rects, const Layo utPoint& layerOffset) const
1400 { 1400 {
1401 AbsoluteLayoutRectsGeneratorContext context(rects, layerOffset); 1401 AbsoluteLayoutRectsGeneratorContext context(rects, layerOffset);
1402 generateLineBoxRects(context); 1402 generateLineBoxRects(context);
1403 } 1403 }
1404 1404
1405 void LayoutInline::addAnnotatedRegions(Vector<AnnotatedRegionValue>& regions) 1405 void LayoutInline::addAnnotatedRegions(Vector<AnnotatedRegionValue>& regions)
(...skipping 21 matching lines...) Expand all
1427 } 1427 }
1428 1428
1429 void LayoutInline::invalidateDisplayItemClients(const LayoutBoxModelObject& pain tInvalidationContainer) const 1429 void LayoutInline::invalidateDisplayItemClients(const LayoutBoxModelObject& pain tInvalidationContainer) const
1430 { 1430 {
1431 LayoutBoxModelObject::invalidateDisplayItemClients(paintInvalidationContaine r); 1431 LayoutBoxModelObject::invalidateDisplayItemClients(paintInvalidationContaine r);
1432 for (InlineFlowBox* box = firstLineBox(); box; box = box->nextLineBox()) 1432 for (InlineFlowBox* box = firstLineBox(); box; box = box->nextLineBox())
1433 paintInvalidationContainer.invalidateDisplayItemClientOnBacking(*box); 1433 paintInvalidationContainer.invalidateDisplayItemClientOnBacking(*box);
1434 } 1434 }
1435 1435
1436 } // namespace blink 1436 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698