From d52839aabbba103f273dbae5c17a59d646598d1d Mon Sep 17 00:00:00 2001 From: Mavridis Philippe Date: Thu, 10 Mar 2022 13:29:18 +0200 Subject: [PATCH] svgicons: API changes proposal Signed-off-by: Mavridis Philippe --- tdecore/svgicons/ksvgiconengine.cpp | 33 +++++++++++-- tdecore/svgicons/ksvgiconengine.h | 72 ++++++++++++++++++++++++++--- 2 files changed, 95 insertions(+), 10 deletions(-) diff --git a/tdecore/svgicons/ksvgiconengine.cpp b/tdecore/svgicons/ksvgiconengine.cpp index 97e60fcb7..2866739ed 100644 --- a/tdecore/svgicons/ksvgiconengine.cpp +++ b/tdecore/svgicons/ksvgiconengine.cpp @@ -18,7 +18,6 @@ Boston, MA 02110-1301, USA. */ -#include #include #include #include @@ -540,7 +539,7 @@ KSVGIconEngine::~KSVGIconEngine() delete d; } -bool KSVGIconEngine::load(int width, int height, const TQString &path) +bool KSVGIconEngine::load(const TQString &path, int width, int height) { if(path.isNull()) return false; @@ -585,11 +584,24 @@ bool KSVGIconEngine::load(int width, int height, const TQString &path) svgDocument.setContent(buffer); } - if(svgDocument.isNull()) + return parse(svgDocument, width, height); +} + +bool KSVGIconEngine::load(int width, int height, const TQString &path) +{ + return load(path, width, height); +} + + +bool KSVGIconEngine::parse(const TQDomDocument& data, int width, int height) +{ + if(data.isNull()) + { return false; + } // Check for root element - TQDomNode rootNode = svgDocument.namedItem("svg"); + TQDomNode rootNode = data.namedItem("svg"); if(rootNode.isNull() || !rootNode.isElement()) return false; @@ -691,6 +703,19 @@ bool KSVGIconEngine::load(int width, int height, const TQString &path) return true; } +bool KSVGIconEngine::parse(const TQString& data, int width, int height) +{ + if(data.isNull()) + { + return false; + } + + TQDomDocument svgDocument("svg"); + svgDocument.setContent(data); + + return parse(svgDocument, width, height); +} + KSVGIconPainter *KSVGIconEngine::painter() { return d->painter; diff --git a/tdecore/svgicons/ksvgiconengine.h b/tdecore/svgicons/ksvgiconengine.h index 9ed825194..51f76acc4 100644 --- a/tdecore/svgicons/ksvgiconengine.h +++ b/tdecore/svgicons/ksvgiconengine.h @@ -21,8 +21,13 @@ #ifndef KSVGIconEngine_H #define KSVGIconEngine_H +#include #include +/** + * \file ksvgiconengine.h + */ + class KSVGIconPainter; class TDECORE_EXPORT KSVGIconEngine @@ -30,14 +35,69 @@ class TDECORE_EXPORT KSVGIconEngine public: KSVGIconEngine(); ~KSVGIconEngine(); - - bool load(int width, int height, const TQString &path); - KSVGIconPainter *painter(); - TQImage *image(); + /** + * @short Reads SVG(Z) document @p path, parses and renders its contents. + * + * @param path is the path of the SVG document. + * @param width is the width of the render result. Omit it or pass 0 to use document's default. + * @param height is the height of the render result. Omit it or pass 0 to use document's default. + * + * @return True if rendering is successful, otherwise false. + */ + bool load(const TQString &path, int width = 0, int height = 0); + + /** + * @deprecated + * @short Reads SVG(Z) document @p path, parses and renders its contents. + * + * This function uses the old parameter order which does not allow width and height to be omitted + * and is kept for compatibility. Prefer the variant below instead. + * + * @see load(const TQString&, int, int); + */ + bool load(int width, int height, const TQString &path) KDE_DEPRECATED; + + /** + * @short Renders the SVG data stored as DOM in @p data. + * + * @param data is the TQDocDocument representation of the SVG document to render. + * @see load(const TQString&, int, int); + */ + bool parse(const TQDomDocument &data, int width = 0, int height = 0); + + /** + * @short Renders the SVG data stored as string in @p data. + * + * This function is a wrapper provided for convenience. + * + * @param data is a TQString containing the SVG document to render. + * @see parse(const TQDomDocument&, int, int); + */ + bool parse(const TQString &data, int width = 0, int height = 0); + + /** + * @short Returns a pointer to the engine's KSVGIconPainter object. + * + * Typically you won't need access to the painter and you won't be able to do so + * from outside tdelibs (since the KSVGIconPainter header is not installed). + */ + KSVGIconPainter *painter(); + + /** + * @short Returns a pointer to the rendered TQImage. + */ + TQImage *image(); + + /** + * @short Returns the rendered image's width. + */ + double width(); - double width(); - double height(); + /** + * @short Returns the rendered image's height. + */ + double height(); private: struct Private;