KHTML
SVGPaintServerPattern.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef SVGPaintServerPattern_h
00027 #define SVGPaintServerPattern_h
00028
00029 #if ENABLE(SVG)
00030
00031 #include "AffineTransform.h"
00032 #include "FloatRect.h"
00033 #include "SVGPaintServer.h"
00034
00035 #include <memory>
00036
00037 #include <wtf/OwnPtr.h>
00038
00039 namespace WebCore {
00040
00041 class GraphicsContext;
00042 class ImageBuffer;
00043 class SVGPatternElement;
00044
00045 class SVGPaintServerPattern : public SVGPaintServer {
00046 public:
00047 static PassRefPtr<SVGPaintServerPattern> create(const SVGPatternElement* owner) { return adoptRef(new SVGPaintServerPattern(owner)); }
00048
00049 virtual ~SVGPaintServerPattern();
00050
00051 virtual SVGPaintServerType type() const { return PatternPaintServer; }
00052
00053
00054 void setPatternBoundaries(const FloatRect&);
00055 FloatRect patternBoundaries() const;
00056
00057 ImageBuffer* tile() const;
00058 void setTile(std::auto_ptr<ImageBuffer>);
00059
00060 AffineTransform patternTransform() const;
00061 void setPatternTransform(const AffineTransform&);
00062
00063 virtual TextStream& externalRepresentation(TextStream&) const;
00064
00065 #if PLATFORM(CG)
00066 virtual bool setup(GraphicsContext*&, const RenderObject*, SVGPaintTargetType, bool isPaintingText) const;
00067 virtual void teardown(GraphicsContext*&, const RenderObject*, SVGPaintTargetType, bool isPaintingText) const;
00068 #endif
00069
00070 #if PLATFORM(QT) || PLATFORM(CAIRO)
00071 virtual bool setup(QPainter* painter, QPainterPaht* painterPath, const RenderObject*, SVGPaintTargetType, bool isPaintingText) const;
00072 #endif
00073
00074 private:
00075 SVGPaintServerPattern(const SVGPatternElement*);
00076
00077 OwnPtr<ImageBuffer> m_tile;
00078 const SVGPatternElement* m_ownerElement;
00079 AffineTransform m_patternTransform;
00080 FloatRect m_patternBoundaries;
00081
00082 #if PLATFORM(CG)
00083 mutable CGColorSpaceRef m_patternSpace;
00084 mutable CGPatternRef m_pattern;
00085 #endif
00086 };
00087
00088 }
00089
00090 #endif
00091
00092 #endif // SVGPaintServerPattern_h