Skip to content
  • eae@chromium.org's avatar
    Add pixelSnappedX/Y/Width/Height methods · d6dd62fb
    eae@chromium.org authored
    https://bugs.webkit.org/show_bug.cgi?id=78040
    
    Reviewed by Eric Seidel.
    
    Add pixel snapped versions of x/y/width/height methods. These return the
    same value as the x/w/width/height methods for now but once we move over
    to sub pixel layout they will snap the subpixel value to a device pixel
    and return an integer value.
    
    When snapping the left and top edge is simply rounded to the nearest
    device pixel.
    The right and bottom edges are computed by subtracting the rounded left/
    top edge from the precise location and size. This ensures that the edges
    all line up with device pixels and that the total size of an object,
    including borders, is at most one pixel off.
    
    In summary, the values are computed as follows:
            x: round(x)
            y: round(y)
            maxX: round(x + width)
            maxY: round(y + height)
            width: round(x + width) - round(x)
            height: round(y + height) - round(y)
    
    We use the term pixel snapped to indicate that the numbers are not merely
    rounded. This also matches the naming used by the line box tree.
    
    No new tests, no functionality changes.
    
    * page/PrintContext.cpp:
    (WebCore::PrintContext::pageNumberForElement):
    * rendering/RenderBlock.cpp:
    (WebCore::::collectIfNeeded):
    * rendering/RenderBlock.h:
    (RenderBlock):
    (WebCore::RenderBlock::pixelSnappedLogicalRightOffsetForLine):
    (WebCore::RenderBlock::pixelSnappedLogicalLeftOffsetForLine):
    (WebCore::RenderBlock::FloatingObject::pixelSnappedX):
    (WebCore::RenderBlock::FloatingObject::pixelSnappedMaxX):
    (WebCore::RenderBlock::FloatingObject::pixelSnappedY):
    (WebCore::RenderBlock::FloatingObject::pixelSnappedMaxY):
    (WebCore::RenderBlock::FloatingObject::pixelSnappedWidth):
    (WebCore::RenderBlock::FloatingObject::pixelSnappedHeight):
    (FloatingObject):
    (WebCore::RenderBlock::pixelSnappedLogicalTopForFloat):
    (WebCore::RenderBlock::pixelSnappedLogicalBottomForFloat):
    (WebCore::RenderBlock::pixelSnappedLogicalLeftForFloat):
    (WebCore::RenderBlock::pixelSnappedLogicalRightForFloat):
    * rendering/RenderBlockLineLayout.cpp:
    (WebCore::LineWidth::shrinkAvailableWidthForNewFloatIfNeeded):
    * rendering/RenderBox.cpp:
    (WebCore::RenderBox::pixelSnappedClientWidth):
    (WebCore):
    (WebCore::RenderBox::pixelSnappedClientHeight):
    (WebCore::RenderBox::scrollHeight):
    * rendering/RenderBox.h:
    (WebCore::RenderBox::pixelSnappedWidth):
    (WebCore::RenderBox::pixelSnappedHeight):
    (RenderBox):
    (WebCore::RenderBox::pixelSnappedOffsetWidth):
    (WebCore::RenderBox::pixelSnappedOffsetHeight):
    (WebCore::RenderBox::clientLogicalWidth):
    (WebCore::RenderBox::clientLogicalHeight):
    * rendering/RenderBoxModelObject.cpp:
    (WebCore::RenderBoxModelObject::pixelSnappedOffsetWidth):
    (WebCore):
    (WebCore::RenderBoxModelObject::pixelSnappedOffsetHeight):
    * rendering/RenderBoxModelObject.h:
    (WebCore::RenderBoxModelObject::pixelSnappedOffsetLeft):
    (WebCore::RenderBoxModelObject::pixelSnappedOffsetTop):
    (RenderBoxModelObject):
    * rendering/RenderLayer.cpp:
    (WebCore::RenderLayer::pixelSnappedScrollWidth):
    (WebCore):
    (WebCore::RenderLayer::pixelSnappedScrollHeight):
    (WebCore::RenderLayer::computeScrollDimensions):
    (WebCore::RenderLayer::updateScrollInfoAfterLayout):
    * rendering/RenderLayer.h:
    (RenderLayer):
    * rendering/RenderListBox.cpp:
    (WebCore::RenderListBox::scrollHeight):
    * rendering/RenderTheme.cpp:
    (WebCore::RenderTheme::volumeSliderOffsetFromMuteButton):
    * rendering/RenderTreeAsText.cpp:
    (WebCore::write):
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@107032 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    d6dd62fb