Changeset 162356 in webkit
- Timestamp:
- Jan 20, 2014 9:27:08 AM (10 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 19 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r162354 r162356 1 2014-01-20 Andreas Kling <akling@apple.com> 2 3 Let RenderImage construct its RenderImageResource. 4 <https://webkit.org/b/127290> 5 6 Everyone who creates a RenderImage immediately follows up with 7 creating a RenderImageResource and assigning it to the image. 8 9 Let the RenderImage constructor do this instead, and make the 10 imageResource() accessors return references. This exposed a 11 number of unnecessary null checks. 12 13 Also modernized the touched code with std::unique_ptr. 14 15 Reviewed by Antti Koivisto. 16 17 * html/HTMLImageElement.cpp: 18 (WebCore::HTMLImageElement::createElementRenderer): 19 (WebCore::HTMLImageElement::didAttachRenderers): 20 * html/HTMLPlugInImageElement.cpp: 21 (WebCore::HTMLPlugInImageElement::createElementRenderer): 22 * html/HTMLVideoElement.cpp: 23 (WebCore::HTMLVideoElement::didAttachRenderers): 24 (WebCore::HTMLVideoElement::parseAttribute): 25 * html/ImageInputType.cpp: 26 (WebCore::ImageInputType::createInputRenderer): 27 (WebCore::ImageInputType::attach): 28 * loader/ImageLoader.cpp: 29 (WebCore::ImageLoader::renderImageResource): 30 * rendering/RenderElement.cpp: 31 (WebCore::RenderElement::createFor): 32 * rendering/RenderImage.cpp: 33 (WebCore::RenderImage::RenderImage): 34 (WebCore::RenderImage::~RenderImage): 35 (WebCore::RenderImage::styleDidChange): 36 (WebCore::RenderImage::imageChanged): 37 (WebCore::RenderImage::updateIntrinsicSizeIfNeeded): 38 (WebCore::RenderImage::updateInnerContentRect): 39 (WebCore::RenderImage::imageDimensionsChanged): 40 (WebCore::RenderImage::notifyFinished): 41 (WebCore::RenderImage::paintReplaced): 42 (WebCore::RenderImage::paintIntoRect): 43 (WebCore::RenderImage::foregroundIsKnownToBeOpaqueInRect): 44 (WebCore::RenderImage::minimumReplacedHeight): 45 (WebCore::RenderImage::computeIntrinsicRatioInformation): 46 (WebCore::RenderImage::embeddedContentBox): 47 * rendering/RenderImage.h: 48 (WebCore::RenderImage::imageResource): 49 (WebCore::RenderImage::cachedImage): 50 * rendering/RenderImageResource.h: 51 * rendering/RenderImageResourceStyleImage.h: 52 * rendering/RenderMedia.cpp: 53 (WebCore::RenderMedia::RenderMedia): 54 * rendering/RenderSnapshottedPlugIn.cpp: 55 (WebCore::RenderSnapshottedPlugIn::RenderSnapshottedPlugIn): 56 * rendering/RenderSnapshottedPlugIn.h: 57 * rendering/RenderVideo.cpp: 58 (WebCore::RenderVideo::calculateIntrinsicSize): 59 * rendering/style/ContentData.cpp: 60 (WebCore::ImageContentData::createContentRenderer): 61 * rendering/svg/RenderSVGImage.cpp: 62 (WebCore::RenderSVGImage::RenderSVGImage): 63 (WebCore::RenderSVGImage::~RenderSVGImage): 64 (WebCore::RenderSVGImage::updateImageViewport): 65 (WebCore::RenderSVGImage::paint): 66 (WebCore::RenderSVGImage::paintForeground): 67 * rendering/svg/RenderSVGImage.h: 68 * svg/SVGImageElement.cpp: 69 (WebCore::SVGImageElement::didAttachRenderers): 70 1 71 2014-01-20 Antti Koivisto <antti@apple.com> 2 72 -
trunk/Source/WebCore/html/HTMLImageElement.cpp
r161754 r162356 180 180 return RenderElement::createFor(*this, std::move(style)); 181 181 182 auto image = createRenderer<RenderImage>(*this, std::move(style)); 183 image->setImageResource(RenderImageResource::create()); 184 return std::move(image); 182 return createRenderer<RenderImage>(*this, std::move(style)); 185 183 } 186 184 … … 200 198 return; 201 199 RenderImage* renderImage = toRenderImage(renderer()); 202 RenderImageResource *renderImageResource = renderImage->imageResource();203 if (renderImageResource ->hasImage())200 RenderImageResource& renderImageResource = renderImage->imageResource(); 201 if (renderImageResource.hasImage()) 204 202 return; 205 renderImageResource ->setCachedImage(m_imageLoader.image());203 renderImageResource.setCachedImage(m_imageLoader.image()); 206 204 207 205 // If we have no image at all because we have no src attribute, set 208 206 // image height and width for the alt text instead. 209 if (!m_imageLoader.image() && !renderImageResource ->cachedImage())207 if (!m_imageLoader.image() && !renderImageResource.cachedImage()) 210 208 renderImage->setImageSizeForAltText(); 211 209 } -
trunk/Source/WebCore/html/HTMLPlugInImageElement.cpp
r161768 r162356 223 223 return RenderElement::createFor(*this, std::move(style)); 224 224 225 if (isImageType()) { 226 auto image = createRenderer<RenderImage>(*this, std::move(style)); 227 image->setImageResource(RenderImageResource::create()); 228 return std::move(image); 229 } 225 if (isImageType()) 226 return createRenderer<RenderImage>(*this, std::move(style)); 230 227 231 228 #if PLATFORM(IOS) -
trunk/Source/WebCore/html/HTMLVideoElement.cpp
r161899 r162356 90 90 m_imageLoader->updateFromElement(); 91 91 if (renderer()) 92 toRenderImage(renderer())->imageResource() ->setCachedImage(m_imageLoader->image());92 toRenderImage(renderer())->imageResource().setCachedImage(m_imageLoader->image()); 93 93 } 94 94 #if ENABLE(PLUGIN_PROXY_FOR_VIDEO) … … 130 130 } else { 131 131 if (renderer()) 132 toRenderImage(renderer())->imageResource() ->setCachedImage(0);132 toRenderImage(renderer())->imageResource().setCachedImage(0); 133 133 } 134 134 } -
trunk/Source/WebCore/html/ImageInputType.cpp
r161167 r162356 104 104 RenderPtr<RenderElement> ImageInputType::createInputRenderer(PassRef<RenderStyle> style) 105 105 { 106 auto image = createRenderer<RenderImage>(element(), std::move(style)); 107 image->setImageResource(RenderImageResource::create()); 108 return std::move(image); 106 return createRenderer<RenderImage>(element(), std::move(style)); 109 107 } 110 108 … … 138 136 return; 139 137 140 RenderImageResource*imageResource = renderer->imageResource();141 imageResource ->setCachedImage(imageLoader->image());138 auto& imageResource = renderer->imageResource(); 139 imageResource.setCachedImage(imageLoader->image()); 142 140 143 141 // If we have no image at all because we have no src attribute, set 144 142 // image height and width for the alt text instead. 145 if (!imageLoader->image() && !imageResource ->cachedImage())143 if (!imageLoader->image() && !imageResource.cachedImage()) 146 144 renderer->setImageSizeForAltText(); 147 145 } -
trunk/Source/WebCore/loader/ImageLoader.cpp
r161768 r162356 327 327 // See <https://bugs.webkit.org/show_bug.cgi?id=42840> 328 328 if (renderer->isImage() && !toRenderImage(*renderer).isGeneratedContent()) 329 return toRenderImage(*renderer).imageResource();329 return &toRenderImage(*renderer).imageResource(); 330 330 331 331 #if ENABLE(SVG) 332 332 if (renderer->isSVGImage()) 333 return toRenderSVGImage(renderer)->imageResource();333 return &toRenderSVGImage(renderer)->imageResource(); 334 334 #endif 335 335 336 336 #if ENABLE(VIDEO) 337 337 if (renderer->isVideo()) 338 return toRenderVideo(*renderer).imageResource();338 return &toRenderVideo(*renderer).imageResource(); 339 339 #endif 340 340 -
trunk/Source/WebCore/rendering/RenderElement.cpp
r162132 r162356 132 132 const ContentData* contentData = style.get().contentData(); 133 133 if (contentData && !contentData->next() && contentData->isImage() && !element.isPseudoElement()) { 134 auto image = createRenderer<RenderImage>(element, std::move(style));135 if (const StyleImage* styleImage = static_cast<const ImageContentData*>(contentData)->image()) {136 image->setImageResource(RenderImageResourceStyleImage::create(const_cast<StyleImage&>(*styleImage)));134 auto styleImage = const_cast<StyleImage*>(static_cast<const ImageContentData*>(contentData)->image()); 135 auto image = createRenderer<RenderImage>(element, std::move(style), styleImage); 136 if (styleImage) 137 137 image->setIsGeneratedContent(); 138 } else139 image->setImageResource(RenderImageResource::create());140 138 return std::move(image); 141 139 } -
trunk/Source/WebCore/rendering/RenderImage.cpp
r161740 r162356 45 45 #include "Page.h" 46 46 #include "PaintInfo.h" 47 #include "RenderImageResourceStyleImage.h" 47 48 #include "RenderView.h" 48 49 #include "SVGImage.h" … … 116 117 using namespace HTMLNames; 117 118 118 RenderImage::RenderImage(Element& element, PassRef<RenderStyle> style )119 RenderImage::RenderImage(Element& element, PassRef<RenderStyle> style, StyleImage* styleImage) 119 120 : RenderReplaced(element, std::move(style), IntSize()) 121 , m_imageResource(styleImage ? std::make_unique<RenderImageResourceStyleImage>(*styleImage) : std::make_unique<RenderImageResource>()) 120 122 , m_needsToSetSizeForAltText(false) 121 123 , m_didIncrementVisuallyNonEmptyPixelCount(false) … … 123 125 { 124 126 updateAltText(); 125 } 126 127 RenderImage::RenderImage(Document& document, PassRef<RenderStyle> style) 127 imageResource().initialize(this); 128 } 129 130 RenderImage::RenderImage(Document& document, PassRef<RenderStyle> style, StyleImage* styleImage) 128 131 : RenderReplaced(document, std::move(style), IntSize()) 132 , m_imageResource(styleImage ? std::make_unique<RenderImageResourceStyleImage>(*styleImage) : std::make_unique<RenderImageResource>()) 129 133 , m_needsToSetSizeForAltText(false) 130 134 , m_didIncrementVisuallyNonEmptyPixelCount(false) 131 135 , m_isGeneratedContent(false) 132 136 { 137 imageResource().initialize(this); 133 138 } 134 139 135 140 RenderImage::~RenderImage() 136 141 { 137 ASSERT(m_imageResource); 138 m_imageResource->shutdown(); 142 imageResource().shutdown(); 139 143 } 140 144 … … 149 153 style.get().inheritFrom(&pseudoStyle); 150 154 return style; 151 }152 153 void RenderImage::setImageResource(PassOwnPtr<RenderImageResource> imageResource)154 {155 ASSERT(!m_imageResource);156 m_imageResource = imageResource;157 m_imageResource->initialize(this);158 155 } 159 156 … … 218 215 RenderReplaced::styleDidChange(diff, oldStyle); 219 216 if (m_needsToSetSizeForAltText) { 220 if (!m_altText.isEmpty() && setImageSizeForAltText( m_imageResource->cachedImage()))217 if (!m_altText.isEmpty() && setImageSizeForAltText(imageResource().cachedImage())) 221 218 imageDimensionsChanged(true /* imageSizeChanged */); 222 219 m_needsToSetSizeForAltText = false; … … 247 244 RenderReplaced::imageChanged(newImage, rect); 248 245 249 if (!m_imageResource) 250 return; 251 252 if (newImage != m_imageResource->imagePtr() || !newImage) 246 if (newImage != imageResource().imagePtr() || !newImage) 253 247 return; 254 248 255 249 if (!m_didIncrementVisuallyNonEmptyPixelCount) { 256 250 // At a zoom level of 1 the image is guaranteed to have an integer size. 257 view().frameView().incrementVisuallyNonEmptyPixelCount(flooredIntSize( m_imageResource->imageSize(1.0f)));251 view().frameView().incrementVisuallyNonEmptyPixelCount(flooredIntSize(imageResource().imageSize(1.0f))); 258 252 m_didIncrementVisuallyNonEmptyPixelCount = true; 259 253 } … … 262 256 263 257 // Set image dimensions, taking into account the size of the alt text. 264 if ( m_imageResource->errorOccurred()) {258 if (imageResource().errorOccurred()) { 265 259 if (!m_altText.isEmpty() && document().hasPendingStyleRecalc()) { 266 260 ASSERT(element()); … … 271 265 return; 272 266 } 273 imageSizeChanged = setImageSizeForAltText( m_imageResource->cachedImage());267 imageSizeChanged = setImageSizeForAltText(imageResource().cachedImage()); 274 268 } 275 269 … … 281 275 if (newSize == intrinsicSize() && !imageSizeChanged) 282 276 return false; 283 if ( m_imageResource->errorOccurred())277 if (imageResource().errorOccurred()) 284 278 return imageSizeChanged; 285 279 setIntrinsicSize(newSize); … … 293 287 IntSize containerSize(paintRect.width(), paintRect.height()); 294 288 if (!containerSize.isEmpty()) 295 m_imageResource->setContainerSizeForRenderer(containerSize);289 imageResource().setContainerSizeForRenderer(containerSize); 296 290 } 297 291 … … 304 298 if (scale <= 0) 305 299 scale = 1; 306 bool intrinsicSizeChanged = updateIntrinsicSizeIfNeeded( m_imageResource->intrinsicSize(style().effectiveZoom() / scale), imageSizeChanged);300 bool intrinsicSizeChanged = updateIntrinsicSizeIfNeeded(imageResource().intrinsicSize(style().effectiveZoom() / scale), imageSizeChanged); 307 301 #else 308 bool intrinsicSizeChanged = updateIntrinsicSizeIfNeeded( m_imageResource->intrinsicSize(style().effectiveZoom()), imageSizeChanged);302 bool intrinsicSizeChanged = updateIntrinsicSizeIfNeeded(imageResource().intrinsicSize(style().effectiveZoom()), imageSizeChanged); 309 303 #endif 310 304 … … 363 357 // The image changed rect is in source image coordinates (pre-zooming), 364 358 // so map from the bounds of the image to the contentsBox. 365 repaintRect = enclosingIntRect(mapRect(*rect, FloatRect(FloatPoint(), m_imageResource->imageSize(1.0f)), contentBoxRect()));359 repaintRect = enclosingIntRect(mapRect(*rect, FloatRect(FloatPoint(), imageResource().imageSize(1.0f)), contentBoxRect())); 366 360 // Guard against too-large changed rects. 367 361 repaintRect.intersect(contentBoxRect()); … … 380 374 void RenderImage::notifyFinished(CachedResource* newImage) 381 375 { 382 if (!m_imageResource)383 return;384 385 376 if (documentBeingDestroyed()) 386 377 return; … … 389 380 390 381 #if USE(ACCELERATED_COMPOSITING) 391 if (newImage == m_imageResource->cachedImage()) {382 if (newImage == imageResource().cachedImage()) { 392 383 // tell any potential compositing layers 393 384 // that the image is done and they can reference it directly. … … 412 403 Page* page = frame().page(); 413 404 414 if (! m_imageResource->hasImage() || m_imageResource->errorOccurred()) {405 if (!imageResource().hasImage() || imageResource().errorOccurred()) { 415 406 if (paintInfo.phase == PaintPhaseSelection) 416 407 return; … … 435 426 LayoutUnit usableHeight = cHeight - 2 * borderWidth; 436 427 437 RefPtr<Image> image = m_imageResource->image();438 439 if ( m_imageResource->errorOccurred() && !image->isNull() && usableWidth >= image->width() && usableHeight >= image->height()) {428 RefPtr<Image> image = imageResource().image(); 429 430 if (imageResource().errorOccurred() && !image->isNull() && usableWidth >= image->width() && usableHeight >= image->height()) { 440 431 float deviceScaleFactor = WebCore::deviceScaleFactor(&frame()); 441 432 // Call brokenImage() explicitly to ensure we get the broken image icon at the appropriate resolution. 442 std::pair<Image*, float> brokenImageAndImageScaleFactor = m_imageResource->cachedImage()->brokenImage(deviceScaleFactor);433 std::pair<Image*, float> brokenImageAndImageScaleFactor = imageResource().cachedImage()->brokenImage(deviceScaleFactor); 443 434 image = brokenImageAndImageScaleFactor.first; 444 435 IntSize imageSize = image->size(); … … 481 472 } 482 473 } 483 } else if ( m_imageResource->hasImage() && cWidth > 0 && cHeight > 0) {484 RefPtr<Image> img = m_imageResource->image(cWidth, cHeight);474 } else if (imageResource().hasImage() && cWidth > 0 && cHeight > 0) { 475 RefPtr<Image> img = imageResource().image(cWidth, cHeight); 485 476 if (!img || img->isNull()) { 486 477 if (page && paintInfo.phase == PaintPhaseForeground) … … 577 568 { 578 569 IntRect alignedRect = pixelSnappedIntRect(rect); 579 if (! m_imageResource->hasImage() || m_imageResource->errorOccurred() || alignedRect.width() <= 0 || alignedRect.height() <= 0)580 return; 581 582 RefPtr<Image> img = m_imageResource->image(alignedRect.width(), alignedRect.height());570 if (!imageResource().hasImage() || imageResource().errorOccurred() || alignedRect.width() <= 0 || alignedRect.height() <= 0) 571 return; 572 573 RefPtr<Image> img = imageResource().image(alignedRect.width(), alignedRect.height()); 583 574 if (!img || img->isNull()) 584 575 return; … … 586 577 HTMLImageElement* imageElt = (element() && isHTMLImageElement(element())) ? toHTMLImageElement(element()) : 0; 587 578 CompositeOperator compositeOperator = imageElt ? imageElt->compositeOperator() : CompositeSourceOver; 588 Image* image = m_imageResource->image().get();579 Image* image = imageResource().image().get(); 589 580 bool useLowQualityScaling = shouldPaintAtLowQuality(context, image, image, alignedRect.size()); 590 581 ImageOrientationDescription orientationDescription(shouldRespectImageOrientation()); … … 592 583 orientationDescription.setImageOrientationEnum(style().imageOrientation()); 593 584 #endif 594 context->drawImage( m_imageResource->image(alignedRect.width(), alignedRect.height()).get(), style().colorSpace(), alignedRect, compositeOperator, orientationDescription, useLowQualityScaling);585 context->drawImage(imageResource().image(alignedRect.width(), alignedRect.height()).get(), style().colorSpace(), alignedRect, compositeOperator, orientationDescription, useLowQualityScaling); 595 586 } 596 587 … … 606 597 { 607 598 UNUSED_PARAM(maxDepthToTest); 608 if (! m_imageResource->hasImage() || m_imageResource->errorOccurred())609 return false; 610 if ( m_imageResource->cachedImage() && !m_imageResource->cachedImage()->isLoaded())599 if (!imageResource().hasImage() || imageResource().errorOccurred()) 600 return false; 601 if (imageResource().cachedImage() && !imageResource().cachedImage()->isLoaded()) 611 602 return false; 612 603 if (!contentBoxRect().contains(localRect)) … … 624 615 return false; 625 616 // Check for image with alpha. 626 return m_imageResource->cachedImage() && m_imageResource->cachedImage()->currentFrameKnownToBeOpaque(this);617 return imageResource().cachedImage() && imageResource().cachedImage()->currentFrameKnownToBeOpaque(this); 627 618 } 628 619 … … 640 631 LayoutUnit RenderImage::minimumReplacedHeight() const 641 632 { 642 return m_imageResource->errorOccurred() ? intrinsicSize().height() : LayoutUnit();633 return imageResource().errorOccurred() ? intrinsicSize().height() : LayoutUnit(); 643 634 } 644 635 … … 696 687 697 688 // Our intrinsicSize is empty if we're rendering generated images with relative width/height. Figure out the right intrinsic size to use. 698 if (intrinsicSize.isEmpty() && ( m_imageResource->imageHasRelativeWidth() || m_imageResource->imageHasRelativeHeight())) {689 if (intrinsicSize.isEmpty() && (imageResource().imageHasRelativeWidth() || imageResource().imageHasRelativeHeight())) { 699 690 RenderObject* containingBlock = isOutOfFlowPositioned() ? container() : this->containingBlock(); 700 691 if (containingBlock->isBox()) { … … 705 696 } 706 697 // Don't compute an intrinsic ratio to preserve historical WebKit behavior if we're painting alt text and/or a broken image. 707 if ( m_imageResource && m_imageResource->errorOccurred()) {698 if (imageResource().errorOccurred()) { 708 699 intrinsicRatio = 1; 709 700 return; … … 720 711 RenderBox* RenderImage::embeddedContentBox() const 721 712 { 722 if (!m_imageResource)723 return 0;724 725 713 #if ENABLE(SVG) 726 CachedImage* cachedImage = m_imageResource->cachedImage();714 CachedImage* cachedImage = imageResource().cachedImage(); 727 715 if (cachedImage && cachedImage->image() && cachedImage->image()->isSVGImage()) 728 716 return static_cast<SVGImage*>(cachedImage->image())->embeddedContentBox(); -
trunk/Source/WebCore/rendering/RenderImage.h
r162158 r162356 36 36 class RenderImage : public RenderReplaced { 37 37 public: 38 explicit RenderImage(Element&, PassRef<RenderStyle>);39 explicit RenderImage(Document&, PassRef<RenderStyle>);38 RenderImage(Element&, PassRef<RenderStyle>, StyleImage* = nullptr); 39 RenderImage(Document&, PassRef<RenderStyle>, StyleImage* = nullptr); 40 40 virtual ~RenderImage(); 41 41 … … 43 43 static PassRef<RenderStyle> createStyleInheritingFromPseudoStyle(const RenderStyle&); 44 44 45 void setImageResource(PassOwnPtr<RenderImageResource>); 46 47 RenderImageResource* imageResource() { return m_imageResource.get(); } 48 const RenderImageResource* imageResource() const { return m_imageResource.get(); } 49 CachedImage* cachedImage() const { return m_imageResource ? m_imageResource->cachedImage() : 0; } 45 RenderImageResource& imageResource() { return *m_imageResource; } 46 const RenderImageResource& imageResource() const { return *m_imageResource; } 47 CachedImage* cachedImage() const { return imageResource().cachedImage(); } 50 48 51 49 bool setImageSizeForAltText(CachedImage* newImage = 0); … … 85 83 virtual void intrinsicSizeChanged() override 86 84 { 87 if (m_imageResource) 88 imageChanged(m_imageResource->imagePtr()); 85 imageChanged(imageResource().imagePtr()); 89 86 } 90 87 … … 116 113 // Text to display as long as the image isn't available. 117 114 String m_altText; 118 OwnPtr<RenderImageResource> m_imageResource;115 std::unique_ptr<RenderImageResource> m_imageResource; 119 116 bool m_needsToSetSizeForAltText; 120 117 bool m_didIncrementVisuallyNonEmptyPixelCount; -
trunk/Source/WebCore/rendering/RenderImageResource.h
r160478 r162356 39 39 WTF_MAKE_NONCOPYABLE(RenderImageResource); WTF_MAKE_FAST_ALLOCATED; 40 40 public: 41 RenderImageResource(); 41 42 virtual ~RenderImageResource(); 42 43 static PassOwnPtr<RenderImageResource> create()44 {45 return adoptPtr(new RenderImageResource);46 }47 43 48 44 virtual void initialize(RenderElement*); … … 68 64 69 65 protected: 70 RenderImageResource();71 72 66 RenderElement* m_renderer; 73 67 CachedResourceHandle<CachedImage> m_cachedImage; -
trunk/Source/WebCore/rendering/RenderImageResourceStyleImage.h
r162139 r162356 35 35 class RenderElement; 36 36 37 class RenderImageResourceStyleImage : public RenderImageResource {37 class RenderImageResourceStyleImage final : public RenderImageResource { 38 38 public: 39 explicit RenderImageResourceStyleImage(StyleImage&); 39 40 virtual ~RenderImageResourceStyleImage(); 40 41 static PassOwnPtr<RenderImageResource> create(StyleImage& styleImage)42 {43 return adoptPtr(new RenderImageResourceStyleImage(styleImage));44 }45 41 46 42 private: … … 61 57 virtual WrappedImagePtr imagePtr() const override { return m_styleImage->data(); } 62 58 63 explicit RenderImageResourceStyleImage(StyleImage&);64 59 Ref<StyleImage> m_styleImage; 65 60 }; -
trunk/Source/WebCore/rendering/RenderMedia.cpp
r159391 r162356 38 38 : RenderImage(element, std::move(style)) 39 39 { 40 setImageResource(RenderImageResource::create());41 40 } 42 41 … … 44 43 : RenderImage(element, std::move(style)) 45 44 { 46 setImageResource(RenderImageResource::create());47 45 setIntrinsicSize(intrinsicSize); 48 46 } -
trunk/Source/WebCore/rendering/RenderSnapshottedPlugIn.cpp
r158163 r162356 49 49 RenderSnapshottedPlugIn::RenderSnapshottedPlugIn(HTMLPlugInImageElement& element, PassRef<RenderStyle> style) 50 50 : RenderEmbeddedObject(element, std::move(style)) 51 , m_snapshotResource( RenderImageResource::create())51 , m_snapshotResource(std::make_unique<RenderImageResource>()) 52 52 , m_isPotentialMouseActivation(false) 53 53 { -
trunk/Source/WebCore/rendering/RenderSnapshottedPlugIn.h
r162198 r162356 60 60 virtual void layout() override; 61 61 62 OwnPtr<RenderImageResource> m_snapshotResource;62 std::unique_ptr<RenderImageResource> m_snapshotResource; 63 63 bool m_isPotentialMouseActivation; 64 64 }; -
trunk/Source/WebCore/rendering/RenderVideo.cpp
r160734 r162356 114 114 } 115 115 116 if (videoElement().shouldDisplayPosterImage() && !m_cachedImageSize.isEmpty() && !imageResource() ->errorOccurred())116 if (videoElement().shouldDisplayPosterImage() && !m_cachedImageSize.isEmpty() && !imageResource().errorOccurred()) 117 117 return m_cachedImageSize; 118 118 -
trunk/Source/WebCore/rendering/style/ContentData.cpp
r161153 r162356 50 50 RenderPtr<RenderObject> ImageContentData::createContentRenderer(Document& document, const RenderStyle& pseudoStyle) const 51 51 { 52 auto image = createRenderer<RenderImage>(document, RenderImage::createStyleInheritingFromPseudoStyle(pseudoStyle) );52 auto image = createRenderer<RenderImage>(document, RenderImage::createStyleInheritingFromPseudoStyle(pseudoStyle), m_image.get()); 53 53 image->initializeStyle(); 54 54 image->setAltText(altText()); 55 if (m_image)56 image->setImageResource(RenderImageResourceStyleImage::create(*m_image));57 else58 image->setImageResource(RenderImageResource::create());59 55 return std::move(image); 60 56 } -
trunk/Source/WebCore/rendering/svg/RenderSVGImage.cpp
r161418 r162356 50 50 , m_needsBoundariesUpdate(true) 51 51 , m_needsTransformUpdate(true) 52 , m_imageResource( RenderImageResource::create())53 { 54 m_imageResource->initialize(this);52 , m_imageResource(std::make_unique<RenderImageResource>()) 53 { 54 imageResource().initialize(this); 55 55 } 56 56 57 57 RenderSVGImage::~RenderSVGImage() 58 58 { 59 m_imageResource->shutdown();59 imageResource().shutdown(); 60 60 } 61 61 … … 75 75 return false; 76 76 77 m_imageResource->setContainerSizeForRenderer(enclosingIntRect(m_objectBoundingBox).size());77 imageResource().setContainerSizeForRenderer(enclosingIntRect(m_objectBoundingBox).size()); 78 78 m_needsBoundariesUpdate = true; 79 79 return true; … … 118 118 void RenderSVGImage::paint(PaintInfo& paintInfo, const LayoutPoint&) 119 119 { 120 if (paintInfo.context->paintingDisabled() || style().visibility() == HIDDEN || ! m_imageResource->hasImage())120 if (paintInfo.context->paintingDisabled() || style().visibility() == HIDDEN || !imageResource().hasImage()) 121 121 return; 122 122 … … 149 149 void RenderSVGImage::paintForeground(PaintInfo& paintInfo) 150 150 { 151 RefPtr<Image> image = m_imageResource->image();151 RefPtr<Image> image = imageResource().image(); 152 152 FloatRect destRect = m_objectBoundingBox; 153 153 FloatRect srcRect(0, 0, image->width(), image->height()); -
trunk/Source/WebCore/rendering/svg/RenderSVGImage.h
r162198 r162356 48 48 virtual void setNeedsTransformUpdate() { m_needsTransformUpdate = true; } 49 49 50 RenderImageResource * imageResource() { return m_imageResource.get(); }51 const RenderImageResource * imageResource() const { return m_imageResource.get(); }50 RenderImageResource& imageResource() { return *m_imageResource; } 51 const RenderImageResource& imageResource() const { return *m_imageResource; } 52 52 53 53 // Note: Assumes the PaintInfo context has had all local transforms applied. … … 88 88 FloatRect m_repaintBoundingBox; 89 89 FloatRect m_repaintBoundingBoxExcludingShadow; 90 OwnPtr<RenderImageResource> m_imageResource; 91 90 std::unique_ptr<RenderImageResource> m_imageResource; 92 91 std::unique_ptr<ImageBuffer> m_bufferedForeground; 93 92 }; -
trunk/Source/WebCore/svg/SVGImageElement.cpp
r161181 r162356 196 196 { 197 197 if (RenderSVGImage* imageObj = toRenderSVGImage(renderer())) { 198 if (imageObj->imageResource() ->hasImage())198 if (imageObj->imageResource().hasImage()) 199 199 return; 200 200 201 imageObj->imageResource() ->setCachedImage(m_imageLoader.image());201 imageObj->imageResource().setCachedImage(m_imageLoader.image()); 202 202 } 203 203 }
Note: See TracChangeset
for help on using the changeset viewer.