#ifndef SVGImage_h
#define SVGImage_h
#if ENABLE(SVG)
#include "Image.h"
namespace WebCore {
class FrameView;
class ImageBuffer;
class Page;
class RenderBox;
class SVGImageChromeClient;
class SVGImageForContainer;
class SVGImage : public Image {
public:
static PassRefPtr<SVGImage> create(ImageObserver* observer)
{
return adoptRef(new SVGImage(observer));
}
RenderBox* embeddedContentBox() const;
FrameView* frameView() const;
virtual bool isSVGImage() const { return true; }
virtual IntSize size() const OVERRIDE { return m_intrinsicSize; }
virtual bool hasRelativeWidth() const;
virtual bool hasRelativeHeight() const;
virtual void startAnimation(bool = true) OVERRIDE;
virtual void stopAnimation() OVERRIDE;
virtual void resetAnimation() OVERRIDE;
#if USE(CAIRO)
virtual PassNativeImagePtr nativeImageForCurrentFrame() OVERRIDE;
#endif
private:
friend class SVGImageChromeClient;
friend class SVGImageForContainer;
virtual ~SVGImage();
virtual String filenameExtension() const;
virtual void setContainerSize(const IntSize&);
IntSize containerSize() const;
virtual bool usesContainerSize() const { return true; }
virtual void computeIntrinsicDimensions(Length& intrinsicWidth, Length& intrinsicHeight, FloatSize& intrinsicRatio);
virtual bool dataChanged(bool allDataReceived);
virtual void destroyDecodedData(bool) { }
virtual unsigned decodedSize() const { return 0; }
virtual bool currentFrameKnownToBeOpaque() OVERRIDE { return false; }
SVGImage(ImageObserver*);
virtual void draw(GraphicsContext*, const FloatRect& fromRect, const FloatRect& toRect, ColorSpace styleColorSpace, CompositeOperator, BlendMode);
void drawForContainer(GraphicsContext*, const FloatSize, float, const FloatRect&, const FloatRect&, ColorSpace, CompositeOperator, BlendMode);
void drawPatternForContainer(GraphicsContext*, const FloatSize, float, const FloatRect&, const AffineTransform&, const FloatPoint&, ColorSpace,
CompositeOperator, const FloatRect&);
OwnPtr<SVGImageChromeClient> m_chromeClient;
OwnPtr<Page> m_page;
IntSize m_intrinsicSize;
};
}
#endif // ENABLE(SVG)
#endif // SVGImage_h