From f6849f9d237c2191ac02afb90cd6b41c78d9180a Mon Sep 17 00:00:00 2001 From: Matt Williams Date: Mon, 28 May 2007 23:47:41 +0000 Subject: [PATCH] Make the SVG render at the size specified by Svg::size() instead of ignoring it. Here you go ruphy, you can now implement applet resizing to your heart's content :) svn path=/trunk/KDE/kdebase/workspace/plasma/lib/; revision=669300 --- svg.cpp | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/svg.cpp b/svg.cpp index f108f7416..d796f5d32 100644 --- a/svg.cpp +++ b/svg.cpp @@ -83,7 +83,7 @@ class Svg::Private if (elementId.isEmpty()) { s = size.toSize(); } else { - s = renderer->boundsOnElement(elementId).size().toSize(); + s = elementSize(elementId); } //kDebug() << "size for " << elementId << " is " << s << endl; @@ -115,6 +115,18 @@ class Svg::Private renderer = new KSvgRenderer(path); } + QSize elementSize( const QString& elementId ) + { + createRenderer(); + QSizeF elementSize = renderer->boundsOnElement(elementId).size(); + QSizeF naturalSize = renderer->defaultSize(); + qreal dx = size.width() / naturalSize.width(); + qreal dy = size.height() / naturalSize.height(); + elementSize.scale( elementSize.width() * dx, elementSize.height() * dy, Qt::IgnoreAspectRatio ); + + return elementSize.toSize(); + } + //TODO: share renderers between Svg objects with identical themePath KSvgRenderer* renderer; QString themePath; @@ -175,14 +187,7 @@ void Svg::resize() QSize Svg::elementSize(const QString& elementId) const { - d->createRenderer(); - QSizeF elementSize = d->renderer->boundsOnElement(elementId).size(); - QSizeF naturalSize = d->renderer->defaultSize(); - qreal dx = d->size.width() / naturalSize.width(); - qreal dy = d->size.height() / naturalSize.height(); - elementSize.scale( elementSize.width() * dx, elementSize.height() * dy, Qt::IgnoreAspectRatio ); - - return elementSize.toSize(); + return d->elementSize(elementId); } QSize Svg::size() const