2 Copyright (C) 2004, 2005 Nikolas Zimmermann <wildfox@kde.org>
3 2004, 2005 Rob Buis <buis@kde.org>
5 This file is part of the KDE project
7 This library is free software; you can redistribute it and/or
8 modify it under the terms of the GNU Library General Public
9 License as published by the Free Software Foundation; either
10 version 2 of the License, or (at your option) any later version.
12 This library is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 Library General Public License for more details.
17 You should have received a copy of the GNU Library General Public License
18 aint with this library; see the file COPYING.LIB. If not, write to
19 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20 Boston, MA 02111-1307, USA.
23 #ifndef KRenderingDevice_H
24 #define KRenderingDevice_H
28 #include "SVGFilterEffect.h"
29 #include "SVGPaintServer.h"
33 class AffineTransform;
34 class GraphicsContext;
38 class KRenderingDeviceContext
41 KRenderingDeviceContext() { }
42 virtual ~KRenderingDeviceContext() { }
44 virtual AffineTransform concatCTM(const AffineTransform&) = 0;
45 virtual AffineTransform ctm() const = 0;
47 virtual void clearPath() = 0;
48 virtual void addPath(const Path&) = 0;
50 virtual GraphicsContext* createGraphicsContext() = 0;
53 class SVGResourceImage;
54 class SVGResourceFilterEffect;
55 class KRenderingDevice
59 virtual ~KRenderingDevice();
61 // The rendering device will be directly inited
62 // after the canvas target, it may be overwritten.
63 virtual bool isBuffered() const = 0;
65 // Global rendering device context
66 KRenderingDeviceContext* currentContext() const;
68 virtual KRenderingDeviceContext* popContext();
69 virtual void pushContext(KRenderingDeviceContext*);
71 virtual KRenderingDeviceContext* contextForImage(SVGResourceImage*) const = 0;
74 virtual PassRefPtr<SVGResource> createResource(const SVGResourceType&) const = 0;
75 virtual SVGFilterEffect* createFilterEffect(const SVGFilterEffectType&) const = 0;
76 virtual PassRefPtr<SVGPaintServer> createPaintServer(const SVGPaintServerType&) const = 0;
79 Vector<KRenderingDeviceContext*> m_contextStack;
82 KRenderingDevice* renderingDevice(); /* returns the single global rendering device */