#ifndef KCanvasItem_H
#define KCanvasItem_H
#if SVG_SUPPORT
#include "DeprecatedValueList.h"
#include "FloatRect.h"
#include "RenderObject.h"
namespace WebCore {
class FloatPoint;
class SVGStyledElement;
class KCanvasPath;
class RenderSVGContainer;
class KCanvasMatrix;
class RenderPath : public RenderObject
{
public:
RenderPath(RenderStyle *style, SVGStyledElement *node);
virtual ~RenderPath();
virtual bool fillContains(const FloatPoint &p) const;
virtual bool strokeContains(const FloatPoint &p) const;
virtual FloatRect relativeBBox(bool includeStroke = true) const;
void setPath(KCanvasPath* newPath);
KCanvasPath* path() const;
virtual bool isRenderPath() const { return true; }
virtual const char *renderName() const { return "KCanvasItem"; }
virtual AffineTransform localTransform() const;
virtual void setLocalTransform(const AffineTransform &matrix);
virtual void layout();
virtual IntRect getAbsoluteRepaintRect();
virtual bool requiresLayer();
virtual short lineHeight(bool b, bool isRootLineBox = false) const;
virtual short baselinePosition(bool b, bool isRootLineBox = false) const;
virtual void paint(PaintInfo&, int parentX, int parentY);
virtual void absoluteRects(DeprecatedValueList<IntRect>& rects, int tx, int ty);
virtual bool nodeAtPoint(NodeInfo&, int x, int y, int tx, int ty, HitTestAction);
protected:
virtual void drawMarkersIfNeeded(GraphicsContext*, const FloatRect&, const KCanvasPath*) const = 0;
private:
FloatRect strokeBBox() const;
FloatPoint mapAbsolutePointToLocal(const FloatPoint& point) const;
class Private;
Private *d;
};
typedef DeprecatedValueList<const RenderPath *> KCanvasItemList;
}
#endif // SVG_SUPPORT
#endif