QRect QtViewportHandler::visibleContentsRect() const { const QRectF visibleRect(m_viewportItem->boundingRect().intersected(m_pageItem->boundingRect())); // We avoid using toAlignedRect() because it produces inconsistent width and height. QRectF mappedRect(m_viewportItem->mapRectToWebContent(visibleRect)); return QRect(floor(mappedRect.x()), floor(mappedRect.y()), floor(mappedRect.width()), floor(mappedRect.height())); }
FloatRect TransformationMatrix::mapRect(const FloatRect& r) const { if (isIdentityOrTranslation()) { FloatRect mappedRect(r); mappedRect.move(static_cast<float>(m_matrix[3][0]), static_cast<float>(m_matrix[3][1])); return mappedRect; } FloatQuad resultQuad = mapQuad(FloatQuad(r)); return resultQuad.boundingBox(); }
FloatRect AffineTransform::mapRect(const FloatRect& rect) const { if (isIdentityOrTranslation()) { FloatRect mappedRect(rect); mappedRect.move(narrowPrecisionToFloat(m_transform[4]), narrowPrecisionToFloat(m_transform[5])); return mappedRect; } FloatQuad result; result.setP1(mapPoint(rect.location())); result.setP2(mapPoint(FloatPoint(rect.right(), rect.y()))); result.setP3(mapPoint(FloatPoint(rect.right(), rect.bottom()))); result.setP4(mapPoint(FloatPoint(rect.x(), rect.bottom()))); return result.boundingBox(); }