OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 1999 Antti Koivisto (koivisto@kde.org) | 2 * Copyright (C) 1999 Antti Koivisto (koivisto@kde.org) |
3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights | 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights |
4 * reserved. | 4 * reserved. |
5 * Copyright (C) 2011 Adobe Systems Incorporated. All rights reserved. | 5 * Copyright (C) 2011 Adobe Systems Incorporated. All rights reserved. |
6 * | 6 * |
7 * This library is free software; you can redistribute it and/or | 7 * This library is free software; you can redistribute it and/or |
8 * modify it under the terms of the GNU Library General Public | 8 * modify it under the terms of the GNU Library General Public |
9 * License as published by the Free Software Foundation; either | 9 * License as published by the Free Software Foundation; either |
10 * version 2 of the License, or (at your option) any later version. | 10 * version 2 of the License, or (at your option) any later version. |
(...skipping 510 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
521 | 521 |
522 if ((!diff.needsFullLayout() || !diff.needsFullPaintInvalidation()) && | 522 if ((!diff.needsFullLayout() || !diff.needsFullPaintInvalidation()) && |
523 diffNeedsFullLayoutAndPaintInvalidation(other)) { | 523 diffNeedsFullLayoutAndPaintInvalidation(other)) { |
524 diff.setNeedsFullLayout(); | 524 diff.setNeedsFullLayout(); |
525 diff.setNeedsPaintInvalidationObject(); | 525 diff.setNeedsPaintInvalidationObject(); |
526 } | 526 } |
527 | 527 |
528 if (!diff.needsFullLayout() && diffNeedsFullLayout(other)) | 528 if (!diff.needsFullLayout() && diffNeedsFullLayout(other)) |
529 diff.setNeedsFullLayout(); | 529 diff.setNeedsFullLayout(); |
530 | 530 |
531 if (!diff.needsFullLayout() && | 531 if (!diff.needsFullLayout() && margin() != other.margin()) { |
532 m_surround->m_margin != other.m_surround->m_margin) { | |
533 // Relative-positioned elements collapse their margins so need a full | 532 // Relative-positioned elements collapse their margins so need a full |
534 // layout. | 533 // layout. |
535 if (hasOutOfFlowPosition()) | 534 if (hasOutOfFlowPosition()) |
536 diff.setNeedsPositionedMovementLayout(); | 535 diff.setNeedsPositionedMovementLayout(); |
537 else | 536 else |
538 diff.setNeedsFullLayout(); | 537 diff.setNeedsFullLayout(); |
539 } | 538 } |
540 | 539 |
541 if (!diff.needsFullLayout() && position() != EPosition::kStatic && | 540 if (!diff.needsFullLayout() && position() != EPosition::kStatic && |
542 !offsetEqual(other)) { | 541 !offsetEqual(other)) { |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
581 if (m_box->width() != other.m_box->width() || | 580 if (m_box->width() != other.m_box->width() || |
582 m_box->minWidth() != other.m_box->minWidth() || | 581 m_box->minWidth() != other.m_box->minWidth() || |
583 m_box->maxWidth() != other.m_box->maxWidth() || | 582 m_box->maxWidth() != other.m_box->maxWidth() || |
584 m_box->height() != other.m_box->height() || | 583 m_box->height() != other.m_box->height() || |
585 m_box->minHeight() != other.m_box->minHeight() || | 584 m_box->minHeight() != other.m_box->minHeight() || |
586 m_box->maxHeight() != other.m_box->maxHeight()) | 585 m_box->maxHeight() != other.m_box->maxHeight()) |
587 return true; | 586 return true; |
588 } | 587 } |
589 | 588 |
590 if (m_surround.get() != other.m_surround.get()) { | 589 if (m_surround.get() != other.m_surround.get()) { |
591 if (m_surround->m_margin != other.m_surround->m_margin || | 590 if (margin() != other.margin() || !offsetEqual(other) || |
Bugs Nash
2017/04/03 00:12:48
what methods are these margin() and padding() call
shend
2017/04/03 00:58:48
It's being added in a parent patch (https://codere
| |
592 !offsetEqual(other) || | 591 padding() != other.padding()) |
593 m_surround->m_padding != other.m_surround->m_padding) | |
594 return true; | 592 return true; |
595 } | 593 } |
596 | 594 |
597 if (diff.transformChanged()) | 595 if (diff.transformChanged()) |
598 return true; | 596 return true; |
599 | 597 |
600 return false; | 598 return false; |
601 } | 599 } |
602 | 600 |
603 bool ComputedStyle::diffNeedsFullLayoutAndPaintInvalidation( | 601 bool ComputedStyle::diffNeedsFullLayoutAndPaintInvalidation( |
604 const ComputedStyle& other) const { | 602 const ComputedStyle& other) const { |
605 // FIXME: Not all cases in this method need both full layout and paint | 603 // FIXME: Not all cases in this method need both full layout and paint |
606 // invalidation. | 604 // invalidation. |
607 // Should move cases into diffNeedsFullLayout() if | 605 // Should move cases into diffNeedsFullLayout() if |
608 // - don't need paint invalidation at all; | 606 // - don't need paint invalidation at all; |
609 // - or the layoutObject knows how to exactly invalidate paints caused by the | 607 // - or the layoutObject knows how to exactly invalidate paints caused by the |
610 // layout change instead of forced full paint invalidation. | 608 // layout change instead of forced full paint invalidation. |
611 | 609 |
612 if (m_surround.get() != other.m_surround.get()) { | 610 if (m_surround.get() != other.m_surround.get()) { |
613 // If our border widths change, then we need to layout. Other changes to | 611 // If our border widths change, then we need to layout. Other changes to |
614 // borders only necessitate a paint invalidation. | 612 // borders only necessitate a paint invalidation. |
615 if (borderLeftWidth() != other.borderLeftWidth() || | 613 if (borderLeftWidth() != other.borderLeftWidth() || |
616 borderTopWidth() != other.borderTopWidth() || | 614 borderTopWidth() != other.borderTopWidth() || |
617 borderBottomWidth() != other.borderBottomWidth() || | 615 borderBottomWidth() != other.borderBottomWidth() || |
618 borderRightWidth() != other.borderRightWidth()) | 616 borderRightWidth() != other.borderRightWidth()) |
619 return true; | 617 return true; |
620 | 618 |
621 if (m_surround->m_padding != other.m_surround->m_padding) | 619 if (padding() != other.padding()) |
622 return true; | 620 return true; |
623 } | 621 } |
624 | 622 |
625 if (m_rareNonInheritedData.get() != other.m_rareNonInheritedData.get()) { | 623 if (m_rareNonInheritedData.get() != other.m_rareNonInheritedData.get()) { |
626 if (m_rareNonInheritedData->m_appearance != | 624 if (m_rareNonInheritedData->m_appearance != |
627 other.m_rareNonInheritedData->m_appearance || | 625 other.m_rareNonInheritedData->m_appearance || |
628 m_rareNonInheritedData->marginBeforeCollapse != | 626 m_rareNonInheritedData->marginBeforeCollapse != |
629 other.m_rareNonInheritedData->marginBeforeCollapse || | 627 other.m_rareNonInheritedData->marginBeforeCollapse || |
630 m_rareNonInheritedData->marginAfterCollapse != | 628 m_rareNonInheritedData->marginAfterCollapse != |
631 other.m_rareNonInheritedData->marginAfterCollapse || | 629 other.m_rareNonInheritedData->marginAfterCollapse || |
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
899 } | 897 } |
900 | 898 |
901 return false; | 899 return false; |
902 } | 900 } |
903 | 901 |
904 bool ComputedStyle::diffNeedsPaintInvalidationObject( | 902 bool ComputedStyle::diffNeedsPaintInvalidationObject( |
905 const ComputedStyle& other) const { | 903 const ComputedStyle& other) const { |
906 if (visibility() != other.visibility() || | 904 if (visibility() != other.visibility() || |
907 printColorAdjust() != other.printColorAdjust() || | 905 printColorAdjust() != other.printColorAdjust() || |
908 insideLink() != other.insideLink() || | 906 insideLink() != other.insideLink() || |
909 !m_surround->m_border.visuallyEqual(other.m_surround->m_border) || | 907 !border().visuallyEqual(other.border()) || |
910 *m_background != *other.m_background) | 908 *m_background != *other.m_background) |
911 return true; | 909 return true; |
912 | 910 |
913 if (m_rareInheritedData.get() != other.m_rareInheritedData.get()) { | 911 if (m_rareInheritedData.get() != other.m_rareInheritedData.get()) { |
914 if (m_rareInheritedData->userModify != | 912 if (m_rareInheritedData->userModify != |
915 other.m_rareInheritedData->userModify || | 913 other.m_rareInheritedData->userModify || |
916 m_rareInheritedData->userSelect != | 914 m_rareInheritedData->userSelect != |
917 other.m_rareInheritedData->userSelect || | 915 other.m_rareInheritedData->userSelect || |
918 m_rareInheritedData->m_imageRendering != | 916 m_rareInheritedData->m_imageRendering != |
919 other.m_rareInheritedData->m_imageRendering) | 917 other.m_rareInheritedData->m_imageRendering) |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1032 | 1030 |
1033 if (!m_rareNonInheritedData->reflectionDataEquivalent( | 1031 if (!m_rareNonInheritedData->reflectionDataEquivalent( |
1034 *other.m_rareNonInheritedData.get())) | 1032 *other.m_rareNonInheritedData.get())) |
1035 diff.setFilterChanged(); | 1033 diff.setFilterChanged(); |
1036 | 1034 |
1037 if (!m_rareNonInheritedData->m_outline.visuallyEqual( | 1035 if (!m_rareNonInheritedData->m_outline.visuallyEqual( |
1038 other.m_rareNonInheritedData->m_outline)) | 1036 other.m_rareNonInheritedData->m_outline)) |
1039 diff.setNeedsRecomputeOverflow(); | 1037 diff.setNeedsRecomputeOverflow(); |
1040 } | 1038 } |
1041 | 1039 |
1042 if (!m_surround->m_border.visualOverflowEqual(other.m_surround->m_border)) | 1040 if (border().visualOverflowEqual(other.border())) |
1043 diff.setNeedsRecomputeOverflow(); | 1041 diff.setNeedsRecomputeOverflow(); |
1044 | 1042 |
1045 if (!diff.needsFullPaintInvalidation()) { | 1043 if (!diff.needsFullPaintInvalidation()) { |
1046 if (m_styleInheritedData->color != other.m_styleInheritedData->color || | 1044 if (m_styleInheritedData->color != other.m_styleInheritedData->color || |
1047 m_styleInheritedData->visitedLinkColor != | 1045 m_styleInheritedData->visitedLinkColor != |
1048 other.m_styleInheritedData->visitedLinkColor || | 1046 other.m_styleInheritedData->visitedLinkColor || |
1049 m_hasSimpleUnderline != other.m_hasSimpleUnderline || | 1047 m_hasSimpleUnderline != other.m_hasSimpleUnderline || |
1050 m_visual->textDecoration != other.m_visual->textDecoration) { | 1048 m_visual->textDecoration != other.m_visual->textDecoration) { |
1051 diff.setTextDecorationOrColorChanged(); | 1049 diff.setTextDecorationOrColorChanged(); |
1052 } else if (m_rareNonInheritedData.get() != | 1050 } else if (m_rareNonInheritedData.get() != |
(...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1443 void ComputedStyle::setVerticalBorderSpacing(short v) { | 1441 void ComputedStyle::setVerticalBorderSpacing(short v) { |
1444 SET_VAR(m_styleInheritedData, vertical_border_spacing, v); | 1442 SET_VAR(m_styleInheritedData, vertical_border_spacing, v); |
1445 } | 1443 } |
1446 | 1444 |
1447 FloatRoundedRect ComputedStyle::getRoundedBorderFor( | 1445 FloatRoundedRect ComputedStyle::getRoundedBorderFor( |
1448 const LayoutRect& borderRect, | 1446 const LayoutRect& borderRect, |
1449 bool includeLogicalLeftEdge, | 1447 bool includeLogicalLeftEdge, |
1450 bool includeLogicalRightEdge) const { | 1448 bool includeLogicalRightEdge) const { |
1451 FloatRoundedRect roundedRect(pixelSnappedIntRect(borderRect)); | 1449 FloatRoundedRect roundedRect(pixelSnappedIntRect(borderRect)); |
1452 if (hasBorderRadius()) { | 1450 if (hasBorderRadius()) { |
1453 FloatRoundedRect::Radii radii = | 1451 FloatRoundedRect::Radii radii = calcRadiiFor(border(), borderRect.size()); |
1454 calcRadiiFor(m_surround->m_border, borderRect.size()); | |
1455 roundedRect.includeLogicalEdges(radii, isHorizontalWritingMode(), | 1452 roundedRect.includeLogicalEdges(radii, isHorizontalWritingMode(), |
1456 includeLogicalLeftEdge, | 1453 includeLogicalLeftEdge, |
1457 includeLogicalRightEdge); | 1454 includeLogicalRightEdge); |
1458 roundedRect.constrainRadii(); | 1455 roundedRect.constrainRadii(); |
1459 } | 1456 } |
1460 return roundedRect; | 1457 return roundedRect; |
1461 } | 1458 } |
1462 | 1459 |
1463 FloatRoundedRect ComputedStyle::getRoundedInnerBorderFor( | 1460 FloatRoundedRect ComputedStyle::getRoundedInnerBorderFor( |
1464 const LayoutRect& borderRect, | 1461 const LayoutRect& borderRect, |
(...skipping 888 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2353 const NinePieceImage& image) const { | 2350 const NinePieceImage& image) const { |
2354 return LayoutRectOutsets( | 2351 return LayoutRectOutsets( |
2355 NinePieceImage::computeOutset(image.outset().top(), borderTopWidth()), | 2352 NinePieceImage::computeOutset(image.outset().top(), borderTopWidth()), |
2356 NinePieceImage::computeOutset(image.outset().right(), borderRightWidth()), | 2353 NinePieceImage::computeOutset(image.outset().right(), borderRightWidth()), |
2357 NinePieceImage::computeOutset(image.outset().bottom(), | 2354 NinePieceImage::computeOutset(image.outset().bottom(), |
2358 borderBottomWidth()), | 2355 borderBottomWidth()), |
2359 NinePieceImage::computeOutset(image.outset().left(), borderLeftWidth())); | 2356 NinePieceImage::computeOutset(image.outset().left(), borderLeftWidth())); |
2360 } | 2357 } |
2361 | 2358 |
2362 void ComputedStyle::setBorderImageSource(StyleImage* image) { | 2359 void ComputedStyle::setBorderImageSource(StyleImage* image) { |
2363 if (m_surround->m_border.m_image.image() == image) | 2360 if (border().m_image.image() == image) |
2364 return; | 2361 return; |
2365 m_surround.access()->m_border.m_image.setImage(image); | 2362 m_surround.access()->m_border.m_image.setImage(image); |
2366 } | 2363 } |
2367 | 2364 |
2368 void ComputedStyle::setBorderImageSlices(const LengthBox& slices) { | 2365 void ComputedStyle::setBorderImageSlices(const LengthBox& slices) { |
2369 if (m_surround->m_border.m_image.imageSlices() == slices) | 2366 if (border().m_image.imageSlices() == slices) |
2370 return; | 2367 return; |
2371 m_surround.access()->m_border.m_image.setImageSlices(slices); | 2368 m_surround.access()->m_border.m_image.setImageSlices(slices); |
2372 } | 2369 } |
2373 | 2370 |
2374 void ComputedStyle::setBorderImageSlicesFill(bool fill) { | 2371 void ComputedStyle::setBorderImageSlicesFill(bool fill) { |
2375 if (m_surround->m_border.m_image.fill() == fill) | 2372 if (border().m_image.fill() == fill) |
2376 return; | 2373 return; |
2377 m_surround.access()->m_border.m_image.setFill(fill); | 2374 m_surround.access()->m_border.m_image.setFill(fill); |
2378 } | 2375 } |
2379 | 2376 |
2380 void ComputedStyle::setBorderImageWidth(const BorderImageLengthBox& slices) { | 2377 void ComputedStyle::setBorderImageWidth(const BorderImageLengthBox& slices) { |
2381 if (m_surround->m_border.m_image.borderSlices() == slices) | 2378 if (border().m_image.borderSlices() == slices) |
2382 return; | 2379 return; |
2383 m_surround.access()->m_border.m_image.setBorderSlices(slices); | 2380 m_surround.access()->m_border.m_image.setBorderSlices(slices); |
2384 } | 2381 } |
2385 | 2382 |
2386 void ComputedStyle::setBorderImageOutset(const BorderImageLengthBox& outset) { | 2383 void ComputedStyle::setBorderImageOutset(const BorderImageLengthBox& outset) { |
2387 if (m_surround->m_border.m_image.outset() == outset) | 2384 if (border().m_image.outset() == outset) |
2388 return; | 2385 return; |
2389 m_surround.access()->m_border.m_image.setOutset(outset); | 2386 m_surround.access()->m_border.m_image.setOutset(outset); |
2390 } | 2387 } |
2391 | 2388 |
2392 bool ComputedStyle::borderObscuresBackground() const { | 2389 bool ComputedStyle::borderObscuresBackground() const { |
2393 if (!hasBorder()) | 2390 if (!hasBorder()) |
2394 return false; | 2391 return false; |
2395 | 2392 |
2396 // Bail if we have any border-image for now. We could look at the image alpha | 2393 // Bail if we have any border-image for now. We could look at the image alpha |
2397 // to improve this. | 2394 // to improve this. |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2473 if (value < 0) | 2470 if (value < 0) |
2474 fvalue -= 0.5f; | 2471 fvalue -= 0.5f; |
2475 else | 2472 else |
2476 fvalue += 0.5f; | 2473 fvalue += 0.5f; |
2477 } | 2474 } |
2478 | 2475 |
2479 return roundForImpreciseConversion<int>(fvalue / zoomFactor); | 2476 return roundForImpreciseConversion<int>(fvalue / zoomFactor); |
2480 } | 2477 } |
2481 | 2478 |
2482 } // namespace blink | 2479 } // namespace blink |
OLD | NEW |