KRenderingDevice.h [plain text]
#ifndef KRenderingDevice_H
#define KRenderingDevice_H
#if SVG_SUPPORT
#include <kcanvas/KCanvasFilters.h>
#include <kcanvas/device/KRenderingPaintServer.h>
namespace WebCore {
class KCanvasMatrix;
class KRenderingDeviceContext
{
public:
KRenderingDeviceContext() { }
virtual ~KRenderingDeviceContext() { }
virtual KCanvasMatrix concatCTM(const KCanvasMatrix &worldMatrix) = 0;
virtual KCanvasMatrix ctm() const = 0;
virtual IntRect mapFromVisual(const IntRect &rect) = 0;
virtual IntRect mapToVisual(const IntRect &rect) = 0;
virtual void clearPath() = 0;
virtual void addPath(const KCanvasPath*) = 0;
virtual GraphicsContext* createGraphicsContext() = 0;
};
class KCanvasImage;
class KCanvasFilterEffect;
class KRenderingDevice
{
public:
KRenderingDevice();
virtual ~KRenderingDevice();
virtual bool isBuffered() const = 0;
KRenderingDeviceContext *currentContext() const;
virtual KRenderingDeviceContext *popContext();
virtual void pushContext(KRenderingDeviceContext *context);
virtual KRenderingDeviceContext *contextForImage(KCanvasImage *image) const = 0;
virtual DeprecatedString stringForPath(const KCanvasPath* path) = 0;
virtual KCanvasResource *createResource(const KCResourceType &type) const = 0;
virtual KCanvasFilterEffect *createFilterEffect(const KCFilterEffectType &type) const = 0;
virtual KRenderingPaintServer *createPaintServer(const KCPaintServerType &type) const = 0;
virtual RenderPath *createItem(RenderArena *arena, RenderStyle *style, SVGStyledElement *node, KCanvasPath* path) const = 0;
virtual KCanvasPath* createPath() const = 0;
private:
Vector<KRenderingDeviceContext*> m_contextStack;
};
KRenderingDevice* renderingDevice();
}
#endif // SVG_SUPPORT
#endif