#ifndef RenderImageResource_h
#define RenderImageResource_h
#include "core/fetch/ImageResource.h"
#include "core/fetch/ResourcePtr.h"
#include "core/rendering/style/StyleImage.h"
namespace WebCore {
class RenderObject;
class RenderImageResource {
WTF_MAKE_NONCOPYABLE(RenderImageResource); WTF_MAKE_FAST_ALLOCATED;
public:
virtual ~RenderImageResource();
static PassOwnPtr<RenderImageResource> create()
{
return adoptPtr(new RenderImageResource);
}
virtual void initialize(RenderObject*);
virtual void shutdown();
void setImageResource(ImageResource*);
ImageResource* cachedImage() const { return m_cachedImage.get(); }
virtual bool hasImage() const { return m_cachedImage; }
void resetAnimation();
virtual PassRefPtr<Image> image(int = 0, int = 0) const
{
return m_cachedImage ? m_cachedImage->imageForRenderer(m_renderer) : Image::nullImage();
}
virtual bool errorOccurred() const { return m_cachedImage && m_cachedImage->errorOccurred(); }
virtual void setContainerSizeForRenderer(const IntSize&);
virtual bool usesImageContainerSize() const { return m_cachedImage ? m_cachedImage->usesImageContainerSize() : false; }
virtual bool imageHasRelativeWidth() const { return m_cachedImage ? m_cachedImage->imageHasRelativeWidth() : false; }
virtual bool imageHasRelativeHeight() const { return m_cachedImage ? m_cachedImage->imageHasRelativeHeight() : false; }
virtual LayoutSize imageSize(float multiplier) const { return getImageSize(multiplier, ImageResource::NormalSize); }
virtual LayoutSize intrinsicSize(float multiplier) const { return getImageSize(multiplier, ImageResource::IntrinsicSize); }
virtual WrappedImagePtr imagePtr() const { return m_cachedImage.get(); }
protected:
RenderImageResource();
RenderObject* m_renderer;
ResourcePtr<ImageResource> m_cachedImage;
private:
LayoutSize getImageSize(float multiplier, ImageResource::SizeType) const;
};
}
#endif