static LayoutRect getShapeImageReplacedRect(const RenderBox& renderBox, const StyleImage& styleImage) { if (renderBox.isRenderImage()) { const RenderImage& renderImage = *toRenderImage(&renderBox); return renderImage.replacedContentRect(renderBox.intrinsicSize()); } ASSERT(styleImage.cachedImage()); ASSERT(styleImage.cachedImage()->hasImage()); return LayoutRect(LayoutPoint(), styleImage.cachedImage()->image()->size()); }
static void getShapeImageAndRect(const ShapeValue& shapeValue, const RenderBox& renderBox, const LayoutSize& referenceBoxSize, Image*& image, LayoutRect& rect) { ASSERT(shapeValue.isImageValid()); StyleImage* styleImage = shapeValue.image(); const LayoutSize& imageSize = renderBox.calculateImageIntrinsicDimensions(styleImage, roundedIntSize(referenceBoxSize), RenderImage::ScaleByEffectiveZoom); styleImage->setContainerSizeForRenderer(&renderBox, imageSize, renderBox.style().effectiveZoom()); image = nullptr; if (styleImage->isCachedImage() || styleImage->isCachedImageSet()) image = styleImage->cachedImage()->imageForRenderer(&renderBox); else if (styleImage->isGeneratedImage()) image = styleImage->image(const_cast<RenderBox*>(&renderBox), imageSize).get(); if (renderBox.isRenderImage()) rect = toRenderImage(&renderBox)->replacedContentRect(renderBox.intrinsicSize()); else rect = LayoutRect(LayoutPoint(), imageSize); }