LayoutRect enclosingLayoutRect(const FloatRect& rect) { LayoutPoint location = flooredLayoutPoint(rect.minXMinYCorner()); LayoutPoint maxPoint = ceiledLayoutPoint(rect.maxXMaxYCorner()); return LayoutRect(location, maxPoint - location); }
HitTestLocation::HitTestLocation(const FloatPoint& point, const FloatQuad& quad) : m_transformedPoint(point) , m_transformedRect(quad) , m_isRectBased(true) { m_point = flooredLayoutPoint(point); m_boundingBox = enclosingIntRect(quad.boundingBox()); m_isRectilinear = quad.isRectilinear(); }
HitTestLocation::HitTestLocation(const FloatPoint& point) : m_point(flooredLayoutPoint(point)) , m_boundingBox(rectForPoint(m_point, 0, 0, 0, 0)) , m_transformedPoint(point) , m_transformedRect(m_boundingBox) , m_isRectBased(false) , m_isRectilinear(true) { }
LayoutRect enclosingLayoutRect(const FloatRect& rect) { #if ENABLE(SUBPIXEL_LAYOUT) LayoutPoint location = flooredLayoutPoint(rect.minXMinYCorner()); LayoutPoint maxPoint = ceiledLayoutPoint(rect.maxXMaxYCorner()); return LayoutRect(location, maxPoint - location); #else return enclosingIntRect(rect); #endif }
static bool hasNonEmptyBox(RenderBoxModelObject* renderer) { if (!renderer) return false; // Before calling absoluteRects, check for the common case where borderBoundingBox // is non-empty, since this is a faster check and almost always returns true. // FIXME: Why do we need to call absoluteRects at all? if (!renderer->borderBoundingBox().isEmpty()) return true; // FIXME: Since all we are checking is whether the rects are empty, could we just // pass in 0,0 for the layout point instead of calling localToAbsolute? Vector<IntRect> rects; renderer->absoluteRects(rects, flooredLayoutPoint(renderer->localToAbsolute())); size_t size = rects.size(); for (size_t i = 0; i < size; ++i) { if (!rects[i].isEmpty()) return true; } return false; }