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. All rights reserv
ed. | 6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserv
ed. |
7 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. | 7 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. |
8 * | 8 * |
9 * This library is free software; you can redistribute it and/or | 9 * This library is free software; you can redistribute it and/or |
10 * modify it under the terms of the GNU Library General Public | 10 * modify it under the terms of the GNU Library General Public |
(...skipping 1466 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1477 if (shouldDrawBackgroundInSeparateBuffer) | 1477 if (shouldDrawBackgroundInSeparateBuffer) |
1478 context->endLayer(); | 1478 context->endLayer(); |
1479 } | 1479 } |
1480 | 1480 |
1481 void RenderBox::paintFillLayer(const PaintInfo& paintInfo, const Color& c, const
FillLayer* fillLayer, const LayoutRect& rect, | 1481 void RenderBox::paintFillLayer(const PaintInfo& paintInfo, const Color& c, const
FillLayer* fillLayer, const LayoutRect& rect, |
1482 BackgroundBleedAvoidance bleedAvoidance, CompositeOperator op, RenderObject*
backgroundObject) | 1482 BackgroundBleedAvoidance bleedAvoidance, CompositeOperator op, RenderObject*
backgroundObject) |
1483 { | 1483 { |
1484 paintFillLayerExtended(paintInfo, c, fillLayer, rect, bleedAvoidance, 0, Lay
outSize(), op, backgroundObject); | 1484 paintFillLayerExtended(paintInfo, c, fillLayer, rect, bleedAvoidance, 0, Lay
outSize(), op, backgroundObject); |
1485 } | 1485 } |
1486 | 1486 |
1487 static bool layersUseImage(WrappedImagePtr image, const FillLayer* layers) | |
1488 { | |
1489 for (const FillLayer* curLayer = layers; curLayer; curLayer = curLayer->next
()) { | |
1490 if (curLayer->image() && image == curLayer->image()->data()) | |
1491 return true; | |
1492 } | |
1493 | |
1494 return false; | |
1495 } | |
1496 | |
1497 void RenderBox::imageChanged(WrappedImagePtr image, const IntRect*) | 1487 void RenderBox::imageChanged(WrappedImagePtr image, const IntRect*) |
1498 { | 1488 { |
1499 if (!parent()) | 1489 if (!parent()) |
1500 return; | 1490 return; |
1501 | 1491 |
1502 AllowPaintInvalidationScope scoper(frameView()); | 1492 AllowPaintInvalidationScope scoper(frameView()); |
1503 | 1493 |
1504 if ((style()->borderImage().image() && style()->borderImage().image()->data(
) == image) || | 1494 if ((style()->borderImage().image() && style()->borderImage().image()->data(
) == image) || |
1505 (style()->maskBoxImage().image() && style()->maskBoxImage().image()->dat
a() == image)) { | 1495 (style()->maskBoxImage().image() && style()->maskBoxImage().image()->dat
a() == image)) { |
1506 repaint(); | 1496 repaint(); |
1507 return; | 1497 return; |
1508 } | 1498 } |
1509 | 1499 |
1510 ShapeValue* shapeOutsideValue = style()->shapeOutside(); | 1500 ShapeValue* shapeOutsideValue = style()->shapeOutside(); |
1511 if (!frameView()->isInPerformLayout() && isFloating() && shapeOutsideValue &
& shapeOutsideValue->image() && shapeOutsideValue->image()->data() == image) { | 1501 if (!frameView()->isInPerformLayout() && isFloating() && shapeOutsideValue &
& shapeOutsideValue->image() && shapeOutsideValue->image()->data() == image) { |
1512 ShapeOutsideInfo::ensureInfo(*this).markShapeAsDirty(); | 1502 ShapeOutsideInfo::ensureInfo(*this).markShapeAsDirty(); |
1513 markShapeOutsideDependentsForLayout(); | 1503 markShapeOutsideDependentsForLayout(); |
1514 } | 1504 } |
1515 | 1505 |
1516 bool didFullRepaint = repaintLayerRectsForImage(image, style()->backgroundLa
yers(), true); | 1506 bool didFullRepaint = repaintLayerRectsForImage(image, style()->backgroundLa
yers(), true); |
1517 if (!didFullRepaint) | 1507 if (!didFullRepaint) |
1518 repaintLayerRectsForImage(image, style()->maskLayers(), false); | 1508 repaintLayerRectsForImage(image, style()->maskLayers(), false); |
1519 | |
1520 if (hasLayer() && layer()->hasCompositedMask() && layersUseImage(image, styl
e()->maskLayers())) | |
1521 layer()->contentChanged(MaskImageChanged); | |
1522 } | 1509 } |
1523 | 1510 |
1524 bool RenderBox::repaintLayerRectsForImage(WrappedImagePtr image, const FillLayer
* layers, bool drawingBackground) | 1511 bool RenderBox::repaintLayerRectsForImage(WrappedImagePtr image, const FillLayer
* layers, bool drawingBackground) |
1525 { | 1512 { |
1526 LayoutRect rendererRect; | 1513 LayoutRect rendererRect; |
1527 RenderBox* layerRenderer = 0; | 1514 RenderBox* layerRenderer = 0; |
1528 | 1515 |
1529 for (const FillLayer* curLayer = layers; curLayer; curLayer = curLayer->next
()) { | 1516 for (const FillLayer* curLayer = layers; curLayer; curLayer = curLayer->next
()) { |
1530 if (curLayer->image() && image == curLayer->image()->data() && curLayer-
>image()->canRender(*this, style()->effectiveZoom())) { | 1517 if (curLayer->image() && image == curLayer->image()->data() && curLayer-
>image()->canRender(*this, style()->effectiveZoom())) { |
1531 // Now that we know this image is being used, compute the renderer a
nd the rect if we haven't already. | 1518 // Now that we know this image is being used, compute the renderer a
nd the rect if we haven't already. |
(...skipping 3165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4697 return 0; | 4684 return 0; |
4698 | 4685 |
4699 if (!layoutState && !flowThreadContainingBlock()) | 4686 if (!layoutState && !flowThreadContainingBlock()) |
4700 return 0; | 4687 return 0; |
4701 | 4688 |
4702 RenderBlock* containerBlock = containingBlock(); | 4689 RenderBlock* containerBlock = containingBlock(); |
4703 return containerBlock->offsetFromLogicalTopOfFirstPage() + logicalTop(); | 4690 return containerBlock->offsetFromLogicalTopOfFirstPage() + logicalTop(); |
4704 } | 4691 } |
4705 | 4692 |
4706 } // namespace WebCore | 4693 } // namespace WebCore |
OLD | NEW |