| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2012 Apple Inc. All rights reserved. | 2 * Copyright (C) 2012 Apple Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
| 8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
| 9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
| 10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
| (...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 424 overflowRect.shiftMaxYEdgeTo(portionRect.maxY() + colGap - colGap /
2); | 424 overflowRect.shiftMaxYEdgeTo(portionRect.maxY() + colGap - colGap /
2); |
| 425 } | 425 } |
| 426 return overflowRect; | 426 return overflowRect; |
| 427 } | 427 } |
| 428 | 428 |
| 429 void RenderMultiColumnSet::paintObject(const PaintInfo& paintInfo, const LayoutP
oint& paintOffset) | 429 void RenderMultiColumnSet::paintObject(const PaintInfo& paintInfo, const LayoutP
oint& paintOffset) |
| 430 { | 430 { |
| 431 MultiColumnSetPainter(*this).paintObject(paintInfo, paintOffset); | 431 MultiColumnSetPainter(*this).paintObject(paintInfo, paintOffset); |
| 432 } | 432 } |
| 433 | 433 |
| 434 void RenderMultiColumnSet::paintInvalidationForFlowThreadContent(const LayoutRec
t& paintInvalidationRect) | |
| 435 { | |
| 436 // Figure out the start and end columns and only check within that range so
that we don't walk the | |
| 437 // entire column set. Put the paint invalidation rect into flow thread coord
inates by flipping it first. | |
| 438 LayoutRect flowThreadPaintInvalidationRect(paintInvalidationRect); | |
| 439 flowThread()->flipForWritingMode(flowThreadPaintInvalidationRect); | |
| 440 | |
| 441 // Now we can compare this rect with the flow thread portions owned by each
column. First let's | |
| 442 // just see if the paint invalidation rect intersects our flow thread portio
n at all. | |
| 443 LayoutRect clippedRect(flowThreadPaintInvalidationRect); | |
| 444 clippedRect.intersect(RenderRegion::flowThreadPortionOverflowRect()); | |
| 445 if (clippedRect.isEmpty()) | |
| 446 return; | |
| 447 | |
| 448 // Now we know we intersect at least one column. Let's figure out the logica
l top and logical | |
| 449 // bottom of the area in which we're issuing paint invalidations. | |
| 450 LayoutUnit paintInvalidationLogicalTop = isHorizontalWritingMode() ? flowThr
eadPaintInvalidationRect.y() : flowThreadPaintInvalidationRect.x(); | |
| 451 LayoutUnit paintInvalidationLogicalBottom = (isHorizontalWritingMode() ? flo
wThreadPaintInvalidationRect.maxY() : flowThreadPaintInvalidationRect.maxX()) -
1; | |
| 452 | |
| 453 unsigned startColumn = columnIndexAtOffset(paintInvalidationLogicalTop); | |
| 454 unsigned endColumn = columnIndexAtOffset(paintInvalidationLogicalBottom); | |
| 455 | |
| 456 LayoutUnit colGap = columnGap(); | |
| 457 unsigned colCount = actualColumnCount(); | |
| 458 for (unsigned i = startColumn; i <= endColumn; i++) { | |
| 459 LayoutRect colRect = columnRectAt(i); | |
| 460 | |
| 461 // Get the portion of the flow thread that corresponds to this column. | |
| 462 LayoutRect flowThreadPortion = flowThreadPortionRectAt(i); | |
| 463 | |
| 464 // Now get the overflow rect that corresponds to the column. | |
| 465 LayoutRect flowThreadOverflowPortion = flowThreadPortionOverflowRect(flo
wThreadPortion, i, colCount, colGap); | |
| 466 | |
| 467 // Do a paint invalidation for this specific column. | |
| 468 paintInvalidationOfFlowThreadContentRectangle(paintInvalidationRect, flo
wThreadPortion, flowThreadOverflowPortion, colRect.location()); | |
| 469 } | |
| 470 } | |
| 471 | |
| 472 void RenderMultiColumnSet::collectLayerFragments(LayerFragments& fragments, cons
t LayoutRect& layerBoundingBox, const LayoutRect& dirtyRect) | 434 void RenderMultiColumnSet::collectLayerFragments(LayerFragments& fragments, cons
t LayoutRect& layerBoundingBox, const LayoutRect& dirtyRect) |
| 473 { | 435 { |
| 474 // |layerBoundingBox| is in the flow thread coordinate space, relative to th
e top/left edge of | 436 // |layerBoundingBox| is in the flow thread coordinate space, relative to th
e top/left edge of |
| 475 // the flow thread, but note that it has been converted with respect to writ
ing mode (so that | 437 // the flow thread, but note that it has been converted with respect to writ
ing mode (so that |
| 476 // it's visual/physical in that sense). | 438 // it's visual/physical in that sense). |
| 477 // | 439 // |
| 478 // |dirtyRect| is visual, relative to the multicol container. | 440 // |dirtyRect| is visual, relative to the multicol container. |
| 479 // | 441 // |
| 480 // Then there's the output from this method - the stuff we put into the list
of fragments. The | 442 // Then there's the output from this method - the stuff we put into the list
of fragments. The |
| 481 // fragment.paginationOffset point is the actual visual translation required
to get from a | 443 // fragment.paginationOffset point is the actual visual translation required
to get from a |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 628 | 590 |
| 629 void RenderMultiColumnSet::detachRegion() | 591 void RenderMultiColumnSet::detachRegion() |
| 630 { | 592 { |
| 631 if (m_flowThread) { | 593 if (m_flowThread) { |
| 632 m_flowThread->removeRegionFromThread(this); | 594 m_flowThread->removeRegionFromThread(this); |
| 633 m_flowThread = 0; | 595 m_flowThread = 0; |
| 634 } | 596 } |
| 635 } | 597 } |
| 636 | 598 |
| 637 } | 599 } |
| OLD | NEW |