diff options
author | hjk <qthjk@ovi.com> | 2012-12-04 12:34:19 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-12-06 12:25:09 +0100 |
commit | 166e66496114975b9580e489b16963191fd4f600 (patch) | |
tree | fea7f51ef2ad93dd2f440429d29894ae795d2673 /examples/svg | |
parent | 0f146689e6fb53762123c3e8a44fc6c8e71492ba (diff) | |
download | qtsvg-166e66496114975b9580e489b16963191fd4f600.tar.gz |
Centralize and fixup qtsvg example sources install targets
This follows suit with aeb036e in qtbase.
Change-Id: I2e64dcce15b3b39f98395df5627cf0839debdf99
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Diffstat (limited to 'examples/svg')
134 files changed, 9126 insertions, 17 deletions
diff --git a/examples/svg/draganddrop/delayedencoding/delayedencoding.pro b/examples/svg/draganddrop/delayedencoding/delayedencoding.pro new file mode 100644 index 0000000..2cb82f5 --- /dev/null +++ b/examples/svg/draganddrop/delayedencoding/delayedencoding.pro @@ -0,0 +1,15 @@ +QT += svg + +HEADERS = mimedata.h \ + sourcewidget.h +RESOURCES = delayedencoding.qrc +SOURCES = main.cpp \ + mimedata.cpp \ + sourcewidget.cpp + +# install +target.path = $$[QT_INSTALL_EXAMPLES]/svg/draganddrop/delayedencoding +INSTALLS += target + +simulator: warning(This example does not work on Simulator platform) +QT+=widgets diff --git a/examples/svg/draganddrop/delayedencoding/delayedencoding.qrc b/examples/svg/draganddrop/delayedencoding/delayedencoding.qrc new file mode 100644 index 0000000..374f211 --- /dev/null +++ b/examples/svg/draganddrop/delayedencoding/delayedencoding.qrc @@ -0,0 +1,6 @@ +<!DOCTYPE RCC><RCC version="1.0"> +<qresource prefix=""> + <file>images/drag.png</file> + <file>images/example.svg</file> +</qresource> +</RCC> diff --git a/examples/svg/draganddrop/delayedencoding/images/drag.png b/examples/svg/draganddrop/delayedencoding/images/drag.png Binary files differnew file mode 100644 index 0000000..dd795cf --- /dev/null +++ b/examples/svg/draganddrop/delayedencoding/images/drag.png diff --git a/examples/svg/draganddrop/delayedencoding/images/example.svg b/examples/svg/draganddrop/delayedencoding/images/example.svg new file mode 100644 index 0000000..89a9129 --- /dev/null +++ b/examples/svg/draganddrop/delayedencoding/images/example.svg @@ -0,0 +1,58 @@ +<?xml version="1.0" standalone="no"?> +<!-- *********************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +************************************************************************ --> +<svg width="8cm" height="8cm" viewBox="0 0 400 400" + xmlns="http://www.w3.org/2000/svg" baseProfile="tiny" version="1.1"> + <title>Sphere</title> + <desc>A gradient filled sphere.</desc> + <g> + <defs> + <radialGradient id="blueSphere" gradientUnits="userSpaceOnUse" + cx="200" cy="200" r="100" fx="150" fy="150"> + <stop offset="0%" stop-color="white" /> + <stop offset="75%" stop-color="blue" /> + <stop offset="100%" stop-color="black" /> + </radialGradient> + </defs> + <rect fill="lightblue" x="0" y="0" width="400" height="400" /> + <circle fill="url(#blueSphere)" stroke="black" stroke-width="2" + cx="200" cy="200" r="100"/> + </g> +</svg> diff --git a/examples/svg/draganddrop/delayedencoding/main.cpp b/examples/svg/draganddrop/delayedencoding/main.cpp new file mode 100644 index 0000000..6b6063b --- /dev/null +++ b/examples/svg/draganddrop/delayedencoding/main.cpp @@ -0,0 +1,51 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QApplication> +#include "sourcewidget.h" + +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + SourceWidget window; + window.show(); + return app.exec(); +} + diff --git a/examples/svg/draganddrop/delayedencoding/mimedata.cpp b/examples/svg/draganddrop/delayedencoding/mimedata.cpp new file mode 100644 index 0000000..efa096e --- /dev/null +++ b/examples/svg/draganddrop/delayedencoding/mimedata.cpp @@ -0,0 +1,65 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtWidgets> +#include "mimedata.h" + +MimeData::MimeData() + : QMimeData() +{ +} + +//![0] +QStringList MimeData::formats() const +{ + return QMimeData::formats() << "image/png"; +} +//![0] + +//![1] +QVariant MimeData::retrieveData(const QString &mimeType, QVariant::Type type) + const +{ + emit dataRequested(mimeType); + + return QMimeData::retrieveData(mimeType, type); +} +//![1] + diff --git a/examples/svg/draganddrop/delayedencoding/mimedata.h b/examples/svg/draganddrop/delayedencoding/mimedata.h new file mode 100644 index 0000000..4d84bd0 --- /dev/null +++ b/examples/svg/draganddrop/delayedencoding/mimedata.h @@ -0,0 +1,63 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef MIMEDATA_H +#define MIMEDATA_H + +#include <QMimeData> + +//![0] +class MimeData : public QMimeData +{ + Q_OBJECT + +public: + MimeData(); + QStringList formats() const; + +signals: + void dataRequested(const QString &mimeType) const; + +protected: + QVariant retrieveData(const QString &mimetype, QVariant::Type type) const; +}; +//![0] + +#endif diff --git a/examples/svg/draganddrop/delayedencoding/sourcewidget.cpp b/examples/svg/draganddrop/delayedencoding/sourcewidget.cpp new file mode 100644 index 0000000..0373edb --- /dev/null +++ b/examples/svg/draganddrop/delayedencoding/sourcewidget.cpp @@ -0,0 +1,115 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtWidgets> +#include <QtSvg> +#include "mimedata.h" +#include "sourcewidget.h" + +SourceWidget::SourceWidget(QWidget *parent) + : QWidget(parent) +{ + QFile imageFile(":/images/example.svg"); + imageFile.open(QIODevice::ReadOnly); + imageData = imageFile.readAll(); + imageFile.close(); + + QScrollArea *imageArea = new QScrollArea; + imageLabel = new QSvgWidget; + imageLabel->renderer()->load(imageData); + imageArea->setWidget(imageLabel); + //imageLabel->setMinimumSize(imageLabel->renderer()->viewBox().size()); + + QLabel *instructTopLabel = new QLabel(tr("This is an SVG drawing:")); + QLabel *instructBottomLabel = new QLabel( + tr("Drag the icon to copy the drawing as a PNG file:")); + instructBottomLabel->setWordWrap(true); + QPushButton *dragIcon = new QPushButton(tr("Export")); + dragIcon->setIcon(QIcon(":/images/drag.png")); + + connect(dragIcon, SIGNAL(pressed()), this, SLOT(startDrag())); + + QGridLayout *layout = new QGridLayout; + layout->addWidget(instructTopLabel, 0, 0, 1, 2); + layout->addWidget(imageArea, 1, 0, 2, 2); + layout->addWidget(instructBottomLabel, 3, 0); + layout->addWidget(dragIcon, 3, 1); + setLayout(layout); + setWindowTitle(tr("Delayed Encoding")); +} + +//![1] +void SourceWidget::createData(const QString &mimeType) +{ + if (mimeType != "image/png") + return; + + QImage image(imageLabel->size(), QImage::Format_RGB32); + QPainter painter; + painter.begin(&image); + imageLabel->renderer()->render(&painter); + painter.end(); + + QByteArray data; + QBuffer buffer(&data); + buffer.open(QIODevice::WriteOnly); + image.save(&buffer, "PNG"); + buffer.close(); + + mimeData->setData("image/png", data); +} +//![1] + +//![0] +void SourceWidget::startDrag() +{ + mimeData = new MimeData; + + connect(mimeData, SIGNAL(dataRequested(QString)), + this, SLOT(createData(QString)), Qt::DirectConnection); + + QDrag *drag = new QDrag(this); + drag->setMimeData(mimeData); + drag->setPixmap(QPixmap(":/images/drag.png")); + + drag->exec(Qt::CopyAction); +} +//![0] + diff --git a/examples/svg/draganddrop/delayedencoding/sourcewidget.h b/examples/svg/draganddrop/delayedencoding/sourcewidget.h new file mode 100644 index 0000000..ef2766a --- /dev/null +++ b/examples/svg/draganddrop/delayedencoding/sourcewidget.h @@ -0,0 +1,70 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef SOURCEWIDGET_H +#define SOURCEWIDGET_H + +#include <QByteArray> +#include <QWidget> + +QT_BEGIN_NAMESPACE +class QSvgWidget; +QT_END_NAMESPACE +class MimeData; + +class SourceWidget : public QWidget +{ + Q_OBJECT + +public: + SourceWidget(QWidget *parent = 0); +//![0] +public slots: + void createData(const QString &mimetype); + void startDrag(); + +private: + QByteArray imageData; + QSvgWidget *imageLabel; + MimeData *mimeData; +//![0] +}; + +#endif diff --git a/examples/svg/draganddrop/draganddrop.pro b/examples/svg/draganddrop/draganddrop.pro new file mode 100644 index 0000000..99fecb0 --- /dev/null +++ b/examples/svg/draganddrop/draganddrop.pro @@ -0,0 +1,3 @@ +TEMPLATE = subdirs +!contains(QT_CONFIG, no-widgets): SUBDIRS += delayedencoding +QT+=widgets diff --git a/examples/svg/embedded/desktopservices/contenttab.cpp b/examples/svg/embedded/desktopservices/contenttab.cpp new file mode 100644 index 0000000..5c82611 --- /dev/null +++ b/examples/svg/embedded/desktopservices/contenttab.cpp @@ -0,0 +1,140 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the demonstration applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// EXTERNAL INCLUDES +#include <QKeyEvent> +#include <QMessageBox> +#include <QListWidget> +#include <QVBoxLayout> +#include <QFileInfoList> +#include <QListWidgetItem> + +// INTERNAL INCLUDES + +// CLASS HEADER +#include "contenttab.h" + + +// CONSTRUCTORS & DESTRUCTORS +ContentTab::ContentTab(QWidget *parent) : + QListWidget(parent) +{ + setDragEnabled(false); + setIconSize(QSize(45, 45)); +} + +ContentTab::~ContentTab() +{ +} + +// NEW PUBLIC METHODS +void ContentTab::init(const QStandardPaths::StandardLocation &location, + const QString &filter, + const QString &icon) +{ + setContentDir(location); + QStringList filterList; + filterList = filter.split(";"); + m_ContentDir.setNameFilters(filterList); + setIcon(icon); + + connect(this, SIGNAL(itemClicked(QListWidgetItem*)), + this, SLOT(openItem(QListWidgetItem*))); + + populateListWidget(); +} + +// NEW PROTECTED METHODS +void ContentTab::setContentDir(const QStandardPaths::StandardLocation &location) +{ + m_ContentDir.setPath(QStandardPaths::writableLocation(location)); +} + +void ContentTab::setIcon(const QString &icon) +{ + m_Icon = QIcon(icon); +} + +void ContentTab::populateListWidget() +{ + QFileInfoList fileList = m_ContentDir.entryInfoList(QDir::Files, QDir::Time); + foreach(QFileInfo item, fileList) { + new QListWidgetItem(m_Icon, itemName(item), this); + } +} + +QString ContentTab::itemName(const QFileInfo &item) +{ + return QString(item.baseName() + "." + item.completeSuffix()); +} + +QUrl ContentTab::itemUrl(QListWidgetItem *item) +{ + return QUrl("file:///" + m_ContentDir.absolutePath() + "/" + item->text()); +} + +void ContentTab::keyPressEvent(QKeyEvent *event) +{ + switch (event->key()) { + case Qt::Key_Select: + openItem(currentItem()); + default: + QListWidget::keyPressEvent(event); + break; + } +} + +void ContentTab::handleErrorInOpen(QListWidgetItem *item) +{ + Q_UNUSED(item); + QMessageBox::warning(this, tr("Operation Failed"), tr("Unknown error!"), QMessageBox::Close); +} + +// NEW SLOTS +void ContentTab::openItem(QListWidgetItem *item) +{ + bool ret = QDesktopServices::openUrl(itemUrl(item)); + if (!ret) + handleErrorInOpen(item); +} + + +// End of File diff --git a/examples/svg/embedded/desktopservices/contenttab.h b/examples/svg/embedded/desktopservices/contenttab.h new file mode 100644 index 0000000..9f0a824 --- /dev/null +++ b/examples/svg/embedded/desktopservices/contenttab.h @@ -0,0 +1,102 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the demonstration applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef CONTENTTAB_H_ +#define CONTENTTAB_H_ + +// EXTERNAL INCLUDES +#include <QDir> +#include <QUrl> +#include <QIcon> +#include <QFileInfo> +#include <QListWidget> +#include <QDesktopServices> +#include <QStandardPaths> + +// INTERNAL INCLUDES + +// FORWARD DECLARATIONS +QT_BEGIN_NAMESPACE +class QListWidgetItem; +QT_END_NAMESPACE + +// CLASS DECLARATION + +/** +* ContentTab class. +* +* This class implements general purpose tab for media files. +*/ +class ContentTab : public QListWidget +{ + Q_OBJECT + +public: // Constructors & Destructors + ContentTab(QWidget *parent); + virtual ~ContentTab(); + +public: // New Methods + virtual void init(const QStandardPaths::StandardLocation &location, + const QString &filter, + const QString &icon); + +protected: // New Methods + virtual void setContentDir(const QStandardPaths::StandardLocation &location); + virtual void setIcon(const QString &icon); + virtual void populateListWidget(); + virtual QString itemName(const QFileInfo &item); + virtual QUrl itemUrl(QListWidgetItem *item); + virtual void handleErrorInOpen(QListWidgetItem *item); +protected: + void keyPressEvent(QKeyEvent *event); + +public slots: // New Slots + virtual void openItem(QListWidgetItem *item); + +protected: // Owned variables + QDir m_ContentDir; + QIcon m_Icon; +}; + + +#endif // CONTENTTAB_H_ + +// End of File diff --git a/examples/svg/embedded/desktopservices/data/Explosion.wav b/examples/svg/embedded/desktopservices/data/Explosion.wav Binary files differnew file mode 100644 index 0000000..7b140b1 --- /dev/null +++ b/examples/svg/embedded/desktopservices/data/Explosion.wav diff --git a/examples/svg/embedded/desktopservices/data/designer.png b/examples/svg/embedded/desktopservices/data/designer.png Binary files differnew file mode 100644 index 0000000..1485efa --- /dev/null +++ b/examples/svg/embedded/desktopservices/data/designer.png diff --git a/examples/svg/embedded/desktopservices/data/monkey_on_64x64.png b/examples/svg/embedded/desktopservices/data/monkey_on_64x64.png Binary files differnew file mode 100644 index 0000000..990f604 --- /dev/null +++ b/examples/svg/embedded/desktopservices/data/monkey_on_64x64.png diff --git a/examples/svg/embedded/desktopservices/data/sax.mp3 b/examples/svg/embedded/desktopservices/data/sax.mp3 Binary files differnew file mode 100644 index 0000000..d77c817 --- /dev/null +++ b/examples/svg/embedded/desktopservices/data/sax.mp3 diff --git a/examples/svg/embedded/desktopservices/desktopservices.pro b/examples/svg/embedded/desktopservices/desktopservices.pro new file mode 100644 index 0000000..1410451 --- /dev/null +++ b/examples/svg/embedded/desktopservices/desktopservices.pro @@ -0,0 +1,21 @@ +QT+=widgets + +HEADERS += desktopwidget.h contenttab.h linktab.h +SOURCES += desktopwidget.cpp contenttab.cpp linktab.cpp main.cpp + +RESOURCES += desktopservices.qrc + +EXAMPLE_FILES += data + +music.files = data/*.mp3 data/*.wav +image.files = data/*.png + +target.path = $$[QT_INSTALL_EXAMPLES]/svg/embedded/desktopservices + +wince*{ + music.path = "\\My Documents\\My Music" + image.path = "\\My Documents\\My Pictures" + DEPLOYMENT += music image +} + +INSTALLS += target diff --git a/examples/svg/embedded/desktopservices/desktopservices.qrc b/examples/svg/embedded/desktopservices/desktopservices.qrc new file mode 100644 index 0000000..410175f --- /dev/null +++ b/examples/svg/embedded/desktopservices/desktopservices.qrc @@ -0,0 +1,8 @@ +<!DOCTYPE RCC><RCC version="1.0"> +<qresource prefix="/"> + <file>resources/music.png</file> + <file>resources/photo.png</file> + <file>resources/browser.png</file> + <file>resources/message.png</file> +</qresource> +</RCC> diff --git a/examples/svg/embedded/desktopservices/desktopwidget.cpp b/examples/svg/embedded/desktopservices/desktopwidget.cpp new file mode 100644 index 0000000..75cc249 --- /dev/null +++ b/examples/svg/embedded/desktopservices/desktopwidget.cpp @@ -0,0 +1,90 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the demonstration applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// EXTERNAL INCLUDES +#include <QTabWidget> +#include <QVBoxLayout> +#include <QStandardPaths> + +// INTERNAL INCLUDES +#include "linktab.h" +#include "contenttab.h" + +// CLASS HEADER +#include "desktopwidget.h" + +// CONSTRUCTORS & DESTRUCTORS +DesktopWidget::DesktopWidget(QWidget *parent) : QWidget(parent) + +{ + QTabWidget *tabWidget = new QTabWidget(this); + + // Images + ContentTab* imageTab = new ContentTab(tabWidget); + imageTab->init(QStandardPaths::PicturesLocation, + "*.png;*.jpg;*.jpeg;*.bmp;*.gif", + ":/resources/photo.png"); + tabWidget->addTab(imageTab, tr("Images")); + + // Music + ContentTab* musicTab = new ContentTab(tabWidget); + musicTab->init(QStandardPaths::MusicLocation, + "*.wav;*.mp3;*.mp4", + ":/resources/music.png"); + tabWidget->addTab(musicTab, tr("Music")); + + // Links + LinkTab* othersTab = new LinkTab(tabWidget);; + // Given icon file will be overridden by LinkTab + othersTab->init(QStandardPaths::PicturesLocation, "", ""); + tabWidget->addTab(othersTab, tr("Links")); + + // Layout + QVBoxLayout *layout = new QVBoxLayout; + layout->addWidget(tabWidget); + setLayout(layout); +} + +DesktopWidget::~DesktopWidget() +{ +} + +// End of file diff --git a/examples/svg/embedded/desktopservices/desktopwidget.h b/examples/svg/embedded/desktopservices/desktopwidget.h new file mode 100644 index 0000000..6c1539c --- /dev/null +++ b/examples/svg/embedded/desktopservices/desktopwidget.h @@ -0,0 +1,73 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the demonstration applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef DESKTOPWIDGET_H_ +#define DESKTOPWIDGET_H_ + +// EXTERNAL INCLUDES +#include <QWidget> + +// INTERNAL INCLUDES + +// FORWARD DECLARATIONS +QT_BEGIN_NAMESPACE +class QTabWidget; +QT_END_NAMESPACE + +// CLASS DECLARATION +/** +* DesktopWidget class. +* +* Implements the main top level widget for QDesktopServices demo app. +*/ +class DesktopWidget : public QWidget +{ + Q_OBJECT + +public: // Constructors & Destructors + DesktopWidget(QWidget *parent); + ~DesktopWidget(); + +}; + +#endif // DESKTOPWIDGET_H_ + +// End of file diff --git a/examples/svg/embedded/desktopservices/linktab.cpp b/examples/svg/embedded/desktopservices/linktab.cpp new file mode 100644 index 0000000..523a104 --- /dev/null +++ b/examples/svg/embedded/desktopservices/linktab.cpp @@ -0,0 +1,88 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the demonstration applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// EXTERNAL INCLUDES +#include <QUrl> +#include <QMessageBox> +#include <QListWidgetItem> + +// INTERNAL INCLUDES + +// CLASS HEADER +#include "linktab.h" + +LinkTab::LinkTab(QWidget *parent) : + ContentTab(parent) +{ +} + +LinkTab::~LinkTab() +{ +} + +void LinkTab::populateListWidget() +{ + m_WebItem = new QListWidgetItem(QIcon(":/resources/browser.png"), tr("Launch Browser"), this); + m_MailToItem = new QListWidgetItem(QIcon(":/resources/message.png"), tr("New e-mail"), this); +} + +QUrl LinkTab::itemUrl(QListWidgetItem *item) +{ + if (m_WebItem == item) { + return QUrl(tr("http://qt-project.org")); + } else if (m_MailToItem == item) { + return QUrl(tr("mailto:noreply@qt-project.org?subject=Qt feedback&body=Hello")); + } else { + // We should never endup here + Q_ASSERT(false); + return QUrl(); + } +} +void LinkTab::handleErrorInOpen(QListWidgetItem *item) +{ + if (m_MailToItem == item) { + QMessageBox::warning(this, tr("Operation Failed"), tr("Please check that you have\ne-mail account defined."), QMessageBox::Close); + } else { + ContentTab::handleErrorInOpen(item); + } +} + +// End of file diff --git a/examples/svg/embedded/desktopservices/linktab.h b/examples/svg/embedded/desktopservices/linktab.h new file mode 100644 index 0000000..8d13475 --- /dev/null +++ b/examples/svg/embedded/desktopservices/linktab.h @@ -0,0 +1,86 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the demonstration applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef LINKTAB_H_ +#define LINKTAB_H_ + +// EXTERNAL INCLUDES + +// INTERNAL INCLUDES +#include "contenttab.h" + +// FORWARD DECLARATIONS +QT_BEGIN_NAMESPACE +class QWidget; +class QListWidgetItem; +QT_END_NAMESPACE + +// CLASS DECLARATION + +/** +* LinkTab class. +* +* This class implements tab for opening http and mailto links. +*/ +class LinkTab : public ContentTab +{ + Q_OBJECT + +public: // Constructors & Destructors + LinkTab(QWidget *parent); + ~LinkTab(); + +protected: // Derived Methods + virtual void populateListWidget(); + virtual QUrl itemUrl(QListWidgetItem *item); + virtual void handleErrorInOpen(QListWidgetItem *item); + +private: // Used variables + QListWidgetItem *m_WebItem; + QListWidgetItem *m_MailToItem; + +private: // Owned variables + +}; + +#endif // CONTENTTAB_H_ + +// End of File diff --git a/examples/svg/embedded/desktopservices/main.cpp b/examples/svg/embedded/desktopservices/main.cpp new file mode 100644 index 0000000..878d589 --- /dev/null +++ b/examples/svg/embedded/desktopservices/main.cpp @@ -0,0 +1,56 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the demonstration applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QApplication> +#include "desktopwidget.h" + +int main(int argc, char *argv[]) +{ + Q_INIT_RESOURCE(desktopservices); + + QApplication app(argc, argv); + DesktopWidget* myWidget = new DesktopWidget(0); + myWidget->showMaximized(); + + return app.exec(); +} + +// End of file diff --git a/examples/svg/embedded/desktopservices/resources/browser.png b/examples/svg/embedded/desktopservices/resources/browser.png Binary files differnew file mode 100644 index 0000000..9ecda6b --- /dev/null +++ b/examples/svg/embedded/desktopservices/resources/browser.png diff --git a/examples/svg/embedded/desktopservices/resources/heart.svg b/examples/svg/embedded/desktopservices/resources/heart.svg new file mode 100644 index 0000000..ba5f050 --- /dev/null +++ b/examples/svg/embedded/desktopservices/resources/heart.svg @@ -0,0 +1,55 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --><svg viewBox="100 200 550 500" height="595.27559pt" id="svg1" inkscape:version="0.40+cvs" sodipodi:docbase="C:\Documents and Settings\Jon Phillips\My Documents\projects\clipart-project\submissions" sodipodi:docname="heart-left-highlight.svg" sodipodi:version="0.32" width="595.27559pt" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:svg="http://www.w3.org/2000/svg"> +<metadata> +<rdf:RDF xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> +<cc:Work rdf:about=""> +<dc:title>Heart Left-Highlight</dc:title> +<dc:description>This is a normal valentines day heart.</dc:description> +<dc:subject> +<rdf:Bag> +<rdf:li>holiday</rdf:li> +<rdf:li>valentines</rdf:li> +<rdf:li></rdf:li> +<rdf:li>valentine</rdf:li> +<rdf:li>hash(0x8a091c0)</rdf:li> +<rdf:li>hash(0x8a0916c)</rdf:li> +<rdf:li>signs_and_symbols</rdf:li> +<rdf:li>hash(0x8a091f0)</rdf:li> +<rdf:li>day</rdf:li> +</rdf:Bag> +</dc:subject> +<dc:publisher> +<cc:Agent rdf:about="http://www.openclipart.org"> +<dc:title>Jon Phillips</dc:title> +</cc:Agent> +</dc:publisher> +<dc:creator> +<cc:Agent> +<dc:title>Jon Phillips</dc:title> +</cc:Agent> +</dc:creator> +<dc:rights> +<cc:Agent> +<dc:title>Jon Phillips</dc:title> +</cc:Agent> +</dc:rights> +<dc:date></dc:date> +<dc:format>image/svg+xml</dc:format> +<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> +<cc:license rdf:resource="http://web.resource.org/cc/PublicDomain"/> +<dc:language>en</dc:language> +</cc:Work> +<cc:License rdf:about="http://web.resource.org/cc/PublicDomain"> +<cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/> +<cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/> +<cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/> +</cc:License> +</rdf:RDF> +</metadata> +<defs id="defs3"/> +<sodipodi:namedview bordercolor="#666666" borderopacity="1.0" id="base" inkscape:current-layer="layer1" inkscape:cx="549.40674" inkscape:cy="596.00159" inkscape:document-units="px" inkscape:guide-bbox="true" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:window-height="615" inkscape:window-width="866" inkscape:window-x="88" inkscape:window-y="116" inkscape:zoom="0.35000000" pagecolor="#ffffff" showguides="true"/> +<g id="layer1" inkscape:groupmode="layer" inkscape:label="Layer 1"> +<path d="M 263.41570,235.14588 C 197.17570,235.14588 143.41575,288.90587 143.41575,355.14588 C 143.41575,489.90139 279.34890,525.23318 371.97820,658.45392 C 459.55244,526.05056 600.54070,485.59932 600.54070,355.14588 C 600.54070,288.90588 546.78080,235.14587 480.54070,235.14588 C 432.49280,235.14588 391.13910,263.51631 371.97820,304.33338 C 352.81740,263.51630 311.46370,235.14587 263.41570,235.14588 z " id="path7" sodipodi:nodetypes="ccccccc" style="fill:#e60000;fill-opacity:1.0000000;stroke:#000000;stroke-width:18.700001;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"/> +<path d="M 265.00000,253.59375 C 207.04033,253.59375 160.00000,300.63407 160.00000,358.59375 C 160.00000,476.50415 278.91857,507.43251 359.96875,624.00000 C 366.52868,614.08205 220.00000,478.47309 220.00000,378.59375 C 220.00000,320.63407 267.04033,273.59375 325.00000,273.59375 C 325.50453,273.59375 325.99718,273.64912 326.50000,273.65625 C 309.22436,261.07286 288.00557,253.59374 265.00000,253.59375 z " id="path220" sodipodi:nodetypes="ccccccc" style="fill:#e6e6e6;fill-opacity:0.64556962;stroke:none;stroke-width:18.700001;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"/> +</g> +</svg> diff --git a/examples/svg/embedded/desktopservices/resources/message.png b/examples/svg/embedded/desktopservices/resources/message.png Binary files differnew file mode 100644 index 0000000..78917c7 --- /dev/null +++ b/examples/svg/embedded/desktopservices/resources/message.png diff --git a/examples/svg/embedded/desktopservices/resources/music.png b/examples/svg/embedded/desktopservices/resources/music.png Binary files differnew file mode 100644 index 0000000..cc569cb --- /dev/null +++ b/examples/svg/embedded/desktopservices/resources/music.png diff --git a/examples/svg/embedded/desktopservices/resources/photo.png b/examples/svg/embedded/desktopservices/resources/photo.png Binary files differnew file mode 100644 index 0000000..ac81cf3 --- /dev/null +++ b/examples/svg/embedded/desktopservices/resources/photo.png diff --git a/examples/svg/embedded/embedded.pro b/examples/svg/embedded/embedded.pro new file mode 100644 index 0000000..09cbcd2 --- /dev/null +++ b/examples/svg/embedded/embedded.pro @@ -0,0 +1,3 @@ +TEMPLATE = subdirs +!contains(QT_CONFIG, no-widgets): SUBDIRS += desktopservices fluidlauncher weatherinfo +QT+=widgets diff --git a/examples/svg/embedded/fluidlauncher/backup_registration.xml b/examples/svg/embedded/fluidlauncher/backup_registration.xml new file mode 100644 index 0000000..794e11d --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/backup_registration.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" standalone="yes"?> +<backup_registration> + <passive_backup> + <include_directory name = "\" /> + </passive_backup> + <system_backup/> + <restore requires_reboot = "no"/> +</backup_registration> diff --git a/examples/svg/embedded/fluidlauncher/config.xml b/examples/svg/embedded/fluidlauncher/config.xml new file mode 100644 index 0000000..6cb4be7 --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/config.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<demolauncher> + <demos> + <example filename="../embeddedsvgviewer/embeddedsvgviewer" name="SVG Viewer" image="screenshots/embeddedsvgviewer.png" args="../embeddedsvgviewer/shapes.svg"/> + <example filename="../styledemo/styledemo" name="Stylesheets" image="screenshots/styledemo.png"/> + <example filename="../../deform/deform" name="Vector Deformation" image="screenshots/deform.png" args="-small-screen"/> + <example filename="../../pathstroke/pathstroke" name="Path Stroking" image="screenshots/pathstroke.png" args="-small-screen"/> + <example filename="../../../examples/widgets/wiggly/wiggly" name="Wiggly Text" image="screenshots/wiggly.png"/> + <example filename="../../../examples/painting/concentriccircles/concentriccircles" name="Concentric Circles" image="screenshots/concentriccircles.png"/> +<!-- + <example filename="../../../examples/graphicsview/elasticnodes/elasticnodes" name="Elastic Nodes" image="screenshots/elasticnodes.png" args="-maximize"/> + <example filename="../../../examples/assistant/simpletextviewer/simpletextviewer" name="Simple Text Viewer" image="../../../doc/html/images/simpletextviewer-mainwindow.png"/> + <example filename="../../../examples/dialogs/trivialwizard/trivialwizard" name="Trivial Wizard" image="../../../doc/html/images/trivialwizard-example-conclusion.png"/> + <example filename="../../../examples/draganddrop/draggableicons/draggableicons" name="Draggable Icons" image="../../../doc/html/images/draggableicons-example.png"/> + <example filename="../../../examples/draganddrop/draggabletext/draggabletext" name="Draggable Text" image="../../../doc/html/images/draggabletext-example.png"/> + <example filename="../../../examples/draganddrop/fridgemagnets/fridgemagnets" name="Fridge Magnets" image="../../../doc/html/images/fridgemagnets-example.png"/> + <example filename="../../../examples/graphicsview/collidingmice/collidingmice" name="Colliding Mice" image="../../../doc/html/images/collidingmice-example.png"/> + <example filename="../../../examples/graphicsview/padnavigator/padnavigator" name="Pad Navigator" image="../../../doc/html/images/padnavigator-example.png"/> + <example filename="../../../examples/itemviews/coloreditorfactory/coloreditorfactory" name="Color Editor" image="../../../doc/html/images/coloreditorfactoryimage.png"/> +--> + + </demos> + <slideshow timeout="60000" interval="10000"> + <imagedir dir="slides"/> + </slideshow> +</demolauncher> diff --git a/examples/svg/embedded/fluidlauncher/config_s60/config.xml b/examples/svg/embedded/fluidlauncher/config_s60/config.xml new file mode 100644 index 0000000..4f10488 --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/config_s60/config.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<demolauncher> + <demos> + <example filename="embeddedsvgviewer" name="SVG Viewer" image="screenshots/embeddedsvgviewer_s60.png" args="/data/images/qt/demos/embeddedsvgviewer/shapes.svg"/> + <example filename="styledemo" name="Stylesheets" image="screenshots/styledemo_s60.png"/> + <example filename="deform" name="Vector Deformation" image="screenshots/deform.png" args="-small-screen"/> + <example filename="pathstroke" name="Path Stroking" image="screenshots/pathstroke.png" args="-small-screen"/> + <example filename="wiggly" name="Wiggly Text" image="screenshots/wiggly_s60.png" args="-small-screen"/> + <example filename="qftp" name="Ftp Client" image="screenshots/ftp_s60.png"/> + <example filename="context2d" name="Context2d" image="screenshots/context2d_s60.png" args="-small-screen"/> + <example filename="saxbookmarks" name="SaxBookmarks" image="screenshots/saxbookmarks_s60.png"/> + <example filename="desktopservices" name="Desktop Services" image="screenshots/desktopservices_s60.png"/> + <example filename="fridgemagnets" name="Fridge Magnets" image="screenshots/fridgemagnets_s60.png" args="-small-screen"/> + <example filename="softkeys" name="Softkeys" image="screenshots/softkeys_s60.png"/> + <example filename="anomaly" name="Anomaly Browser" image="screenshots/anomaly_s60.png"/> + <example filename="raycasting" name="Ray casting" image="screenshots/raycasting.png"/> + <example filename="lightmaps" name="OpenStreetMap" image="screenshots/lightmaps.png"/> + <example filename="flightinfo" name="Flight Info" image="screenshots/flightinfo_s60.png"/> + <example filename="weatherinfo" name="Weather Info" image="screenshots/weatherinfo.png"/> + <example filename="flickable" name="Kinetic Scrolling" image="screenshots/flickable.png"/> + <example filename="digiflip" name="Flipping Clock" image="screenshots/digiflip.png"/> + <example filename="qmediaplayer" name="Media Player" image="screenshots/mediaplayer.png" args="-small-screen"/> + <example filename="spectrum" name="Spectrum Analyzer" image="screenshots/spectrum.png" args="-small-screen"/> + <example filename="qmlcalculator" name="Qml Calculator" image="screenshots/qmlcalculator.png"/> + <example filename="qmlclocks" name="Qml Clocks" image="screenshots/qmlclocks.png"/> + <example filename="qmldialcontrol" name="Qml Dial Control" image="screenshots/qmldialcontrol.png"/> + <example filename="qmleasing" name="Qml Easing Curves" image="screenshots/qmleasing.png"/> + <example filename="qmlflickr" name="Qml flickr" image="screenshots/qmlflickr.jpg"/> + <example filename="qmlphotoviewer" name="Qml Photo Viewer" image="screenshots/qmlphotoviewer.jpg"/> + <example filename="qmltwitter" name="Qml twitter" image="screenshots/qmltwitter.jpg"/> + </demos> + <slideshow timeout="60000" interval="10000"> + <imagedir dir="slides"/> + </slideshow> +</demolauncher> diff --git a/examples/svg/embedded/fluidlauncher/config_wince/config.xml b/examples/svg/embedded/fluidlauncher/config_wince/config.xml new file mode 100644 index 0000000..3b57770 --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/config_wince/config.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<demolauncher> + <demos> + <example filename="embeddedsvgviewer" name="SVG Viewer" image="screenshots/embeddedsvgviewer.png" args="shapes.svg"/> + <example filename="styledemo" name="Stylesheets" image="screenshots/styledemo.png"/> + <example filename="deform" name="Vector Deformation" image="screenshots/deform.png" args="-small-screen"/> + <example filename="pathstroke" name="Path Stroking" image="screenshots/pathstroke.png" args="-small-screen"/> + <example filename="wiggly" name="Wiggly Text" image="screenshots/wiggly.png"/> + </demos> + <slideshow timeout="60000" interval="10000"> + <imagedir dir="slides"/> + </slideshow> +</demolauncher> diff --git a/examples/svg/embedded/fluidlauncher/demoapplication.cpp b/examples/svg/embedded/fluidlauncher/demoapplication.cpp new file mode 100644 index 0000000..96af4ae --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/demoapplication.cpp @@ -0,0 +1,116 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the demonstration applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QDebug> +#include <QDir> + +#include "demoapplication.h" + + + +DemoApplication::DemoApplication(QString executableName, QString caption, QString imageName, QStringList args) +{ + imagePath = imageName; + appCaption = caption; + + if (executableName[0] == QLatin1Char('/')) + executablePath = executableName; + else + executablePath = QDir::cleanPath(QDir::currentPath() + QLatin1Char('/') + executableName); + + arguments = args; + + process.setProcessChannelMode(QProcess::ForwardedChannels); + + QObject::connect( &process, SIGNAL(finished(int,QProcess::ExitStatus)), + this, SLOT(processFinished(int,QProcess::ExitStatus))); + + QObject::connect( &process, SIGNAL(error(QProcess::ProcessError)), + this, SLOT(processError(QProcess::ProcessError))); + + QObject::connect( &process, SIGNAL(started()), this, SLOT(processStarted())); +} + + +void DemoApplication::launch() +{ + process.start(executablePath, arguments); +} + +QImage* DemoApplication::getImage() +{ + return new QImage(imagePath); +} + +QString DemoApplication::getCaption() +{ + return appCaption; +} + +void DemoApplication::processFinished(int exitCode, QProcess::ExitStatus exitStatus) +{ + Q_UNUSED(exitCode); + Q_UNUSED(exitStatus); + + emit demoFinished(); + + QObject::disconnect(this, SIGNAL(demoStarted()), 0, 0); + QObject::disconnect(this, SIGNAL(demoFinished()), 0, 0); +} + +void DemoApplication::processError(QProcess::ProcessError err) +{ + qDebug() << "Process error: " << err; + if (err == QProcess::Crashed) + emit demoFinished(); +} + + +void DemoApplication::processStarted() +{ + emit demoStarted(); +} + + + + + + diff --git a/examples/svg/embedded/fluidlauncher/demoapplication.h b/examples/svg/embedded/fluidlauncher/demoapplication.h new file mode 100644 index 0000000..20d22ac --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/demoapplication.h @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the demonstration applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef DEMO_APPLICATION_H +#define DEMO_APPLICATION_H + +#include <QPixmap> +#include <QImage> +#include <QProcess> +#include <QObject> + +class DemoApplication : public QObject +{ + Q_OBJECT + +public: + DemoApplication(QString executableName, QString caption, QString imageName, QStringList args); + void launch(); + QImage* getImage(); + QString getCaption(); + +public slots: + void processStarted(); + void processFinished(int exitCode, QProcess::ExitStatus exitStatus); + void processError(QProcess::ProcessError err); + +signals: + void demoStarted(); + void demoFinished(); + +private: + QString imagePath; + QString appCaption; + QString executablePath; + QStringList arguments; + QProcess process; +}; + + + + +#endif + + diff --git a/examples/svg/embedded/fluidlauncher/fluidlauncher.cpp b/examples/svg/embedded/fluidlauncher/fluidlauncher.cpp new file mode 100644 index 0000000..60e788c --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/fluidlauncher.cpp @@ -0,0 +1,289 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the demonstration applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QXmlStreamReader> + +#include "fluidlauncher.h" + + +#define DEFAULT_INPUT_TIMEOUT 10000 +#define SIZING_FACTOR_HEIGHT 6/10 +#define SIZING_FACTOR_WIDTH 6/10 + +FluidLauncher::FluidLauncher(QStringList* args) +{ + pictureFlowWidget = new PictureFlow(); + slideShowWidget = new SlideShow(); + inputTimer = new QTimer(); + + addWidget(pictureFlowWidget); + addWidget(slideShowWidget); + setCurrentWidget(pictureFlowWidget); + pictureFlowWidget->setFocus(); + + QRect screen_size = QApplication::desktop()->screenGeometry(); + + QObject::connect(pictureFlowWidget, SIGNAL(itemActivated(int)), this, SLOT(launchApplication(int))); + QObject::connect(pictureFlowWidget, SIGNAL(inputReceived()), this, SLOT(resetInputTimeout())); + QObject::connect(slideShowWidget, SIGNAL(inputReceived()), this, SLOT(switchToLauncher())); + QObject::connect(inputTimer, SIGNAL(timeout()), this, SLOT(inputTimedout())); + + inputTimer->setSingleShot(true); + inputTimer->setInterval(DEFAULT_INPUT_TIMEOUT); + + const int h = screen_size.height() * SIZING_FACTOR_HEIGHT; + const int w = screen_size.width() * SIZING_FACTOR_WIDTH; + const int hh = qMin(h, w); + const int ww = hh / 3 * 2; + pictureFlowWidget->setSlideSize(QSize(ww, hh)); + + bool success; + int configIndex = args->indexOf("-config"); + if ( (configIndex != -1) && (configIndex != args->count()-1) ) + success = loadConfig(args->at(configIndex+1)); + else + success = loadConfig("config.xml"); + + if (success) { + populatePictureFlow(); + + showFullScreen(); + inputTimer->start(); + } else { + pictureFlowWidget->setAttribute(Qt::WA_DeleteOnClose, true); + pictureFlowWidget->close(); + } + +} + +FluidLauncher::~FluidLauncher() +{ + delete pictureFlowWidget; + delete slideShowWidget; +} + +bool FluidLauncher::loadConfig(QString configPath) +{ + QFile xmlFile(configPath); + + if (!xmlFile.exists() || (xmlFile.error() != QFile::NoError)) { + qDebug() << "ERROR: Unable to open config file " << configPath; + return false; + } + + slideShowWidget->clearImages(); + + xmlFile.open(QIODevice::ReadOnly); + QXmlStreamReader reader(&xmlFile); + while (!reader.atEnd()) { + reader.readNext(); + + if (reader.isStartElement()) { + if (reader.name() == "demos") + parseDemos(reader); + else if(reader.name() == "slideshow") + parseSlideshow(reader); + } + } + + if (reader.hasError()) { + qDebug() << QString("Error parsing %1 on line %2 column %3: \n%4") + .arg(configPath) + .arg(reader.lineNumber()) + .arg(reader.columnNumber()) + .arg(reader.errorString()); + } + + // Append an exit Item + DemoApplication* exitItem = new DemoApplication(QString(), QLatin1String("Exit Embedded Demo"), QString(), QStringList()); + demoList.append(exitItem); + + return true; +} + + +void FluidLauncher::parseDemos(QXmlStreamReader& reader) +{ + while (!reader.atEnd()) { + reader.readNext(); + if (reader.isStartElement() && reader.name() == "example") { + QXmlStreamAttributes attrs = reader.attributes(); + QStringRef filename = attrs.value("filename"); + if (!filename.isEmpty()) { + QStringRef name = attrs.value("name"); + QStringRef image = attrs.value("image"); + QStringRef args = attrs.value("args"); + + DemoApplication* newDemo = new DemoApplication( + filename.toString(), + name.isEmpty() ? "Unnamed Demo" : name.toString(), + image.toString(), + args.toString().split(" ")); + demoList.append(newDemo); + } + } else if(reader.isEndElement() && reader.name() == "demos") { + return; + } + } +} + +void FluidLauncher::parseSlideshow(QXmlStreamReader& reader) +{ + QXmlStreamAttributes attrs = reader.attributes(); + + QStringRef timeout = attrs.value("timeout"); + bool valid; + if (!timeout.isEmpty()) { + int t = timeout.toString().toInt(&valid); + if (valid) + inputTimer->setInterval(t); + } + + QStringRef interval = attrs.value("interval"); + if (!interval.isEmpty()) { + int i = interval.toString().toInt(&valid); + if (valid) + slideShowWidget->setSlideInterval(i); + } + + while (!reader.atEnd()) { + reader.readNext(); + if (reader.isStartElement()) { + QXmlStreamAttributes attrs = reader.attributes(); + if (reader.name() == "imagedir") { + QStringRef dir = attrs.value("dir"); + slideShowWidget->addImageDir(dir.toString()); + } else if(reader.name() == "image") { + QStringRef image = attrs.value("image"); + slideShowWidget->addImage(image.toString()); + } + } else if(reader.isEndElement() && reader.name() == "slideshow") { + return; + } + } + +} + +void FluidLauncher::populatePictureFlow() +{ + pictureFlowWidget->setSlideCount(demoList.count()); + + for (int i=demoList.count()-1; i>=0; --i) { + pictureFlowWidget->setSlide(i, *(demoList[i]->getImage())); + pictureFlowWidget->setSlideCaption(i, demoList[i]->getCaption()); + } + + pictureFlowWidget->setCurrentSlide(demoList.count()/2); +} + + +void FluidLauncher::launchApplication(int index) +{ + // NOTE: Clearing the caches will free up more memory for the demo but will cause + // a delay upon returning, as items are reloaded. + //pictureFlowWidget->clearCaches(); + + if (index == demoList.size() -1) { + qApp->quit(); + return; + } + + inputTimer->stop(); + + QObject::connect(demoList[index], SIGNAL(demoFinished()), this, SLOT(demoFinished())); + + demoList[index]->launch(); +} + + +void FluidLauncher::switchToLauncher() +{ + slideShowWidget->stopShow(); + inputTimer->start(); + setCurrentWidget(pictureFlowWidget); +} + + +void FluidLauncher::resetInputTimeout() +{ + if (inputTimer->isActive()) + inputTimer->start(); +} + +void FluidLauncher::inputTimedout() +{ + switchToSlideshow(); +} + + +void FluidLauncher::switchToSlideshow() +{ + inputTimer->stop(); + slideShowWidget->startShow(); + setCurrentWidget(slideShowWidget); +} + +void FluidLauncher::demoFinished() +{ + setCurrentWidget(pictureFlowWidget); + inputTimer->start(); + + // Bring the Fluidlauncher to the foreground to allow selecting another demo + raise(); + activateWindow(); +} + +void FluidLauncher::changeEvent(QEvent* event) +{ + if (event->type() == QEvent::ActivationChange) { + if (isActiveWindow()) { + if(currentWidget() == pictureFlowWidget) { + resetInputTimeout(); + } else { + slideShowWidget->startShow(); + } + } else { + inputTimer->stop(); + slideShowWidget->stopShow(); + } + } + QStackedWidget::changeEvent(event); +} diff --git a/examples/svg/embedded/fluidlauncher/fluidlauncher.h b/examples/svg/embedded/fluidlauncher/fluidlauncher.h new file mode 100644 index 0000000..8278971 --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/fluidlauncher.h @@ -0,0 +1,86 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the demonstration applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef FLUID_LAUNCHER_H +#define FLUID_LAUNCHER_H + +#include <QtWidgets> +#include <QTimer> +#include <QStringRef> + +#include "pictureflow.h" +#include "slideshow.h" +#include "demoapplication.h" + +class FluidLauncher : public QStackedWidget +{ + Q_OBJECT + +public: + FluidLauncher(QStringList* args); + ~FluidLauncher(); + +public slots: + void launchApplication(int index); + void switchToLauncher(); + void resetInputTimeout(); + void inputTimedout(); + void demoFinished(); + +protected: + void changeEvent(QEvent *event); + +private: + PictureFlow* pictureFlowWidget; + SlideShow* slideShowWidget; + QTimer* inputTimer; + QList<DemoApplication*> demoList; + + bool loadConfig(QString configPath); + void populatePictureFlow(); + void switchToSlideshow(); + void parseDemos(QXmlStreamReader& reader); + void parseSlideshow(QXmlStreamReader& reader); + +}; + + +#endif diff --git a/examples/svg/embedded/fluidlauncher/fluidlauncher.pro b/examples/svg/embedded/fluidlauncher/fluidlauncher.pro new file mode 100644 index 0000000..cf82a54 --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/fluidlauncher.pro @@ -0,0 +1,54 @@ +QT += widgets + +VERSION = $$QT_VERSION + +HEADERS += \ + demoapplication.h \ + fluidlauncher.h \ + pictureflow.h \ + slideshow.h + +SOURCES += \ + demoapplication.cpp \ + fluidlauncher.cpp \ + main.cpp \ + pictureflow.cpp \ + slideshow.cpp + +EXAMPLE_FILES += config.xml screenshots slides + +target.path = $$[QT_INSTALL_EXAMPLES]/svg/embedded/fluidlauncher +INSTALLS += target + +wince*{ + QT += svg + + BUILD_DIR = release + if(!debug_and_release|build_pass):CONFIG(debug, debug|release) { + BUILD_DIR = debug + } + + baseex = $$shadowed($$QT.qtbase.sources/../../examples) + svgex = $$shadowed($$QT.qtsvg.sources/../../examples) + executables.files = \ + $$svgex/embedded/embeddedsvgviewer/$${BUILD_DIR}/embeddedsvgviewer.exe \ + $$baseex/embedded/styleexample/$${BUILD_DIR}/styleexample.exe \ + $$baseex/painting/deform/$${BUILD_DIR}/deform.exe \ + $$baseex/painting/pathstroke/$${BUILD_DIR}/pathstroke.exe \ + $$baseex/graphicsview/elasticnodes/$${BUILD_DIR}/elasticnodes.exe \ + $$baseex/widgets/wiggly/$${BUILD_DIR}/wiggly.exe \ + $$baseex/painting/concentriccircles/$${BUILD_DIR}/concentriccircles.exe \ + $$baseex/draganddrop/$${BUILD_DIR}/fridgemagnets.exe + + executables.path = . + + files.files = $$PWD/screenshots $$PWD/slides $$PWD/../embeddedsvgviewer/shapes.svg + files.path = . + + config.files = $$PWD/config_wince/config.xml + config.path = . + + DEPLOYMENT += config files executables + + DEPLOYMENT_PLUGIN += qgif qjpeg qmng qsvg +} diff --git a/examples/svg/embedded/fluidlauncher/main.cpp b/examples/svg/embedded/fluidlauncher/main.cpp new file mode 100644 index 0000000..565face --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/main.cpp @@ -0,0 +1,60 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the demonstration applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QApplication> +#include <QStringList> + +#include "fluidlauncher.h" + + +int main(int argc, char** argv) +{ + QStringList originalArgs; + + for (int i=0; i<argc; i++) + originalArgs << argv[i]; + + QApplication app(argc, argv); + FluidLauncher launcher(&originalArgs); + + + return app.exec(); +} diff --git a/examples/svg/embedded/fluidlauncher/pictureflow.cpp b/examples/svg/embedded/fluidlauncher/pictureflow.cpp new file mode 100644 index 0000000..d0dfe87 --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/pictureflow.cpp @@ -0,0 +1,1396 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the ActiveQt framework of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/* + ORIGINAL COPYRIGHT HEADER + PictureFlow - animated image show widget + http://pictureflow.googlecode.com + + Copyright (C) 2007 Ariya Hidayat (ariya@kde.org) + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. +*/ + +#include "pictureflow.h" + +#include <QBasicTimer> +#include <QCache> +#include <QImage> +#include <QKeyEvent> +#include <QPainter> +#include <QPixmap> +#include <QTimer> +#include <QVector> +#include <QWidget> +#include <QTime> + +#include <QDebug> + +static const int captionFontSize = +#ifdef Q_WS_S60 + 8; +#else + 14; +#endif + + +// uncomment this to enable bilinear filtering for texture mapping +// gives much better rendering, at the cost of memory space +// #define PICTUREFLOW_BILINEAR_FILTER + +// for fixed-point arithmetic, we need minimum 32-bit long +// long long (64-bit) might be useful for multiplication and division +typedef long PFreal; + +typedef unsigned short QRgb565; + +#define RGB565_RED_MASK 0xF800 +#define RGB565_GREEN_MASK 0x07E0 +#define RGB565_BLUE_MASK 0x001F + +#define RGB565_RED(col) ((col&RGB565_RED_MASK)>>11) +#define RGB565_GREEN(col) ((col&RGB565_GREEN_MASK)>>5) +#define RGB565_BLUE(col) (col&RGB565_BLUE_MASK) + +#define PFREAL_SHIFT 10 +#define PFREAL_FACTOR (1 << PFREAL_SHIFT) +#define PFREAL_ONE (1 << PFREAL_SHIFT) +#define PFREAL_HALF (PFREAL_ONE >> 1) + +inline PFreal fmul(PFreal a, PFreal b) +{ + return ((long long)(a))*((long long)(b)) >> PFREAL_SHIFT; +} + +inline PFreal fdiv(PFreal num, PFreal den) +{ + long long p = (long long)(num) << (PFREAL_SHIFT*2); + long long q = p / (long long)den; + long long r = q >> PFREAL_SHIFT; + + return r; +} + +inline float fixedToFloat(PFreal val) +{ + return ((float)val) / (float)PFREAL_ONE; +} + +inline PFreal floatToFixed(float val) +{ + return (PFreal)(val*PFREAL_ONE); +} + +#define IANGLE_MAX 1024 +#define IANGLE_MASK 1023 + +// warning: regenerate the table if IANGLE_MAX and PFREAL_SHIFT are changed! +static const PFreal sinTable[IANGLE_MAX] = { + 3, 9, 15, 21, 28, 34, 40, 47, + 53, 59, 65, 72, 78, 84, 90, 97, + 103, 109, 115, 122, 128, 134, 140, 147, + 153, 159, 165, 171, 178, 184, 190, 196, + 202, 209, 215, 221, 227, 233, 239, 245, + 251, 257, 264, 270, 276, 282, 288, 294, + 300, 306, 312, 318, 324, 330, 336, 342, + 347, 353, 359, 365, 371, 377, 383, 388, + 394, 400, 406, 412, 417, 423, 429, 434, + 440, 446, 451, 457, 463, 468, 474, 479, + 485, 491, 496, 501, 507, 512, 518, 523, + 529, 534, 539, 545, 550, 555, 561, 566, + 571, 576, 581, 587, 592, 597, 602, 607, + 612, 617, 622, 627, 632, 637, 642, 647, + 652, 656, 661, 666, 671, 675, 680, 685, + 690, 694, 699, 703, 708, 712, 717, 721, + 726, 730, 735, 739, 743, 748, 752, 756, + 760, 765, 769, 773, 777, 781, 785, 789, + 793, 797, 801, 805, 809, 813, 816, 820, + 824, 828, 831, 835, 839, 842, 846, 849, + 853, 856, 860, 863, 866, 870, 873, 876, + 879, 883, 886, 889, 892, 895, 898, 901, + 904, 907, 910, 913, 916, 918, 921, 924, + 927, 929, 932, 934, 937, 939, 942, 944, + 947, 949, 951, 954, 956, 958, 960, 963, + 965, 967, 969, 971, 973, 975, 977, 978, + 980, 982, 984, 986, 987, 989, 990, 992, + 994, 995, 997, 998, 999, 1001, 1002, 1003, + 1004, 1006, 1007, 1008, 1009, 1010, 1011, 1012, + 1013, 1014, 1015, 1015, 1016, 1017, 1018, 1018, + 1019, 1019, 1020, 1020, 1021, 1021, 1022, 1022, + 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, + 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1022, + 1022, 1022, 1021, 1021, 1020, 1020, 1019, 1019, + 1018, 1018, 1017, 1016, 1015, 1015, 1014, 1013, + 1012, 1011, 1010, 1009, 1008, 1007, 1006, 1004, + 1003, 1002, 1001, 999, 998, 997, 995, 994, + 992, 990, 989, 987, 986, 984, 982, 980, + 978, 977, 975, 973, 971, 969, 967, 965, + 963, 960, 958, 956, 954, 951, 949, 947, + 944, 942, 939, 937, 934, 932, 929, 927, + 924, 921, 918, 916, 913, 910, 907, 904, + 901, 898, 895, 892, 889, 886, 883, 879, + 876, 873, 870, 866, 863, 860, 856, 853, + 849, 846, 842, 839, 835, 831, 828, 824, + 820, 816, 813, 809, 805, 801, 797, 793, + 789, 785, 781, 777, 773, 769, 765, 760, + 756, 752, 748, 743, 739, 735, 730, 726, + 721, 717, 712, 708, 703, 699, 694, 690, + 685, 680, 675, 671, 666, 661, 656, 652, + 647, 642, 637, 632, 627, 622, 617, 612, + 607, 602, 597, 592, 587, 581, 576, 571, + 566, 561, 555, 550, 545, 539, 534, 529, + 523, 518, 512, 507, 501, 496, 491, 485, + 479, 474, 468, 463, 457, 451, 446, 440, + 434, 429, 423, 417, 412, 406, 400, 394, + 388, 383, 377, 371, 365, 359, 353, 347, + 342, 336, 330, 324, 318, 312, 306, 300, + 294, 288, 282, 276, 270, 264, 257, 251, + 245, 239, 233, 227, 221, 215, 209, 202, + 196, 190, 184, 178, 171, 165, 159, 153, + 147, 140, 134, 128, 122, 115, 109, 103, + 97, 90, 84, 78, 72, 65, 59, 53, + 47, 40, 34, 28, 21, 15, 9, 3, + -4, -10, -16, -22, -29, -35, -41, -48, + -54, -60, -66, -73, -79, -85, -91, -98, + -104, -110, -116, -123, -129, -135, -141, -148, + -154, -160, -166, -172, -179, -185, -191, -197, + -203, -210, -216, -222, -228, -234, -240, -246, + -252, -258, -265, -271, -277, -283, -289, -295, + -301, -307, -313, -319, -325, -331, -337, -343, + -348, -354, -360, -366, -372, -378, -384, -389, + -395, -401, -407, -413, -418, -424, -430, -435, + -441, -447, -452, -458, -464, -469, -475, -480, + -486, -492, -497, -502, -508, -513, -519, -524, + -530, -535, -540, -546, -551, -556, -562, -567, + -572, -577, -582, -588, -593, -598, -603, -608, + -613, -618, -623, -628, -633, -638, -643, -648, + -653, -657, -662, -667, -672, -676, -681, -686, + -691, -695, -700, -704, -709, -713, -718, -722, + -727, -731, -736, -740, -744, -749, -753, -757, + -761, -766, -770, -774, -778, -782, -786, -790, + -794, -798, -802, -806, -810, -814, -817, -821, + -825, -829, -832, -836, -840, -843, -847, -850, + -854, -857, -861, -864, -867, -871, -874, -877, + -880, -884, -887, -890, -893, -896, -899, -902, + -905, -908, -911, -914, -917, -919, -922, -925, + -928, -930, -933, -935, -938, -940, -943, -945, + -948, -950, -952, -955, -957, -959, -961, -964, + -966, -968, -970, -972, -974, -976, -978, -979, + -981, -983, -985, -987, -988, -990, -991, -993, + -995, -996, -998, -999, -1000, -1002, -1003, -1004, + -1005, -1007, -1008, -1009, -1010, -1011, -1012, -1013, + -1014, -1015, -1016, -1016, -1017, -1018, -1019, -1019, + -1020, -1020, -1021, -1021, -1022, -1022, -1023, -1023, + -1023, -1024, -1024, -1024, -1024, -1024, -1024, -1024, + -1024, -1024, -1024, -1024, -1024, -1024, -1024, -1023, + -1023, -1023, -1022, -1022, -1021, -1021, -1020, -1020, + -1019, -1019, -1018, -1017, -1016, -1016, -1015, -1014, + -1013, -1012, -1011, -1010, -1009, -1008, -1007, -1005, + -1004, -1003, -1002, -1000, -999, -998, -996, -995, + -993, -991, -990, -988, -987, -985, -983, -981, + -979, -978, -976, -974, -972, -970, -968, -966, + -964, -961, -959, -957, -955, -952, -950, -948, + -945, -943, -940, -938, -935, -933, -930, -928, + -925, -922, -919, -917, -914, -911, -908, -905, + -902, -899, -896, -893, -890, -887, -884, -880, + -877, -874, -871, -867, -864, -861, -857, -854, + -850, -847, -843, -840, -836, -832, -829, -825, + -821, -817, -814, -810, -806, -802, -798, -794, + -790, -786, -782, -778, -774, -770, -766, -761, + -757, -753, -749, -744, -740, -736, -731, -727, + -722, -718, -713, -709, -704, -700, -695, -691, + -686, -681, -676, -672, -667, -662, -657, -653, + -648, -643, -638, -633, -628, -623, -618, -613, + -608, -603, -598, -593, -588, -582, -577, -572, + -567, -562, -556, -551, -546, -540, -535, -530, + -524, -519, -513, -508, -502, -497, -492, -486, + -480, -475, -469, -464, -458, -452, -447, -441, + -435, -430, -424, -418, -413, -407, -401, -395, + -389, -384, -378, -372, -366, -360, -354, -348, + -343, -337, -331, -325, -319, -313, -307, -301, + -295, -289, -283, -277, -271, -265, -258, -252, + -246, -240, -234, -228, -222, -216, -210, -203, + -197, -191, -185, -179, -172, -166, -160, -154, + -148, -141, -135, -129, -123, -116, -110, -104, + -98, -91, -85, -79, -73, -66, -60, -54, + -48, -41, -35, -29, -22, -16, -10, -4 +}; + +// this is the program the generate the above table +#if 0 +#include <stdio.h> +#include <math.h> + +#ifndef M_PI +#define M_PI 3.14159265358979323846 +#endif + +#define PFREAL_ONE 1024 +#define IANGLE_MAX 1024 + +int main(int, char**) +{ + FILE*f = fopen("table.c","wt"); + fprintf(f,"PFreal sinTable[] = {\n"); + for(int i = 0; i < 128; i++) + { + for(int j = 0; j < 8; j++) + { + int iang = j+i*8; + double ii = (double)iang + 0.5; + double angle = ii * 2 * M_PI / IANGLE_MAX; + double sinAngle = sin(angle); + fprintf(f,"%6d, ", (int)(floor(PFREAL_ONE*sinAngle))); + } + fprintf(f,"\n"); + } + fprintf(f,"};\n"); + fclose(f); + + return 0; +} +#endif + +inline PFreal fsin(int iangle) +{ + while(iangle < 0) + iangle += IANGLE_MAX; + return sinTable[iangle & IANGLE_MASK]; +} + +inline PFreal fcos(int iangle) +{ + // quarter phase shift + return fsin(iangle + (IANGLE_MAX >> 2)); +} + +struct SlideInfo +{ + int slideIndex; + int angle; + PFreal cx; + PFreal cy; +}; + +class PictureFlowPrivate +{ +public: + PictureFlowPrivate(PictureFlow* widget); + + int slideCount() const; + void setSlideCount(int count); + + QSize slideSize() const; + void setSlideSize(QSize size); + + int zoomFactor() const; + void setZoomFactor(int z); + + QImage slide(int index) const; + void setSlide(int index, const QImage& image); + + int currentSlide() const; + void setCurrentSlide(int index); + + int getTarget() const; + + void showPrevious(); + void showNext(); + void showSlide(int index); + + void resize(int w, int h); + + void render(); + void startAnimation(); + void updateAnimation(); + + void clearSurfaceCache(); + + QImage buffer; + QBasicTimer animateTimer; + + bool singlePress; + int singlePressThreshold; + QPoint firstPress; + QPoint previousPos; + QTime previousPosTimestamp; + int pixelDistanceMoved; + int pixelsToMovePerSlide; + + QVector<QString> captions; + +private: + PictureFlow* widget; + + int slideWidth; + int slideHeight; + int zoom; + + QVector<QImage> slideImages; + int centerIndex; + SlideInfo centerSlide; + QVector<SlideInfo> leftSlides; + QVector<SlideInfo> rightSlides; + + QVector<PFreal> rays; + int itilt; + int spacing; + PFreal offsetX; + PFreal offsetY; + + QImage blankSurface; + QCache<int, QImage> surfaceCache; + QTimer triggerTimer; + + int slideFrame; + int step; + int target; + int fade; + + void recalc(int w, int h); + QRect renderSlide(const SlideInfo &slide, int alpha=256, int col1=-1, int col=-1); + QImage* surface(int slideIndex); + void triggerRender(); + void resetSlides(); +}; + +PictureFlowPrivate::PictureFlowPrivate(PictureFlow* w) +{ + widget = w; + + slideWidth = 200; + slideHeight = 200; + zoom = 100; + + centerIndex = 0; + + slideFrame = 0; + step = 0; + target = 0; + fade = 256; + + triggerTimer.setSingleShot(true); + triggerTimer.setInterval(0); + QObject::connect(&triggerTimer, SIGNAL(timeout()), widget, SLOT(render())); + + recalc(200, 200); + resetSlides(); +} + +int PictureFlowPrivate::slideCount() const +{ + return slideImages.count(); +} + +void PictureFlowPrivate::setSlideCount(int count) +{ + slideImages.resize(count); + captions.resize(count); + surfaceCache.clear(); + resetSlides(); + triggerRender(); +} + +QSize PictureFlowPrivate::slideSize() const +{ + return QSize(slideWidth, slideHeight); +} + +void PictureFlowPrivate::setSlideSize(QSize size) +{ + slideWidth = size.width(); + slideHeight = size.height(); + recalc(buffer.width(), buffer.height()); + triggerRender(); +} + +int PictureFlowPrivate::zoomFactor() const +{ + return zoom; +} + +void PictureFlowPrivate::setZoomFactor(int z) +{ + if(z <= 0) + return; + + zoom = z; + recalc(buffer.width(), buffer.height()); + triggerRender(); +} + +QImage PictureFlowPrivate::slide(int index) const +{ + return slideImages[index]; +} + +void PictureFlowPrivate::setSlide(int index, const QImage& image) +{ + if((index >= 0) && (index < slideImages.count())) + { + slideImages[index] = image; + surfaceCache.remove(index); + triggerRender(); + } +} + +int PictureFlowPrivate::getTarget() const +{ + return target; +} + +int PictureFlowPrivate::currentSlide() const +{ + return centerIndex; +} + +void PictureFlowPrivate::setCurrentSlide(int index) +{ + step = 0; + centerIndex = qBound(index, 0, slideImages.count()-1); + target = centerIndex; + slideFrame = index << 16; + resetSlides(); + triggerRender(); +} + +void PictureFlowPrivate::showPrevious() +{ + if(step >= 0) + { + if(centerIndex > 0) + { + target--; + startAnimation(); + } + } + else + { + target = qMax(0, centerIndex - 2); + } +} + +void PictureFlowPrivate::showNext() +{ + if(step <= 0) + { + if(centerIndex < slideImages.count()-1) + { + target++; + startAnimation(); + } + } + else + { + target = qMin(centerIndex + 2, slideImages.count()-1); + } +} + +void PictureFlowPrivate::showSlide(int index) +{ + index = qMax(index, 0); + index = qMin(slideImages.count()-1, index); + if(index == centerSlide.slideIndex) + return; + + target = index; + startAnimation(); +} + +void PictureFlowPrivate::resize(int w, int h) +{ + recalc(w, h); + resetSlides(); + triggerRender(); +} + + +// adjust slides so that they are in "steady state" position +void PictureFlowPrivate::resetSlides() +{ + centerSlide.angle = 0; + centerSlide.cx = 0; + centerSlide.cy = 0; + centerSlide.slideIndex = centerIndex; + + leftSlides.clear(); + leftSlides.resize(3); + for(int i = 0; i < leftSlides.count(); i++) + { + SlideInfo& si = leftSlides[i]; + si.angle = itilt; + si.cx = -(offsetX + spacing*i*PFREAL_ONE); + si.cy = offsetY; + si.slideIndex = centerIndex-1-i; + //qDebug() << "Left[" << i << "] x=" << fixedToFloat(si.cx) << ", y=" << fixedToFloat(si.cy) ; + } + + rightSlides.clear(); + rightSlides.resize(3); + for(int i = 0; i < rightSlides.count(); i++) + { + SlideInfo& si = rightSlides[i]; + si.angle = -itilt; + si.cx = offsetX + spacing*i*PFREAL_ONE; + si.cy = offsetY; + si.slideIndex = centerIndex+1+i; + //qDebug() << "Right[" << i << "] x=" << fixedToFloat(si.cx) << ", y=" << fixedToFloat(si.cy) ; + } +} + +#define BILINEAR_STRETCH_HOR 4 +#define BILINEAR_STRETCH_VER 4 + +static QImage prepareSurface(QImage img, int w, int h) +{ + Qt::TransformationMode mode = Qt::SmoothTransformation; + img = img.scaled(w, h, Qt::IgnoreAspectRatio, mode); + + // slightly larger, to accommodate for the reflection + int hs = h * 2; + int hofs = h / 3; + + // offscreen buffer: black is sweet + QImage result(hs, w, QImage::Format_RGB16); + result.fill(0); + + // transpose the image, this is to speed-up the rendering + // because we process one column at a time + // (and much better and faster to work row-wise, i.e in one scanline) + for(int x = 0; x < w; x++) + for(int y = 0; y < h; y++) + result.setPixel(hofs + y, x, img.pixel(x, y)); + + // create the reflection + int ht = hs - h - hofs; + int hte = ht; + for(int x = 0; x < w; x++) + for(int y = 0; y < ht; y++) + { + QRgb color = img.pixel(x, img.height()-y-1); + //QRgb565 color = img.scanLine(img.height()-y-1) + x*sizeof(QRgb565); //img.pixel(x, img.height()-y-1); + int a = qAlpha(color); + int r = qRed(color) * a / 256 * (hte - y) / hte * 3/5; + int g = qGreen(color) * a / 256 * (hte - y) / hte * 3/5; + int b = qBlue(color) * a / 256 * (hte - y) / hte * 3/5; + result.setPixel(h+hofs+y, x, qRgb(r, g, b)); + } + +#ifdef PICTUREFLOW_BILINEAR_FILTER + int hh = BILINEAR_STRETCH_VER*hs; + int ww = BILINEAR_STRETCH_HOR*w; + result = result.scaled(hh, ww, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); +#endif + + return result; +} + + +// get transformed image for specified slide +// if it does not exist, create it and place it in the cache +QImage* PictureFlowPrivate::surface(int slideIndex) +{ + if(slideIndex < 0) + return 0; + if(slideIndex >= slideImages.count()) + return 0; + + if(surfaceCache.contains(slideIndex)) + return surfaceCache[slideIndex]; + + QImage img = widget->slide(slideIndex); + if(img.isNull()) + { + if(blankSurface.isNull()) + { + blankSurface = QImage(slideWidth, slideHeight, QImage::Format_RGB16); + + QPainter painter(&blankSurface); + QPoint p1(slideWidth*4/10, 0); + QPoint p2(slideWidth*6/10, slideHeight); + QLinearGradient linearGrad(p1, p2); + linearGrad.setColorAt(0, Qt::black); + linearGrad.setColorAt(1, Qt::white); + painter.setBrush(linearGrad); + painter.fillRect(0, 0, slideWidth, slideHeight, QBrush(linearGrad)); + + painter.setPen(QPen(QColor(64,64,64), 4)); + painter.setBrush(QBrush()); + painter.drawRect(2, 2, slideWidth-3, slideHeight-3); + painter.end(); + blankSurface = prepareSurface(blankSurface, slideWidth, slideHeight); + } + return &blankSurface; + } + + surfaceCache.insert(slideIndex, new QImage(prepareSurface(img, slideWidth, slideHeight))); + return surfaceCache[slideIndex]; +} + + +// Schedules rendering the slides. Call this function to avoid immediate +// render and thus cause less flicker. +void PictureFlowPrivate::triggerRender() +{ + triggerTimer.start(); +} + +// Render the slides. Updates only the offscreen buffer. +void PictureFlowPrivate::render() +{ + buffer.fill(0); + + int nleft = leftSlides.count(); + int nright = rightSlides.count(); + + QRect r = renderSlide(centerSlide); + int c1 = r.left(); + int c2 = r.right(); + + if(step == 0) + { + // no animation, boring plain rendering + for(int index = 0; index < nleft-1; index++) + { + int alpha = (index < nleft-2) ? 256 : 128; + QRect rs = renderSlide(leftSlides[index], alpha, 0, c1-1); + if(!rs.isEmpty()) + c1 = rs.left(); + } + for(int index = 0; index < nright-1; index++) + { + int alpha = (index < nright-2) ? 256 : 128; + QRect rs = renderSlide(rightSlides[index], alpha, c2+1, buffer.width()); + if(!rs.isEmpty()) + c2 = rs.right(); + } + + QPainter painter; + painter.begin(&buffer); + + QFont font("Arial", captionFontSize); + font.setBold(true); + painter.setFont(font); + painter.setPen(Qt::white); + //painter.setPen(QColor(255,255,255,127)); + + if (!captions.isEmpty()) + painter.drawText( QRect(0,0, buffer.width(), (buffer.height() - slideSize().height())/4), + Qt::AlignCenter, captions[centerIndex]); + + painter.end(); + + } + else + { + // the first and last slide must fade in/fade out + for(int index = 0; index < nleft; index++) + { + int alpha = 256; + if(index == nleft-1) + alpha = (step > 0) ? 0 : 128-fade/2; + if(index == nleft-2) + alpha = (step > 0) ? 128-fade/2 : 256-fade/2; + if(index == nleft-3) + alpha = (step > 0) ? 256-fade/2 : 256; + QRect rs = renderSlide(leftSlides[index], alpha, 0, c1-1); + if(!rs.isEmpty()) + c1 = rs.left(); + + alpha = (step > 0) ? 256-fade/2 : 256; + } + for(int index = 0; index < nright; index++) + { + int alpha = (index < nright-2) ? 256 : 128; + if(index == nright-1) + alpha = (step > 0) ? fade/2 : 0; + if(index == nright-2) + alpha = (step > 0) ? 128+fade/2 : fade/2; + if(index == nright-3) + alpha = (step > 0) ? 256 : 128+fade/2; + QRect rs = renderSlide(rightSlides[index], alpha, c2+1, buffer.width()); + if(!rs.isEmpty()) + c2 = rs.right(); + } + + QPainter painter; + painter.begin(&buffer); + + QFont font("Arial", captionFontSize); + font.setBold(true); + painter.setFont(font); + + int leftTextIndex = (step>0) ? centerIndex : centerIndex-1; + + painter.setPen(QColor(255,255,255, (255-fade) )); + painter.drawText( QRect(0,0, buffer.width(), (buffer.height() - slideSize().height())/4), + Qt::AlignCenter, captions[leftTextIndex]); + + painter.setPen(QColor(255,255,255, fade)); + painter.drawText( QRect(0,0, buffer.width(), (buffer.height() - slideSize().height())/4), + Qt::AlignCenter, captions[leftTextIndex+1]); + + painter.end(); + } +} + + +static inline uint BYTE_MUL_RGB16(uint x, uint a) { + a += 1; + uint t = (((x & 0x07e0)*a) >> 8) & 0x07e0; + t |= (((x & 0xf81f)*(a>>2)) >> 6) & 0xf81f; + return t; +} + +static inline uint BYTE_MUL_RGB16_32(uint x, uint a) { + uint t = (((x & 0xf81f07e0) >> 5)*a) & 0xf81f07e0; + t |= (((x & 0x07e0f81f)*a) >> 5) & 0x07e0f81f; + return t; +} + + +// Renders a slide to offscreen buffer. Returns a rect of the rendered area. +// alpha=256 means normal, alpha=0 is fully black, alpha=128 half transparent +// col1 and col2 limit the column for rendering. +QRect PictureFlowPrivate::renderSlide(const SlideInfo &slide, int alpha, +int col1, int col2) +{ + QImage* src = surface(slide.slideIndex); + if(!src) + return QRect(); + + QRect rect(0, 0, 0, 0); + +#ifdef PICTUREFLOW_BILINEAR_FILTER + int sw = src->height() / BILINEAR_STRETCH_HOR; + int sh = src->width() / BILINEAR_STRETCH_VER; +#else + int sw = src->height(); + int sh = src->width(); +#endif + int h = buffer.height(); + int w = buffer.width(); + + if(col1 > col2) + { + int c = col2; + col2 = col1; + col1 = c; + } + + col1 = (col1 >= 0) ? col1 : 0; + col2 = (col2 >= 0) ? col2 : w-1; + col1 = qMin(col1, w-1); + col2 = qMin(col2, w-1); + + int distance = h * 100 / zoom; + PFreal sdx = fcos(slide.angle); + PFreal sdy = fsin(slide.angle); + PFreal xs = slide.cx - slideWidth * sdx/2; + PFreal ys = slide.cy - slideWidth * sdy/2; + PFreal dist = distance * PFREAL_ONE; + + int xi = qMax((PFreal)0, ((w*PFREAL_ONE/2) + fdiv(xs*h, dist+ys)) >> PFREAL_SHIFT); + if(xi >= w) + return rect; + + bool flag = false; + rect.setLeft(xi); + for(int x = qMax(xi, col1); x <= col2; x++) + { + PFreal hity = 0; + PFreal fk = rays[x]; + if(sdy) + { + fk = fk - fdiv(sdx,sdy); + hity = -fdiv((rays[x]*distance - slide.cx + slide.cy*sdx/sdy), fk); + } + + dist = distance*PFREAL_ONE + hity; + if(dist < 0) + continue; + + PFreal hitx = fmul(dist, rays[x]); + PFreal hitdist = fdiv(hitx - slide.cx, sdx); + +#ifdef PICTUREFLOW_BILINEAR_FILTER + int column = sw*BILINEAR_STRETCH_HOR/2 + (hitdist*BILINEAR_STRETCH_HOR >> PFREAL_SHIFT); + if(column >= sw*BILINEAR_STRETCH_HOR) + break; +#else + int column = sw/2 + (hitdist >> PFREAL_SHIFT); + if(column >= sw) + break; +#endif + if(column < 0) + continue; + + rect.setRight(x); + if(!flag) + rect.setLeft(x); + flag = true; + + int y1 = h/2; + int y2 = y1+ 1; + QRgb565* pixel1 = (QRgb565*)(buffer.scanLine(y1)) + x; + QRgb565* pixel2 = (QRgb565*)(buffer.scanLine(y2)) + x; + int pixelstep = pixel2 - pixel1; + +#ifdef PICTUREFLOW_BILINEAR_FILTER + int center = (sh*BILINEAR_STRETCH_VER/2); + int dy = dist*BILINEAR_STRETCH_VER / h; +#else + int center = (sh/2); + int dy = dist / h; +#endif + int p1 = center*PFREAL_ONE - dy/2; + int p2 = center*PFREAL_ONE + dy/2; + + const QRgb565 *ptr = (const QRgb565*)(src->scanLine(column)); + if(alpha == 256) + while((y1 >= 0) && (y2 < h) && (p1 >= 0)) + { + *pixel1 = ptr[p1 >> PFREAL_SHIFT]; + *pixel2 = ptr[p2 >> PFREAL_SHIFT]; + p1 -= dy; + p2 += dy; + y1--; + y2++; + pixel1 -= pixelstep; + pixel2 += pixelstep; + } + else + while((y1 >= 0) && (y2 < h) && (p1 >= 0)) + { + QRgb565 c1 = ptr[p1 >> PFREAL_SHIFT]; + QRgb565 c2 = ptr[p2 >> PFREAL_SHIFT]; + + *pixel1 = BYTE_MUL_RGB16(c1, alpha); + *pixel2 = BYTE_MUL_RGB16(c2, alpha); + +/* + int r1 = qRed(c1) * alpha/256; + int g1 = qGreen(c1) * alpha/256; + int b1 = qBlue(c1) * alpha/256; + int r2 = qRed(c2) * alpha/256; + int g2 = qGreen(c2) * alpha/256; + int b2 = qBlue(c2) * alpha/256; + *pixel1 = qRgb(r1, g1, b1); + *pixel2 = qRgb(r2, g2, b2); +*/ + p1 -= dy; + p2 += dy; + y1--; + y2++; + pixel1 -= pixelstep; + pixel2 += pixelstep; + } + } + + rect.setTop(0); + rect.setBottom(h-1); + return rect; +} + +// Updates look-up table and other stuff necessary for the rendering. +// Call this when the viewport size or slide dimension is changed. +void PictureFlowPrivate::recalc(int ww, int wh) +{ + int w = (ww+1)/2; + int h = (wh+1)/2; + buffer = QImage(ww, wh, QImage::Format_RGB16); + buffer.fill(0); + + rays.resize(w*2); + + for(int i = 0; i < w; i++) + { + PFreal gg = (PFREAL_HALF + i * PFREAL_ONE) / (2*h); + rays[w-i-1] = -gg; + rays[w+i] = gg; + } + + // pointer must move more than 1/15 of the window to enter drag mode + singlePressThreshold = ww / 15; +// qDebug() << "singlePressThreshold now set to " << singlePressThreshold; + + pixelsToMovePerSlide = ww / 3; +// qDebug() << "pixelsToMovePerSlide now set to " << pixelsToMovePerSlide; + + itilt = 80 * IANGLE_MAX / 360; // approx. 80 degrees tilted + + offsetY = slideWidth/2 * fsin(itilt); + offsetY += slideWidth * PFREAL_ONE / 4; + +// offsetX = slideWidth/2 * (PFREAL_ONE-fcos(itilt)); +// offsetX += slideWidth * PFREAL_ONE; + + // center slide + side slide + offsetX = slideWidth*PFREAL_ONE; +// offsetX = 150*PFREAL_ONE;//(slideWidth/2)*PFREAL_ONE + ( slideWidth*fcos(itilt) )/2; +// qDebug() << "center width = " << slideWidth; +// qDebug() << "side width = " << fixedToFloat(slideWidth/2 * (PFREAL_ONE-fcos(itilt))); +// qDebug() << "offsetX now " << fixedToFloat(offsetX); + + spacing = slideWidth/5; + + surfaceCache.clear(); + blankSurface = QImage(); +} + +void PictureFlowPrivate::startAnimation() +{ + if(!animateTimer.isActive()) + { + step = (target < centerSlide.slideIndex) ? -1 : 1; + animateTimer.start(30, widget); + } +} + +// Updates the animation effect. Call this periodically from a timer. +void PictureFlowPrivate::updateAnimation() +{ + if(!animateTimer.isActive()) + return; + if(step == 0) + return; + + int speed = 16384; + + // deaccelerate when approaching the target + if(true) + { + const int max = 2 * 65536; + + int fi = slideFrame; + fi -= (target << 16); + if(fi < 0) + fi = -fi; + fi = qMin(fi, max); + + int ia = IANGLE_MAX * (fi-max/2) / (max*2); + speed = 512 + 16384 * (PFREAL_ONE+fsin(ia))/PFREAL_ONE; + } + + slideFrame += speed*step; + + int index = slideFrame >> 16; + int pos = slideFrame & 0xffff; + int neg = 65536 - pos; + int tick = (step < 0) ? neg : pos; + PFreal ftick = (tick * PFREAL_ONE) >> 16; + + // the leftmost and rightmost slide must fade away + fade = pos / 256; + + if(step < 0) + index++; + if(centerIndex != index) + { + centerIndex = index; + slideFrame = index << 16; + centerSlide.slideIndex = centerIndex; + for(int i = 0; i < leftSlides.count(); i++) + leftSlides[i].slideIndex = centerIndex-1-i; + for(int i = 0; i < rightSlides.count(); i++) + rightSlides[i].slideIndex = centerIndex+1+i; + } + + centerSlide.angle = (step * tick * itilt) >> 16; + centerSlide.cx = -step * fmul(offsetX, ftick); + centerSlide.cy = fmul(offsetY, ftick); + + if(centerIndex == target) + { + resetSlides(); + animateTimer.stop(); + triggerRender(); + step = 0; + fade = 256; + return; + } + + for(int i = 0; i < leftSlides.count(); i++) + { + SlideInfo& si = leftSlides[i]; + si.angle = itilt; + si.cx = -(offsetX + spacing*i*PFREAL_ONE + step*spacing*ftick); + si.cy = offsetY; + } + + for(int i = 0; i < rightSlides.count(); i++) + { + SlideInfo& si = rightSlides[i]; + si.angle = -itilt; + si.cx = offsetX + spacing*i*PFREAL_ONE - step*spacing*ftick; + si.cy = offsetY; + } + + if(step > 0) + { + PFreal ftick = (neg * PFREAL_ONE) >> 16; + rightSlides[0].angle = -(neg * itilt) >> 16; + rightSlides[0].cx = fmul(offsetX, ftick); + rightSlides[0].cy = fmul(offsetY, ftick); + } + else + { + PFreal ftick = (pos * PFREAL_ONE) >> 16; + leftSlides[0].angle = (pos * itilt) >> 16; + leftSlides[0].cx = -fmul(offsetX, ftick); + leftSlides[0].cy = fmul(offsetY, ftick); + } + + // must change direction ? + if(target < index) if(step > 0) + step = -1; + if(target > index) if(step < 0) + step = 1; + + triggerRender(); +} + + +void PictureFlowPrivate::clearSurfaceCache() +{ + surfaceCache.clear(); +} + +// ----------------------------------------- + +PictureFlow::PictureFlow(QWidget* parent): QWidget(parent) +{ + d = new PictureFlowPrivate(this); + + setAttribute(Qt::WA_StaticContents, true); + setAttribute(Qt::WA_OpaquePaintEvent, true); + setAttribute(Qt::WA_NoSystemBackground, true); +} + +PictureFlow::~PictureFlow() +{ + delete d; +} + +int PictureFlow::slideCount() const +{ + return d->slideCount(); +} + +void PictureFlow::setSlideCount(int count) +{ + d->setSlideCount(count); +} + +QSize PictureFlow::slideSize() const +{ + return d->slideSize(); +} + +void PictureFlow::setSlideSize(QSize size) +{ + d->setSlideSize(size); +} + +int PictureFlow::zoomFactor() const +{ + return d->zoomFactor(); +} + +void PictureFlow::setZoomFactor(int z) +{ + d->setZoomFactor(z); +} + +QImage PictureFlow::slide(int index) const +{ + return d->slide(index); +} + +void PictureFlow::setSlide(int index, const QImage& image) +{ + d->setSlide(index, image); +} + +void PictureFlow::setSlide(int index, const QPixmap& pixmap) +{ + d->setSlide(index, pixmap.toImage()); +} + +void PictureFlow::setSlideCaption(int index, QString caption) +{ + d->captions[index] = caption; +} + + +int PictureFlow::currentSlide() const +{ + return d->currentSlide(); +} + +void PictureFlow::setCurrentSlide(int index) +{ + d->setCurrentSlide(index); +} + +void PictureFlow::clear() +{ + d->setSlideCount(0); +} + +void PictureFlow::clearCaches() +{ + d->clearSurfaceCache(); +} + +void PictureFlow::render() +{ + d->render(); + update(); +} + +void PictureFlow::showPrevious() +{ + d->showPrevious(); +} + +void PictureFlow::showNext() +{ + d->showNext(); +} + +void PictureFlow::showSlide(int index) +{ + d->showSlide(index); +} + +void PictureFlow::keyPressEvent(QKeyEvent* event) +{ + if(event->key() == Qt::Key_Left) + { + if(event->modifiers() == Qt::ControlModifier) + showSlide(currentSlide()-10); + else + showPrevious(); + event->accept(); + return; + } + + if(event->key() == Qt::Key_Right) + { + if(event->modifiers() == Qt::ControlModifier) + showSlide(currentSlide()+10); + else + showNext(); + event->accept(); + return; + } + + if (event->key() == Qt::Key_Enter || event->key() == Qt::Key_Select) { + emit itemActivated(d->getTarget()); + event->accept(); + return; + } + + event->ignore(); +} + +#define SPEED_LOWER_THRESHOLD 10 +#define SPEED_UPPER_LIMIT 40 + +void PictureFlow::mouseMoveEvent(QMouseEvent* event) +{ + int distanceMovedSinceLastEvent = event->pos().x() - d->previousPos.x(); + + // Check to see if we need to switch from single press mode to a drag mode + if (d->singlePress) + { + // Increment the distance moved for this event + d->pixelDistanceMoved += distanceMovedSinceLastEvent; + + // Check against threshold + if (qAbs(d->pixelDistanceMoved) > d->singlePressThreshold) + { + d->singlePress = false; +// qDebug() << "DRAG MODE ON"; + } + } + + if (!d->singlePress) + { + int speed; + // Calculate velocity in a 10th of a window width per second + if (d->previousPosTimestamp.elapsed() == 0) + speed = SPEED_LOWER_THRESHOLD; + else + { + speed = ((qAbs(event->pos().x()-d->previousPos.x())*1000) / d->previousPosTimestamp.elapsed()) + / (d->buffer.width() / 10); + + if (speed < SPEED_LOWER_THRESHOLD) + speed = SPEED_LOWER_THRESHOLD; + else if (speed > SPEED_UPPER_LIMIT) + speed = SPEED_UPPER_LIMIT; + else { + speed = SPEED_LOWER_THRESHOLD + (speed / 3); +// qDebug() << "ACCELERATION ENABLED Speed = " << speed << ", Distance = " << distanceMovedSinceLastEvent; + } + } + +// qDebug() << "Speed = " << speed; + +// int incr = ((event->pos().x() - d->previousPos.x())/10) * speed; + +// qDebug() << "Incremented by " << incr; + + int incr = (distanceMovedSinceLastEvent * speed); + + //qDebug() << "(distanceMovedSinceLastEvent * speed) = " << incr; + + if (incr > d->pixelsToMovePerSlide*2) { + incr = d->pixelsToMovePerSlide*2; + //qDebug() << "Limiting incr to " << incr; + } + + + d->pixelDistanceMoved += (distanceMovedSinceLastEvent * speed); + // qDebug() << "distance: " << d->pixelDistanceMoved; + + int slideInc; + + slideInc = d->pixelDistanceMoved / (d->pixelsToMovePerSlide * 10); + + if (slideInc != 0) { + int targetSlide = d->getTarget() - slideInc; + showSlide(targetSlide); +// qDebug() << "TargetSlide = " << targetSlide; + + //qDebug() << "Decrementing pixelDistanceMoved by " << (d->pixelsToMovePerSlide *10) * slideInc; + + d->pixelDistanceMoved -= (d->pixelsToMovePerSlide *10) * slideInc; + +/* + if ( (targetSlide <= 0) || (targetSlide >= d->slideCount()-1) ) + d->pixelDistanceMoved = 0; +*/ + } + } + + d->previousPos = event->pos(); + d->previousPosTimestamp.restart(); + + emit inputReceived(); +} + +void PictureFlow::mousePressEvent(QMouseEvent* event) +{ + d->firstPress = event->pos(); + d->previousPos = event->pos(); + d->previousPosTimestamp.start(); + d->singlePress = true; // Initially assume a single press +// d->dragStartSlide = d->getTarget(); + d->pixelDistanceMoved = 0; + + emit inputReceived(); +} + +void PictureFlow::mouseReleaseEvent(QMouseEvent* event) +{ + int sideWidth = (d->buffer.width() - slideSize().width()) /2; + + if (d->singlePress) + { + if (event->x() < sideWidth ) + { + showPrevious(); + } else if ( event->x() > sideWidth + slideSize().width() ) { + showNext(); + } else { + emit itemActivated(d->getTarget()); + } + + event->accept(); + } + + emit inputReceived(); +} + + +void PictureFlow::paintEvent(QPaintEvent* event) +{ + Q_UNUSED(event); + QPainter painter(this); + painter.setRenderHint(QPainter::Antialiasing, false); + painter.drawImage(QPoint(0,0), d->buffer); +} + +void PictureFlow::resizeEvent(QResizeEvent* event) +{ + d->resize(width(), height()); + QWidget::resizeEvent(event); +} + +void PictureFlow::timerEvent(QTimerEvent* event) +{ + if(event->timerId() == d->animateTimer.timerId()) + { +// QTime now = QTime::currentTime(); + d->updateAnimation(); +// d->animateTimer.start(qMax(0, 30-now.elapsed() ), this); + } + else + QWidget::timerEvent(event); +} diff --git a/examples/svg/embedded/fluidlauncher/pictureflow.h b/examples/svg/embedded/fluidlauncher/pictureflow.h new file mode 100644 index 0000000..13e676b --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/pictureflow.h @@ -0,0 +1,217 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the ActiveQt framework of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +** +****************************************************************************/ + +/* + ORIGINAL COPYRIGHT HEADER + PictureFlow - animated image show widget + http://pictureflow.googlecode.com + + Copyright (C) 2007 Ariya Hidayat (ariya@kde.org) + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. +*/ + +#ifndef PICTUREFLOW_H +#define PICTUREFLOW_H + +#include <QWidget> + +class PictureFlowPrivate; + +/*! + Class PictureFlow implements an image show widget with animation effect + like Apple's CoverFlow (in iTunes and iPod). Images are arranged in form + of slides, one main slide is shown at the center with few slides on + the left and right sides of the center slide. When the next or previous + slide is brought to the front, the whole slides flow to the right or + the right with smooth animation effect; until the new slide is finally + placed at the center. + + */ +class PictureFlow : public QWidget +{ +Q_OBJECT + + Q_PROPERTY(int slideCount READ slideCount WRITE setSlideCount) + Q_PROPERTY(int currentSlide READ currentSlide WRITE setCurrentSlide) + Q_PROPERTY(QSize slideSize READ slideSize WRITE setSlideSize) + Q_PROPERTY(int zoomFactor READ zoomFactor WRITE setZoomFactor) + +public: + /*! + Creates a new PictureFlow widget. + */ + PictureFlow(QWidget* parent = 0); + + /*! + Destroys the widget. + */ + ~PictureFlow(); + + /*! + Returns the total number of slides. + */ + int slideCount() const; + + /*! + Sets the total number of slides. + */ + void setSlideCount(int count); + + /*! + Returns the dimension of each slide (in pixels). + */ + QSize slideSize() const; + + /*! + Sets the dimension of each slide (in pixels). + */ + void setSlideSize(QSize size); + + /*! + Sets the zoom factor (in percent). + */ + void setZoomFactor(int zoom); + + /*! + Returns the zoom factor (in percent). + */ + int zoomFactor() const; + + /*! + Clears any caches held to free up memory + */ + void clearCaches(); + + /*! + Returns QImage of specified slide. + This function will be called only whenever necessary, e.g. the 100th slide + will not be retrived when only the first few slides are visible. + */ + virtual QImage slide(int index) const; + + /*! + Sets an image for specified slide. If the slide already exists, + it will be replaced. + */ + virtual void setSlide(int index, const QImage& image); + + virtual void setSlideCaption(int index, QString caption); + + /*! + Sets a pixmap for specified slide. If the slide already exists, + it will be replaced. + */ + virtual void setSlide(int index, const QPixmap& pixmap); + + /*! + Returns the index of slide currently shown in the middle of the viewport. + */ + int currentSlide() const; + +public slots: + + /*! + Sets slide to be shown in the middle of the viewport. No animation + effect will be produced, unlike using showSlide. + */ + void setCurrentSlide(int index); + + /*! + Clears images of all slides. + */ + void clear(); + + /*! + Rerender the widget. Normally this function will be automatically invoked + whenever necessary, e.g. during the transition animation. + */ + void render(); + + /*! + Shows previous slide using animation effect. + */ + void showPrevious(); + + /*! + Shows next slide using animation effect. + */ + void showNext(); + + /*! + Go to specified slide using animation effect. + */ + void showSlide(int index); + +signals: + void itemActivated(int index); + void inputReceived(); + +protected: + void paintEvent(QPaintEvent *event); + void keyPressEvent(QKeyEvent* event); + void mouseMoveEvent(QMouseEvent* event); + void mousePressEvent(QMouseEvent* event); + void mouseReleaseEvent(QMouseEvent* event); + void resizeEvent(QResizeEvent* event); + void timerEvent(QTimerEvent* event); + +private: + PictureFlowPrivate* d; +}; + +#endif // PICTUREFLOW_H diff --git a/examples/svg/embedded/fluidlauncher/screenshots/anomaly_s60.png b/examples/svg/embedded/fluidlauncher/screenshots/anomaly_s60.png Binary files differnew file mode 100644 index 0000000..8d537f4 --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/screenshots/anomaly_s60.png diff --git a/examples/svg/embedded/fluidlauncher/screenshots/concentriccircles.png b/examples/svg/embedded/fluidlauncher/screenshots/concentriccircles.png Binary files differnew file mode 100644 index 0000000..fd308b5 --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/screenshots/concentriccircles.png diff --git a/examples/svg/embedded/fluidlauncher/screenshots/context2d_s60.png b/examples/svg/embedded/fluidlauncher/screenshots/context2d_s60.png Binary files differnew file mode 100644 index 0000000..9c288c9 --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/screenshots/context2d_s60.png diff --git a/examples/svg/embedded/fluidlauncher/screenshots/deform.png b/examples/svg/embedded/fluidlauncher/screenshots/deform.png Binary files differnew file mode 100644 index 0000000..c22f2ae --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/screenshots/deform.png diff --git a/examples/svg/embedded/fluidlauncher/screenshots/desktopservices_s60.png b/examples/svg/embedded/fluidlauncher/screenshots/desktopservices_s60.png Binary files differnew file mode 100644 index 0000000..64018f4 --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/screenshots/desktopservices_s60.png diff --git a/examples/svg/embedded/fluidlauncher/screenshots/digiflip.png b/examples/svg/embedded/fluidlauncher/screenshots/digiflip.png Binary files differnew file mode 100644 index 0000000..c31a6f8 --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/screenshots/digiflip.png diff --git a/examples/svg/embedded/fluidlauncher/screenshots/elasticnodes.png b/examples/svg/embedded/fluidlauncher/screenshots/elasticnodes.png Binary files differnew file mode 100644 index 0000000..bc157e5 --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/screenshots/elasticnodes.png diff --git a/examples/svg/embedded/fluidlauncher/screenshots/embeddedsvgviewer.png b/examples/svg/embedded/fluidlauncher/screenshots/embeddedsvgviewer.png Binary files differnew file mode 100644 index 0000000..522f13b --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/screenshots/embeddedsvgviewer.png diff --git a/examples/svg/embedded/fluidlauncher/screenshots/embeddedsvgviewer_s60.png b/examples/svg/embedded/fluidlauncher/screenshots/embeddedsvgviewer_s60.png Binary files differnew file mode 100644 index 0000000..74f4ad1 --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/screenshots/embeddedsvgviewer_s60.png diff --git a/examples/svg/embedded/fluidlauncher/screenshots/flickable.png b/examples/svg/embedded/fluidlauncher/screenshots/flickable.png Binary files differnew file mode 100644 index 0000000..bad14bf --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/screenshots/flickable.png diff --git a/examples/svg/embedded/fluidlauncher/screenshots/flightinfo_s60.png b/examples/svg/embedded/fluidlauncher/screenshots/flightinfo_s60.png Binary files differnew file mode 100644 index 0000000..8e74d77 --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/screenshots/flightinfo_s60.png diff --git a/examples/svg/embedded/fluidlauncher/screenshots/fridgemagnets_s60.png b/examples/svg/embedded/fluidlauncher/screenshots/fridgemagnets_s60.png Binary files differnew file mode 100644 index 0000000..d31875d --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/screenshots/fridgemagnets_s60.png diff --git a/examples/svg/embedded/fluidlauncher/screenshots/ftp_s60.png b/examples/svg/embedded/fluidlauncher/screenshots/ftp_s60.png Binary files differnew file mode 100644 index 0000000..5858daf --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/screenshots/ftp_s60.png diff --git a/examples/svg/embedded/fluidlauncher/screenshots/lightmaps.png b/examples/svg/embedded/fluidlauncher/screenshots/lightmaps.png Binary files differnew file mode 100644 index 0000000..18aa74d --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/screenshots/lightmaps.png diff --git a/examples/svg/embedded/fluidlauncher/screenshots/mediaplayer.png b/examples/svg/embedded/fluidlauncher/screenshots/mediaplayer.png Binary files differnew file mode 100644 index 0000000..c9fd43c --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/screenshots/mediaplayer.png diff --git a/examples/svg/embedded/fluidlauncher/screenshots/pathstroke.png b/examples/svg/embedded/fluidlauncher/screenshots/pathstroke.png Binary files differnew file mode 100644 index 0000000..c3d727e --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/screenshots/pathstroke.png diff --git a/examples/svg/embedded/fluidlauncher/screenshots/qmlcalculator.png b/examples/svg/embedded/fluidlauncher/screenshots/qmlcalculator.png Binary files differnew file mode 100644 index 0000000..f4218f5 --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/screenshots/qmlcalculator.png diff --git a/examples/svg/embedded/fluidlauncher/screenshots/qmlclocks.png b/examples/svg/embedded/fluidlauncher/screenshots/qmlclocks.png Binary files differnew file mode 100644 index 0000000..ba25a18 --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/screenshots/qmlclocks.png diff --git a/examples/svg/embedded/fluidlauncher/screenshots/qmldialcontrol.png b/examples/svg/embedded/fluidlauncher/screenshots/qmldialcontrol.png Binary files differnew file mode 100644 index 0000000..b8def8c --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/screenshots/qmldialcontrol.png diff --git a/examples/svg/embedded/fluidlauncher/screenshots/qmleasing.png b/examples/svg/embedded/fluidlauncher/screenshots/qmleasing.png Binary files differnew file mode 100644 index 0000000..d34c2ac --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/screenshots/qmleasing.png diff --git a/examples/svg/embedded/fluidlauncher/screenshots/qmlflickr.jpg b/examples/svg/embedded/fluidlauncher/screenshots/qmlflickr.jpg Binary files differnew file mode 100644 index 0000000..d7faabf --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/screenshots/qmlflickr.jpg diff --git a/examples/svg/embedded/fluidlauncher/screenshots/qmlphotoviewer.jpg b/examples/svg/embedded/fluidlauncher/screenshots/qmlphotoviewer.jpg Binary files differnew file mode 100644 index 0000000..673ffc6 --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/screenshots/qmlphotoviewer.jpg diff --git a/examples/svg/embedded/fluidlauncher/screenshots/qmltwitter.jpg b/examples/svg/embedded/fluidlauncher/screenshots/qmltwitter.jpg Binary files differnew file mode 100644 index 0000000..4399eea --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/screenshots/qmltwitter.jpg diff --git a/examples/svg/embedded/fluidlauncher/screenshots/raycasting.png b/examples/svg/embedded/fluidlauncher/screenshots/raycasting.png Binary files differnew file mode 100644 index 0000000..b6b738a --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/screenshots/raycasting.png diff --git a/examples/svg/embedded/fluidlauncher/screenshots/saxbookmarks_s60.png b/examples/svg/embedded/fluidlauncher/screenshots/saxbookmarks_s60.png Binary files differnew file mode 100644 index 0000000..54b6321 --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/screenshots/saxbookmarks_s60.png diff --git a/examples/svg/embedded/fluidlauncher/screenshots/softkeys_s60.png b/examples/svg/embedded/fluidlauncher/screenshots/softkeys_s60.png Binary files differnew file mode 100644 index 0000000..df090e2 --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/screenshots/softkeys_s60.png diff --git a/examples/svg/embedded/fluidlauncher/screenshots/spectrum.png b/examples/svg/embedded/fluidlauncher/screenshots/spectrum.png Binary files differnew file mode 100644 index 0000000..7f4938f --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/screenshots/spectrum.png diff --git a/examples/svg/embedded/fluidlauncher/screenshots/styledemo.png b/examples/svg/embedded/fluidlauncher/screenshots/styledemo.png Binary files differnew file mode 100644 index 0000000..669c488 --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/screenshots/styledemo.png diff --git a/examples/svg/embedded/fluidlauncher/screenshots/styledemo_s60.png b/examples/svg/embedded/fluidlauncher/screenshots/styledemo_s60.png Binary files differnew file mode 100644 index 0000000..57480fb --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/screenshots/styledemo_s60.png diff --git a/examples/svg/embedded/fluidlauncher/screenshots/weatherinfo.png b/examples/svg/embedded/fluidlauncher/screenshots/weatherinfo.png Binary files differnew file mode 100644 index 0000000..7e23891 --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/screenshots/weatherinfo.png diff --git a/examples/svg/embedded/fluidlauncher/screenshots/wiggly.png b/examples/svg/embedded/fluidlauncher/screenshots/wiggly.png Binary files differnew file mode 100644 index 0000000..b20fbc4 --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/screenshots/wiggly.png diff --git a/examples/svg/embedded/fluidlauncher/screenshots/wiggly_s60.png b/examples/svg/embedded/fluidlauncher/screenshots/wiggly_s60.png Binary files differnew file mode 100644 index 0000000..9c4cab3 --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/screenshots/wiggly_s60.png diff --git a/examples/svg/embedded/fluidlauncher/slides/demo_1.png b/examples/svg/embedded/fluidlauncher/slides/demo_1.png Binary files differnew file mode 100644 index 0000000..d53d19d --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/slides/demo_1.png diff --git a/examples/svg/embedded/fluidlauncher/slides/demo_2.png b/examples/svg/embedded/fluidlauncher/slides/demo_2.png Binary files differnew file mode 100644 index 0000000..f137de0 --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/slides/demo_2.png diff --git a/examples/svg/embedded/fluidlauncher/slides/demo_3.png b/examples/svg/embedded/fluidlauncher/slides/demo_3.png Binary files differnew file mode 100644 index 0000000..8369bc0 --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/slides/demo_3.png diff --git a/examples/svg/embedded/fluidlauncher/slides/demo_4.png b/examples/svg/embedded/fluidlauncher/slides/demo_4.png Binary files differnew file mode 100644 index 0000000..377e369 --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/slides/demo_4.png diff --git a/examples/svg/embedded/fluidlauncher/slides/demo_5.png b/examples/svg/embedded/fluidlauncher/slides/demo_5.png Binary files differnew file mode 100644 index 0000000..0bb1781 --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/slides/demo_5.png diff --git a/examples/svg/embedded/fluidlauncher/slides/demo_6.png b/examples/svg/embedded/fluidlauncher/slides/demo_6.png Binary files differnew file mode 100644 index 0000000..9daba67 --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/slides/demo_6.png diff --git a/examples/svg/embedded/fluidlauncher/slideshow.cpp b/examples/svg/embedded/fluidlauncher/slideshow.cpp new file mode 100644 index 0000000..5a3da0d --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/slideshow.cpp @@ -0,0 +1,232 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the demonstration applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QBasicTimer> +#include <QList> +#include <QImage> +#include <QDir> +#include <QPainter> +#include <QPaintEvent> + +#include <QDebug> + + +#include "slideshow.h" + + +class SlideShowPrivate +{ +public: + SlideShowPrivate(); + + int currentSlide; + int slideInterval; + QBasicTimer interSlideTimer; + QStringList imagePaths; + + void showNextSlide(); +}; + + + +SlideShowPrivate::SlideShowPrivate() +{ + currentSlide = 0; + slideInterval = 10000; // Default to 10 sec interval +} + + +void SlideShowPrivate::showNextSlide() +{ + currentSlide++; + if (currentSlide >= imagePaths.size()) + currentSlide = 0; +} + + + +SlideShow::SlideShow(QWidget* parent) : + QWidget(parent) +{ + d = new SlideShowPrivate; + + setAttribute(Qt::WA_StaticContents, true); + setAttribute(Qt::WA_OpaquePaintEvent, true); + setAttribute(Qt::WA_NoSystemBackground, true); + + setMouseTracking(true); +} + + +SlideShow::~SlideShow() +{ + delete d; +} + + +void SlideShow::addImageDir(QString dirName) +{ + QDir dir(dirName); + + QStringList fileNames = dir.entryList(QDir::Files | QDir::Readable, QDir::Name); + + for (int i=0; i<fileNames.count(); i++) + d->imagePaths << dir.absoluteFilePath(fileNames[i]); +} + +void SlideShow::addImage(QString filename) +{ + d->imagePaths << filename; +} + + +void SlideShow::clearImages() +{ + d->imagePaths.clear(); +} + + +void SlideShow::startShow() +{ + d->interSlideTimer.start(d->slideInterval, this); + d->showNextSlide(); + update(); +} + + +void SlideShow::stopShow() +{ + d->interSlideTimer.stop(); +} + + +int SlideShow::slideInterval() +{ + return d->slideInterval; +} + +void SlideShow::setSlideInterval(int val) +{ + d->slideInterval = val; +} + + +void SlideShow::timerEvent(QTimerEvent* event) +{ + Q_UNUSED(event); + d->showNextSlide(); + update(); +} + + +void SlideShow::paintEvent(QPaintEvent *event) +{ + QPainter painter(this); + painter.setRenderHint(QPainter::Antialiasing, false); + + if (d->imagePaths.size() > 0) { + QPixmap slide = QPixmap(d->imagePaths[d->currentSlide]); + QSize slideSize = slide.size(); + QSize scaledSize = QSize(qMin(slideSize.width(), size().width()), + qMin(slideSize.height(), size().height())); + if (slideSize != scaledSize) + slide = slide.scaled(scaledSize, Qt::KeepAspectRatio); + + QRect pixmapRect(qMax( (size().width() - slide.width())/2, 0), + qMax( (size().height() - slide.height())/2, 0), + slide.width(), + slide.height()); + + if (pixmapRect.top() > 0) { + // Fill in top & bottom rectangles: + painter.fillRect(0, 0, size().width(), pixmapRect.top(), Qt::black); + painter.fillRect(0, pixmapRect.bottom(), size().width(), size().height(), Qt::black); + } + + if (pixmapRect.left() > 0) { + // Fill in left & right rectangles: + painter.fillRect(0, 0, pixmapRect.left(), size().height(), Qt::black); + painter.fillRect(pixmapRect.right(), 0, size().width(), size().height(), Qt::black); + } + + painter.drawPixmap(pixmapRect, slide); + + } else + painter.fillRect(event->rect(), Qt::black); +} + + +void SlideShow::keyPressEvent(QKeyEvent* event) +{ + Q_UNUSED(event); + emit inputReceived(); +} + + +void SlideShow::mouseMoveEvent(QMouseEvent* event) +{ + Q_UNUSED(event); + emit inputReceived(); +} + + +void SlideShow::mousePressEvent(QMouseEvent* event) +{ + Q_UNUSED(event); + emit inputReceived(); +} + + +void SlideShow::mouseReleaseEvent(QMouseEvent* event) +{ + Q_UNUSED(event); + emit inputReceived(); +} + + +void SlideShow::showEvent(QShowEvent * event ) +{ + Q_UNUSED(event); +#ifndef QT_NO_CURSOR + setCursor(Qt::BlankCursor); +#endif +} + diff --git a/examples/svg/embedded/fluidlauncher/slideshow.h b/examples/svg/embedded/fluidlauncher/slideshow.h new file mode 100644 index 0000000..2ebc6a2 --- /dev/null +++ b/examples/svg/embedded/fluidlauncher/slideshow.h @@ -0,0 +1,97 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the demonstration applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef SLIDESHOW_H +#define SLIDESHOW_H + +#include <QWidget> + +class SlideShowPrivate; + +class SlideShow : public QWidget +{ + Q_OBJECT + + Q_PROPERTY(int slideInterval READ slideInterval WRITE setSlideInterval) + +public: + SlideShow(QWidget* parent = 0); + ~SlideShow(); + void addImage(QString filename); + void addImageDir(QString dirName); + void clearImages(); + void startShow(); + void stopShow(); + + + int slideInterval(); + void setSlideInterval(int val); + +signals: + void inputReceived(); + +protected: + void paintEvent(QPaintEvent *event); + void keyPressEvent(QKeyEvent* event); + void mouseMoveEvent(QMouseEvent* event); + void mousePressEvent(QMouseEvent* event); + void mouseReleaseEvent(QMouseEvent* event); + void timerEvent(QTimerEvent* event); + void showEvent(QShowEvent * event ); + + +private: + SlideShowPrivate* d; +}; + + + + + + + + + + + + + +#endif diff --git a/examples/svg/embedded/weatherinfo/icons/README.txt b/examples/svg/embedded/weatherinfo/icons/README.txt new file mode 100644 index 0000000..d384153 --- /dev/null +++ b/examples/svg/embedded/weatherinfo/icons/README.txt @@ -0,0 +1,5 @@ +The scalable icons are from: + +http://tango.freedesktop.org/Tango_Icon_Library +http://darkobra.deviantart.com/art/Tango-Weather-Icon-Pack-98024429 + diff --git a/examples/svg/embedded/weatherinfo/icons/weather-few-clouds.svg b/examples/svg/embedded/weatherinfo/icons/weather-few-clouds.svg new file mode 100644 index 0000000..a53e3d6 --- /dev/null +++ b/examples/svg/embedded/weatherinfo/icons/weather-few-clouds.svg @@ -0,0 +1,173 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="48px" height="48px" id="svg1306"> + <defs id="defs1308"> + <linearGradient xlink:href="#linearGradient6538" id="linearGradient6724" gradientUnits="userSpaceOnUse" x1="284.80219" y1="-441.23294" x2="288.89954" y2="-436.83109"/> + <linearGradient xlink:href="#linearGradient6549" id="linearGradient6722" gradientUnits="userSpaceOnUse" x1="286.66589" y1="-439.48358" x2="289.76562" y2="-436.70703"/> + <linearGradient xlink:href="#linearGradient6527" id="linearGradient6720" gradientUnits="userSpaceOnUse" x1="275.94193" y1="-437.10501" x2="279.97546" y2="-431.91833"/> + <linearGradient xlink:href="#linearGradient6538" id="linearGradient6718" gradientUnits="userSpaceOnUse" x1="285.94086" y1="-439.93900" x2="289.39124" y2="-436.44290"/> + <linearGradient xlink:href="#linearGradient6513" id="linearGradient6716" gradientUnits="userSpaceOnUse" x1="286.51172" y1="-441.29074" x2="289.85379" y2="-436.14453"/> + <linearGradient xlink:href="#linearGradient6497" id="linearGradient6714" gradientUnits="userSpaceOnUse" x1="287.51730" y1="-439.75281" x2="289.67633" y2="-436.32199"/> + <linearGradient xlink:href="#linearGradient6470" id="linearGradient6712" gradientUnits="userSpaceOnUse" x1="271.02170" y1="-441.05182" x2="285.02859" y2="-431.96991"/> + <linearGradient xlink:href="#linearGradient6538" id="linearGradient6839" gradientUnits="userSpaceOnUse" x1="284.80219" y1="-441.23294" x2="288.89954" y2="-436.83109"/> + <linearGradient id="linearGradient6549"> + <stop offset="0" id="stop6551" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6553" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6549" id="linearGradient6837" gradientUnits="userSpaceOnUse" x1="286.66589" y1="-439.48358" x2="289.76562" y2="-436.70703"/> + <linearGradient id="linearGradient6527"> + <stop offset="0" id="stop6530" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6532" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6527" id="linearGradient6835" gradientUnits="userSpaceOnUse" x1="275.94193" y1="-437.10501" x2="279.97546" y2="-431.91833"/> + <linearGradient id="linearGradient6538"> + <stop offset="0" id="stop6540" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6542" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6538" id="linearGradient6833" gradientUnits="userSpaceOnUse" x1="285.94086" y1="-439.93900" x2="289.39124" y2="-436.44290"/> + <linearGradient id="linearGradient6513"> + <stop offset="0" id="stop6515" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6517" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6513" id="linearGradient6831" gradientUnits="userSpaceOnUse" x1="286.51172" y1="-441.29074" x2="289.85379" y2="-436.14453"/> + <linearGradient id="linearGradient6497"> + <stop offset="0" id="stop6499" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6501" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6497" id="linearGradient6829" gradientUnits="userSpaceOnUse" x1="287.51730" y1="-439.75281" x2="289.67633" y2="-436.32199"/> + <linearGradient id="linearGradient6470"> + <stop offset="0" id="stop6472" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6474" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6470" id="linearGradient6827" gradientUnits="userSpaceOnUse" x1="271.02170" y1="-441.05182" x2="285.02859" y2="-431.96991"/> + <linearGradient id="linearGradient4083"> + <stop id="stop4085" offset="0" stop-color="#ffffff" stop-opacity="0"/> + <stop offset="0.75" id="stop4089" stop-color="#ffffff" stop-opacity="0"/> + <stop id="stop4087" offset="1" stop-color="#ffffff" stop-opacity="1"/> + </linearGradient> + <linearGradient id="linearGradient4032"> + <stop id="stop4034" offset="0" stop-color="#fff7c2" stop-opacity="0.63829786"/> + <stop offset="0.59394139" id="stop4036" stop-color="#fcaf3e" stop-opacity="0.18348624"/> + <stop id="stop4038" offset="0.83850551" stop-color="#fcaf3e" stop-opacity="0.50458717"/> + <stop id="stop4040" offset="1" stop-color="#fcaf3e" stop-opacity="1"/> + </linearGradient> + <linearGradient id="linearGradient4026"> + <stop id="stop4028" offset="0" stop-color="#fff9c6" stop-opacity="1"/> + <stop offset="0.54166669" id="stop4042" stop-color="#fff28c" stop-opacity="1"/> + <stop id="stop4030" offset="1" stop-color="#ffea85" stop-opacity="1"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient4026" id="linearGradient3168" gradientUnits="userSpaceOnUse" x1="-28.968945" y1="-25.326815" x2="-37.19698" y2="-9.5590506"/> + <radialGradient xlink:href="#linearGradient4032" id="radialGradient4020" cx="-33.519073" cy="-22.113297" fx="-33.519073" fy="-22.113297" r="9.5" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.487739,1.292402,-1.10267,0.497242,-41.77393,32.41492)"/> + <radialGradient xlink:href="#linearGradient4083" id="radialGradient4081" cx="23.99999" cy="23.381506" fx="23.99999" fy="23.381506" r="19.141981" gradientTransform="matrix(1.006701,2.235326e-16,-2.23715e-16,1.007522,-0.160816,0.426981)" gradientUnits="userSpaceOnUse"/> + </defs> + + <metadata id="metadata1311"> + <rdf:RDF> + <cc:Work rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> + <dc:title>weather-clear</dc:title> + <dc:date>January 2006</dc:date> + <dc:creator> + <cc:Agent> + <dc:title>Ryan Collier (pseudo)</dc:title> + </cc:Agent> + </dc:creator> + <dc:publisher> + <cc:Agent> + <dc:title>http://www.tango-project.org</dc:title> + </cc:Agent> + </dc:publisher> + <dc:source>http://www.pseudocode.org</dc:source> + <dc:subject> + <rdf:Bag> + <rdf:li>weather</rdf:li> + <rdf:li>applet</rdf:li> + <rdf:li>notification</rdf:li> + </rdf:Bag> + </dc:subject> + <cc:license rdf:resource="http://creativecommons.org/licenses/publicdomain/"/> + <dc:contributor> + <cc:Agent> + <dc:title>Garrett LeSage</dc:title> + </cc:Agent> + </dc:contributor> + </cc:Work> + <cc:License rdf:about="http://creativecommons.org/licenses/publicdomain/"> + <cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction"/> + <cc:permits rdf:resource="http://creativecommons.org/ns#Distribution"/> + <cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks"/> + </cc:License> + </rdf:RDF> + </metadata> + <g id="layer1"> + <g transform="translate(-263.99,459.9855)"> + <path d="M 280.50000,-445.50000 C 278.22917,-445.50000 276.39009,-443.94972 275.78125,-441.87500 C 275.08802,-442.23883 274.33674,-442.50000 273.50000,-442.50000 C 270.74000,-442.50000 268.49999,-440.26001 268.50000,-437.50000 C 268.50000,-436.92107 268.66252,-436.39230 268.84375,-435.87500 C 267.47028,-435.10426 266.50000,-433.68600 266.50000,-432.00000 C 266.50000,-429.51600 268.51600,-427.49999 271.00000,-427.50000 C 271.17713,-427.50000 289.82287,-427.50000 290.00000,-427.50000 C 292.48399,-427.50000 294.50000,-429.51600 294.50000,-432.00000 C 294.50000,-433.68600 293.52972,-435.10426 292.15625,-435.87500 C 292.33749,-436.39229 292.50000,-436.92108 292.50000,-437.50000 C 292.50000,-440.26000 290.26000,-442.49999 287.50000,-442.50000 C 286.66326,-442.50000 285.91198,-442.23883 285.21875,-441.87500 C 284.60991,-443.94972 282.77083,-445.50000 280.50000,-445.50000 z " fill="#c4c5c2" fill-opacity="1.0000000" stroke="#888a85" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 280.50000,-445.00000 C 278.31028,-445.00000 276.77640,-443.66423 276.10445,-441.15648 C 275.43599,-441.50010 274.55686,-441.98983 273.75000,-441.98983 C 271.03349,-441.98983 268.99486,-440.05101 268.99487,-437.44429 C 268.99487,-436.89752 269.26208,-436.11085 269.43683,-435.62228 C 268.11240,-434.89433 267.00000,-433.73178 267.00000,-432.24973 C 267.00000,-429.90368 268.54617,-427.99964 271.33928,-427.99964 C 271.51009,-427.99964 289.48992,-427.99964 289.66072,-427.99964 C 292.43173,-427.99964 294.00000,-429.90368 294.00000,-432.24973 C 294.00000,-433.84210 292.88760,-434.91642 291.56317,-435.64437 C 291.73793,-436.13293 292.02724,-436.89753 292.02724,-437.44429 C 292.02724,-440.05100 289.91143,-442.01192 287.25001,-442.01193 C 286.44314,-442.01193 285.60820,-441.52219 284.93974,-441.17857 C 284.29089,-443.60011 282.68973,-445.00000 280.50000,-445.00000 z " opacity="1.0000000" fill="url(#linearGradient6827)" fill-opacity="1.0000000" stroke="none" stroke-width="0.99999958" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <g> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)" opacity="1.0000000" fill="url(#linearGradient6829)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <rect y="-438.00000" x="271.00000" height="9.0000000" width="20.000000" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830195,-35.68869)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <g> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19811,24.86321)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19818,24.86331)" opacity="1.0000000" fill="url(#linearGradient6831)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <g> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" opacity="1.0000000" fill="url(#linearGradient6833)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <g transform="translate(-1.000000,0.000000)"> + <path d="M 280.46875,-440.96875 C 276.88937,-440.96875 274.00000,-438.04812 274.00000,-434.46875 C 274.00000,-432.09807 275.34943,-430.13096 277.25000,-429.00000 L 283.71875,-429.00000 C 285.61932,-430.13096 286.96875,-432.12931 286.96875,-434.50000 C 286.96875,-438.07938 284.04812,-440.96875 280.46875,-440.96875 z " opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 280.50000,-441.00000 C 276.91200,-441.00000 274.00000,-438.08799 274.00000,-434.50000 C 274.00000,-432.12360 275.34485,-430.13368 277.25000,-429.00000 L 283.75000,-429.00000 C 285.65515,-430.13368 287.00000,-432.12360 287.00000,-434.50000 C 287.00000,-438.08800 284.08800,-440.99999 280.50000,-441.00000 z " opacity="1.0000000" fill="url(#linearGradient6835)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <path transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830296,-35.68884)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="url(#linearGradient6837)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 292.95640,-437.33396 C 292.95487,-434.64940 289.68714,-433.62001 289.68714,-433.62001 C 289.68714,-433.62001 292.03588,-435.24596 292.02399,-437.32502 C 292.02399,-437.32502 292.95640,-437.33396 292.95640,-437.33396 z " fill="#888a85" fill-opacity="1.0000000" fill-rule="evenodd" stroke="none" stroke-width="1.0000000px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/> + <g transform="matrix(1.142857,0.000000,0.000000,1.142857,-28.57139,67.00008)"> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" opacity="1.0000000" fill="url(#linearGradient6839)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + </g> + <g> + <g opacity="0.7"> + <path d="M 24 2.5 L 21.625 9.1875 C 22.399034 9.0641318 23.191406 9 24 9 C 24.808594 9 25.600966 9.0641317 26.375 9.1875 L 24 2.5 z M 8.8125 8.78125 L 11.84375 15.21875 C 12.779034 13.928569 13.928569 12.779034 15.21875 11.84375 L 8.8125 8.78125 z M 39.21875 8.78125 L 32.78125 11.84375 C 34.071431 12.779034 35.220966 13.928569 36.15625 15.21875 L 39.21875 8.78125 z M 9.1875 21.59375 L 2.5 23.96875 L 9.1875 26.34375 C 9.0673373 25.57952 9 24.797813 9 24 C 9 23.180625 9.0608858 22.377571 9.1875 21.59375 z M 38.8125 21.625 C 38.935868 22.399034 39 23.191406 39 24 C 39 24.808594 38.935868 25.600966 38.8125 26.375 L 45.5 24 L 38.8125 21.625 z M 11.84375 32.78125 L 8.8125 39.1875 L 15.21875 36.15625 C 13.928569 35.220966 12.779034 34.071431 11.84375 32.78125 z M 36.15625 32.78125 C 35.229789 34.05926 34.087617 35.194799 32.8125 36.125 L 39.21875 39.1875 L 36.15625 32.78125 z M 21.625 38.8125 L 24 45.5 L 26.375 38.8125 C 25.600966 38.935868 24.808594 39 24 39 C 23.191406 39 22.399034 38.935868 21.625 38.8125 z " fill="#fce94f" fill-opacity="1" stroke="#fcaf3e" stroke-width="0.73732895" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-opacity="1"/> + <path d="M 24 5.25 L 22.65625 9.0625 C 23.098888 9.0231486 23.547187 9 24 9 C 24.452813 9 24.901112 9.0231486 25.34375 9.0625 L 24 5.25 z M 10.78125 10.75 L 12.5 14.375 C 13.071538 13.694089 13.724004 13.038745 14.40625 12.46875 L 10.78125 10.75 z M 37.25 10.75 L 33.625 12.46875 C 34.304675 13.038189 34.961811 13.695325 35.53125 14.375 L 37.25 10.75 z M 9.0625 22.625 L 5.28125 23.96875 L 9.0625 25.3125 C 9.024981 24.880146 9 24.442031 9 24 C 9 23.536406 9.0212735 23.077908 9.0625 22.625 z M 38.9375 22.65625 C 38.976851 23.098888 39 23.547187 39 24 C 39 24.452813 38.976851 24.901112 38.9375 25.34375 L 42.71875 24 L 38.9375 22.65625 z M 35.53125 33.59375 C 34.958293 34.27954 34.309985 34.957363 33.625 35.53125 L 37.25 37.25 L 35.53125 33.59375 z M 12.5 33.625 L 10.78125 37.21875 L 14.375 35.5 C 13.702932 34.935884 13.064116 34.297068 12.5 33.625 z M 22.65625 38.9375 L 24 42.71875 L 25.34375 38.9375 C 24.901112 38.976851 24.452813 39 24 39 C 23.547187 39 23.098888 38.976851 22.65625 38.9375 z " fill="none" fill-opacity="1" stroke="url(#radialGradient4081)" stroke-width="0.84646249" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-opacity="1"/> + </g> + <g> + <g> + <path transform="matrix(0.778062,-1.061285,1.061287,0.778062,67.47952,3.641324)" d="M -22.5 -17.5 A 9.5 9.5 0 1 1 -41.5,-17.5 A 9.5 9.5 0 1 1 -22.5 -17.5 z" fill="#ffee54" fill-opacity="1" stroke="#fcaf3e" stroke-width="0.75991178" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-opacity="1"/> + <path transform="matrix(1.244257,-0.167707,0.216642,1.251844,67.61648,40.527)" d="M -22.5 -17.5 A 9.5 9.5 0 1 1 -41.5,-17.5 A 9.5 9.5 0 1 1 -22.5 -17.5 z" fill="url(#radialGradient4020)" fill-opacity="1" stroke="none" stroke-width="1.01737845" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-opacity="1"/> + <path transform="matrix(0.715791,-0.976349,0.97635,0.715792,64.00044,5.269544)" d="M -22.5 -17.5 A 9.5 9.5 0 1 1 -41.5,-17.5 A 9.5 9.5 0 1 1 -22.5 -17.5 z" fill="none" fill-opacity="1" stroke="url(#linearGradient3168)" stroke-width="0.82601947" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-opacity="1"/> + </g> + </g> + </g> + <g transform="translate(-248.99,467.9855)"> + <path d="M 280.50000,-445.50000 C 278.22917,-445.50000 276.39009,-443.94972 275.78125,-441.87500 C 275.08802,-442.23883 274.33674,-442.50000 273.50000,-442.50000 C 270.74000,-442.50000 268.49999,-440.26001 268.50000,-437.50000 C 268.50000,-436.92107 268.66252,-436.39230 268.84375,-435.87500 C 267.47028,-435.10426 266.50000,-433.68600 266.50000,-432.00000 C 266.50000,-429.51600 268.51600,-427.49999 271.00000,-427.50000 C 271.17713,-427.50000 289.82287,-427.50000 290.00000,-427.50000 C 292.48399,-427.50000 294.50000,-429.51600 294.50000,-432.00000 C 294.50000,-433.68600 293.52972,-435.10426 292.15625,-435.87500 C 292.33749,-436.39229 292.50000,-436.92108 292.50000,-437.50000 C 292.50000,-440.26000 290.26000,-442.49999 287.50000,-442.50000 C 286.66326,-442.50000 285.91198,-442.23883 285.21875,-441.87500 C 284.60991,-443.94972 282.77083,-445.50000 280.50000,-445.50000 z " fill="#c4c5c2" fill-opacity="1.0000000" stroke="#888a85" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 280.50000,-445.00000 C 278.31028,-445.00000 276.77640,-443.66423 276.10445,-441.15648 C 275.43599,-441.50010 274.55686,-441.98983 273.75000,-441.98983 C 271.03349,-441.98983 268.99486,-440.05101 268.99487,-437.44429 C 268.99487,-436.89752 269.26208,-436.11085 269.43683,-435.62228 C 268.11240,-434.89433 267.00000,-433.73178 267.00000,-432.24973 C 267.00000,-429.90368 268.54617,-427.99964 271.33928,-427.99964 C 271.51009,-427.99964 289.48992,-427.99964 289.66072,-427.99964 C 292.43173,-427.99964 294.00000,-429.90368 294.00000,-432.24973 C 294.00000,-433.84210 292.88760,-434.91642 291.56317,-435.64437 C 291.73793,-436.13293 292.02724,-436.89753 292.02724,-437.44429 C 292.02724,-440.05100 289.91143,-442.01192 287.25001,-442.01193 C 286.44314,-442.01193 285.60820,-441.52219 284.93974,-441.17857 C 284.29089,-443.60011 282.68973,-445.00000 280.50000,-445.00000 z " opacity="1.0000000" fill="url(#linearGradient6712)" fill-opacity="1.0000000" stroke="none" stroke-width="0.99999958" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <g> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)" opacity="1.0000000" fill="url(#linearGradient6714)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <rect y="-438.00000" x="271.00000" height="9.0000000" width="20.000000" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830195,-35.68869)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <g> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19811,24.86321)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19818,24.86331)" opacity="1.0000000" fill="url(#linearGradient6716)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <g> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" opacity="1.0000000" fill="url(#linearGradient6718)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <g transform="translate(-1.000000,0.000000)"> + <path d="M 280.46875,-440.96875 C 276.88937,-440.96875 274.00000,-438.04812 274.00000,-434.46875 C 274.00000,-432.09807 275.34943,-430.13096 277.25000,-429.00000 L 283.71875,-429.00000 C 285.61932,-430.13096 286.96875,-432.12931 286.96875,-434.50000 C 286.96875,-438.07938 284.04812,-440.96875 280.46875,-440.96875 z " opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 280.50000,-441.00000 C 276.91200,-441.00000 274.00000,-438.08799 274.00000,-434.50000 C 274.00000,-432.12360 275.34485,-430.13368 277.25000,-429.00000 L 283.75000,-429.00000 C 285.65515,-430.13368 287.00000,-432.12360 287.00000,-434.50000 C 287.00000,-438.08800 284.08800,-440.99999 280.50000,-441.00000 z " opacity="1.0000000" fill="url(#linearGradient6720)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <path transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830296,-35.68884)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="url(#linearGradient6722)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 292.95640,-437.33396 C 292.95487,-434.64940 289.68714,-433.62001 289.68714,-433.62001 C 289.68714,-433.62001 292.03588,-435.24596 292.02399,-437.32502 C 292.02399,-437.32502 292.95640,-437.33396 292.95640,-437.33396 z " fill="#888a85" fill-opacity="1.0000000" fill-rule="evenodd" stroke="none" stroke-width="1.0000000px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/> + <g transform="matrix(1.142857,0.000000,0.000000,1.142857,-28.57139,67.00008)"> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" opacity="1.0000000" fill="url(#linearGradient6724)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + </g> + </g> +</svg> diff --git a/examples/svg/embedded/weatherinfo/icons/weather-fog.svg b/examples/svg/embedded/weatherinfo/icons/weather-fog.svg new file mode 100644 index 0000000..56a2444 --- /dev/null +++ b/examples/svg/embedded/weatherinfo/icons/weather-fog.svg @@ -0,0 +1,114 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="48" height="48" id="svg2670" version="1.0"> + <defs id="defs2672"> + <linearGradient id="linearGradient6549"> + <stop offset="0" id="stop6551" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6553" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient id="linearGradient6527"> + <stop offset="0" id="stop6530" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6532" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient id="linearGradient6538"> + <stop offset="0" id="stop6540" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6542" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient id="linearGradient6513"> + <stop offset="0" id="stop6515" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6517" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient id="linearGradient6497"> + <stop offset="0" id="stop6499" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6501" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient id="linearGradient6470"> + <stop offset="0" id="stop6472" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6474" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6470" id="linearGradient5689" gradientUnits="userSpaceOnUse" x1="271.02170" y1="-441.05182" x2="285.02859" y2="-431.96991"/> + <linearGradient xlink:href="#linearGradient6497" id="linearGradient5691" gradientUnits="userSpaceOnUse" x1="287.51730" y1="-439.75281" x2="289.67633" y2="-436.32199"/> + <linearGradient xlink:href="#linearGradient6513" id="linearGradient5693" gradientUnits="userSpaceOnUse" x1="286.51172" y1="-441.29074" x2="289.85379" y2="-436.14453"/> + <linearGradient xlink:href="#linearGradient6538" id="linearGradient5695" gradientUnits="userSpaceOnUse" x1="285.94086" y1="-439.93900" x2="289.39124" y2="-436.44290"/> + <linearGradient xlink:href="#linearGradient6527" id="linearGradient5697" gradientUnits="userSpaceOnUse" x1="275.94193" y1="-437.10501" x2="279.97546" y2="-431.91833"/> + <linearGradient xlink:href="#linearGradient6549" id="linearGradient5699" gradientUnits="userSpaceOnUse" x1="286.66589" y1="-439.48358" x2="289.76562" y2="-436.70703"/> + <linearGradient xlink:href="#linearGradient6538" id="linearGradient5701" gradientUnits="userSpaceOnUse" x1="284.80219" y1="-441.23294" x2="288.89954" y2="-436.83109"/> + <linearGradient xlink:href="#linearGradient6470" id="linearGradient5703" gradientUnits="userSpaceOnUse" x1="271.02170" y1="-441.05182" x2="285.02859" y2="-431.96991"/> + <linearGradient xlink:href="#linearGradient6497" id="linearGradient5705" gradientUnits="userSpaceOnUse" x1="287.51730" y1="-439.75281" x2="289.67633" y2="-436.32199"/> + <linearGradient xlink:href="#linearGradient6513" id="linearGradient5707" gradientUnits="userSpaceOnUse" x1="286.51172" y1="-441.29074" x2="289.85379" y2="-436.14453"/> + <linearGradient xlink:href="#linearGradient6538" id="linearGradient5709" gradientUnits="userSpaceOnUse" x1="285.94086" y1="-439.93900" x2="289.39124" y2="-436.44290"/> + <linearGradient xlink:href="#linearGradient6527" id="linearGradient5711" gradientUnits="userSpaceOnUse" x1="275.94193" y1="-437.10501" x2="279.97546" y2="-431.91833"/> + <linearGradient xlink:href="#linearGradient6549" id="linearGradient5713" gradientUnits="userSpaceOnUse" x1="286.66589" y1="-439.48358" x2="289.76562" y2="-436.70703"/> + <linearGradient xlink:href="#linearGradient6538" id="linearGradient5715" gradientUnits="userSpaceOnUse" x1="284.80219" y1="-441.23294" x2="288.89954" y2="-436.83109"/> + </defs> + + <metadata id="metadata2675"> + <rdf:RDF> + <cc:Work rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> + </cc:Work> + </rdf:RDF> + </metadata> + <g id="layer1"> + <g transform="translate(5e-6,-4)"> + <g transform="translate(-248.99871,466.5)" opacity="0.45"> + <path d="M 280.5,-445.5 C 278.22917,-445.5 276.39009,-443.94972 275.78125,-441.875 C 275.08802,-442.23883 274.33674,-442.5 273.5,-442.5 C 270.74,-442.5 268.49999,-440.26001 268.5,-437.5 C 268.5,-436.92107 268.66252,-436.3923 268.84375,-435.875 C 267.47028,-435.10426 266.5,-433.686 266.5,-432 C 266.5,-429.516 268.516,-427.49999 271,-427.5 C 271.17713,-427.5 289.82287,-427.5 290,-427.5 C 292.48399,-427.5 294.5,-429.516 294.5,-432 C 294.5,-433.686 293.52972,-435.10426 292.15625,-435.875 C 292.33749,-436.39229 292.5,-436.92108 292.5,-437.5 C 292.5,-440.26 290.26,-442.49999 287.5,-442.5 C 286.66326,-442.5 285.91198,-442.23883 285.21875,-441.875 C 284.60991,-443.94972 282.77083,-445.5 280.5,-445.5 z" fill="#c4c5c2" fill-opacity="1" stroke="#888a85" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path d="M 280.5,-445 C 278.31028,-445 276.7764,-443.66423 276.10445,-441.15648 C 275.43599,-441.5001 274.55686,-441.98983 273.75,-441.98983 C 271.03349,-441.98983 268.99486,-440.05101 268.99487,-437.44429 C 268.99487,-436.89752 269.26208,-436.11085 269.43683,-435.62228 C 268.1124,-434.89433 267,-433.73178 267,-432.24973 C 267,-429.90368 268.54617,-427.99964 271.33928,-427.99964 C 271.51009,-427.99964 289.48992,-427.99964 289.66072,-427.99964 C 292.43173,-427.99964 294,-429.90368 294,-432.24973 C 294,-433.8421 292.8876,-434.91642 291.56317,-435.64437 C 291.73793,-436.13293 292.02724,-436.89753 292.02724,-437.44429 C 292.02724,-440.051 289.91143,-442.01192 287.25001,-442.01193 C 286.44314,-442.01193 285.6082,-441.52219 284.93974,-441.17857 C 284.29089,-443.60011 282.68973,-445 280.5,-445 z" opacity="1" fill="url(#linearGradient5689)" fill-opacity="1" stroke="none" stroke-width="0.99999958" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <g> + <path transform="matrix(1.056604,0,0,1.056604,-24.19818,21.86331)" d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z" opacity="1" fill="#c4c5c2" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path transform="matrix(1.056604,0,0,1.056604,-24.19818,21.86331)" d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z" opacity="1" fill="url(#linearGradient5691)" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + </g> + <rect width="20" height="9" x="271" y="-438" opacity="1" fill="#c4c5c2" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z" transform="matrix(0.90566,0,0,0.90566,9.830195,-35.68869)" opacity="1" fill="#c4c5c2" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <g> + <path transform="matrix(1.056604,0,0,1.056604,-17.19811,24.86321)" d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z" opacity="1" fill="#c4c5c2" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path transform="matrix(1.056604,0,0,1.056604,-17.19818,24.86331)" d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z" opacity="1" fill="url(#linearGradient5693)" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + </g> + <g> + <path transform="matrix(1.056604,0,0,1.056604,-31.19818,24.86331)" d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z" opacity="1" fill="#c4c5c2" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path transform="matrix(1.056604,0,0,1.056604,-31.19818,24.86331)" d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z" opacity="1" fill="url(#linearGradient5695)" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + </g> + <g transform="translate(-1,0)"> + <path d="M 280.46875,-440.96875 C 276.88937,-440.96875 274,-438.04812 274,-434.46875 C 274,-432.09807 275.34943,-430.13096 277.25,-429 L 283.71875,-429 C 285.61932,-430.13096 286.96875,-432.12931 286.96875,-434.5 C 286.96875,-438.07938 284.04812,-440.96875 280.46875,-440.96875 z" opacity="1" fill="#c4c5c2" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path d="M 280.5,-441 C 276.912,-441 274,-438.08799 274,-434.5 C 274,-432.1236 275.34485,-430.13368 277.25,-429 L 283.75,-429 C 285.65515,-430.13368 287,-432.1236 287,-434.5 C 287,-438.088 284.088,-440.99999 280.5,-441 z" opacity="1" fill="url(#linearGradient5697)" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + </g> + <path d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z" transform="matrix(0.90566,0,0,0.90566,9.830296,-35.68884)" opacity="1" fill="url(#linearGradient5699)" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path d="M 292.9564,-437.33396 C 292.95487,-434.6494 289.68714,-433.62001 289.68714,-433.62001 C 289.68714,-433.62001 292.03588,-435.24596 292.02399,-437.32502 C 292.02399,-437.32502 292.9564,-437.33396 292.9564,-437.33396 z" fill="#888a85" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/> + <g transform="matrix(1.142857,0,0,1.142857,-28.57139,67.00008)"> + <path transform="matrix(1.056604,0,0,1.056604,-31.19818,24.86331)" d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z" opacity="1" fill="#c4c5c2" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path transform="matrix(1.056604,0,0,1.056604,-31.19818,24.86331)" d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z" opacity="1" fill="url(#linearGradient5701)" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + </g> + </g> + <path d="M 31.501294,21.49982 C 29.311574,21.49982 27.777694,22.83559 27.105744,25.34334 C 26.437284,24.99972 25.558154,24.50999 24.751294,24.50999 C 22.034784,24.50999 19.996154,26.44881 19.996164,29.05553 C 19.996164,29.6023 20.263374,30.38897 20.438124,30.87754 C 19.113694,31.60549 18.001294,32.76804 18.001294,34.25009 C 18.001294,36.59614 19.547464,38.50018 22.340574,38.50018 C 22.511384,38.50018 40.491214,38.50018 40.662014,38.50018 C 43.433024,38.50018 45.001294,36.59614 45.001294,34.25009 C 45.001294,32.65772 43.888894,31.5834 42.564464,30.85545 C 42.739224,30.36689 43.028534,29.60229 43.028534,29.05553 C 43.028534,26.44882 40.912724,24.4879 38.251304,24.48789 C 37.444434,24.48789 36.609494,24.97763 35.941034,25.32125 C 35.292184,22.89971 33.691024,21.49982 31.501294,21.49982 z" opacity="0.45" fill="#ffffff" fill-opacity="1" stroke="none" stroke-width="0.99999958" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <g transform="translate(-264.0013,462.5)" opacity="0.45"> + <path d="M 280.5,-445.5 C 278.22917,-445.5 276.39009,-443.94972 275.78125,-441.875 C 275.08802,-442.23883 274.33674,-442.5 273.5,-442.5 C 270.74,-442.5 268.49999,-440.26001 268.5,-437.5 C 268.5,-436.92107 268.66252,-436.3923 268.84375,-435.875 C 267.47028,-435.10426 266.5,-433.686 266.5,-432 C 266.5,-429.516 268.516,-427.49999 271,-427.5 C 271.17713,-427.5 289.82287,-427.5 290,-427.5 C 292.48399,-427.5 294.5,-429.516 294.5,-432 C 294.5,-433.686 293.52972,-435.10426 292.15625,-435.875 C 292.33749,-436.39229 292.5,-436.92108 292.5,-437.5 C 292.5,-440.26 290.26,-442.49999 287.5,-442.5 C 286.66326,-442.5 285.91198,-442.23883 285.21875,-441.875 C 284.60991,-443.94972 282.77083,-445.5 280.5,-445.5 z" fill="#c4c5c2" fill-opacity="1" stroke="#888a85" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path d="M 280.5,-445 C 278.31028,-445 276.7764,-443.66423 276.10445,-441.15648 C 275.43599,-441.5001 274.55686,-441.98983 273.75,-441.98983 C 271.03349,-441.98983 268.99486,-440.05101 268.99487,-437.44429 C 268.99487,-436.89752 269.26208,-436.11085 269.43683,-435.62228 C 268.1124,-434.89433 267,-433.73178 267,-432.24973 C 267,-429.90368 268.54617,-427.99964 271.33928,-427.99964 C 271.51009,-427.99964 289.48992,-427.99964 289.66072,-427.99964 C 292.43173,-427.99964 294,-429.90368 294,-432.24973 C 294,-433.8421 292.8876,-434.91642 291.56317,-435.64437 C 291.73793,-436.13293 292.02724,-436.89753 292.02724,-437.44429 C 292.02724,-440.051 289.91143,-442.01192 287.25001,-442.01193 C 286.44314,-442.01193 285.6082,-441.52219 284.93974,-441.17857 C 284.29089,-443.60011 282.68973,-445 280.5,-445 z" opacity="1" fill="url(#linearGradient5703)" fill-opacity="1" stroke="none" stroke-width="0.99999958" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <g> + <path transform="matrix(1.056604,0,0,1.056604,-24.19818,21.86331)" d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z" opacity="1" fill="#c4c5c2" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path transform="matrix(1.056604,0,0,1.056604,-24.19818,21.86331)" d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z" opacity="1" fill="url(#linearGradient5705)" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + </g> + <rect width="20" height="9" x="271" y="-438" opacity="1" fill="#c4c5c2" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z" transform="matrix(0.90566,0,0,0.90566,9.830195,-35.68869)" opacity="1" fill="#c4c5c2" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <g> + <path transform="matrix(1.056604,0,0,1.056604,-17.19811,24.86321)" d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z" opacity="1" fill="#c4c5c2" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path transform="matrix(1.056604,0,0,1.056604,-17.19818,24.86331)" d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z" opacity="1" fill="url(#linearGradient5707)" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + </g> + <g> + <path transform="matrix(1.056604,0,0,1.056604,-31.19818,24.86331)" d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z" opacity="1" fill="#c4c5c2" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path transform="matrix(1.056604,0,0,1.056604,-31.19818,24.86331)" d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z" opacity="1" fill="url(#linearGradient5709)" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + </g> + <g transform="translate(-1,0)"> + <path d="M 280.46875,-440.96875 C 276.88937,-440.96875 274,-438.04812 274,-434.46875 C 274,-432.09807 275.34943,-430.13096 277.25,-429 L 283.71875,-429 C 285.61932,-430.13096 286.96875,-432.12931 286.96875,-434.5 C 286.96875,-438.07938 284.04812,-440.96875 280.46875,-440.96875 z" opacity="1" fill="#c4c5c2" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path d="M 280.5,-441 C 276.912,-441 274,-438.08799 274,-434.5 C 274,-432.1236 275.34485,-430.13368 277.25,-429 L 283.75,-429 C 285.65515,-430.13368 287,-432.1236 287,-434.5 C 287,-438.088 284.088,-440.99999 280.5,-441 z" opacity="1" fill="url(#linearGradient5711)" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + </g> + <path d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z" transform="matrix(0.90566,0,0,0.90566,9.830296,-35.68884)" opacity="1" fill="url(#linearGradient5713)" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path d="M 292.9564,-437.33396 C 292.95487,-434.6494 289.68714,-433.62001 289.68714,-433.62001 C 289.68714,-433.62001 292.03588,-435.24596 292.02399,-437.32502 C 292.02399,-437.32502 292.9564,-437.33396 292.9564,-437.33396 z" fill="#888a85" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/> + <g transform="matrix(1.142857,0,0,1.142857,-28.57139,67.00008)"> + <path transform="matrix(1.056604,0,0,1.056604,-31.19818,24.86331)" d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z" opacity="1" fill="#c4c5c2" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path transform="matrix(1.056604,0,0,1.056604,-31.19818,24.86331)" d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z" opacity="1" fill="url(#linearGradient5715)" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + </g> + </g> + <path d="M 16.498705,17.499819 C 14.308985,17.499819 12.775105,18.835589 12.103155,21.343339 C 11.434695,20.999719 10.555565,20.509989 9.748705,20.509989 C 7.032195,20.509989 4.993565,22.448809 4.993575,25.055529 C 4.993575,25.602299 5.260785,26.388969 5.435535,26.877539 C 4.111105,27.605489 2.998705,28.768039 2.998705,30.250089 C 2.998705,32.596139 4.544875,34.500179 7.337985,34.500179 C 7.508795,34.500179 25.488624,34.500179 25.659424,34.500179 C 28.430434,34.500179 29.998704,32.596139 29.998704,30.250089 C 29.998704,28.657719 28.886304,27.583399 27.561874,26.855449 C 27.736634,26.366889 28.025944,25.602289 28.025944,25.055529 C 28.025944,22.448819 25.910134,20.487899 23.248714,20.487889 C 22.441844,20.487889 21.606904,20.977629 20.938444,21.321249 C 20.289594,18.899709 18.688434,17.499819 16.498705,17.499819 z" opacity="0.45" fill="#ffffff" fill-opacity="1" stroke="none" stroke-width="0.99999958" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + </g> + </g> +</svg> diff --git a/examples/svg/embedded/weatherinfo/icons/weather-haze.svg b/examples/svg/embedded/weatherinfo/icons/weather-haze.svg new file mode 100644 index 0000000..b31811f --- /dev/null +++ b/examples/svg/embedded/weatherinfo/icons/weather-haze.svg @@ -0,0 +1,162 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="48" height="48" id="svg14353" version="1.0"> + + <defs id="defs14355"> + <linearGradient id="linearGradient8371"> + <stop offset="0" id="stop8373" stop-color="#e8d277" stop-opacity="1"/> + <stop offset="1" id="stop8375" stop-color="#e8d277" stop-opacity="0"/> + </linearGradient> + <linearGradient id="linearGradient9362"> + <stop id="stop9364" offset="0" stop-color="#392100" stop-opacity="1"/> + <stop id="stop9366" offset="1" stop-color="#392100" stop-opacity="0"/> + </linearGradient> + <linearGradient id="linearGradient7010"> + <stop offset="0" id="stop7012" stop-color="#aec2d7" stop-opacity="1"/> + <stop id="stop9915" offset="1" stop-color="#81a0c1" stop-opacity="1"/> + </linearGradient> + <linearGradient id="linearGradient6825"> + <stop offset="0" id="stop6827" stop-color="#3a2400" stop-opacity="1"/> + <stop id="stop6833" offset="0.28565985" stop-color="#8c5600" stop-opacity="1"/> + <stop offset="1" id="stop6829" stop-color="#a36400" stop-opacity="1"/> + </linearGradient> + <linearGradient id="linearGradient6772"> + <stop offset="0" id="stop6774" stop-color="#888a85" stop-opacity="1"/> + <stop offset="1" id="stop6776" stop-color="#eeeeec" stop-opacity="1"/> + </linearGradient> + <linearGradient id="linearGradient6764"> + <stop offset="0" id="stop6766" stop-color="#eeeeec" stop-opacity="1"/> + <stop offset="1" id="stop6768" stop-color="#eeeeec" stop-opacity="0"/> + </linearGradient> + <linearGradient id="linearGradient6746"> + <stop offset="0" id="stop6748" stop-color="#eeeeec" stop-opacity="1"/> + <stop offset="1" id="stop6750" stop-color="#eeeeec" stop-opacity="0"/> + </linearGradient> + <linearGradient id="linearGradient6728"> + <stop offset="0" id="stop6730" stop-color="#babdb6" stop-opacity="1"/> + <stop offset="1" id="stop6732" stop-color="#babdb6" stop-opacity="0"/> + </linearGradient> + <linearGradient id="linearGradient6685"> + <stop offset="0" id="stop6687" stop-color="#000000" stop-opacity="1"/> + <stop offset="1" id="stop6689" stop-color="#000000" stop-opacity="0"/> + </linearGradient> + <linearGradient id="linearGradient6631"> + <stop offset="0" id="stop6633" stop-color="#555753" stop-opacity="1"/> + <stop id="stop6639" offset="0.0343047" stop-color="#eeeeec" stop-opacity="0.49803922"/> + <stop offset="0.06714281" id="stop6641" stop-color="#555753" stop-opacity="1"/> + <stop id="stop6643" offset="0.08441304" stop-color="#eeeeec" stop-opacity="0.49803922"/> + <stop offset="0.13726114" id="stop6645" stop-color="#555753" stop-opacity="1"/> + <stop id="stop6647" offset="0.15779018" stop-color="#eeeeec" stop-opacity="0.49803922"/> + <stop offset="0.21104114" id="stop6649" stop-color="#555753" stop-opacity="1"/> + <stop id="stop6651" offset="0.23053712" stop-color="#eeeeec" stop-opacity="0.49803922"/> + <stop offset="0.27452311" id="stop6653" stop-color="#555753" stop-opacity="1"/> + <stop id="stop6655" offset="0.29490501" stop-color="#eeeeec" stop-opacity="0.49803922"/> + <stop offset="0.34954464" id="stop6657" stop-color="#555753" stop-opacity="1"/> + <stop id="stop6659" offset="0.36960241" stop-color="#eeeeec" stop-opacity="0.49803922"/> + <stop offset="0.4220143" id="stop6675" stop-color="#555753" stop-opacity="1"/> + <stop id="stop6677" offset="0.44345734" stop-color="#eeeeec" stop-opacity="0.49803922"/> + <stop offset="0.50078195" id="stop6679" stop-color="#555753" stop-opacity="1"/> + <stop id="stop6681" offset="0.52629334" stop-color="#eeeeec" stop-opacity="0.49803922"/> + <stop offset="0.57410157" id="stop6683" stop-color="#555753" stop-opacity="1"/> + <stop id="stop6693" offset="0.5898369" stop-color="#eeeeec" stop-opacity="0.49803922"/> + <stop offset="0.64333093" id="stop6695" stop-color="#555753" stop-opacity="1"/> + <stop id="stop6697" offset="0.66151941" stop-color="#eeeeec" stop-opacity="0.49803922"/> + <stop offset="0.70865703" id="stop6699" stop-color="#555753" stop-opacity="1"/> + <stop id="stop6701" offset="0.72415513" stop-color="#eeeeec" stop-opacity="0.49803922"/> + <stop offset="1" id="stop6661" stop-color="#555753" stop-opacity="1"/> + </linearGradient> + <radialGradient xlink:href="#linearGradient7010" id="radialGradient6968" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.2893727,-0.2474294,0.6139915,0.7180729,9.91225,5.2335615)" cx="17.055056" cy="3.5953908" fx="17.055056" fy="3.5953908" r="24"/> + <linearGradient xlink:href="#linearGradient6825" id="linearGradient7066" gradientUnits="userSpaceOnUse" x1="37.997959" y1="18.245197" x2="37.997959" y2="39.658928"/> + <linearGradient xlink:href="#linearGradient6772" id="linearGradient7068" gradientUnits="userSpaceOnUse" x1="7.8838124" y1="18.558826" x2="7.8838124" y2="34.97258"/> + <linearGradient xlink:href="#linearGradient6728" id="linearGradient7070" gradientUnits="userSpaceOnUse" x1="15.133464" y1="32.587334" x2="17.008692" y2="32.587334"/> + <linearGradient xlink:href="#linearGradient6631" id="linearGradient7072" gradientUnits="userSpaceOnUse" x1="-0.52151477" y1="29.500589" x2="18.516363" y2="14.809909"/> + <radialGradient xlink:href="#linearGradient6685" id="radialGradient7074" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-0.5944965,-3.8328271e-7,4.1781509e-7,-0.6480585,194.52841,528.49324)" cx="122" cy="401.95938" fx="122" fy="401.95938" r="6.7283827"/> + <linearGradient xlink:href="#linearGradient6728" id="linearGradient7076" gradientUnits="userSpaceOnUse" x1="15.072129" y1="21.263441" x2="17.008948" y2="21.263441"/> + <linearGradient xlink:href="#linearGradient6746" id="linearGradient7078" gradientUnits="userSpaceOnUse" x1="15.526249" y1="2.097311" x2="15.526249" y2="14.758003"/> + <linearGradient xlink:href="#linearGradient6764" id="linearGradient7080" gradientUnits="userSpaceOnUse" x1="11.884123" y1="10.724713" x2="6.123559" y2="29.316263"/> + <linearGradient xlink:href="#linearGradient9362" id="linearGradient7082" gradientUnits="userSpaceOnUse" x1="8.5806656" y1="20.995518" x2="8.5806656" y2="23.085056"/> + <linearGradient xlink:href="#linearGradient9362" id="linearGradient7084" gradientUnits="userSpaceOnUse" gradientTransform="translate(25.006402,2.9778958e-7)" x1="8.5806656" y1="20.995518" x2="8.5806656" y2="23.085056"/> + <linearGradient xlink:href="#linearGradient9362" id="linearGradient7086" gradientUnits="userSpaceOnUse" gradientTransform="translate(35.006405,2.9778958e-7)" x1="8.5806656" y1="20.995518" x2="8.5806656" y2="23.085056"/> + <linearGradient xlink:href="#linearGradient6825" id="linearGradient7132" gradientUnits="userSpaceOnUse" x1="37.997959" y1="18.245197" x2="37.997959" y2="39.658928"/> + <linearGradient xlink:href="#linearGradient6772" id="linearGradient7134" gradientUnits="userSpaceOnUse" x1="7.8838124" y1="18.558826" x2="7.8838124" y2="34.97258"/> + <linearGradient xlink:href="#linearGradient6728" id="linearGradient7136" gradientUnits="userSpaceOnUse" x1="15.133464" y1="32.587334" x2="17.008692" y2="32.587334"/> + <linearGradient xlink:href="#linearGradient6631" id="linearGradient7138" gradientUnits="userSpaceOnUse" x1="-0.52151477" y1="29.500589" x2="18.516363" y2="14.809909"/> + <radialGradient xlink:href="#linearGradient6685" id="radialGradient7140" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-0.5944965,-3.8328271e-7,4.1781509e-7,-0.6480585,194.52841,528.49324)" cx="122" cy="401.95938" fx="122" fy="401.95938" r="6.7283827"/> + <linearGradient xlink:href="#linearGradient6728" id="linearGradient7142" gradientUnits="userSpaceOnUse" x1="15.072129" y1="21.263441" x2="17.008948" y2="21.263441"/> + <linearGradient xlink:href="#linearGradient6746" id="linearGradient7144" gradientUnits="userSpaceOnUse" x1="15.526249" y1="2.097311" x2="15.526249" y2="14.758003"/> + <linearGradient xlink:href="#linearGradient6764" id="linearGradient7146" gradientUnits="userSpaceOnUse" x1="11.884123" y1="10.724713" x2="6.123559" y2="29.316263"/> + <linearGradient xlink:href="#linearGradient9362" id="linearGradient7148" gradientUnits="userSpaceOnUse" x1="8.5806656" y1="20.995518" x2="8.5806656" y2="23.085056"/> + <linearGradient xlink:href="#linearGradient9362" id="linearGradient7150" gradientUnits="userSpaceOnUse" gradientTransform="translate(25.006402,2.9778958e-7)" x1="8.5806656" y1="20.995518" x2="8.5806656" y2="23.085056"/> + <linearGradient xlink:href="#linearGradient9362" id="linearGradient7152" gradientUnits="userSpaceOnUse" gradientTransform="translate(35.006405,2.9778958e-7)" x1="8.5806656" y1="20.995518" x2="8.5806656" y2="23.085056"/> + <filter id="filter7663" x="-0.1147047" width="1.2294094" y="-0.12580788" height="1.2516158"> + <feGaussianBlur stdDeviation="2.2006423" id="feGaussianBlur7665"/> + </filter> + <linearGradient xlink:href="#linearGradient8371" id="linearGradient8377" x1="24" y1="45.998173" x2="24" y2="2.0644991" gradientUnits="userSpaceOnUse"/> + </defs> + <metadata id="metadata14358"> + <rdf:RDF> + <cc:Work rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> + </cc:Work> + </rdf:RDF> + </metadata> + <g id="layer1"> + <rect width="47" height="47" x="0.5" y="0.5" fill="url(#radialGradient6968)" fill-opacity="1" fill-rule="evenodd" stroke="#132c50" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <g transform="translate(-1.6037056e-2,3.090275e-2)"> + <path d="M 1.5112736,46.463508 L 46.518528,46.463508 L 46.518528,20.097311 L 42.49936,11.994593 L 37.997439,20.097311 L 33.503201,11.994593 L 29.51269,20.097311 L 29.51269,40.518226 L 17.513556,40.518226 L 17.513556,15.979513 L 18.991385,15.979513 L 15.625234,5.482499 L 11.994559,15.979622 L 13.487574,15.979622 L 13.487574,22.494238 L 8.5736236,16.493825 L 1.5112736,16.493825 L 1.5112736,46.463508 z" fill="#888a85" fill-rule="evenodd" stroke="#888a85" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="round" stroke-opacity="1"/> + <path d="M 46.499202,19.996278 L 46.499164,39.496968 L 29.497928,39.514749 L 29.496716,20.073218 L 33.471729,13.30179 L 37.969149,19.742327 L 42.464705,13.30179 L 46.499202,19.996278 z" fill="url(#linearGradient7066)" fill-opacity="1" fill-rule="evenodd" stroke="#331f00" stroke-width="1px" stroke-linecap="round" stroke-linejoin="miter" stroke-opacity="1"/> + <path d="M 30.4991,19.359794 L 30.495194,38.512814 L 45.998784,38.497189" opacity="0.25" fill="none" fill-rule="evenodd" stroke="#eeeeec" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/> + <rect y="14.973112" x="13.484319" height="24.544136" width="4.027225" fill="#eeeeec" fill-opacity="1" fill-rule="evenodd" stroke="#2e3436" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <rect y="25.958162" x="1.5003295" height="13.560402" width="14.000328" fill="url(#linearGradient7068)" fill-opacity="1" fill-rule="evenodd" stroke="#2e3436" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path d="M 16.000204,26.158288 L 17.008692,26.165076 L 17.006997,39.016383 L 16.000204,39.016383 L 16.000204,26.158288 z" fill="url(#linearGradient7070)" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path d="M 1.5018555,16.471187 L 1.5018555,26.192359 L 16.519497,26.192359 L 8.5470601,16.471187 L 1.5018555,16.471187 z" fill="#7f4f01" fill-opacity="1" fill-rule="evenodd" stroke="#392100" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="round" stroke-opacity="1"/> + <path d="M 46.494238,19.981528 L 42.46863,15.428034 L 37.978753,20.107557 L 33.495519,15.782001 L 28.445309,22.028089 L 33.475653,11.989135 L 37.973073,19.908885 L 42.468629,12.0045 L 46.494238,19.981528 z" fill="#d3d7cf" fill-rule="evenodd" stroke="#d3d7cf" stroke-width="1.10000002" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="4" stroke-dasharray="none" stroke-opacity="1"/> + <path d="M 1.9983315,16.96932 L 1.9983315,25.690091 L 15.466816,25.690091 L 8.3170492,16.96932 L 1.9983315,16.96932 z" opacity="0.5" fill="url(#linearGradient7072)" fill-opacity="1" fill-rule="evenodd" stroke="url(#radialGradient7074)" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="round" stroke-opacity="1"/> + <path d="M 15.632485,5.4903604 L 12.001677,15.991016 L 19.003769,15.992368 L 15.632485,5.4903604 z" fill="#532323" fill-opacity="1" fill-rule="evenodd" stroke="#2a1111" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="round" stroke-opacity="1"/> + <path d="M 13.983416,22.32144 L 13.983416,16.492941 L 17.007669,16.492941 L 17.007669,21.219904 L 17.008948,26.033783 C 17.008949,26.039055 16.935124,25.911261 16.894583,25.856332 L 13.983416,22.32144 z" fill="url(#linearGradient7076)" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path d="M 15.595391,8.6350832 L 13.413573,14.980794 L 17.638924,14.980794 L 15.595391,8.6350832 z" opacity="0.5" fill="none" fill-rule="evenodd" stroke="url(#linearGradient7078)" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/> + <path d="M 1.9974392,25.190652 L 14.412292,25.190652 L 8.0819463,17.470171 L 2.0013455,17.470171" opacity="0.5" fill="none" fill-rule="evenodd" stroke="url(#linearGradient7080)" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/> + <g fill="#fce94f"> + <rect width="2" height="2" x="30.999861" y="22.002562" fill="#fce94f" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="round" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <rect width="2" height="2" x="34.001801" y="22.000923" fill="#fce94f" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="round" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <rect width="2" height="2" x="40.997707" y="22.000923" fill="#fce94f" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="round" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <rect width="2" height="2" x="9.0004454" y="22.002562" fill="#fce94f" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="round" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <rect width="2" height="2" x="6.0018048" y="22.002562" fill="#fce94f" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="round" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + </g> + <g> + <path d="M 4.4711906,23.06274 L 5.7618436,21.495518 L 11.216391,21.495518 L 12.507043,23.06274" fill="url(#linearGradient7082)" fill-opacity="1" fill-rule="evenodd" stroke="#392100" stroke-width="1px" stroke-linecap="round" stroke-linejoin="miter" stroke-opacity="1"/> + <path d="M 29.477593,23.06274 L 30.768246,21.495518 L 36.222793,21.495518 L 37.513445,23.06274" fill="url(#linearGradient7084)" fill-opacity="1" fill-rule="evenodd" stroke="#392100" stroke-width="1px" stroke-linecap="round" stroke-linejoin="miter" stroke-opacity="1"/> + <path d="M 39.477596,23.06274 L 40.768249,21.495518 L 43.203584,21.495518 L 44.822027,23.06274" fill="url(#linearGradient7086)" fill-opacity="1" fill-rule="evenodd" stroke="#392100" stroke-width="1px" stroke-linecap="round" stroke-linejoin="miter" stroke-opacity="1"/> + </g> + </g> + <g transform="translate(-7.6824584e-3,3.0729835e-2)" filter="url(#filter7663)" opacity="0.6"> + <path d="M 1.4995548,46.463508 L 46.518528,46.463508 L 46.518528,20.097311 L 42.49936,11.994593 L 37.997439,20.097311 L 33.503201,11.994593 L 29.51269,20.097311 L 29.51269,40.518226 L 17.513556,40.518226 L 17.513556,15.979513 L 18.991385,15.979513 L 15.625234,5.482499 L 11.994559,15.979622 L 13.487574,15.979622 L 13.487574,22.494238 L 8.5736236,16.493825 L 1.4995548,16.493825 L 1.4995548,46.463508 z" fill="#888a85" fill-rule="evenodd" stroke="#888a85" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="round" stroke-opacity="1"/> + <path d="M 46.499202,19.996278 L 46.499164,39.496968 L 29.497928,39.514749 L 29.496716,20.073218 L 33.471729,13.30179 L 37.969149,19.742327 L 42.464705,13.30179 L 46.499202,19.996278 z" fill="url(#linearGradient7132)" fill-opacity="1" fill-rule="evenodd" stroke="#331f00" stroke-width="1px" stroke-linecap="round" stroke-linejoin="miter" stroke-opacity="1"/> + <path d="M 30.4991,19.359794 L 30.495194,38.512814 L 45.998784,38.497189" opacity="0.25000000000000000" fill="none" fill-rule="evenodd" stroke="#eeeeec" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/> + <rect y="14.973112" x="13.484319" height="24.544136" width="4.027225" fill="#eeeeec" fill-opacity="1" fill-rule="evenodd" stroke="#2e3436" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <rect y="25.958162" x="1.5003295" height="13.560402" width="14.000328" fill="url(#linearGradient7134)" fill-opacity="1" fill-rule="evenodd" stroke="#2e3436" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path d="M 16.000204,26.158288 L 17.008692,26.165076 L 17.006997,39.016383 L 16.000204,39.016383 L 16.000204,26.158288 z" fill="url(#linearGradient7136)" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path d="M 1.5018555,16.471187 L 1.5018555,26.192359 L 16.519497,26.192359 L 8.5470601,16.471187 L 1.5018555,16.471187 z" fill="#7f4f01" fill-opacity="1" fill-rule="evenodd" stroke="#392100" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="round" stroke-opacity="1"/> + <path d="M 46.494238,19.981528 L 42.46863,15.428034 L 37.978753,20.107557 L 33.495519,15.782001 L 28.445309,22.028089 L 33.475653,11.989135 L 37.973073,19.908885 L 42.468629,12.0045 L 46.494238,19.981528 z" fill="#d3d7cf" fill-rule="evenodd" stroke="#d3d7cf" stroke-width="1.10000002000000000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="4" stroke-dasharray="none" stroke-opacity="1"/> + <path d="M 1.9983315,16.96932 L 1.9983315,25.690091 L 15.466816,25.690091 L 8.3170492,16.96932 L 1.9983315,16.96932 z" opacity="0.50000000000000000" fill="url(#linearGradient7138)" fill-opacity="1" fill-rule="evenodd" stroke="url(#radialGradient7140)" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="round" stroke-opacity="1"/> + <path d="M 15.632485,5.4903604 L 12.001677,15.991016 L 19.003769,15.992368 L 15.632485,5.4903604 z" fill="#532323" fill-opacity="1" fill-rule="evenodd" stroke="#2a1111" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="round" stroke-opacity="1"/> + <path d="M 13.983416,22.32144 L 13.983416,16.492941 L 17.007669,16.492941 L 17.007669,21.219904 L 17.008948,26.033783 C 17.008949,26.039055 16.935124,25.911261 16.894583,25.856332 L 13.983416,22.32144 z" fill="url(#linearGradient7142)" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path d="M 15.595391,8.6350832 L 13.413573,14.980794 L 17.638924,14.980794 L 15.595391,8.6350832 z" opacity="0.50000000000000000" fill="none" fill-rule="evenodd" stroke="url(#linearGradient7144)" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/> + <path d="M 1.9974392,25.190652 L 14.412292,25.190652 L 8.0819463,17.470171 L 2.0013455,17.470171" opacity="0.50000000000000000" fill="none" fill-rule="evenodd" stroke="url(#linearGradient7146)" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/> + <g fill="#fce94f"> + <rect width="2" height="2" x="30.999861" y="22.002562" fill="#fce94f" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="round" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <rect width="2" height="2" x="34.001801" y="22.000923" fill="#fce94f" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="round" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <rect width="2" height="2" x="40.997707" y="22.000923" fill="#fce94f" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="round" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <rect width="2" height="2" x="9.0004454" y="22.002562" fill="#fce94f" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="round" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <rect width="2" height="2" x="6.0018048" y="22.002562" fill="#fce94f" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="round" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + </g> + <g> + <path d="M 4.4711906,23.06274 L 5.7618436,21.495518 L 11.216391,21.495518 L 12.507043,23.06274" fill="url(#linearGradient7148)" fill-opacity="1" fill-rule="evenodd" stroke="#392100" stroke-width="1px" stroke-linecap="round" stroke-linejoin="miter" stroke-opacity="1"/> + <path d="M 29.477593,23.06274 L 30.768246,21.495518 L 36.222793,21.495518 L 37.513445,23.06274" fill="url(#linearGradient7150)" fill-opacity="1" fill-rule="evenodd" stroke="#392100" stroke-width="1px" stroke-linecap="round" stroke-linejoin="miter" stroke-opacity="1"/> + <path d="M 39.477596,23.06274 L 40.768249,21.495518 L 43.203584,21.495518 L 44.822027,23.06274" fill="url(#linearGradient7152)" fill-opacity="1" fill-rule="evenodd" stroke="#392100" stroke-width="1px" stroke-linecap="round" stroke-linejoin="miter" stroke-opacity="1"/> + </g> + </g> + <rect width="45" height="45" x="1.5" y="1.5" opacity="0.5" fill="none" fill-opacity="1" fill-rule="evenodd" stroke="#eeeeec" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <rect width="44" height="43.933674" x="2" y="2.0644991" opacity="0.5" fill="url(#linearGradient8377)" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + </g> +</svg> diff --git a/examples/svg/embedded/weatherinfo/icons/weather-icy.svg b/examples/svg/embedded/weatherinfo/icons/weather-icy.svg new file mode 100644 index 0000000..2c45b33 --- /dev/null +++ b/examples/svg/embedded/weatherinfo/icons/weather-icy.svg @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="48" height="48" id="svg6619" version="1.0"> + <defs id="defs6621"> + <linearGradient id="linearGradient7440"> + <stop offset="0" id="stop7442" stop-color="#eeeeec" stop-opacity="1"/> + <stop offset="1" id="stop7444" stop-color="#eeeeec" stop-opacity="0"/> + </linearGradient> + <linearGradient id="linearGradient7430"> + <stop offset="0" id="stop7432" stop-color="#eeeeec" stop-opacity="1"/> + <stop offset="1" id="stop7434" stop-color="#eeeeec" stop-opacity="0"/> + </linearGradient> + <linearGradient id="linearGradient7392"> + <stop offset="0" id="stop7394" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop7396" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient id="linearGradient7380"> + <stop offset="0" id="stop7382" stop-color="#cedeef" stop-opacity="1"/> + <stop offset="1" id="stop7384" stop-color="#cedeef" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient7380" id="linearGradient7386" x1="18.165867" y1="9.2548895" x2="20.711481" y2="21.572344" gradientUnits="userSpaceOnUse"/> + <radialGradient xlink:href="#linearGradient7392" id="radialGradient7398" cx="17.700384" cy="13.797695" fx="17.700384" fy="13.797695" r="1.4135723" gradientTransform="matrix(1,0,0,1.0652174,6.1248392e-7,-0.8998502)" gradientUnits="userSpaceOnUse"/> + <radialGradient xlink:href="#linearGradient7392" id="radialGradient7402" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1,0,0,1.0652174,6.1248392e-7,-0.8998502)" cx="17.700384" cy="13.797695" fx="17.700384" fy="13.797695" r="1.4135723"/> + <radialGradient xlink:href="#linearGradient7430" id="radialGradient7438" cx="10.693982" cy="16.471191" fx="10.693982" fy="16.471191" r="0.553137" gradientTransform="matrix(2.1647007,0,0,0.8888889,-12.455288,1.8301322)" gradientUnits="userSpaceOnUse"/> + <radialGradient xlink:href="#linearGradient7440" id="radialGradient7448" cx="10.693982" cy="16.471191" fx="10.693982" fy="16.471191" r="0.553137" gradientTransform="matrix(2.2783611,0,0,0.8888889,-13.670771,1.8301322)" gradientUnits="userSpaceOnUse"/> + </defs> + + <metadata id="metadata6624"> + <rdf:RDF> + <cc:Work rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> + </cc:Work> + </rdf:RDF> + </metadata> + <g id="layer1"> + <g> + <path d="M 24 10.375 C 11.701921 10.375 1.71875 12.767211 1.71875 15.71875 C 1.71875 17.498261 5.3609075 19.059125 10.9375 20.03125 L 14.3125 46.90625 L 17.9375 26.1875 L 21.3125 41.90625 L 25.5625 23.71875 L 28.03125 37.6875 L 32.3125 22.9375 L 34.84375 33.0625 L 38.375 19.8125 C 43.199321 18.83144 46.28125 17.354051 46.28125 15.71875 C 46.28125 12.767211 36.298079 10.375 24 10.375 z " fill="#729fcf" fill-rule="evenodd" stroke="#204a87" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="round" stroke-opacity="1"/> + <path d="M 24.013525,20.535861 C 29.915498,20.535861 35.256377,19.860148 39.169775,19.061611 C 41.126474,18.662343 42.702812,18.185066 43.857275,17.628422 C 45.011738,17.071777 45.794775,16.382816 45.794775,15.758562 C 45.794775,15.111496 45.011739,14.383887 43.857275,13.827243 C 42.702811,13.270598 41.126474,12.706404 39.169775,12.307136 C 35.256377,11.508599 29.915498,10.878502 24.013525,10.878502 C 18.111552,10.878502 12.739423,11.552057 8.826025,12.350594 C 6.8693258,12.749862 5.2929887,13.270598 4.138525,13.827243 C 2.9840613,14.383887 2.201025,14.939123 2.201025,15.758562 C 2.201025,16.578001 2.9840613,17.071777 4.138525,17.628422 C 5.2929887,18.185066 6.8693258,18.662343 8.826025,19.061611 M 8.826025,19.061611 C 12.739423,19.860148 18.111552,20.535861 24.013525,20.535861 M 24.013525,11.738416 C 29.832893,11.738416 35.083852,12.397075 38.857275,13.16705 C 40.743987,13.552037 42.268014,14.087721 43.263525,14.567724 C 44.259036,15.047727 44.669775,15.382119 44.669775,15.758562 C 44.669775,16.135005 44.259035,16.407937 43.263525,16.88794 C 42.268015,17.367943 40.743986,17.840596 38.857275,18.225584 C 35.083852,18.995559 29.832893,19.652061 24.013525,19.652061 C 18.194157,19.652061 12.911948,18.995559 9.138525,18.225584 C 7.2518134,17.840596 5.7277856,17.367943 4.732275,16.88794 C 3.7367644,16.407937 3.326025,16.135005 3.326025,15.758562 C 3.326025,15.382119 3.7367644,15.047727 4.732275,14.567724 C 5.7277856,14.087721 7.2518134,13.595495 9.138525,13.210508 C 12.911948,12.440533 18.194157,11.738416 24.013525,11.738416 z" opacity="0.5" fill="#eeeeec" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1.14379668" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path d="M 20.220231,11.00128 L 29.138835,20.368103 L 24.21511,20.523801 L 15.180538,11.370038 L 20.220231,11.00128 z" fill="#cedeef" fill-rule="evenodd" stroke="none" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1" fill-opacity="1"/> + <path d="M 11.915494,19.751601 L 14.481435,40.163892 L 16.883534,26.331262 C 17.063009,24.706837 18.883373,24.906404 18.990928,26.307141 L 21.349551,37.344431 L 24.506026,23.859196 C 24.638961,22.408831 26.471791,22.275606 26.60475,23.905247 L 28.263765,33.272727 L 31.29544,22.83487 C 31.632247,21.540581 33.13534,21.733731 33.309125,22.813719 L 34.878361,29.055058 L 37.413573,19.544174" fill="none" fill-rule="evenodd" stroke="#eeeeec" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1" stroke-miterlimit="7" stroke-dasharray="none" opacity="0.5"/> + <path d="M 24.796795,10.87836 L 33.030717,20.024802 L 31.057055,20.187957 L 22.768625,10.889409 L 24.796795,10.87836 z" fill="#cedeef" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/> + <path d="M 28.334973,10.980368 L 36.114053,19.582843 L 35.115621,19.734949 L 27.305235,10.925125 L 28.334973,10.980368 z" fill="#cedeef" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/> + <path d="M 24.276568,13.090909 C 16.315524,13.346336 6.9039601,14.217661 2.7042254,16.717029 C 1.2906531,14.934699 3.0729833,13.828425 9.2804097,12.230474 C 14.942786,11.172151 20.784867,10.869471 24.346019,10.869471 C 29.101893,10.979193 33.366216,11.259555 39.81653,12.450903 C 39.81653,12.450903 46.858243,14.197968 45.56759,16.287597 C 41.461334,13.814622 33.948682,12.944657 24.276568,13.090909 z" fill="url(#linearGradient7386)" fill-rule="evenodd" stroke="none" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1" fill-opacity="1"/> + <path transform="matrix(2.1222827,0,0,1.9923469,-21.167011,-16.108233)" d="M 19.113956,13.797695 A 1.4135723,1.5057619 0 1 1 16.286812,13.797695 A 1.4135723,1.5057619 0 1 1 19.113956,13.797695 z" opacity="1" fill="url(#radialGradient7398)" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="square" stroke-linejoin="round" stroke-miterlimit="7" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path transform="matrix(1.8078704,0,0,1.0169271,-3.0298763,-5.1757356)" d="M 11.247119,16.471191 A 0.553137,0.49167734 0 1 1 10.140845,16.471191 A 0.553137,0.49167734 0 1 1 11.247119,16.471191 z" opacity="1" fill="#eeeeec" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="square" stroke-linejoin="round" stroke-miterlimit="7" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path transform="matrix(4.4701088,0,0,4.6249999,-65.908816,-42.825863)" d="M 19.113956,13.797695 A 1.4135723,1.5057619 0 1 1 16.286812,13.797695 A 1.4135723,1.5057619 0 1 1 19.113956,13.797695 z" opacity="1" fill="url(#radialGradient7402)" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="square" stroke-linejoin="round" stroke-miterlimit="7" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path transform="matrix(4.5196759,0,0,1.0169271,-35.029811,3.0059967)" d="M 11.247119,16.471191 A 0.553137,0.49167734 0 1 1 10.140845,16.471191 A 0.553137,0.49167734 0 1 1 11.247119,16.471191 z" opacity="1" fill="url(#radialGradient7438)" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="square" stroke-linejoin="round" stroke-miterlimit="7" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path transform="matrix(0,4.5196759,-2.0338541,0,46.913063,-27.253478)" d="M 11.247119,16.471191 A 0.553137,0.49167734 0 1 1 10.140845,16.471191 A 0.553137,0.49167734 0 1 1 11.247119,16.471191 z" opacity="1" fill="url(#radialGradient7448)" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="square" stroke-linejoin="round" stroke-miterlimit="7" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + </g> + </g> +</svg> diff --git a/examples/svg/embedded/weatherinfo/icons/weather-overcast.svg b/examples/svg/embedded/weatherinfo/icons/weather-overcast.svg new file mode 100644 index 0000000..cf77214 --- /dev/null +++ b/examples/svg/embedded/weatherinfo/icons/weather-overcast.svg @@ -0,0 +1,191 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="48px" height="48px" id="svg1306"> + <defs id="defs1308"> + <linearGradient xlink:href="#linearGradient6538" id="linearGradient10670" gradientUnits="userSpaceOnUse" x1="284.80219" y1="-441.23294" x2="288.89954" y2="-436.83109"/> + <linearGradient xlink:href="#linearGradient6549" id="linearGradient10668" gradientUnits="userSpaceOnUse" x1="286.66589" y1="-439.48358" x2="289.76562" y2="-436.70703"/> + <linearGradient xlink:href="#linearGradient6527" id="linearGradient10666" gradientUnits="userSpaceOnUse" x1="275.94193" y1="-437.10501" x2="279.97546" y2="-431.91833"/> + <linearGradient xlink:href="#linearGradient6538" id="linearGradient10664" gradientUnits="userSpaceOnUse" x1="285.94086" y1="-439.93900" x2="289.39124" y2="-436.44290"/> + <linearGradient xlink:href="#linearGradient6513" id="linearGradient10662" gradientUnits="userSpaceOnUse" x1="286.51172" y1="-441.29074" x2="289.85379" y2="-436.14453"/> + <linearGradient xlink:href="#linearGradient6497" id="linearGradient10660" gradientUnits="userSpaceOnUse" x1="287.51730" y1="-439.75281" x2="289.67633" y2="-436.32199"/> + <linearGradient xlink:href="#linearGradient6470" id="linearGradient10658" gradientUnits="userSpaceOnUse" x1="271.02170" y1="-441.05182" x2="285.02859" y2="-431.96991"/> + <linearGradient xlink:href="#linearGradient6538" id="linearGradient10656" gradientUnits="userSpaceOnUse" x1="284.80219" y1="-441.23294" x2="288.89954" y2="-436.83109"/> + <linearGradient id="linearGradient6549"> + <stop offset="0" id="stop6551" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6553" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6549" id="linearGradient10654" gradientUnits="userSpaceOnUse" x1="286.66589" y1="-439.48358" x2="289.76562" y2="-436.70703"/> + <linearGradient id="linearGradient6527"> + <stop offset="0" id="stop6530" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6532" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6527" id="linearGradient10652" gradientUnits="userSpaceOnUse" x1="275.94193" y1="-437.10501" x2="279.97546" y2="-431.91833"/> + <linearGradient id="linearGradient6538"> + <stop offset="0" id="stop6540" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6542" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6538" id="linearGradient10650" gradientUnits="userSpaceOnUse" x1="285.94086" y1="-439.93900" x2="289.39124" y2="-436.44290"/> + <linearGradient id="linearGradient6513"> + <stop offset="0" id="stop6515" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6517" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6513" id="linearGradient10648" gradientUnits="userSpaceOnUse" x1="286.51172" y1="-441.29074" x2="289.85379" y2="-436.14453"/> + <linearGradient id="linearGradient6497"> + <stop offset="0" id="stop6499" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6501" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6497" id="linearGradient10646" gradientUnits="userSpaceOnUse" x1="287.51730" y1="-439.75281" x2="289.67633" y2="-436.32199"/> + <linearGradient id="linearGradient6470"> + <stop offset="0" id="stop6472" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6474" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6470" id="linearGradient10644" gradientUnits="userSpaceOnUse" x1="271.02170" y1="-441.05182" x2="285.02859" y2="-431.96991"/> + <linearGradient id="linearGradient7834"> + <stop offset="0" id="stop7836" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop7838" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient7834" id="linearGradient10642" gradientUnits="userSpaceOnUse" x1="-156.29044" y1="-100.53421" x2="-153.09810" y2="-96.544556"/> + <linearGradient id="linearGradient8397"> + <stop offset="0" id="stop8400" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop8402" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient8397" id="linearGradient10640" gradientUnits="userSpaceOnUse" x1="238.00478" y1="-388.47476" x2="245.65462" y2="-382.64539"/> + <linearGradient id="linearGradient8315"> + <stop offset="0" id="stop8317" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop8319" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient8315" id="linearGradient10638" gradientUnits="userSpaceOnUse" x1="230.87598" y1="-390.43951" x2="235.25652" y2="-386.95901"/> + <linearGradient id="linearGradient8381"> + <stop offset="0" id="stop8383" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop8385" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient8381" id="linearGradient10636" gradientUnits="userSpaceOnUse" x1="246.74042" y1="-391.31381" x2="252.69785" y2="-385.35165"/> + <linearGradient id="linearGradient8331"> + <stop offset="0" id="stop8333" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop8335" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient8331" id="linearGradient10634" gradientUnits="userSpaceOnUse" x1="240.07379" y1="-393.40720" x2="245.82706" y2="-388.55029"/> + <linearGradient id="linearGradient8302"> + <stop offset="0" id="stop8304" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop8306" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient8302" id="linearGradient10632" gradientUnits="userSpaceOnUse" gradientTransform="translate(69.00259,102.0000)" x1="228.50261" y1="-392.30591" x2="278.91510" y2="-375.37952"/> + </defs> + + <metadata id="metadata1311"> + <rdf:RDF> + <cc:Work rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> + <dc:title>weather-overcast</dc:title> + <dc:date>January 2006</dc:date> + <dc:creator> + <cc:Agent> + <dc:title>Ryan Collier (pseudo)</dc:title> + </cc:Agent> + </dc:creator> + <dc:publisher> + <cc:Agent> + <dc:title>http://www.tango-project.org</dc:title> + </cc:Agent> + </dc:publisher> + <dc:source>http://www.pseudocode.org</dc:source> + <dc:subject> + <rdf:Bag> + <rdf:li>weather</rdf:li> + <rdf:li>applet</rdf:li> + <rdf:li>notify</rdf:li> + </rdf:Bag> + </dc:subject> + <cc:license rdf:resource="http://creativecommons.org/licenses/publicdomain/"/> + </cc:Work> + <cc:License rdf:about="http://creativecommons.org/licenses/publicdomain/"> + <cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction"/> + <cc:permits rdf:resource="http://creativecommons.org/ns#Distribution"/> + <cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks"/> + </cc:License> + </rdf:RDF> + </metadata> + <g id="layer1"> + <g transform="translate(-287.0000,298.0000)"> + <path d="M 311.50259,-296.00000 C 308.73017,-296.00000 306.39436,-294.42629 305.09634,-292.18750 C 304.15198,-292.66254 303.13115,-293.00000 302.00259,-293.00000 C 298.13859,-293.00000 295.00259,-289.86400 295.00259,-286.00000 C 295.00259,-282.13600 298.13859,-279.00000 302.00259,-279.00000 C 304.42226,-279.00000 306.43268,-280.31932 307.69009,-282.18750 C 308.82429,-281.49788 310.07907,-281.00000 311.50259,-281.00000 C 312.41571,-281.00000 313.25554,-281.23202 314.06509,-281.53125 C 314.57503,-280.66352 315.24421,-279.95153 316.06509,-279.37500 C 316.05785,-279.24462 316.00259,-279.13218 316.00259,-279.00000 C 316.00259,-275.13600 319.13858,-272.00000 323.00259,-272.00000 C 326.86659,-272.00000 330.00259,-275.13600 330.00259,-279.00000 C 330.00259,-281.36969 328.74361,-283.35834 326.94009,-284.62500 C 326.94733,-284.75538 327.00259,-284.86782 327.00259,-285.00000 C 327.00259,-288.86400 323.86660,-292.00000 320.00259,-292.00000 C 319.37989,-292.00000 318.82740,-291.77781 318.25259,-291.62500 C 317.05806,-294.18384 314.51125,-296.00000 311.50259,-296.00000 z " opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 311.50259,-295.00000 C 308.72211,-295.00000 306.36808,-293.23815 305.44009,-290.78125 C 304.45467,-291.49069 303.30866,-292.00000 302.00259,-292.00000 C 298.69059,-292.00000 296.00259,-289.31200 296.00259,-286.00000 C 296.00259,-282.68800 298.69059,-280.00000 302.00259,-280.00000 C 304.43034,-280.00000 306.49583,-281.45558 307.44009,-283.53125 C 308.56085,-282.61369 309.94223,-282.00000 311.50259,-282.00000 C 312.57713,-282.00000 313.54687,-282.31896 314.44009,-282.78125 C 314.83849,-281.78149 315.54123,-280.99493 316.37759,-280.34375 C 316.19758,-279.74813 316.00259,-279.15410 316.00259,-278.50000 C 316.00259,-274.91200 318.91459,-272.00000 322.50259,-272.00000 C 326.09059,-272.00000 329.00259,-274.91200 329.00259,-278.50000 C 329.00259,-280.86079 327.66826,-282.83019 325.78384,-283.96875 C 325.84643,-284.31598 326.00259,-284.63483 326.00259,-285.00000 C 326.00259,-288.31200 323.31459,-291.00000 320.00259,-291.00000 C 319.14961,-291.00000 318.33129,-290.82132 317.59634,-290.50000 C 316.74257,-293.09388 314.38110,-294.99999 311.50259,-295.00000 z " opacity="1.0000000" fill="url(#linearGradient10632)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(0.964447,0.000000,0.000000,0.964447,89.29111,91.52621)" d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <g transform="translate(69.00259,102.0000)"> + <path d="M 250.18322 -389.30136 A 6.2313786 6.2313786 0 1 1 237.72046,-389.30136 A 6.2313786 6.2313786 0 1 1 250.18322 -389.30136 z" transform="matrix(0.882630,0.000000,0.000000,0.882630,27.18078,-46.89094)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 250.18322 -389.30136 A 6.2313786 6.2313786 0 1 1 237.72046,-389.30136 A 6.2313786 6.2313786 0 1 1 250.18322 -389.30136 z" transform="matrix(0.882630,0.000000,0.000000,0.882630,27.18078,-46.89094)" opacity="1.0000000" fill="url(#linearGradient10634)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <g transform="translate(69.00259,102.0000)"> + <path d="M 257.25429 -385.78790 A 6.0325046 6.0325046 0 1 1 245.18928,-385.78790 A 6.0325046 6.0325046 0 1 1 257.25429 -385.78790 z" transform="matrix(0.911728,0.000000,0.000000,0.911728,21.45407,-34.76637)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 257.25429 -385.78790 A 6.0325046 6.0325046 0 1 1 245.18928,-385.78790 A 6.0325046 6.0325046 0 1 1 257.25429 -385.78790 z" transform="matrix(0.911728,0.000000,0.000000,0.911728,21.45407,-34.76637)" opacity="1.0000000" fill="url(#linearGradient10636)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <g transform="translate(69.00259,102.0000)"> + <path d="M 237.80885 -387.88715 A 4.3752232 4.3752232 0 1 1 229.05840,-387.88715 A 4.3752232 4.3752232 0 1 1 237.80885 -387.88715 z" transform="matrix(1.142799,0.000000,0.000000,1.142799,-33.76771,55.27704)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 237.80885 -387.88715 A 4.3752232 4.3752232 0 1 1 229.05840,-387.88715 A 4.3752232 4.3752232 0 1 1 237.80885 -387.88715 z" transform="matrix(1.142799,0.000000,0.000000,1.142799,-33.76771,55.27704)" opacity="1.0000000" fill="url(#linearGradient10638)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <g transform="translate(69.00259,102.0000)"> + <path d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z" transform="matrix(1.038636,0.000000,0.000000,1.038636,-9.150940,14.48994)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z" transform="matrix(1.038636,0.000000,0.000000,1.038636,-9.150933,14.48993)" opacity="1.0000000" fill="url(#linearGradient10640)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <g transform="matrix(0.935028,0.000000,0.000000,0.935028,446.8280,-187.6162)" stroke="none"> + <path d="M -151.93750 -96.937500 A 3.1250000 3.1250000 0 1 1 -158.18750,-96.937500 A 3.1250000 3.1250000 0 1 1 -151.93750 -96.937500 z" transform="matrix(1.737733,0.000000,0.000000,1.737733,110.8322,70.07649)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="0.33115697" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M -151.93750 -96.937500 A 3.1250000 3.1250000 0 1 1 -158.18750,-96.937500 A 3.1250000 3.1250000 0 1 1 -151.93750 -96.937500 z" transform="matrix(1.737733,0.000000,0.000000,1.737733,110.8948,70.01402)" opacity="1.0000000" fill="url(#linearGradient10642)" fill-opacity="1.0000000" stroke="none" stroke-width="0.45224530" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <g transform="translate(38.00259,162.0000)"> + <path d="M 280.50000,-445.50000 C 278.22917,-445.50000 276.39009,-443.94972 275.78125,-441.87500 C 275.08802,-442.23883 274.33674,-442.50000 273.50000,-442.50000 C 270.74000,-442.50000 268.49999,-440.26001 268.50000,-437.50000 C 268.50000,-436.92107 268.66252,-436.39230 268.84375,-435.87500 C 267.47028,-435.10426 266.50000,-433.68600 266.50000,-432.00000 C 266.50000,-429.51600 268.51600,-427.49999 271.00000,-427.50000 C 271.17713,-427.50000 289.82287,-427.50000 290.00000,-427.50000 C 292.48399,-427.50000 294.50000,-429.51600 294.50000,-432.00000 C 294.50000,-433.68600 293.52972,-435.10426 292.15625,-435.87500 C 292.33749,-436.39229 292.50000,-436.92108 292.50000,-437.50000 C 292.50000,-440.26000 290.26000,-442.49999 287.50000,-442.50000 C 286.66326,-442.50000 285.91198,-442.23883 285.21875,-441.87500 C 284.60991,-443.94972 282.77083,-445.50000 280.50000,-445.50000 z " fill="#c4c5c2" fill-opacity="1.0000000" stroke="#888a85" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 280.50000,-445.00000 C 278.31028,-445.00000 276.77640,-443.66423 276.10445,-441.15648 C 275.43599,-441.50010 274.55686,-441.98983 273.75000,-441.98983 C 271.03349,-441.98983 268.99486,-440.05101 268.99487,-437.44429 C 268.99487,-436.89752 269.26208,-436.11085 269.43683,-435.62228 C 268.11240,-434.89433 267.00000,-433.73178 267.00000,-432.24973 C 267.00000,-429.90368 268.54617,-427.99964 271.33928,-427.99964 C 271.51009,-427.99964 289.48992,-427.99964 289.66072,-427.99964 C 292.43173,-427.99964 294.00000,-429.90368 294.00000,-432.24973 C 294.00000,-433.84210 292.88760,-434.91642 291.56317,-435.64437 C 291.73793,-436.13293 292.02724,-436.89753 292.02724,-437.44429 C 292.02724,-440.05100 289.91143,-442.01192 287.25001,-442.01193 C 286.44314,-442.01193 285.60820,-441.52219 284.93974,-441.17857 C 284.29089,-443.60011 282.68973,-445.00000 280.50000,-445.00000 z " opacity="1.0000000" fill="url(#linearGradient10644)" fill-opacity="1.0000000" stroke="none" stroke-width="0.99999958" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <g> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="url(#linearGradient10646)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <rect width="20.000000" height="9.0000000" x="271.00000" y="-438.00000" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830195,-35.68869)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <g> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19811,24.86321)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19818,24.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="url(#linearGradient10648)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <g> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="url(#linearGradient10650)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <g transform="translate(-1.000000,0.000000)"> + <path d="M 280.46875,-440.96875 C 276.88937,-440.96875 274.00000,-438.04812 274.00000,-434.46875 C 274.00000,-432.09807 275.34943,-430.13096 277.25000,-429.00000 L 283.71875,-429.00000 C 285.61932,-430.13096 286.96875,-432.12931 286.96875,-434.50000 C 286.96875,-438.07938 284.04812,-440.96875 280.46875,-440.96875 z " opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 280.50000,-441.00000 C 276.91200,-441.00000 274.00000,-438.08799 274.00000,-434.50000 C 274.00000,-432.12360 275.34485,-430.13368 277.25000,-429.00000 L 283.75000,-429.00000 C 285.65515,-430.13368 287.00000,-432.12360 287.00000,-434.50000 C 287.00000,-438.08800 284.08800,-440.99999 280.50000,-441.00000 z " opacity="1.0000000" fill="url(#linearGradient10652)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830296,-35.68884)" opacity="1.0000000" fill="url(#linearGradient10654)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 292.95640,-437.33396 C 292.95487,-434.64940 289.68714,-433.62001 289.68714,-433.62001 C 289.68714,-433.62001 292.03588,-435.24596 292.02399,-437.32502 C 292.02399,-437.32502 292.95640,-437.33396 292.95640,-437.33396 z " fill="#888a85" fill-opacity="1.0000000" fill-rule="evenodd" stroke="none" stroke-width="1.0000000px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/> + <g transform="matrix(1.142857,0.000000,0.000000,1.142857,-28.57139,67.00008)"> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="url(#linearGradient10656)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + </g> + <g transform="translate(23.00000,158.0000)"> + <path d="M 280.50000,-445.50000 C 278.22917,-445.50000 276.39009,-443.94972 275.78125,-441.87500 C 275.08802,-442.23883 274.33674,-442.50000 273.50000,-442.50000 C 270.74000,-442.50000 268.49999,-440.26001 268.50000,-437.50000 C 268.50000,-436.92107 268.66252,-436.39230 268.84375,-435.87500 C 267.47028,-435.10426 266.50000,-433.68600 266.50000,-432.00000 C 266.50000,-429.51600 268.51600,-427.49999 271.00000,-427.50000 C 271.17713,-427.50000 289.82287,-427.50000 290.00000,-427.50000 C 292.48399,-427.50000 294.50000,-429.51600 294.50000,-432.00000 C 294.50000,-433.68600 293.52972,-435.10426 292.15625,-435.87500 C 292.33749,-436.39229 292.50000,-436.92108 292.50000,-437.50000 C 292.50000,-440.26000 290.26000,-442.49999 287.50000,-442.50000 C 286.66326,-442.50000 285.91198,-442.23883 285.21875,-441.87500 C 284.60991,-443.94972 282.77083,-445.50000 280.50000,-445.50000 z " fill="#c4c5c2" fill-opacity="1.0000000" stroke="#888a85" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 280.50000,-445.00000 C 278.31028,-445.00000 276.77640,-443.66423 276.10445,-441.15648 C 275.43599,-441.50010 274.55686,-441.98983 273.75000,-441.98983 C 271.03349,-441.98983 268.99486,-440.05101 268.99487,-437.44429 C 268.99487,-436.89752 269.26208,-436.11085 269.43683,-435.62228 C 268.11240,-434.89433 267.00000,-433.73178 267.00000,-432.24973 C 267.00000,-429.90368 268.54617,-427.99964 271.33928,-427.99964 C 271.51009,-427.99964 289.48992,-427.99964 289.66072,-427.99964 C 292.43173,-427.99964 294.00000,-429.90368 294.00000,-432.24973 C 294.00000,-433.84210 292.88760,-434.91642 291.56317,-435.64437 C 291.73793,-436.13293 292.02724,-436.89753 292.02724,-437.44429 C 292.02724,-440.05100 289.91143,-442.01192 287.25001,-442.01193 C 286.44314,-442.01193 285.60820,-441.52219 284.93974,-441.17857 C 284.29089,-443.60011 282.68973,-445.00000 280.50000,-445.00000 z " opacity="1.0000000" fill="url(#linearGradient10658)" fill-opacity="1.0000000" stroke="none" stroke-width="0.99999958" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <g> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="url(#linearGradient10660)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <rect width="20.000000" height="9.0000000" x="271.00000" y="-438.00000" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830195,-35.68869)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <g> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19811,24.86321)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19818,24.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="url(#linearGradient10662)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <g> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="url(#linearGradient10664)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <g transform="translate(-1.000000,0.000000)"> + <path d="M 280.46875,-440.96875 C 276.88937,-440.96875 274.00000,-438.04812 274.00000,-434.46875 C 274.00000,-432.09807 275.34943,-430.13096 277.25000,-429.00000 L 283.71875,-429.00000 C 285.61932,-430.13096 286.96875,-432.12931 286.96875,-434.50000 C 286.96875,-438.07938 284.04812,-440.96875 280.46875,-440.96875 z " opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 280.50000,-441.00000 C 276.91200,-441.00000 274.00000,-438.08799 274.00000,-434.50000 C 274.00000,-432.12360 275.34485,-430.13368 277.25000,-429.00000 L 283.75000,-429.00000 C 285.65515,-430.13368 287.00000,-432.12360 287.00000,-434.50000 C 287.00000,-438.08800 284.08800,-440.99999 280.50000,-441.00000 z " opacity="1.0000000" fill="url(#linearGradient10666)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830296,-35.68884)" opacity="1.0000000" fill="url(#linearGradient10668)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 292.95640,-437.33396 C 292.95487,-434.64940 289.68714,-433.62001 289.68714,-433.62001 C 289.68714,-433.62001 292.03588,-435.24596 292.02399,-437.32502 C 292.02399,-437.32502 292.95640,-437.33396 292.95640,-437.33396 z " fill="#888a85" fill-opacity="1.0000000" fill-rule="evenodd" stroke="none" stroke-width="1.0000000px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/> + <g transform="matrix(1.142857,0.000000,0.000000,1.142857,-28.57139,67.00008)"> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="url(#linearGradient10670)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + </g> + </g> + </g> +</svg> diff --git a/examples/svg/embedded/weatherinfo/icons/weather-showers.svg b/examples/svg/embedded/weatherinfo/icons/weather-showers.svg new file mode 100644 index 0000000..017665d --- /dev/null +++ b/examples/svg/embedded/weatherinfo/icons/weather-showers.svg @@ -0,0 +1,179 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="48px" height="48px" id="svg1306"> + <defs id="defs1308"> + <linearGradient xlink:href="#linearGradient2254" id="linearGradient11348" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.070878,0.000000,-0.535439,0.674858,287.5142,77.50802)" x1="-137.49608" y1="-425.28664" x2="-130.60854" y2="-425.28665"/> + <linearGradient xlink:href="#linearGradient2254" id="linearGradient11346" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.070879,0.000000,-0.535439,0.674857,277.5140,77.50780)" x1="-137.49608" y1="-425.28664" x2="-130.60854" y2="-425.28665"/> + <linearGradient xlink:href="#linearGradient2254" id="linearGradient11344" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.088439,0.000000,-0.544220,0.674842,265.9811,77.50139)" x1="-137.49608" y1="-425.28664" x2="-130.60854" y2="-425.28665"/> + <linearGradient xlink:href="#linearGradient6538" id="linearGradient13352" gradientUnits="userSpaceOnUse" x1="284.80219" y1="-441.23294" x2="288.89954" y2="-436.83109"/> + <linearGradient xlink:href="#linearGradient6549" id="linearGradient13350" gradientUnits="userSpaceOnUse" x1="286.66589" y1="-439.48358" x2="289.76562" y2="-436.70703"/> + <linearGradient xlink:href="#linearGradient6527" id="linearGradient13347" gradientUnits="userSpaceOnUse" gradientTransform="translate(-35.00007,207.0001)" x1="275.94193" y1="-437.10501" x2="279.97546" y2="-431.91833"/> + <linearGradient xlink:href="#linearGradient6538" id="linearGradient13345" gradientUnits="userSpaceOnUse" x1="285.94086" y1="-439.93900" x2="289.39124" y2="-436.44290"/> + <linearGradient xlink:href="#linearGradient6513" id="linearGradient13343" gradientUnits="userSpaceOnUse" x1="286.51172" y1="-441.29074" x2="289.85379" y2="-436.14453"/> + <linearGradient xlink:href="#linearGradient6497" id="linearGradient13341" gradientUnits="userSpaceOnUse" x1="287.51730" y1="-439.75281" x2="289.67633" y2="-436.32199"/> + <linearGradient xlink:href="#linearGradient6470" id="linearGradient13339" gradientUnits="userSpaceOnUse" gradientTransform="translate(-34.00007,207.0001)" x1="271.02170" y1="-441.05182" x2="285.02859" y2="-431.96991"/> + <linearGradient xlink:href="#linearGradient6538" id="linearGradient13337" gradientUnits="userSpaceOnUse" x1="284.80219" y1="-441.23294" x2="288.89954" y2="-436.83109"/> + <linearGradient id="linearGradient6549"> + <stop offset="0" id="stop6551" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6553" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6549" id="linearGradient13335" gradientUnits="userSpaceOnUse" x1="286.66589" y1="-439.48358" x2="289.76562" y2="-436.70703"/> + <linearGradient id="linearGradient6527"> + <stop offset="0" id="stop6530" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6532" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6527" id="linearGradient13333" gradientUnits="userSpaceOnUse" gradientTransform="translate(-35.00007,207.0001)" x1="275.94193" y1="-437.10501" x2="279.97546" y2="-431.91833"/> + <linearGradient id="linearGradient6538"> + <stop offset="0" id="stop6540" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6542" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6538" id="linearGradient13331" gradientUnits="userSpaceOnUse" x1="285.94086" y1="-439.93900" x2="289.39124" y2="-436.44290"/> + <linearGradient id="linearGradient6513"> + <stop offset="0" id="stop6515" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6517" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6513" id="linearGradient13329" gradientUnits="userSpaceOnUse" x1="286.51172" y1="-441.29074" x2="289.85379" y2="-436.14453"/> + <linearGradient id="linearGradient6497"> + <stop offset="0" id="stop6499" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6501" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6497" id="linearGradient13327" gradientUnits="userSpaceOnUse" x1="287.51730" y1="-439.75281" x2="289.67633" y2="-436.32199"/> + <linearGradient id="linearGradient6470"> + <stop offset="0" id="stop6472" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6474" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6470" id="linearGradient13325" gradientUnits="userSpaceOnUse" gradientTransform="translate(-34.00007,207.0001)" x1="271.02170" y1="-441.05182" x2="285.02859" y2="-431.96991"/> + <linearGradient id="linearGradient8397"> + <stop offset="0" id="stop8400" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop8402" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient8397" id="linearGradient13323" gradientUnits="userSpaceOnUse" x1="238.00478" y1="-388.47476" x2="245.65462" y2="-382.64539"/> + <linearGradient id="linearGradient8315"> + <stop offset="0" id="stop8317" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop8319" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient8315" id="linearGradient13321" gradientUnits="userSpaceOnUse" x1="230.87598" y1="-390.43951" x2="235.25652" y2="-386.95901"/> + <linearGradient id="linearGradient8381"> + <stop offset="0" id="stop8383" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop8385" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient8381" id="linearGradient13319" gradientUnits="userSpaceOnUse" x1="246.74042" y1="-391.31381" x2="252.69785" y2="-385.35165"/> + <linearGradient id="linearGradient8331"> + <stop offset="0" id="stop8333" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop8335" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient8331" id="linearGradient13317" gradientUnits="userSpaceOnUse" x1="240.07379" y1="-393.40720" x2="245.82706" y2="-388.55029"/> + <linearGradient id="linearGradient8302"> + <stop offset="0" id="stop8304" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop8306" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient8302" id="linearGradient13315" gradientUnits="userSpaceOnUse" gradientTransform="translate(69.00000,155.0000)" x1="228.50261" y1="-392.30591" x2="266.36395" y2="-379.26862"/> + <linearGradient id="linearGradient2254"> + <stop offset="0" id="stop2256" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop2258" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + </defs> + + <metadata id="metadata1311"> + <rdf:RDF> + <cc:Work rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> + <dc:title>weather-showers</dc:title> + <dc:date>January 2006</dc:date> + <dc:creator> + <cc:Agent> + <dc:title>Ryan collier (pseudo)</dc:title> + </cc:Agent> + </dc:creator> + <dc:publisher> + <cc:Agent> + <dc:title>http://www.tango-project.org</dc:title> + </cc:Agent> + </dc:publisher> + <dc:source>http://www.pseudocode.org</dc:source> + <dc:subject> + <rdf:Bag> + <rdf:li>weather</rdf:li> + <rdf:li>appplet</rdf:li> + <rdf:li>notify</rdf:li> + </rdf:Bag> + </dc:subject> + <cc:license rdf:resource="http://creativecommons.org/licenses/publicdomain/"/> + </cc:Work> + <cc:License rdf:about="http://creativecommons.org/licenses/publicdomain/"> + <cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction"/> + <cc:permits rdf:resource="http://creativecommons.org/ns#Distribution"/> + <cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks"/> + </cc:License> + </rdf:RDF> + </metadata> + <g id="layer1"> + <g transform="translate(-339.9823,245.0132)"> + <rect transform="matrix(1.000000,0.000000,-0.600523,0.799607,0.000000,0.000000)" ry="1.5179254" rx="2.3596079" y="-270.75461" x="189.68199" height="17.509083" width="32.962067" opacity="1.0000000" fill="#729fcf" fill-opacity="1.0000000" stroke="#3465a4" stroke-width="1.0817814" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <g transform="matrix(1.000000,0.000000,0.000000,0.999611,0.000000,-7.862650e-2)" opacity="0.80000001"> + <path d="M 352.47790,-216.00000 L 359.39580,-216.00000 C 360.69054,-216.00000 361.33008,-215.50056 360.82979,-214.88017 L 352.15249,-204.12015 C 351.65217,-203.49974 350.20707,-203.00030 348.91233,-203.00030 L 344.86943,-203.00030 C 343.57469,-203.00030 342.30979,-202.95120 343.43545,-204.12015 C 343.43545,-204.12015 352.47790,-216.00000 352.47790,-216.00000 z " fill="url(#linearGradient11344)" fill-opacity="1.0000000" stroke="none" stroke-width="1.1547011" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0.0000000" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 362.74641,-216.00000 L 369.42169,-216.00000 C 370.69552,-216.00000 371.32477,-215.50054 370.83253,-214.88014 L 362.29523,-204.11987 C 361.80299,-203.49946 360.38121,-203.00000 359.10738,-203.00000 L 353.00000,-203.00000 C 353.00000,-203.00000 362.74641,-216.00000 362.74641,-216.00000 z " fill="url(#linearGradient11346)" fill-opacity="1.0000000" stroke="none" stroke-width="1.1547011" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0.0000000" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 372.74640,-216.00000 L 379.42169,-216.00000 C 380.69553,-216.00000 381.32477,-215.50053 380.83253,-214.88014 L 372.29523,-204.11986 C 371.80299,-203.49945 370.38122,-203.00000 369.10738,-203.00000 L 363.00000,-203.00000 C 363.00000,-203.00000 372.74640,-216.00000 372.74640,-216.00000 z " fill="url(#linearGradient11348)" fill-opacity="1.0000000" stroke="none" stroke-width="1.1547011" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0.0000000" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + </g> + <g transform="matrix(0.999675,0.000000,0.000000,1.000000,-286.8562,245.0000)"> + <g> + <path d="M 311.50000,-242.99998 C 308.72758,-242.99998 306.39177,-241.42627 305.09375,-239.18748 C 304.14939,-239.66252 303.12856,-239.99998 302.00000,-239.99998 C 298.13600,-239.99998 295.00000,-236.86398 295.00000,-232.99998 C 295.00000,-229.13598 298.13600,-225.99998 302.00000,-225.99998 C 304.41967,-225.99998 306.43009,-227.31930 307.68750,-229.18748 C 308.82170,-228.49786 310.07648,-227.99998 311.50000,-227.99998 C 312.41312,-227.99998 313.25295,-228.23200 314.06250,-228.53123 C 314.57244,-227.66350 315.24162,-226.95151 316.06250,-226.37498 C 316.05526,-226.24460 316.00000,-226.13216 316.00000,-225.99998 C 316.00000,-222.13598 319.13599,-218.99998 323.00000,-218.99998 C 326.86400,-218.99998 330.00000,-222.13598 330.00000,-225.99998 C 330.00000,-228.36967 328.74102,-230.35832 326.93750,-231.62498 C 326.94474,-231.75536 327.00000,-231.86780 327.00000,-231.99998 C 327.00000,-235.86398 323.86401,-238.99998 320.00000,-238.99998 C 319.37730,-238.99998 318.82481,-238.77779 318.25000,-238.62498 C 317.05547,-241.18382 314.50866,-242.99998 311.50000,-242.99998 z " opacity="1.0000000" fill="#555753" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 311.50000,-241.99998 C 308.71952,-241.99998 306.36549,-240.23813 305.43750,-237.78123 C 304.45208,-238.49067 303.30607,-238.99998 302.00000,-238.99998 C 298.68800,-238.99998 296.00000,-236.31198 296.00000,-232.99998 C 296.00000,-229.68798 298.68800,-226.99998 302.00000,-226.99998 C 304.42775,-226.99998 306.49324,-228.45556 307.43750,-230.53123 C 308.55826,-229.61367 309.93964,-228.99998 311.50000,-228.99998 C 312.57454,-228.99998 313.54428,-229.31894 314.43750,-229.78123 C 314.83590,-228.78147 315.53864,-227.99491 316.37500,-227.34373 C 316.19499,-226.74811 316.00000,-226.15408 316.00000,-225.49998 C 316.00000,-221.91198 318.91200,-218.99998 322.50000,-218.99998 C 326.08800,-218.99998 329.00000,-221.91198 329.00000,-225.49998 C 329.00000,-227.86077 327.66567,-229.83017 325.78125,-230.96873 C 325.84384,-231.31596 326.00000,-231.63481 326.00000,-231.99998 C 326.00000,-235.31198 323.31200,-237.99998 320.00000,-237.99998 C 319.14702,-237.99998 318.32870,-237.82130 317.59375,-237.49998 C 316.73998,-240.09386 314.37851,-241.99997 311.50000,-241.99998 z " opacity="1.0000000" fill="url(#linearGradient13315)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z" transform="matrix(0.964447,0.000000,0.000000,0.964447,89.28852,144.5262)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <g> + <path transform="matrix(0.882630,0.000000,0.000000,0.882630,96.18078,108.1091)" d="M 250.18322 -389.30136 A 6.2313786 6.2313786 0 1 1 237.72046,-389.30136 A 6.2313786 6.2313786 0 1 1 250.18322 -389.30136 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(0.882630,0.000000,0.000000,0.882630,96.18078,108.1091)" d="M 250.18322 -389.30136 A 6.2313786 6.2313786 0 1 1 237.72046,-389.30136 A 6.2313786 6.2313786 0 1 1 250.18322 -389.30136 z" opacity="0.49444440" fill="url(#linearGradient13317)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <g> + <path transform="matrix(0.911728,0.000000,0.000000,0.911728,90.45407,120.2336)" d="M 257.25429 -385.78790 A 6.0325046 6.0325046 0 1 1 245.18928,-385.78790 A 6.0325046 6.0325046 0 1 1 257.25429 -385.78790 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(0.911728,0.000000,0.000000,0.911728,90.45407,120.2336)" d="M 257.25429 -385.78790 A 6.0325046 6.0325046 0 1 1 245.18928,-385.78790 A 6.0325046 6.0325046 0 1 1 257.25429 -385.78790 z" opacity="0.49444440" fill="url(#linearGradient13319)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <g> + <path transform="matrix(1.142799,0.000000,0.000000,1.142799,35.23229,210.2770)" d="M 237.80885 -387.88715 A 4.3752232 4.3752232 0 1 1 229.05840,-387.88715 A 4.3752232 4.3752232 0 1 1 237.80885 -387.88715 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.142799,0.000000,0.000000,1.142799,35.23229,210.2770)" d="M 237.80885 -387.88715 A 4.3752232 4.3752232 0 1 1 229.05840,-387.88715 A 4.3752232 4.3752232 0 1 1 237.80885 -387.88715 z" opacity="0.49444440" fill="url(#linearGradient13321)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <g> + <path transform="matrix(1.038636,0.000000,0.000000,1.038636,59.84906,169.4899)" d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.038636,0.000000,0.000000,1.038636,59.84907,169.4899)" d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z" opacity="0.49444440" fill="url(#linearGradient13323)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + </g> + <g transform="translate(72.00007,7.999930)"> + <path d="M 246.49993,-238.49993 C 244.22910,-238.49993 242.39002,-236.94965 241.78118,-234.87493 C 241.08795,-235.23876 240.33667,-235.49993 239.49993,-235.49993 C 236.73993,-235.49993 234.49992,-233.25994 234.49993,-230.49993 C 234.49993,-229.92100 234.66245,-229.39223 234.84368,-228.87493 C 233.47021,-228.10419 232.49993,-226.68593 232.49993,-224.99993 C 232.49993,-222.51593 234.51593,-220.49992 236.99993,-220.49993 C 237.17706,-220.49993 255.82280,-220.49993 255.99993,-220.49993 C 258.48392,-220.49993 260.49993,-222.51593 260.49993,-224.99993 C 260.49993,-226.68593 259.52965,-228.10419 258.15618,-228.87493 C 258.33742,-229.39222 258.49993,-229.92101 258.49993,-230.49993 C 258.49993,-233.25993 256.25993,-235.49992 253.49993,-235.49993 C 252.66319,-235.49993 251.91191,-235.23876 251.21868,-234.87493 C 250.60984,-236.94965 248.77076,-238.49993 246.49993,-238.49993 z " fill="#888a85" fill-opacity="1.0000000" stroke="#555753" stroke-width="1.0001625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 246.49993,-237.99993 C 244.31021,-237.99993 242.77633,-236.66416 242.10438,-234.15641 C 241.43592,-234.50003 240.55679,-234.98976 239.74993,-234.98976 C 237.03342,-234.98976 234.99479,-233.05094 234.99480,-230.44422 C 234.99480,-229.89745 235.26201,-229.11078 235.43676,-228.62221 C 234.11233,-227.89426 232.99993,-226.73171 232.99993,-225.24966 C 232.99993,-222.90361 234.54610,-220.99957 237.33921,-220.99957 C 237.51002,-220.99957 255.48985,-220.99957 255.66065,-220.99957 C 258.43166,-220.99957 259.99993,-222.90361 259.99993,-225.24966 C 259.99993,-226.84203 258.88753,-227.91635 257.56310,-228.64430 C 257.73786,-229.13286 258.02717,-229.89746 258.02717,-230.44422 C 258.02717,-233.05093 255.91136,-235.01185 253.24994,-235.01186 C 252.44307,-235.01186 251.60813,-234.52212 250.93967,-234.17850 C 250.29082,-236.60004 248.68966,-237.99993 246.49993,-237.99993 z " opacity="1.0000000" fill="url(#linearGradient13325)" fill-opacity="1.0000000" stroke="none" stroke-width="0.99999958" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)" opacity="0.47777775" fill="url(#linearGradient13327)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <rect width="20.000000" height="9.0000000" x="236.99994" y="-230.99992" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16987,171.3114)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19818,231.8633)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19825,231.8634)" opacity="0.47777775" fill="url(#linearGradient13329)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)" opacity="0.47777775" fill="url(#linearGradient13331)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 245.46868,-233.96868 C 241.88930,-233.96868 238.99993,-231.04805 238.99993,-227.46868 C 238.99993,-225.09800 240.34936,-223.13089 242.24993,-221.99993 L 248.71868,-221.99993 C 250.61925,-223.13089 251.96868,-225.12924 251.96868,-227.49993 C 251.96868,-231.07931 249.04805,-233.96868 245.46868,-233.96868 z " opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 245.49993,-233.99993 C 241.91193,-233.99993 238.99993,-231.08792 238.99993,-227.49993 C 238.99993,-225.12353 240.34478,-223.13361 242.24993,-221.99993 L 248.74993,-221.99993 C 250.65508,-223.13361 251.99993,-225.12353 251.99993,-227.49993 C 251.99993,-231.08793 249.08793,-233.99992 245.49993,-233.99993 z " opacity="0.47777775" fill="url(#linearGradient13333)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16977,171.3113)" opacity="0.47777775" fill="url(#linearGradient13335)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 258.95633,-230.33389 C 258.95480,-227.64933 255.68707,-226.61994 255.68707,-226.61994 C 255.68707,-226.61994 258.03581,-228.24589 258.02392,-230.32495 C 258.02392,-230.32495 258.95633,-230.33389 258.95633,-230.33389 z " fill="#555753" fill-opacity="1.0000000" fill-rule="evenodd" stroke="none" stroke-width="1.0000000px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)" opacity="0.47777775" fill="url(#linearGradient13337)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <g transform="translate(56.98577,3.983930)"> + <path d="M 246.49993,-238.49993 C 244.22910,-238.49993 242.39002,-236.94965 241.78118,-234.87493 C 241.08795,-235.23876 240.33667,-235.49993 239.49993,-235.49993 C 236.73993,-235.49993 234.49992,-233.25994 234.49993,-230.49993 C 234.49993,-229.92100 234.66245,-229.39223 234.84368,-228.87493 C 233.47021,-228.10419 232.49993,-226.68593 232.49993,-224.99993 C 232.49993,-222.51593 234.51593,-220.49992 236.99993,-220.49993 C 237.17706,-220.49993 255.82280,-220.49993 255.99993,-220.49993 C 258.48392,-220.49993 260.49993,-222.51593 260.49993,-224.99993 C 260.49993,-226.68593 259.52965,-228.10419 258.15618,-228.87493 C 258.33742,-229.39222 258.49993,-229.92101 258.49993,-230.49993 C 258.49993,-233.25993 256.25993,-235.49992 253.49993,-235.49993 C 252.66319,-235.49993 251.91191,-235.23876 251.21868,-234.87493 C 250.60984,-236.94965 248.77076,-238.49993 246.49993,-238.49993 z " fill="#888a85" fill-opacity="1.0000000" stroke="#555753" stroke-width="1.0001625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 246.49993,-237.99993 C 244.31021,-237.99993 242.77633,-236.66416 242.10438,-234.15641 C 241.43592,-234.50003 240.55679,-234.98976 239.74993,-234.98976 C 237.03342,-234.98976 234.99479,-233.05094 234.99480,-230.44422 C 234.99480,-229.89745 235.26201,-229.11078 235.43676,-228.62221 C 234.11233,-227.89426 232.99993,-226.73171 232.99993,-225.24966 C 232.99993,-222.90361 234.54610,-220.99957 237.33921,-220.99957 C 237.51002,-220.99957 255.48985,-220.99957 255.66065,-220.99957 C 258.43166,-220.99957 259.99993,-222.90361 259.99993,-225.24966 C 259.99993,-226.84203 258.88753,-227.91635 257.56310,-228.64430 C 257.73786,-229.13286 258.02717,-229.89746 258.02717,-230.44422 C 258.02717,-233.05093 255.91136,-235.01185 253.24994,-235.01186 C 252.44307,-235.01186 251.60813,-234.52212 250.93967,-234.17850 C 250.29082,-236.60004 248.68966,-237.99993 246.49993,-237.99993 z " opacity="1.0000000" fill="url(#linearGradient13339)" fill-opacity="1.0000000" stroke="none" stroke-width="0.99999958" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)" opacity="0.47777775" fill="url(#linearGradient13341)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <rect width="20.000000" height="9.0000000" x="236.99994" y="-230.99992" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16987,171.3114)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19818,231.8633)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19825,231.8634)" opacity="0.47777775" fill="url(#linearGradient13343)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)" opacity="0.47777775" fill="url(#linearGradient13345)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 245.46868,-233.96868 C 241.88930,-233.96868 238.99993,-231.04805 238.99993,-227.46868 C 238.99993,-225.09800 240.34936,-223.13089 242.24993,-221.99993 L 248.71868,-221.99993 C 250.61925,-223.13089 251.96868,-225.12924 251.96868,-227.49993 C 251.96868,-231.07931 249.04805,-233.96868 245.46868,-233.96868 z " opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 245.49993,-233.99993 C 241.91193,-233.99993 238.99993,-231.08792 238.99993,-227.49993 C 238.99993,-225.12353 240.34478,-223.13361 242.24993,-221.99993 L 248.74993,-221.99993 C 250.65508,-223.13361 251.99993,-225.12353 251.99993,-227.49993 C 251.99993,-231.08793 249.08793,-233.99992 245.49993,-233.99993 z " opacity="0.47777775" fill="url(#linearGradient13347)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16977,171.3113)" opacity="0.47777775" fill="url(#linearGradient13350)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 258.95633,-230.33389 C 258.95480,-227.64933 255.68707,-226.61994 255.68707,-226.61994 C 255.68707,-226.61994 258.03581,-228.24589 258.02392,-230.32495 C 258.02392,-230.32495 258.95633,-230.33389 258.95633,-230.33389 z " fill="#555753" fill-opacity="1.0000000" fill-rule="evenodd" stroke="none" stroke-width="1.0000000px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)" opacity="0.47777775" fill="url(#linearGradient13352)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + </g> + </g> +</svg> diff --git a/examples/svg/embedded/weatherinfo/icons/weather-sleet.svg b/examples/svg/embedded/weatherinfo/icons/weather-sleet.svg new file mode 100644 index 0000000..bf2306f --- /dev/null +++ b/examples/svg/embedded/weatherinfo/icons/weather-sleet.svg @@ -0,0 +1,230 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="48px" height="48px" id="svg1306"> + <defs id="defs1308"> + <linearGradient id="linearGradient5358"> + <stop offset="0" id="stop5360" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop5362" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient id="linearGradient5346"> + <stop offset="0" id="stop5348" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop5350" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6538" id="linearGradient13352" gradientUnits="userSpaceOnUse" x1="284.80219" y1="-441.23294" x2="288.89954" y2="-436.83109"/> + <linearGradient xlink:href="#linearGradient6549" id="linearGradient13350" gradientUnits="userSpaceOnUse" x1="286.66589" y1="-439.48358" x2="289.76562" y2="-436.70703"/> + <linearGradient xlink:href="#linearGradient6527" id="linearGradient13347" gradientUnits="userSpaceOnUse" gradientTransform="translate(-35.00007,207.0001)" x1="275.94193" y1="-437.10501" x2="279.97546" y2="-431.91833"/> + <linearGradient xlink:href="#linearGradient6538" id="linearGradient13345" gradientUnits="userSpaceOnUse" x1="285.94086" y1="-439.93900" x2="289.39124" y2="-436.44290"/> + <linearGradient xlink:href="#linearGradient6513" id="linearGradient13343" gradientUnits="userSpaceOnUse" x1="286.51172" y1="-441.29074" x2="289.85379" y2="-436.14453"/> + <linearGradient xlink:href="#linearGradient6497" id="linearGradient13341" gradientUnits="userSpaceOnUse" x1="287.51730" y1="-439.75281" x2="289.67633" y2="-436.32199"/> + <linearGradient xlink:href="#linearGradient6470" id="linearGradient13339" gradientUnits="userSpaceOnUse" gradientTransform="translate(-34.00007,207.0001)" x1="271.02170" y1="-441.05182" x2="285.02859" y2="-431.96991"/> + <linearGradient xlink:href="#linearGradient6538" id="linearGradient13337" gradientUnits="userSpaceOnUse" x1="284.80219" y1="-441.23294" x2="288.89954" y2="-436.83109"/> + <linearGradient id="linearGradient6549"> + <stop offset="0" id="stop6551" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6553" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6549" id="linearGradient13335" gradientUnits="userSpaceOnUse" x1="286.66589" y1="-439.48358" x2="289.76562" y2="-436.70703"/> + <linearGradient id="linearGradient6527"> + <stop offset="0" id="stop6530" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6532" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6527" id="linearGradient13333" gradientUnits="userSpaceOnUse" gradientTransform="translate(-35.00007,207.0001)" x1="275.94193" y1="-437.10501" x2="279.97546" y2="-431.91833"/> + <linearGradient id="linearGradient6538"> + <stop offset="0" id="stop6540" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6542" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6538" id="linearGradient13331" gradientUnits="userSpaceOnUse" x1="285.94086" y1="-439.93900" x2="289.39124" y2="-436.44290"/> + <linearGradient id="linearGradient6513"> + <stop offset="0" id="stop6515" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6517" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6513" id="linearGradient13329" gradientUnits="userSpaceOnUse" x1="286.51172" y1="-441.29074" x2="289.85379" y2="-436.14453"/> + <linearGradient id="linearGradient6497"> + <stop offset="0" id="stop6499" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6501" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6497" id="linearGradient13327" gradientUnits="userSpaceOnUse" x1="287.51730" y1="-439.75281" x2="289.67633" y2="-436.32199"/> + <linearGradient id="linearGradient6470"> + <stop offset="0" id="stop6472" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6474" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6470" id="linearGradient13325" gradientUnits="userSpaceOnUse" gradientTransform="translate(-34.00007,207.0001)" x1="271.02170" y1="-441.05182" x2="285.02859" y2="-431.96991"/> + <linearGradient id="linearGradient8397"> + <stop offset="0" id="stop8400" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop8402" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient8397" id="linearGradient13323" gradientUnits="userSpaceOnUse" x1="238.00478" y1="-388.47476" x2="245.65462" y2="-382.64539"/> + <linearGradient id="linearGradient8315"> + <stop offset="0" id="stop8317" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop8319" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient8315" id="linearGradient13321" gradientUnits="userSpaceOnUse" x1="230.87598" y1="-390.43951" x2="235.25652" y2="-386.95901"/> + <linearGradient id="linearGradient8381"> + <stop offset="0" id="stop8383" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop8385" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient8381" id="linearGradient13319" gradientUnits="userSpaceOnUse" x1="246.74042" y1="-391.31381" x2="252.69785" y2="-385.35165"/> + <linearGradient id="linearGradient8331"> + <stop offset="0" id="stop8333" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop8335" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient8331" id="linearGradient13317" gradientUnits="userSpaceOnUse" x1="240.07379" y1="-393.40720" x2="245.82706" y2="-388.55029"/> + <linearGradient id="linearGradient8302"> + <stop offset="0" id="stop8304" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop8306" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient8302" id="linearGradient13315" gradientUnits="userSpaceOnUse" gradientTransform="translate(69.00000,155.0000)" x1="228.50261" y1="-392.30591" x2="266.36395" y2="-379.26862"/> + <radialGradient xlink:href="#linearGradient5346" id="radialGradient8290" gradientUnits="userSpaceOnUse" gradientTransform="matrix(7.065158e-2,4.154803e-2,-6.201499e-2,0.109408,207.4757,-189.8182)" cx="21.920311" cy="-382.96454" fx="21.920311" fy="-382.96454" r="21.743534"/> + <linearGradient xlink:href="#linearGradient5358" id="linearGradient8292" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-5.358613e-2,0.102849,-9.281434e-2,-5.937964e-2,198.9051,-255.6893)" x1="6.8942904" y1="-359.82382" x2="27.400387" y2="-381.30222"/> + <radialGradient xlink:href="#linearGradient5346" id="radialGradient8294" gradientUnits="userSpaceOnUse" gradientTransform="matrix(7.065158e-2,4.154803e-2,-6.201499e-2,0.109408,207.4757,-189.8182)" cx="21.920311" cy="-382.96454" fx="21.920311" fy="-382.96454" r="21.743534"/> + <linearGradient xlink:href="#linearGradient5358" id="linearGradient8296" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-5.358613e-2,0.102849,-9.281434e-2,-5.937964e-2,198.9051,-255.6893)" x1="6.8942904" y1="-359.82382" x2="27.400387" y2="-381.30222"/> + <radialGradient xlink:href="#linearGradient5346" id="radialGradient8298" gradientUnits="userSpaceOnUse" gradientTransform="matrix(7.065158e-2,4.154803e-2,-6.201499e-2,0.109408,207.4757,-189.8182)" cx="21.920311" cy="-382.96454" fx="21.920311" fy="-382.96454" r="21.743534"/> + <linearGradient xlink:href="#linearGradient5358" id="linearGradient8300" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-5.358613e-2,0.102849,-9.281434e-2,-5.937964e-2,198.9051,-255.6893)" x1="6.8942904" y1="-359.82382" x2="27.400387" y2="-381.30222"/> + <radialGradient xlink:href="#linearGradient5346" id="radialGradient8302" gradientUnits="userSpaceOnUse" gradientTransform="matrix(7.065158e-2,4.154803e-2,-6.201499e-2,0.109408,207.4757,-189.8182)" cx="21.920311" cy="-382.96454" fx="21.920311" fy="-382.96454" r="21.743534"/> + <linearGradient xlink:href="#linearGradient5358" id="linearGradient8304" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-5.358613e-2,0.102849,-9.281434e-2,-5.937964e-2,198.9051,-255.6893)" x1="6.8942904" y1="-359.82382" x2="27.400387" y2="-381.30222"/> + <radialGradient xlink:href="#linearGradient5346" id="radialGradient8306" gradientUnits="userSpaceOnUse" gradientTransform="matrix(7.065158e-2,4.154803e-2,-6.201499e-2,0.109408,207.4757,-189.8182)" cx="21.920311" cy="-382.96454" fx="21.920311" fy="-382.96454" r="21.743534"/> + <linearGradient xlink:href="#linearGradient5358" id="linearGradient8308" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-5.358613e-2,0.102849,-9.281434e-2,-5.937964e-2,198.9051,-255.6893)" x1="6.8942904" y1="-359.82382" x2="27.400387" y2="-381.30222"/> + <radialGradient xlink:href="#linearGradient5346" id="radialGradient8310" gradientUnits="userSpaceOnUse" gradientTransform="matrix(7.065158e-2,4.154803e-2,-6.201499e-2,0.109408,207.4757,-189.8182)" cx="21.920311" cy="-382.96454" fx="21.920311" fy="-382.96454" r="21.743534"/> + <linearGradient xlink:href="#linearGradient5358" id="linearGradient8312" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-5.358613e-2,0.102849,-9.281434e-2,-5.937964e-2,198.9051,-255.6893)" x1="6.8942904" y1="-359.82382" x2="27.400387" y2="-381.30222"/> + </defs> + + <metadata id="metadata1311"> + <rdf:RDF> + <cc:Work rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> + <dc:title>weather-showers</dc:title> + <dc:date>January 2006</dc:date> + <dc:creator> + <cc:Agent> + <dc:title>Ryan collier (pseudo)</dc:title> + </cc:Agent> + </dc:creator> + <dc:publisher> + <cc:Agent> + <dc:title>http://www.tango-project.org</dc:title> + </cc:Agent> + </dc:publisher> + <dc:source>http://www.pseudocode.org</dc:source> + <dc:subject> + <rdf:Bag> + <rdf:li>weather</rdf:li> + <rdf:li>appplet</rdf:li> + <rdf:li>notify</rdf:li> + </rdf:Bag> + </dc:subject> + <cc:license rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/"/> + </cc:Work> + <cc:License rdf:about="http://creativecommons.org/licenses/by-sa/2.0/"> + <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/> + <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/> + <cc:requires rdf:resource="http://web.resource.org/cc/Notice"/> + <cc:requires rdf:resource="http://web.resource.org/cc/Attribution"/> + <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/> + <cc:requires rdf:resource="http://web.resource.org/cc/ShareAlike"/> + </cc:License> + </rdf:RDF> + </metadata> + <g id="layer1"> + <g> + <g transform="matrix(0.999675,0.000000,0.000000,1.000000,-286.8562,245.0000)"> + <g> + <path d="M 311.50000,-242.99998 C 308.72758,-242.99998 306.39177,-241.42627 305.09375,-239.18748 C 304.14939,-239.66252 303.12856,-239.99998 302.00000,-239.99998 C 298.13600,-239.99998 295.00000,-236.86398 295.00000,-232.99998 C 295.00000,-229.13598 298.13600,-225.99998 302.00000,-225.99998 C 304.41967,-225.99998 306.43009,-227.31930 307.68750,-229.18748 C 308.82170,-228.49786 310.07648,-227.99998 311.50000,-227.99998 C 312.41312,-227.99998 313.25295,-228.23200 314.06250,-228.53123 C 314.57244,-227.66350 315.24162,-226.95151 316.06250,-226.37498 C 316.05526,-226.24460 316.00000,-226.13216 316.00000,-225.99998 C 316.00000,-222.13598 319.13599,-218.99998 323.00000,-218.99998 C 326.86400,-218.99998 330.00000,-222.13598 330.00000,-225.99998 C 330.00000,-228.36967 328.74102,-230.35832 326.93750,-231.62498 C 326.94474,-231.75536 327.00000,-231.86780 327.00000,-231.99998 C 327.00000,-235.86398 323.86401,-238.99998 320.00000,-238.99998 C 319.37730,-238.99998 318.82481,-238.77779 318.25000,-238.62498 C 317.05547,-241.18382 314.50866,-242.99998 311.50000,-242.99998 z " opacity="1.0000000" fill="#555753" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 311.50000,-241.99998 C 308.71952,-241.99998 306.36549,-240.23813 305.43750,-237.78123 C 304.45208,-238.49067 303.30607,-238.99998 302.00000,-238.99998 C 298.68800,-238.99998 296.00000,-236.31198 296.00000,-232.99998 C 296.00000,-229.68798 298.68800,-226.99998 302.00000,-226.99998 C 304.42775,-226.99998 306.49324,-228.45556 307.43750,-230.53123 C 308.55826,-229.61367 309.93964,-228.99998 311.50000,-228.99998 C 312.57454,-228.99998 313.54428,-229.31894 314.43750,-229.78123 C 314.83590,-228.78147 315.53864,-227.99491 316.37500,-227.34373 C 316.19499,-226.74811 316.00000,-226.15408 316.00000,-225.49998 C 316.00000,-221.91198 318.91200,-218.99998 322.50000,-218.99998 C 326.08800,-218.99998 329.00000,-221.91198 329.00000,-225.49998 C 329.00000,-227.86077 327.66567,-229.83017 325.78125,-230.96873 C 325.84384,-231.31596 326.00000,-231.63481 326.00000,-231.99998 C 326.00000,-235.31198 323.31200,-237.99998 320.00000,-237.99998 C 319.14702,-237.99998 318.32870,-237.82130 317.59375,-237.49998 C 316.73998,-240.09386 314.37851,-241.99997 311.50000,-241.99998 z " opacity="1.0000000" fill="url(#linearGradient13315)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(0.964447,0.000000,0.000000,0.964447,89.28852,144.5262)" d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <g> + <path d="M 250.18322 -389.30136 A 6.2313786 6.2313786 0 1 1 237.72046,-389.30136 A 6.2313786 6.2313786 0 1 1 250.18322 -389.30136 z" transform="matrix(0.882630,0.000000,0.000000,0.882630,96.18078,108.1091)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 250.18322 -389.30136 A 6.2313786 6.2313786 0 1 1 237.72046,-389.30136 A 6.2313786 6.2313786 0 1 1 250.18322 -389.30136 z" transform="matrix(0.882630,0.000000,0.000000,0.882630,96.18078,108.1091)" opacity="0.49444440" fill="url(#linearGradient13317)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <g> + <path d="M 257.25429 -385.78790 A 6.0325046 6.0325046 0 1 1 245.18928,-385.78790 A 6.0325046 6.0325046 0 1 1 257.25429 -385.78790 z" transform="matrix(0.911728,0.000000,0.000000,0.911728,90.45407,120.2336)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 257.25429 -385.78790 A 6.0325046 6.0325046 0 1 1 245.18928,-385.78790 A 6.0325046 6.0325046 0 1 1 257.25429 -385.78790 z" transform="matrix(0.911728,0.000000,0.000000,0.911728,90.45407,120.2336)" opacity="0.49444440" fill="url(#linearGradient13319)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <g> + <path d="M 237.80885 -387.88715 A 4.3752232 4.3752232 0 1 1 229.05840,-387.88715 A 4.3752232 4.3752232 0 1 1 237.80885 -387.88715 z" transform="matrix(1.142799,0.000000,0.000000,1.142799,35.23229,210.2770)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 237.80885 -387.88715 A 4.3752232 4.3752232 0 1 1 229.05840,-387.88715 A 4.3752232 4.3752232 0 1 1 237.80885 -387.88715 z" transform="matrix(1.142799,0.000000,0.000000,1.142799,35.23229,210.2770)" opacity="0.49444440" fill="url(#linearGradient13321)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <g> + <path d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z" transform="matrix(1.038636,0.000000,0.000000,1.038636,59.84906,169.4899)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z" transform="matrix(1.038636,0.000000,0.000000,1.038636,59.84907,169.4899)" opacity="0.49444440" fill="url(#linearGradient13323)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + </g> + <g transform="translate(72.00007,7.999930)"> + <path d="M 246.49993,-238.49993 C 244.22910,-238.49993 242.39002,-236.94965 241.78118,-234.87493 C 241.08795,-235.23876 240.33667,-235.49993 239.49993,-235.49993 C 236.73993,-235.49993 234.49992,-233.25994 234.49993,-230.49993 C 234.49993,-229.92100 234.66245,-229.39223 234.84368,-228.87493 C 233.47021,-228.10419 232.49993,-226.68593 232.49993,-224.99993 C 232.49993,-222.51593 234.51593,-220.49992 236.99993,-220.49993 C 237.17706,-220.49993 255.82280,-220.49993 255.99993,-220.49993 C 258.48392,-220.49993 260.49993,-222.51593 260.49993,-224.99993 C 260.49993,-226.68593 259.52965,-228.10419 258.15618,-228.87493 C 258.33742,-229.39222 258.49993,-229.92101 258.49993,-230.49993 C 258.49993,-233.25993 256.25993,-235.49992 253.49993,-235.49993 C 252.66319,-235.49993 251.91191,-235.23876 251.21868,-234.87493 C 250.60984,-236.94965 248.77076,-238.49993 246.49993,-238.49993 z " fill="#888a85" fill-opacity="1.0000000" stroke="#555753" stroke-width="1.0001625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 246.49993,-237.99993 C 244.31021,-237.99993 242.77633,-236.66416 242.10438,-234.15641 C 241.43592,-234.50003 240.55679,-234.98976 239.74993,-234.98976 C 237.03342,-234.98976 234.99479,-233.05094 234.99480,-230.44422 C 234.99480,-229.89745 235.26201,-229.11078 235.43676,-228.62221 C 234.11233,-227.89426 232.99993,-226.73171 232.99993,-225.24966 C 232.99993,-222.90361 234.54610,-220.99957 237.33921,-220.99957 C 237.51002,-220.99957 255.48985,-220.99957 255.66065,-220.99957 C 258.43166,-220.99957 259.99993,-222.90361 259.99993,-225.24966 C 259.99993,-226.84203 258.88753,-227.91635 257.56310,-228.64430 C 257.73786,-229.13286 258.02717,-229.89746 258.02717,-230.44422 C 258.02717,-233.05093 255.91136,-235.01185 253.24994,-235.01186 C 252.44307,-235.01186 251.60813,-234.52212 250.93967,-234.17850 C 250.29082,-236.60004 248.68966,-237.99993 246.49993,-237.99993 z " opacity="1.0000000" fill="url(#linearGradient13325)" fill-opacity="1.0000000" stroke="none" stroke-width="0.99999958" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="0.47777775" fill="url(#linearGradient13327)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <rect y="-230.99992" x="236.99994" height="9.0000000" width="20.000000" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16987,171.3114)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19818,231.8633)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19825,231.8634)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="0.47777775" fill="url(#linearGradient13329)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="0.47777775" fill="url(#linearGradient13331)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 245.46868,-233.96868 C 241.88930,-233.96868 238.99993,-231.04805 238.99993,-227.46868 C 238.99993,-225.09800 240.34936,-223.13089 242.24993,-221.99993 L 248.71868,-221.99993 C 250.61925,-223.13089 251.96868,-225.12924 251.96868,-227.49993 C 251.96868,-231.07931 249.04805,-233.96868 245.46868,-233.96868 z " opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 245.49993,-233.99993 C 241.91193,-233.99993 238.99993,-231.08792 238.99993,-227.49993 C 238.99993,-225.12353 240.34478,-223.13361 242.24993,-221.99993 L 248.74993,-221.99993 C 250.65508,-223.13361 251.99993,-225.12353 251.99993,-227.49993 C 251.99993,-231.08793 249.08793,-233.99992 245.49993,-233.99993 z " opacity="0.47777775" fill="url(#linearGradient13333)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16977,171.3113)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="0.47777775" fill="url(#linearGradient13335)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 258.95633,-230.33389 C 258.95480,-227.64933 255.68707,-226.61994 255.68707,-226.61994 C 255.68707,-226.61994 258.03581,-228.24589 258.02392,-230.32495 C 258.02392,-230.32495 258.95633,-230.33389 258.95633,-230.33389 z " fill="#555753" fill-opacity="1.0000000" fill-rule="evenodd" stroke="none" stroke-width="1.0000000px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/> + <path transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="0.47777775" fill="url(#linearGradient13337)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <g transform="translate(56.98577,3.983930)"> + <path d="M 246.49993,-238.49993 C 244.22910,-238.49993 242.39002,-236.94965 241.78118,-234.87493 C 241.08795,-235.23876 240.33667,-235.49993 239.49993,-235.49993 C 236.73993,-235.49993 234.49992,-233.25994 234.49993,-230.49993 C 234.49993,-229.92100 234.66245,-229.39223 234.84368,-228.87493 C 233.47021,-228.10419 232.49993,-226.68593 232.49993,-224.99993 C 232.49993,-222.51593 234.51593,-220.49992 236.99993,-220.49993 C 237.17706,-220.49993 255.82280,-220.49993 255.99993,-220.49993 C 258.48392,-220.49993 260.49993,-222.51593 260.49993,-224.99993 C 260.49993,-226.68593 259.52965,-228.10419 258.15618,-228.87493 C 258.33742,-229.39222 258.49993,-229.92101 258.49993,-230.49993 C 258.49993,-233.25993 256.25993,-235.49992 253.49993,-235.49993 C 252.66319,-235.49993 251.91191,-235.23876 251.21868,-234.87493 C 250.60984,-236.94965 248.77076,-238.49993 246.49993,-238.49993 z " fill="#888a85" fill-opacity="1.0000000" stroke="#555753" stroke-width="1.0001625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 246.49993,-237.99993 C 244.31021,-237.99993 242.77633,-236.66416 242.10438,-234.15641 C 241.43592,-234.50003 240.55679,-234.98976 239.74993,-234.98976 C 237.03342,-234.98976 234.99479,-233.05094 234.99480,-230.44422 C 234.99480,-229.89745 235.26201,-229.11078 235.43676,-228.62221 C 234.11233,-227.89426 232.99993,-226.73171 232.99993,-225.24966 C 232.99993,-222.90361 234.54610,-220.99957 237.33921,-220.99957 C 237.51002,-220.99957 255.48985,-220.99957 255.66065,-220.99957 C 258.43166,-220.99957 259.99993,-222.90361 259.99993,-225.24966 C 259.99993,-226.84203 258.88753,-227.91635 257.56310,-228.64430 C 257.73786,-229.13286 258.02717,-229.89746 258.02717,-230.44422 C 258.02717,-233.05093 255.91136,-235.01185 253.24994,-235.01186 C 252.44307,-235.01186 251.60813,-234.52212 250.93967,-234.17850 C 250.29082,-236.60004 248.68966,-237.99993 246.49993,-237.99993 z " opacity="1.0000000" fill="url(#linearGradient13339)" fill-opacity="1.0000000" stroke="none" stroke-width="0.99999958" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="0.47777775" fill="url(#linearGradient13341)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <rect y="-230.99992" x="236.99994" height="9.0000000" width="20.000000" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16987,171.3114)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19818,231.8633)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19825,231.8634)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="0.47777775" fill="url(#linearGradient13343)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="0.47777775" fill="url(#linearGradient13345)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 245.46868,-233.96868 C 241.88930,-233.96868 238.99993,-231.04805 238.99993,-227.46868 C 238.99993,-225.09800 240.34936,-223.13089 242.24993,-221.99993 L 248.71868,-221.99993 C 250.61925,-223.13089 251.96868,-225.12924 251.96868,-227.49993 C 251.96868,-231.07931 249.04805,-233.96868 245.46868,-233.96868 z " opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 245.49993,-233.99993 C 241.91193,-233.99993 238.99993,-231.08792 238.99993,-227.49993 C 238.99993,-225.12353 240.34478,-223.13361 242.24993,-221.99993 L 248.74993,-221.99993 C 250.65508,-223.13361 251.99993,-225.12353 251.99993,-227.49993 C 251.99993,-231.08793 249.08793,-233.99992 245.49993,-233.99993 z " opacity="0.47777775" fill="url(#linearGradient13347)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16977,171.3113)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="0.47777775" fill="url(#linearGradient13350)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 258.95633,-230.33389 C 258.95480,-227.64933 255.68707,-226.61994 255.68707,-226.61994 C 255.68707,-226.61994 258.03581,-228.24589 258.02392,-230.32495 C 258.02392,-230.32495 258.95633,-230.33389 258.95633,-230.33389 z " fill="#555753" fill-opacity="1.0000000" fill-rule="evenodd" stroke="none" stroke-width="1.0000000px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/> + <path transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="0.47777775" fill="url(#linearGradient13352)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + </g> + <g transform="translate(17.177973,-2)"> + <g transform="translate(-219.67784,275.47179)"> + <path d="M 231.62587,-228.77086 C 230.58662,-229.36665 230.23015,-230.68774 230.83016,-231.71967 C 232.16166,-233.80243 233.93524,-233.26584 234.84231,-235.46138 C 236.10323,-234.12777 235.63545,-227.21367 231.62587,-228.77086 z" fill="#729fcf" fill-opacity="1" stroke="#204a87" stroke-width="1.07456863" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path d="M 234.31017,-229.9035 C 233.82059,-229.03976 232.73502,-228.74348 231.88703,-229.24216 C 231.03903,-229.74084 230.74816,-230.84657 231.23774,-231.71031 C 231.72733,-232.57405 233.84374,-232.16235 234.58388,-234 C 235.43187,-233.50133 234.79976,-230.76724 234.31017,-229.9035 z" opacity="0.46111109" fill="url(#radialGradient8290)" fill-opacity="1" stroke="none" stroke-width="1.07457018" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dashoffset="0" stroke-opacity="1"/> + <path d="M 233.02237,-229 C 228.40776,-230.07384 233.25985,-233.71939 234,-232.92154 C 230.4176,-231.55118 233.02237,-229 233.02237,-229 z" opacity="1" fill="url(#linearGradient8292)" fill-opacity="1" stroke="none" stroke-width="1.07457018" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dashoffset="0" stroke-opacity="1"/> + </g> + <g transform="translate(-239.67784,265.47959)"> + <path d="M 231.62587,-228.77086 C 230.58662,-229.36665 230.23015,-230.68774 230.83016,-231.71967 C 232.16166,-233.80243 233.93524,-233.26584 234.84231,-235.46138 C 236.10323,-234.12777 235.63545,-227.21367 231.62587,-228.77086 z" fill="#729fcf" fill-opacity="1" stroke="#204a87" stroke-width="1.07456863" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path d="M 234.31017,-229.9035 C 233.82059,-229.03976 232.73502,-228.74348 231.88703,-229.24216 C 231.03903,-229.74084 230.74816,-230.84657 231.23774,-231.71031 C 231.72733,-232.57405 233.84374,-232.16235 234.58388,-234 C 235.43187,-233.50133 234.79976,-230.76724 234.31017,-229.9035 z" opacity="0.46111109" fill="url(#radialGradient8294)" fill-opacity="1" stroke="none" stroke-width="1.07457018" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dashoffset="0" stroke-opacity="1"/> + <path d="M 233.02237,-229 C 228.40776,-230.07384 233.25985,-233.71939 234,-232.92154 C 230.4176,-231.55118 233.02237,-229 233.02237,-229 z" opacity="1" fill="url(#linearGradient8296)" fill-opacity="1" stroke="none" stroke-width="1.07457018" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dashoffset="0" stroke-opacity="1"/> + </g> + <g transform="translate(-210.67944,272.47179)"> + <path d="M 231.62587,-228.77086 C 230.58662,-229.36665 230.23015,-230.68774 230.83016,-231.71967 C 232.16166,-233.80243 233.93524,-233.26584 234.84231,-235.46138 C 236.10323,-234.12777 235.63545,-227.21367 231.62587,-228.77086 z" fill="#729fcf" fill-opacity="1" stroke="#204a87" stroke-width="1.07456863" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path d="M 234.31017,-229.9035 C 233.82059,-229.03976 232.73502,-228.74348 231.88703,-229.24216 C 231.03903,-229.74084 230.74816,-230.84657 231.23774,-231.71031 C 231.72733,-232.57405 233.84374,-232.16235 234.58388,-234 C 235.43187,-233.50133 234.79976,-230.76724 234.31017,-229.9035 z" opacity="0.46111109" fill="url(#radialGradient8298)" fill-opacity="1" stroke="none" stroke-width="1.07457018" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dashoffset="0" stroke-opacity="1"/> + <path d="M 233.02237,-229 C 228.40776,-230.07384 233.25985,-233.71939 234,-232.92154 C 230.4176,-231.55118 233.02237,-229 233.02237,-229 z" opacity="1" fill="url(#linearGradient8300)" fill-opacity="1" stroke="none" stroke-width="1.07457018" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dashoffset="0" stroke-opacity="1"/> + </g> + <g transform="translate(-241.67794,275.47309)"> + <path d="M 231.62587,-228.77086 C 230.58662,-229.36665 230.23015,-230.68774 230.83016,-231.71967 C 232.16166,-233.80243 233.93524,-233.26584 234.84231,-235.46138 C 236.10323,-234.12777 235.63545,-227.21367 231.62587,-228.77086 z" fill="#729fcf" fill-opacity="1" stroke="#204a87" stroke-width="1.07456863" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path d="M 234.31017,-229.9035 C 233.82059,-229.03976 232.73502,-228.74348 231.88703,-229.24216 C 231.03903,-229.74084 230.74816,-230.84657 231.23774,-231.71031 C 231.72733,-232.57405 233.84374,-232.16235 234.58388,-234 C 235.43187,-233.50133 234.79976,-230.76724 234.31017,-229.9035 z" opacity="0.46111109" fill="url(#radialGradient8302)" fill-opacity="1" stroke="none" stroke-width="1.07457018" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dashoffset="0" stroke-opacity="1"/> + <path d="M 233.02237,-229 C 228.40776,-230.07384 233.25985,-233.71939 234,-232.92154 C 230.4176,-231.55118 233.02237,-229 233.02237,-229 z" opacity="1" fill="url(#linearGradient8304)" fill-opacity="1" stroke="none" stroke-width="1.07457018" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dashoffset="0" stroke-opacity="1"/> + </g> + <g transform="translate(-231.67944,270.47179)"> + <path d="M 231.62587,-228.77086 C 230.58662,-229.36665 230.23015,-230.68774 230.83016,-231.71967 C 232.16166,-233.80243 233.93524,-233.26584 234.84231,-235.46138 C 236.10323,-234.12777 235.63545,-227.21367 231.62587,-228.77086 z" fill="#729fcf" fill-opacity="1" stroke="#204a87" stroke-width="1.07456863" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path d="M 234.31017,-229.9035 C 233.82059,-229.03976 232.73502,-228.74348 231.88703,-229.24216 C 231.03903,-229.74084 230.74816,-230.84657 231.23774,-231.71031 C 231.72733,-232.57405 233.84374,-232.16235 234.58388,-234 C 235.43187,-233.50133 234.79976,-230.76724 234.31017,-229.9035 z" opacity="0.46111109" fill="url(#radialGradient8306)" fill-opacity="1" stroke="none" stroke-width="1.07457018" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dashoffset="0" stroke-opacity="1"/> + <path d="M 233.02237,-229 C 228.40776,-230.07384 233.25985,-233.71939 234,-232.92154 C 230.4176,-231.55118 233.02237,-229 233.02237,-229 z" opacity="1" fill="url(#linearGradient8308)" fill-opacity="1" stroke="none" stroke-width="1.07457018" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dashoffset="0" stroke-opacity="1"/> + </g> + <g transform="translate(-217.67944,265.47959)"> + <path d="M 231.62587,-228.77086 C 230.58662,-229.36665 230.23015,-230.68774 230.83016,-231.71967 C 232.16166,-233.80243 233.93524,-233.26584 234.84231,-235.46138 C 236.10323,-234.12777 235.63545,-227.21367 231.62587,-228.77086 z" fill="#729fcf" fill-opacity="1" stroke="#204a87" stroke-width="1.07456863" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path d="M 234.31017,-229.9035 C 233.82059,-229.03976 232.73502,-228.74348 231.88703,-229.24216 C 231.03903,-229.74084 230.74816,-230.84657 231.23774,-231.71031 C 231.72733,-232.57405 233.84374,-232.16235 234.58388,-234 C 235.43187,-233.50133 234.79976,-230.76724 234.31017,-229.9035 z" opacity="0.46111109" fill="url(#radialGradient8310)" fill-opacity="1" stroke="none" stroke-width="1.07457018" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dashoffset="0" stroke-opacity="1"/> + <path d="M 233.02237,-229 C 228.40776,-230.07384 233.25985,-233.71939 234,-232.92154 C 230.4176,-231.55118 233.02237,-229 233.02237,-229 z" opacity="1" fill="url(#linearGradient8312)" fill-opacity="1" stroke="none" stroke-width="1.07457018" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dashoffset="0" stroke-opacity="1"/> + </g> + </g> + <g transform="translate(-162.99643,221.88968)"> + <path d="M 31.819805,-316.77872 A 2.2097087,2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087,2.2097087 0 1 1 31.819805,-316.77872 z" transform="matrix(0.68552,0,0,0.68552,151.7017,27.15827)" opacity="1" fill="#ffffff" fill-opacity="1" stroke="#729fcf" stroke-width="1.45874679" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path d="M 31.819805,-316.77872 A 2.2097087,2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087,2.2097087 0 1 1 31.819805,-316.77872 z" transform="matrix(0.915572,0,0,0.915587,152.4091,103.5577)" opacity="1" fill="#ffffff" fill-opacity="1" stroke="#729fcf" stroke-width="1.09220433" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path d="M 31.819805,-316.77872 A 2.2097087,2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087,2.2097087 0 1 1 31.819805,-316.77872 z" transform="matrix(0.672406,0,0,0.683742,153.0708,34.62149)" opacity="1" fill="#ffffff" fill-opacity="1" stroke="#729fcf" stroke-width="1.47481608" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path d="M 31.819805,-316.77872 A 2.2097087,2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087,2.2097087 0 1 1 31.819805,-316.77872 z" transform="matrix(0.6823,0,0,0.680269,181.797,30.49471)" opacity="1" fill="#ffffff" fill-opacity="1" stroke="#729fcf" stroke-width="1.4678179" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path d="M 31.819805,-316.77872 A 2.2097087,2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087,2.2097087 0 1 1 31.819805,-316.77872 z" transform="matrix(1.107132,0,0,1.117168,157.2177,164.9217)" opacity="1" fill="#ffffff" fill-opacity="1" stroke="#729fcf" stroke-width="0.89916825" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path d="M 31.819805,-316.77872 A 2.2097087,2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087,2.2097087 0 1 1 31.819805,-316.77872 z" transform="matrix(1.127592,0,0,1.05183,161.6119,151.3731)" opacity="1" fill="#ffffff" fill-opacity="1" stroke="#729fcf" stroke-width="0.91822928" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path d="M 31.819805,-316.77872 A 2.2097087,2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087,2.2097087 0 1 1 31.819805,-316.77872 z" transform="matrix(0.685519,0,0,0.680487,164.6869,34.56369)" opacity="1" fill="#ffffff" fill-opacity="1" stroke="#729fcf" stroke-width="1.46413279" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + </g> + </g> + </g> +</svg> diff --git a/examples/svg/embedded/weatherinfo/icons/weather-snow.svg b/examples/svg/embedded/weatherinfo/icons/weather-snow.svg new file mode 100644 index 0000000..a91946f --- /dev/null +++ b/examples/svg/embedded/weatherinfo/icons/weather-snow.svg @@ -0,0 +1,200 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="48px" height="48px" id="svg1306"> + <defs id="defs1308"> + <linearGradient xlink:href="#linearGradient6538" id="linearGradient10630" gradientUnits="userSpaceOnUse" x1="284.80219" y1="-441.23294" x2="288.89954" y2="-436.83109"/> + <linearGradient xlink:href="#linearGradient6549" id="linearGradient10628" gradientUnits="userSpaceOnUse" x1="286.66589" y1="-439.48358" x2="289.76562" y2="-436.70703"/> + <linearGradient xlink:href="#linearGradient6527" id="linearGradient10626" gradientUnits="userSpaceOnUse" x1="275.94193" y1="-437.10501" x2="279.97546" y2="-431.91833"/> + <linearGradient xlink:href="#linearGradient6538" id="linearGradient10624" gradientUnits="userSpaceOnUse" x1="285.94086" y1="-439.93900" x2="289.39124" y2="-436.44290"/> + <linearGradient xlink:href="#linearGradient6513" id="linearGradient10622" gradientUnits="userSpaceOnUse" x1="286.51172" y1="-441.29074" x2="289.85379" y2="-436.14453"/> + <linearGradient xlink:href="#linearGradient6497" id="linearGradient10620" gradientUnits="userSpaceOnUse" x1="287.51730" y1="-439.75281" x2="289.67633" y2="-436.32199"/> + <linearGradient xlink:href="#linearGradient6470" id="linearGradient10618" gradientUnits="userSpaceOnUse" x1="271.02170" y1="-441.05182" x2="285.02859" y2="-431.96991"/> + <linearGradient xlink:href="#linearGradient6538" id="linearGradient10616" gradientUnits="userSpaceOnUse" x1="284.80219" y1="-441.23294" x2="288.89954" y2="-436.83109"/> + <linearGradient id="linearGradient6549"> + <stop offset="0" id="stop6551" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6553" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6549" id="linearGradient10614" gradientUnits="userSpaceOnUse" x1="286.66589" y1="-439.48358" x2="289.76562" y2="-436.70703"/> + <linearGradient id="linearGradient6527"> + <stop offset="0" id="stop6530" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6532" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6527" id="linearGradient10612" gradientUnits="userSpaceOnUse" x1="275.94193" y1="-437.10501" x2="279.97546" y2="-431.91833"/> + <linearGradient id="linearGradient6538"> + <stop offset="0" id="stop6540" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6542" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6538" id="linearGradient10610" gradientUnits="userSpaceOnUse" x1="285.94086" y1="-439.93900" x2="289.39124" y2="-436.44290"/> + <linearGradient id="linearGradient6513"> + <stop offset="0" id="stop6515" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6517" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6513" id="linearGradient10608" gradientUnits="userSpaceOnUse" x1="286.51172" y1="-441.29074" x2="289.85379" y2="-436.14453"/> + <linearGradient id="linearGradient6497"> + <stop offset="0" id="stop6499" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6501" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6497" id="linearGradient10606" gradientUnits="userSpaceOnUse" x1="287.51730" y1="-439.75281" x2="289.67633" y2="-436.32199"/> + <linearGradient id="linearGradient6470"> + <stop offset="0" id="stop6472" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6474" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6470" id="linearGradient10604" gradientUnits="userSpaceOnUse" x1="271.02170" y1="-441.05182" x2="285.02859" y2="-431.96991"/> + <linearGradient id="linearGradient7834"> + <stop offset="0" id="stop7836" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop7838" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient7834" id="linearGradient10602" gradientUnits="userSpaceOnUse" x1="-156.29044" y1="-100.53421" x2="-153.09810" y2="-96.544556"/> + <linearGradient id="linearGradient8397"> + <stop offset="0" id="stop8400" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop8402" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient8397" id="linearGradient10600" gradientUnits="userSpaceOnUse" x1="238.00478" y1="-388.47476" x2="245.65462" y2="-382.64539"/> + <linearGradient id="linearGradient8315"> + <stop offset="0" id="stop8317" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop8319" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient8315" id="linearGradient10598" gradientUnits="userSpaceOnUse" x1="230.87598" y1="-390.43951" x2="235.25652" y2="-386.95901"/> + <linearGradient id="linearGradient8381"> + <stop offset="0" id="stop8383" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop8385" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient8381" id="linearGradient10596" gradientUnits="userSpaceOnUse" x1="246.74042" y1="-391.31381" x2="252.69785" y2="-385.35165"/> + <linearGradient id="linearGradient8331"> + <stop offset="0" id="stop8333" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop8335" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient8331" id="linearGradient10594" gradientUnits="userSpaceOnUse" x1="240.07379" y1="-393.40720" x2="245.82706" y2="-388.55029"/> + <linearGradient id="linearGradient8302"> + <stop offset="0" id="stop8304" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop8306" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient8302" id="linearGradient10592" gradientUnits="userSpaceOnUse" gradientTransform="translate(122.0230,102.0000)" x1="228.50261" y1="-392.30591" x2="278.91510" y2="-375.37952"/> + </defs> + + <metadata id="metadata1311"> + <rdf:RDF> + <cc:Work rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> + <dc:title>weather-snow</dc:title> + <dc:date>January 2006</dc:date> + <dc:creator> + <cc:Agent> + <dc:title>Ryan Collier (pseudo)</dc:title> + </cc:Agent> + </dc:creator> + <dc:publisher> + <cc:Agent> + <dc:title>http://www.tango-project.org</dc:title> + </cc:Agent> + </dc:publisher> + <dc:source>http://www.pseudocode.org</dc:source> + <dc:subject> + <rdf:Bag> + <rdf:li>weather</rdf:li> + <rdf:li>applet</rdf:li> + <rdf:li>notification</rdf:li> + </rdf:Bag> + </dc:subject> + <cc:license rdf:resource="http://creativecommons.org/licenses/publicdomain/"/> + </cc:Work> + <cc:License rdf:about="http://creativecommons.org/licenses/publicdomain/"> + <cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction"/> + <cc:permits rdf:resource="http://creativecommons.org/ns#Distribution"/> + <cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks"/> + </cc:License> + </rdf:RDF> + </metadata> + <g id="layer1"> + <g transform="translate(-340.0455,298.0001)"> + <path d="M 364.52300,-296.00000 C 361.75058,-296.00000 359.41477,-294.42629 358.11675,-292.18750 C 357.17239,-292.66254 356.15156,-293.00000 355.02300,-293.00000 C 351.15900,-293.00000 348.02300,-289.86400 348.02300,-286.00000 C 348.02300,-282.13600 351.15900,-279.00000 355.02300,-279.00000 C 357.44267,-279.00000 359.45309,-280.31932 360.71050,-282.18750 C 361.84470,-281.49788 363.09948,-281.00000 364.52300,-281.00000 C 365.43612,-281.00000 366.27595,-281.23202 367.08550,-281.53125 C 367.59544,-280.66352 368.26462,-279.95153 369.08550,-279.37500 C 369.07826,-279.24462 369.02300,-279.13218 369.02300,-279.00000 C 369.02300,-275.13600 372.15899,-272.00000 376.02300,-272.00000 C 379.88700,-272.00000 383.02300,-275.13600 383.02300,-279.00000 C 383.02300,-281.36969 381.76402,-283.35834 379.96050,-284.62500 C 379.96774,-284.75538 380.02300,-284.86782 380.02300,-285.00000 C 380.02300,-288.86400 376.88701,-292.00000 373.02300,-292.00000 C 372.40030,-292.00000 371.84781,-291.77781 371.27300,-291.62500 C 370.07847,-294.18384 367.53166,-296.00000 364.52300,-296.00000 z " opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 364.52300,-295.00000 C 361.74252,-295.00000 359.38849,-293.23815 358.46050,-290.78125 C 357.47508,-291.49069 356.32907,-292.00000 355.02300,-292.00000 C 351.71100,-292.00000 349.02300,-289.31200 349.02300,-286.00000 C 349.02300,-282.68800 351.71100,-280.00000 355.02300,-280.00000 C 357.45075,-280.00000 359.51624,-281.45558 360.46050,-283.53125 C 361.58126,-282.61369 362.96264,-282.00000 364.52300,-282.00000 C 365.59754,-282.00000 366.56728,-282.31896 367.46050,-282.78125 C 367.85890,-281.78149 368.56164,-280.99493 369.39800,-280.34375 C 369.21799,-279.74813 369.02300,-279.15410 369.02300,-278.50000 C 369.02300,-274.91200 371.93500,-272.00000 375.52300,-272.00000 C 379.11100,-272.00000 382.02300,-274.91200 382.02300,-278.50000 C 382.02300,-280.86079 380.68867,-282.83019 378.80425,-283.96875 C 378.86684,-284.31598 379.02300,-284.63483 379.02300,-285.00000 C 379.02300,-288.31200 376.33500,-291.00000 373.02300,-291.00000 C 372.17002,-291.00000 371.35170,-290.82132 370.61675,-290.50000 C 369.76298,-293.09388 367.40151,-294.99999 364.52300,-295.00000 z " opacity="1.0000000" fill="url(#linearGradient10592)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(0.964447,0.000000,0.000000,0.964447,142.3115,91.52621)" d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <g transform="translate(122.0230,102.0000)"> + <path d="M 250.18322 -389.30136 A 6.2313786 6.2313786 0 1 1 237.72046,-389.30136 A 6.2313786 6.2313786 0 1 1 250.18322 -389.30136 z" transform="matrix(0.882630,0.000000,0.000000,0.882630,27.18078,-46.89094)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 250.18322 -389.30136 A 6.2313786 6.2313786 0 1 1 237.72046,-389.30136 A 6.2313786 6.2313786 0 1 1 250.18322 -389.30136 z" transform="matrix(0.882630,0.000000,0.000000,0.882630,27.18078,-46.89094)" opacity="1.0000000" fill="url(#linearGradient10594)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <g transform="translate(122.0230,102.0000)"> + <path d="M 257.25429 -385.78790 A 6.0325046 6.0325046 0 1 1 245.18928,-385.78790 A 6.0325046 6.0325046 0 1 1 257.25429 -385.78790 z" transform="matrix(0.911728,0.000000,0.000000,0.911728,21.45407,-34.76637)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 257.25429 -385.78790 A 6.0325046 6.0325046 0 1 1 245.18928,-385.78790 A 6.0325046 6.0325046 0 1 1 257.25429 -385.78790 z" transform="matrix(0.911728,0.000000,0.000000,0.911728,21.45407,-34.76637)" opacity="1.0000000" fill="url(#linearGradient10596)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <g transform="translate(122.0230,102.0000)"> + <path d="M 237.80885 -387.88715 A 4.3752232 4.3752232 0 1 1 229.05840,-387.88715 A 4.3752232 4.3752232 0 1 1 237.80885 -387.88715 z" transform="matrix(1.142799,0.000000,0.000000,1.142799,-33.76771,55.27704)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 237.80885 -387.88715 A 4.3752232 4.3752232 0 1 1 229.05840,-387.88715 A 4.3752232 4.3752232 0 1 1 237.80885 -387.88715 z" transform="matrix(1.142799,0.000000,0.000000,1.142799,-33.76771,55.27704)" opacity="1.0000000" fill="url(#linearGradient10598)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <g transform="translate(122.0230,102.0000)"> + <path d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z" transform="matrix(1.038636,0.000000,0.000000,1.038636,-9.150940,14.48994)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z" transform="matrix(1.038636,0.000000,0.000000,1.038636,-9.150933,14.48993)" opacity="1.0000000" fill="url(#linearGradient10600)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <g transform="matrix(0.935028,0.000000,0.000000,0.935028,499.8484,-187.6162)" stroke="none"> + <path d="M -151.93750 -96.937500 A 3.1250000 3.1250000 0 1 1 -158.18750,-96.937500 A 3.1250000 3.1250000 0 1 1 -151.93750 -96.937500 z" transform="matrix(1.737733,0.000000,0.000000,1.737733,110.8322,70.07649)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="0.33115697" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M -151.93750 -96.937500 A 3.1250000 3.1250000 0 1 1 -158.18750,-96.937500 A 3.1250000 3.1250000 0 1 1 -151.93750 -96.937500 z" transform="matrix(1.737733,0.000000,0.000000,1.737733,110.8948,70.01402)" opacity="1.0000000" fill="url(#linearGradient10602)" fill-opacity="1.0000000" stroke="none" stroke-width="0.45224530" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <g transform="translate(91.02300,162.0000)"> + <path d="M 280.50000,-445.50000 C 278.22917,-445.50000 276.39009,-443.94972 275.78125,-441.87500 C 275.08802,-442.23883 274.33674,-442.50000 273.50000,-442.50000 C 270.74000,-442.50000 268.49999,-440.26001 268.50000,-437.50000 C 268.50000,-436.92107 268.66252,-436.39230 268.84375,-435.87500 C 267.47028,-435.10426 266.50000,-433.68600 266.50000,-432.00000 C 266.50000,-429.51600 268.51600,-427.49999 271.00000,-427.50000 C 271.17713,-427.50000 289.82287,-427.50000 290.00000,-427.50000 C 292.48399,-427.50000 294.50000,-429.51600 294.50000,-432.00000 C 294.50000,-433.68600 293.52972,-435.10426 292.15625,-435.87500 C 292.33749,-436.39229 292.50000,-436.92108 292.50000,-437.50000 C 292.50000,-440.26000 290.26000,-442.49999 287.50000,-442.50000 C 286.66326,-442.50000 285.91198,-442.23883 285.21875,-441.87500 C 284.60991,-443.94972 282.77083,-445.50000 280.50000,-445.50000 z " fill="#c4c5c2" fill-opacity="1.0000000" stroke="#888a85" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 280.50000,-445.00000 C 278.31028,-445.00000 276.77640,-443.66423 276.10445,-441.15648 C 275.43599,-441.50010 274.55686,-441.98983 273.75000,-441.98983 C 271.03349,-441.98983 268.99486,-440.05101 268.99487,-437.44429 C 268.99487,-436.89752 269.26208,-436.11085 269.43683,-435.62228 C 268.11240,-434.89433 267.00000,-433.73178 267.00000,-432.24973 C 267.00000,-429.90368 268.54617,-427.99964 271.33928,-427.99964 C 271.51009,-427.99964 289.48992,-427.99964 289.66072,-427.99964 C 292.43173,-427.99964 294.00000,-429.90368 294.00000,-432.24973 C 294.00000,-433.84210 292.88760,-434.91642 291.56317,-435.64437 C 291.73793,-436.13293 292.02724,-436.89753 292.02724,-437.44429 C 292.02724,-440.05100 289.91143,-442.01192 287.25001,-442.01193 C 286.44314,-442.01193 285.60820,-441.52219 284.93974,-441.17857 C 284.29089,-443.60011 282.68973,-445.00000 280.50000,-445.00000 z " opacity="1.0000000" fill="url(#linearGradient10604)" fill-opacity="1.0000000" stroke="none" stroke-width="0.99999958" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <g> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="url(#linearGradient10606)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <rect width="20.000000" height="9.0000000" x="271.00000" y="-438.00000" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830195,-35.68869)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <g> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19811,24.86321)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19818,24.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="url(#linearGradient10608)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <g> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="url(#linearGradient10610)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <g transform="translate(-1.000000,0.000000)"> + <path d="M 280.46875,-440.96875 C 276.88937,-440.96875 274.00000,-438.04812 274.00000,-434.46875 C 274.00000,-432.09807 275.34943,-430.13096 277.25000,-429.00000 L 283.71875,-429.00000 C 285.61932,-430.13096 286.96875,-432.12931 286.96875,-434.50000 C 286.96875,-438.07938 284.04812,-440.96875 280.46875,-440.96875 z " opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 280.50000,-441.00000 C 276.91200,-441.00000 274.00000,-438.08799 274.00000,-434.50000 C 274.00000,-432.12360 275.34485,-430.13368 277.25000,-429.00000 L 283.75000,-429.00000 C 285.65515,-430.13368 287.00000,-432.12360 287.00000,-434.50000 C 287.00000,-438.08800 284.08800,-440.99999 280.50000,-441.00000 z " opacity="1.0000000" fill="url(#linearGradient10612)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830296,-35.68884)" opacity="1.0000000" fill="url(#linearGradient10614)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 292.95640,-437.33396 C 292.95487,-434.64940 289.68714,-433.62001 289.68714,-433.62001 C 289.68714,-433.62001 292.03588,-435.24596 292.02399,-437.32502 C 292.02399,-437.32502 292.95640,-437.33396 292.95640,-437.33396 z " fill="#888a85" fill-opacity="1.0000000" fill-rule="evenodd" stroke="none" stroke-width="1.0000000px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/> + <g transform="matrix(1.142857,0.000000,0.000000,1.142857,-28.57139,67.00008)"> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="url(#linearGradient10616)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + </g> + <g transform="translate(76.02041,158.0000)"> + <path d="M 280.50000,-445.50000 C 278.22917,-445.50000 276.39009,-443.94972 275.78125,-441.87500 C 275.08802,-442.23883 274.33674,-442.50000 273.50000,-442.50000 C 270.74000,-442.50000 268.49999,-440.26001 268.50000,-437.50000 C 268.50000,-436.92107 268.66252,-436.39230 268.84375,-435.87500 C 267.47028,-435.10426 266.50000,-433.68600 266.50000,-432.00000 C 266.50000,-429.51600 268.51600,-427.49999 271.00000,-427.50000 C 271.17713,-427.50000 289.82287,-427.50000 290.00000,-427.50000 C 292.48399,-427.50000 294.50000,-429.51600 294.50000,-432.00000 C 294.50000,-433.68600 293.52972,-435.10426 292.15625,-435.87500 C 292.33749,-436.39229 292.50000,-436.92108 292.50000,-437.50000 C 292.50000,-440.26000 290.26000,-442.49999 287.50000,-442.50000 C 286.66326,-442.50000 285.91198,-442.23883 285.21875,-441.87500 C 284.60991,-443.94972 282.77083,-445.50000 280.50000,-445.50000 z " fill="#c4c5c2" fill-opacity="1.0000000" stroke="#888a85" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 280.50000,-445.00000 C 278.31028,-445.00000 276.77640,-443.66423 276.10445,-441.15648 C 275.43599,-441.50010 274.55686,-441.98983 273.75000,-441.98983 C 271.03349,-441.98983 268.99486,-440.05101 268.99487,-437.44429 C 268.99487,-436.89752 269.26208,-436.11085 269.43683,-435.62228 C 268.11240,-434.89433 267.00000,-433.73178 267.00000,-432.24973 C 267.00000,-429.90368 268.54617,-427.99964 271.33928,-427.99964 C 271.51009,-427.99964 289.48992,-427.99964 289.66072,-427.99964 C 292.43173,-427.99964 294.00000,-429.90368 294.00000,-432.24973 C 294.00000,-433.84210 292.88760,-434.91642 291.56317,-435.64437 C 291.73793,-436.13293 292.02724,-436.89753 292.02724,-437.44429 C 292.02724,-440.05100 289.91143,-442.01192 287.25001,-442.01193 C 286.44314,-442.01193 285.60820,-441.52219 284.93974,-441.17857 C 284.29089,-443.60011 282.68973,-445.00000 280.50000,-445.00000 z " opacity="1.0000000" fill="url(#linearGradient10618)" fill-opacity="1.0000000" stroke="none" stroke-width="0.99999958" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <g> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="url(#linearGradient10620)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <rect width="20.000000" height="9.0000000" x="271.00000" y="-438.00000" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830195,-35.68869)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <g> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19811,24.86321)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19818,24.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="url(#linearGradient10622)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <g> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="url(#linearGradient10624)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <g transform="translate(-1.000000,0.000000)"> + <path d="M 280.46875,-440.96875 C 276.88937,-440.96875 274.00000,-438.04812 274.00000,-434.46875 C 274.00000,-432.09807 275.34943,-430.13096 277.25000,-429.00000 L 283.71875,-429.00000 C 285.61932,-430.13096 286.96875,-432.12931 286.96875,-434.50000 C 286.96875,-438.07938 284.04812,-440.96875 280.46875,-440.96875 z " opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 280.50000,-441.00000 C 276.91200,-441.00000 274.00000,-438.08799 274.00000,-434.50000 C 274.00000,-432.12360 275.34485,-430.13368 277.25000,-429.00000 L 283.75000,-429.00000 C 285.65515,-430.13368 287.00000,-432.12360 287.00000,-434.50000 C 287.00000,-438.08800 284.08800,-440.99999 280.50000,-441.00000 z " opacity="1.0000000" fill="url(#linearGradient10626)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830296,-35.68884)" opacity="1.0000000" fill="url(#linearGradient10628)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 292.95640,-437.33396 C 292.95487,-434.64940 289.68714,-433.62001 289.68714,-433.62001 C 289.68714,-433.62001 292.03588,-435.24596 292.02399,-437.32502 C 292.02399,-437.32502 292.95640,-437.33396 292.95640,-437.33396 z " fill="#888a85" fill-opacity="1.0000000" fill-rule="evenodd" stroke="none" stroke-width="1.0000000px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/> + <g transform="matrix(1.142857,0.000000,0.000000,1.142857,-28.57139,67.00008)"> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="url(#linearGradient10630)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + </g> + </g> + <g transform="translate(-163.0077,222.0147)"> + <path transform="matrix(0.685520,0.000000,0.000000,0.685520,151.7017,27.15827)" d="M 31.819805 -316.77872 A 2.2097087 2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087 2.2097087 0 1 1 31.819805 -316.77872 z" opacity="1.0000000" fill="#ffffff" fill-opacity="1.0000000" stroke="#729fcf" stroke-width="1.4587468" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(0.915572,0.000000,0.000000,0.915587,152.4091,103.5577)" d="M 31.819805 -316.77872 A 2.2097087 2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087 2.2097087 0 1 1 31.819805 -316.77872 z" opacity="1.0000000" fill="#ffffff" fill-opacity="1.0000000" stroke="#729fcf" stroke-width="1.0922043" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(0.672406,0.000000,0.000000,0.683742,153.0708,34.62149)" d="M 31.819805 -316.77872 A 2.2097087 2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087 2.2097087 0 1 1 31.819805 -316.77872 z" opacity="1.0000000" fill="#ffffff" fill-opacity="1.0000000" stroke="#729fcf" stroke-width="1.4748161" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(0.682300,0.000000,0.000000,0.680269,181.7970,30.49471)" d="M 31.819805 -316.77872 A 2.2097087 2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087 2.2097087 0 1 1 31.819805 -316.77872 z" opacity="1.0000000" fill="#ffffff" fill-opacity="1.0000000" stroke="#729fcf" stroke-width="1.4678179" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.107132,0.000000,0.000000,1.117168,157.2177,164.9217)" d="M 31.819805 -316.77872 A 2.2097087 2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087 2.2097087 0 1 1 31.819805 -316.77872 z" opacity="1.0000000" fill="#ffffff" fill-opacity="1.0000000" stroke="#729fcf" stroke-width="0.89916825" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.127592,0.000000,0.000000,1.051830,161.6119,151.3731)" d="M 31.819805 -316.77872 A 2.2097087 2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087 2.2097087 0 1 1 31.819805 -316.77872 z" opacity="1.0000000" fill="#ffffff" fill-opacity="1.0000000" stroke="#729fcf" stroke-width="0.91822928" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(0.685519,0.000000,0.000000,0.680487,164.6869,34.56369)" d="M 31.819805 -316.77872 A 2.2097087 2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087 2.2097087 0 1 1 31.819805 -316.77872 z" opacity="1.0000000" fill="#ffffff" fill-opacity="1.0000000" stroke="#729fcf" stroke-width="1.4641328" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + </g> +</svg> diff --git a/examples/svg/embedded/weatherinfo/icons/weather-storm.svg b/examples/svg/embedded/weatherinfo/icons/weather-storm.svg new file mode 100644 index 0000000..1ad47ab --- /dev/null +++ b/examples/svg/embedded/weatherinfo/icons/weather-storm.svg @@ -0,0 +1,190 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="48px" height="48px" id="svg1306"> + <defs id="defs1308"> + <linearGradient id="linearGradient8397"> + <stop offset="0" id="stop8400" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop8402" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient8397" id="linearGradient13503" gradientUnits="userSpaceOnUse" x1="238.00478" y1="-388.47476" x2="245.65462" y2="-382.64539"/> + <linearGradient id="linearGradient8315"> + <stop offset="0" id="stop8317" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop8319" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient8315" id="linearGradient13501" gradientUnits="userSpaceOnUse" x1="230.87598" y1="-390.43951" x2="235.25652" y2="-386.95901"/> + <linearGradient id="linearGradient8381"> + <stop offset="0" id="stop8383" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop8385" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient8381" id="linearGradient13499" gradientUnits="userSpaceOnUse" x1="246.74042" y1="-391.31381" x2="252.69785" y2="-385.35165"/> + <linearGradient id="linearGradient8331"> + <stop offset="0" id="stop8333" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop8335" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient8331" id="linearGradient13497" gradientUnits="userSpaceOnUse" x1="240.07379" y1="-393.40720" x2="245.82706" y2="-388.55029"/> + <linearGradient id="linearGradient8302"> + <stop offset="0" id="stop8304" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop8306" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient8302" id="linearGradient13495" gradientUnits="userSpaceOnUse" gradientTransform="translate(69.00000,155.0000)" x1="228.50261" y1="-392.30591" x2="266.36395" y2="-379.26862"/> + <linearGradient xlink:href="#linearGradient6538" id="linearGradient13143" gradientUnits="userSpaceOnUse" x1="284.80219" y1="-441.23294" x2="288.89954" y2="-436.83109"/> + <linearGradient xlink:href="#linearGradient6549" id="linearGradient13141" gradientUnits="userSpaceOnUse" x1="286.66589" y1="-439.48358" x2="289.76562" y2="-436.70703"/> + <linearGradient xlink:href="#linearGradient6527" id="linearGradient13139" gradientUnits="userSpaceOnUse" gradientTransform="translate(-35.00007,207.0001)" x1="275.94193" y1="-437.10501" x2="279.97546" y2="-431.91833"/> + <linearGradient xlink:href="#linearGradient6538" id="linearGradient13137" gradientUnits="userSpaceOnUse" x1="285.94086" y1="-439.93900" x2="289.39124" y2="-436.44290"/> + <linearGradient xlink:href="#linearGradient6513" id="linearGradient13135" gradientUnits="userSpaceOnUse" x1="286.51172" y1="-441.29074" x2="289.85379" y2="-436.14453"/> + <linearGradient xlink:href="#linearGradient6497" id="linearGradient13133" gradientUnits="userSpaceOnUse" x1="287.51730" y1="-439.75281" x2="289.67633" y2="-436.32199"/> + <linearGradient xlink:href="#linearGradient6470" id="linearGradient13131" gradientUnits="userSpaceOnUse" gradientTransform="translate(-34.00007,207.0001)" x1="271.02170" y1="-441.05182" x2="285.02859" y2="-431.96991"/> + <linearGradient xlink:href="#linearGradient8874" id="linearGradient11195" gradientUnits="userSpaceOnUse" gradientTransform="translate(14.15871,7.082841)" x1="-190.47688" y1="-332.51181" x2="-196.19046" y2="-328.53433"/> + <linearGradient xlink:href="#linearGradient8904" id="linearGradient11193" gradientUnits="userSpaceOnUse" gradientTransform="translate(13.80516,2.840199)" x1="-191.28896" y1="-328.07861" x2="-192.41396" y2="-315.32861"/> + <linearGradient id="linearGradient8874"> + <stop offset="0" id="stop8876" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop8878" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient8874" id="linearGradient11191" gradientUnits="userSpaceOnUse" gradientTransform="translate(14.15871,7.082841)" x1="-190.47688" y1="-332.51181" x2="-196.19046" y2="-328.53433"/> + <linearGradient id="linearGradient8904"> + <stop offset="0" id="stop8906" stop-color="#fcaf3e" stop-opacity="1"/> + <stop offset="1" id="stop8908" stop-color="#fcaf3e" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient8904" id="linearGradient11189" gradientUnits="userSpaceOnUse" gradientTransform="translate(13.80516,2.840199)" x1="-191.28896" y1="-328.07861" x2="-192.41396" y2="-315.32861"/> + <radialGradient xlink:href="#linearGradient5123" id="radialGradient13211" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.930946,6.185702e-16,-2.842711e-16,0.448244,245.3644,184.9256)" cx="-229.75000" cy="-343.95554" fx="-229.75000" fy="-343.95554" r="14.501380"/> + <linearGradient xlink:href="#linearGradient6538" id="linearGradient13157" gradientUnits="userSpaceOnUse" x1="284.80219" y1="-441.23294" x2="288.89954" y2="-436.83109"/> + <linearGradient id="linearGradient6549"> + <stop offset="0" id="stop6551" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6553" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6549" id="linearGradient13155" gradientUnits="userSpaceOnUse" x1="286.66589" y1="-439.48358" x2="289.76562" y2="-436.70703"/> + <linearGradient id="linearGradient6527"> + <stop offset="0" id="stop6530" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6532" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6527" id="linearGradient13153" gradientUnits="userSpaceOnUse" gradientTransform="translate(-35.00007,207.0001)" x1="275.94193" y1="-437.10501" x2="279.97546" y2="-431.91833"/> + <linearGradient id="linearGradient6538"> + <stop offset="0" id="stop6540" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6542" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6538" id="linearGradient13151" gradientUnits="userSpaceOnUse" x1="285.94086" y1="-439.93900" x2="289.39124" y2="-436.44290"/> + <linearGradient id="linearGradient6513"> + <stop offset="0" id="stop6515" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6517" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6513" id="linearGradient13149" gradientUnits="userSpaceOnUse" x1="286.51172" y1="-441.29074" x2="289.85379" y2="-436.14453"/> + <linearGradient id="linearGradient6497"> + <stop offset="0" id="stop6499" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6501" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6497" id="linearGradient13147" gradientUnits="userSpaceOnUse" x1="287.51730" y1="-439.75281" x2="289.67633" y2="-436.32199"/> + <linearGradient id="linearGradient6470"> + <stop offset="0" id="stop6472" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6474" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6470" id="linearGradient13145" gradientUnits="userSpaceOnUse" gradientTransform="translate(-34.00007,207.0001)" x1="271.02170" y1="-441.05182" x2="285.02859" y2="-431.96991"/> + <linearGradient id="linearGradient5123"> + <stop offset="0" id="stop5125" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop5127" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <radialGradient xlink:href="#linearGradient5123" id="radialGradient13068" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.930946,6.185702e-16,-2.842711e-16,0.448244,229.9269,180.9261)" cx="-229.75000" cy="-343.95554" fx="-229.75000" fy="-343.95554" r="14.501380"/> + </defs> + + <metadata id="metadata1311"> + <rdf:RDF> + <cc:Work rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> + <dc:title>weather-storm</dc:title> + <dc:date>January 2006</dc:date> + <dc:creator> + <cc:Agent> + <dc:title>Ryan Collier</dc:title> + </cc:Agent> + </dc:creator> + <dc:publisher> + <cc:Agent> + <dc:title>http://www.tango-project.org</dc:title> + </cc:Agent> + </dc:publisher> + <dc:source>http://www.pseudocode.org</dc:source> + <dc:subject> + <rdf:Bag> + <rdf:li>weather</rdf:li> + <rdf:li>applet</rdf:li> + <rdf:li>notify</rdf:li> + </rdf:Bag> + </dc:subject> + <cc:license rdf:resource="http://creativecommons.org/licenses/publicdomain/"/> + </cc:Work> + <cc:License rdf:about="http://creativecommons.org/licenses/publicdomain/"> + <cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction"/> + <cc:permits rdf:resource="http://creativecommons.org/ns#Distribution"/> + <cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks"/> + </cc:License> + </rdf:RDF> + </metadata> + <g id="layer1"> + <g transform="translate(-287.0204,244.9995)"> + <path d="M 311.50000,-242.99998 C 308.72758,-242.99998 306.39177,-241.42627 305.09375,-239.18748 C 304.14939,-239.66252 303.12856,-239.99998 302.00000,-239.99998 C 298.13600,-239.99998 295.00000,-236.86398 295.00000,-232.99998 C 295.00000,-229.13598 298.13600,-225.99998 302.00000,-225.99998 C 304.41967,-225.99998 306.43009,-227.31930 307.68750,-229.18748 C 308.82170,-228.49786 310.07648,-227.99998 311.50000,-227.99998 C 312.41312,-227.99998 313.25295,-228.23200 314.06250,-228.53123 C 314.57244,-227.66350 315.24162,-226.95151 316.06250,-226.37498 C 316.05526,-226.24460 316.00000,-226.13216 316.00000,-225.99998 C 316.00000,-222.13598 319.13599,-218.99998 323.00000,-218.99998 C 326.86400,-218.99998 330.00000,-222.13598 330.00000,-225.99998 C 330.00000,-228.36967 328.74102,-230.35832 326.93750,-231.62498 C 326.94474,-231.75536 327.00000,-231.86780 327.00000,-231.99998 C 327.00000,-235.86398 323.86401,-238.99998 320.00000,-238.99998 C 319.37730,-238.99998 318.82481,-238.77779 318.25000,-238.62498 C 317.05547,-241.18382 314.50866,-242.99998 311.50000,-242.99998 z " opacity="1.0000000" fill="#555753" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 311.50000,-241.99998 C 308.71952,-241.99998 306.36549,-240.23813 305.43750,-237.78123 C 304.45208,-238.49067 303.30607,-238.99998 302.00000,-238.99998 C 298.68800,-238.99998 296.00000,-236.31198 296.00000,-232.99998 C 296.00000,-229.68798 298.68800,-226.99998 302.00000,-226.99998 C 304.42775,-226.99998 306.49324,-228.45556 307.43750,-230.53123 C 308.55826,-229.61367 309.93964,-228.99998 311.50000,-228.99998 C 312.57454,-228.99998 313.54428,-229.31894 314.43750,-229.78123 C 314.83590,-228.78147 315.53864,-227.99491 316.37500,-227.34373 C 316.19499,-226.74811 316.00000,-226.15408 316.00000,-225.49998 C 316.00000,-221.91198 318.91200,-218.99998 322.50000,-218.99998 C 326.08800,-218.99998 329.00000,-221.91198 329.00000,-225.49998 C 329.00000,-227.86077 327.66567,-229.83017 325.78125,-230.96873 C 325.84384,-231.31596 326.00000,-231.63481 326.00000,-231.99998 C 326.00000,-235.31198 323.31200,-237.99998 320.00000,-237.99998 C 319.14702,-237.99998 318.32870,-237.82130 317.59375,-237.49998 C 316.73998,-240.09386 314.37851,-241.99997 311.50000,-241.99998 z " opacity="1.0000000" fill="url(#linearGradient13495)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(0.964447,0.000000,0.000000,0.964447,89.28852,144.5262)" d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <g> + <path d="M 250.18322 -389.30136 A 6.2313786 6.2313786 0 1 1 237.72046,-389.30136 A 6.2313786 6.2313786 0 1 1 250.18322 -389.30136 z" transform="matrix(0.882630,0.000000,0.000000,0.882630,96.18078,108.1091)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 250.18322 -389.30136 A 6.2313786 6.2313786 0 1 1 237.72046,-389.30136 A 6.2313786 6.2313786 0 1 1 250.18322 -389.30136 z" transform="matrix(0.882630,0.000000,0.000000,0.882630,96.18078,108.1091)" opacity="0.49444440" fill="url(#linearGradient13497)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <g> + <path d="M 257.25429 -385.78790 A 6.0325046 6.0325046 0 1 1 245.18928,-385.78790 A 6.0325046 6.0325046 0 1 1 257.25429 -385.78790 z" transform="matrix(0.911728,0.000000,0.000000,0.911728,90.45407,120.2336)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 257.25429 -385.78790 A 6.0325046 6.0325046 0 1 1 245.18928,-385.78790 A 6.0325046 6.0325046 0 1 1 257.25429 -385.78790 z" transform="matrix(0.911728,0.000000,0.000000,0.911728,90.45407,120.2336)" opacity="0.49444440" fill="url(#linearGradient13499)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <g> + <path d="M 237.80885 -387.88715 A 4.3752232 4.3752232 0 1 1 229.05840,-387.88715 A 4.3752232 4.3752232 0 1 1 237.80885 -387.88715 z" transform="matrix(1.142799,0.000000,0.000000,1.142799,35.23229,210.2770)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 237.80885 -387.88715 A 4.3752232 4.3752232 0 1 1 229.05840,-387.88715 A 4.3752232 4.3752232 0 1 1 237.80885 -387.88715 z" transform="matrix(1.142799,0.000000,0.000000,1.142799,35.23229,210.2770)" opacity="0.49444440" fill="url(#linearGradient13501)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <g> + <path d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z" transform="matrix(1.038636,0.000000,0.000000,1.038636,59.84906,169.4899)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z" transform="matrix(1.038636,0.000000,0.000000,1.038636,59.84907,169.4899)" opacity="0.49444440" fill="url(#linearGradient13503)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + </g> + <g transform="translate(208.8564,357.8851)"> + <path d="M -173.24571,-327.59122 L -176.37021,-323.31202 L -172.59078,-323.31202 C -172.59078,-323.31202 -175.29396,-318.78622 -180.16632,-310.38562 C -178.07014,-318.33294 -177.21353,-321.35581 -177.21353,-321.35581 L -182.37682,-321.35581 L -178.33401,-327.59122 L -173.24571,-327.59122 z " fill="#edd400" fill-opacity="1.0000000" fill-rule="evenodd" stroke="url(#linearGradient11189)" stroke-width="1.0000006px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/> + <path d="M -173.75946,-327.84461 L -177.50268,-322.68152 L -173.54648,-322.85830 C -173.54648,-322.85830 -173.68639,-322.39837 -178.55875,-313.99777 C -176.46257,-321.94509 -176.48985,-321.96275 -176.48985,-321.96275 L -181.38797,-321.87436 L -177.69871,-327.57944 L -173.75946,-327.84461 z " opacity="1.0000000" fill="url(#linearGradient11191)" fill-opacity="1.0000000" fill-rule="evenodd" stroke="none" stroke-width="1.0000006px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/> + </g> + <g transform="translate(-215.0060,252.9994)"> + <path d="M 246.49993,-238.49993 C 244.22910,-238.49993 242.39002,-236.94965 241.78118,-234.87493 C 241.08795,-235.23876 240.33667,-235.49993 239.49993,-235.49993 C 236.73993,-235.49993 234.49992,-233.25994 234.49993,-230.49993 C 234.49993,-229.92100 234.66245,-229.39223 234.84368,-228.87493 C 233.47021,-228.10419 232.49993,-226.68593 232.49993,-224.99993 C 232.49993,-222.51593 234.51593,-220.49992 236.99993,-220.49993 C 237.17706,-220.49993 255.82280,-220.49993 255.99993,-220.49993 C 258.48392,-220.49993 260.49993,-222.51593 260.49993,-224.99993 C 260.49993,-226.68593 259.52965,-228.10419 258.15618,-228.87493 C 258.33742,-229.39222 258.49993,-229.92101 258.49993,-230.49993 C 258.49993,-233.25993 256.25993,-235.49992 253.49993,-235.49993 C 252.66319,-235.49993 251.91191,-235.23876 251.21868,-234.87493 C 250.60984,-236.94965 248.77076,-238.49993 246.49993,-238.49993 z " fill="#888a85" fill-opacity="1.0000000" stroke="#555753" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 246.49993,-237.99993 C 244.31021,-237.99993 242.77633,-236.66416 242.10438,-234.15641 C 241.43592,-234.50003 240.55679,-234.98976 239.74993,-234.98976 C 237.03342,-234.98976 234.99479,-233.05094 234.99480,-230.44422 C 234.99480,-229.89745 235.26201,-229.11078 235.43676,-228.62221 C 234.11233,-227.89426 232.99993,-226.73171 232.99993,-225.24966 C 232.99993,-222.90361 234.54610,-220.99957 237.33921,-220.99957 C 237.51002,-220.99957 255.48985,-220.99957 255.66065,-220.99957 C 258.43166,-220.99957 259.99993,-222.90361 259.99993,-225.24966 C 259.99993,-226.84203 258.88753,-227.91635 257.56310,-228.64430 C 257.73786,-229.13286 258.02717,-229.89746 258.02717,-230.44422 C 258.02717,-233.05093 255.91136,-235.01185 253.24994,-235.01186 C 252.44307,-235.01186 251.60813,-234.52212 250.93967,-234.17850 C 250.29082,-236.60004 248.68966,-237.99993 246.49993,-237.99993 z " opacity="1.0000000" fill="url(#linearGradient13131)" fill-opacity="1.0000000" stroke="none" stroke-width="0.99999958" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="0.47777775" fill="url(#linearGradient13133)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <rect y="-230.99992" x="236.99994" height="9.0000000" width="20.000000" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16987,171.3114)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19818,231.8633)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19825,231.8634)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="0.47777775" fill="url(#linearGradient13135)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="0.47777775" fill="url(#linearGradient13137)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 245.46868,-233.96868 C 241.88930,-233.96868 238.99993,-231.04805 238.99993,-227.46868 C 238.99993,-225.09800 240.34936,-223.13089 242.24993,-221.99993 L 248.71868,-221.99993 C 250.61925,-223.13089 251.96868,-225.12924 251.96868,-227.49993 C 251.96868,-231.07931 249.04805,-233.96868 245.46868,-233.96868 z " opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 245.49993,-233.99993 C 241.91193,-233.99993 238.99993,-231.08792 238.99993,-227.49993 C 238.99993,-225.12353 240.34478,-223.13361 242.24993,-221.99993 L 248.74993,-221.99993 C 250.65508,-223.13361 251.99993,-225.12353 251.99993,-227.49993 C 251.99993,-231.08793 249.08793,-233.99992 245.49993,-233.99993 z " opacity="0.47777775" fill="url(#linearGradient13139)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16977,171.3113)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="0.47777775" fill="url(#linearGradient13141)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 258.95633,-230.33389 C 258.95480,-227.64933 255.68707,-226.61994 255.68707,-226.61994 C 255.68707,-226.61994 258.03581,-228.24589 258.02392,-230.32495 C 258.02392,-230.32495 258.95633,-230.33389 258.95633,-230.33389 z " fill="#555753" fill-opacity="1.0000000" fill-rule="evenodd" stroke="none" stroke-width="1.0000000px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/> + <path transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="0.47777775" fill="url(#linearGradient13143)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <g transform="translate(192.8564,354.8851)"> + <path d="M -173.24571,-327.59122 L -176.37021,-323.31202 L -172.59078,-323.31202 C -172.59078,-323.31202 -175.29396,-318.78622 -180.16632,-310.38562 C -178.07014,-318.33294 -177.21353,-321.35581 -177.21353,-321.35581 L -182.37682,-321.35581 L -178.33401,-327.59122 L -173.24571,-327.59122 z " fill="#edd400" fill-opacity="1.0000000" fill-rule="evenodd" stroke="url(#linearGradient11193)" stroke-width="1.0000006px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/> + <path d="M -173.75946,-327.84461 L -177.50268,-322.68152 L -173.54648,-322.85830 C -173.54648,-322.85830 -173.68639,-322.39837 -178.55875,-313.99777 C -176.46257,-321.94509 -176.48985,-321.96275 -176.48985,-321.96275 L -181.38797,-321.87436 L -177.69871,-327.57944 L -173.75946,-327.84461 z " opacity="1.0000000" fill="url(#linearGradient11195)" fill-opacity="1.0000000" fill-rule="evenodd" stroke="none" stroke-width="1.0000006px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/> + </g> + <path d="M 31.626355,14.999520 C 29.626255,14.999520 27.940775,16.079020 27.095785,17.614460 C 26.500875,17.392550 25.851145,17.261090 25.169835,17.261090 C 22.339625,17.261090 20.052305,19.379260 20.052305,21.978590 C 20.052305,22.432340 20.196835,22.835420 20.327445,23.250720 C 18.945125,24.115990 17.979615,25.504290 17.979615,27.155450 C 17.979615,29.808280 18.631235,32.148800 23.207195,31.961300 C 23.252315,31.959450 40.658675,32.058280 40.907605,31.943270 C 43.992815,32.169220 44.979615,29.497540 44.979615,27.243810 C 44.979615,25.543300 44.142675,24.193960 42.670345,23.366220 C 42.718305,23.107660 42.631785,22.815030 42.631785,22.543970 C 42.631785,19.944650 40.326135,17.826480 37.495915,17.826480 C 37.102425,17.826480 36.763515,17.961300 36.395375,18.038500 C 35.656915,16.270380 33.810365,14.999520 31.626355,14.999520 z " opacity="1.0000000" fill="url(#radialGradient13211)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000004" stroke-linejoin="round" stroke-miterlimit="4.0000000" stroke-dasharray="none" stroke-opacity="1.0000000"/> + <g transform="translate(-230.0203,248.9834)"> + <path d="M 246.49993,-238.49993 C 244.22910,-238.49993 242.39002,-236.94965 241.78118,-234.87493 C 241.08795,-235.23876 240.33667,-235.49993 239.49993,-235.49993 C 236.73993,-235.49993 234.49992,-233.25994 234.49993,-230.49993 C 234.49993,-229.92100 234.66245,-229.39223 234.84368,-228.87493 C 233.47021,-228.10419 232.49993,-226.68593 232.49993,-224.99993 C 232.49993,-222.51593 234.51593,-220.49992 236.99993,-220.49993 C 237.17706,-220.49993 255.82280,-220.49993 255.99993,-220.49993 C 258.48392,-220.49993 260.49993,-222.51593 260.49993,-224.99993 C 260.49993,-226.68593 259.52965,-228.10419 258.15618,-228.87493 C 258.33742,-229.39222 258.49993,-229.92101 258.49993,-230.49993 C 258.49993,-233.25993 256.25993,-235.49992 253.49993,-235.49993 C 252.66319,-235.49993 251.91191,-235.23876 251.21868,-234.87493 C 250.60984,-236.94965 248.77076,-238.49993 246.49993,-238.49993 z " fill="#888a85" fill-opacity="1.0000000" stroke="#555753" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 246.49993,-237.99993 C 244.31021,-237.99993 242.77633,-236.66416 242.10438,-234.15641 C 241.43592,-234.50003 240.55679,-234.98976 239.74993,-234.98976 C 237.03342,-234.98976 234.99479,-233.05094 234.99480,-230.44422 C 234.99480,-229.89745 235.26201,-229.11078 235.43676,-228.62221 C 234.11233,-227.89426 232.99993,-226.73171 232.99993,-225.24966 C 232.99993,-222.90361 234.54610,-220.99957 237.33921,-220.99957 C 237.51002,-220.99957 255.48985,-220.99957 255.66065,-220.99957 C 258.43166,-220.99957 259.99993,-222.90361 259.99993,-225.24966 C 259.99993,-226.84203 258.88753,-227.91635 257.56310,-228.64430 C 257.73786,-229.13286 258.02717,-229.89746 258.02717,-230.44422 C 258.02717,-233.05093 255.91136,-235.01185 253.24994,-235.01186 C 252.44307,-235.01186 251.60813,-234.52212 250.93967,-234.17850 C 250.29082,-236.60004 248.68966,-237.99993 246.49993,-237.99993 z " opacity="1.0000000" fill="url(#linearGradient13145)" fill-opacity="1.0000000" stroke="none" stroke-width="0.99999958" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="0.47777775" fill="url(#linearGradient13147)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <rect y="-230.99992" x="236.99994" height="9.0000000" width="20.000000" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16987,171.3114)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19818,231.8633)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19825,231.8634)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="0.47777775" fill="url(#linearGradient13149)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="0.47777775" fill="url(#linearGradient13151)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 245.46868,-233.96868 C 241.88930,-233.96868 238.99993,-231.04805 238.99993,-227.46868 C 238.99993,-225.09800 240.34936,-223.13089 242.24993,-221.99993 L 248.71868,-221.99993 C 250.61925,-223.13089 251.96868,-225.12924 251.96868,-227.49993 C 251.96868,-231.07931 249.04805,-233.96868 245.46868,-233.96868 z " opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 245.49993,-233.99993 C 241.91193,-233.99993 238.99993,-231.08792 238.99993,-227.49993 C 238.99993,-225.12353 240.34478,-223.13361 242.24993,-221.99993 L 248.74993,-221.99993 C 250.65508,-223.13361 251.99993,-225.12353 251.99993,-227.49993 C 251.99993,-231.08793 249.08793,-233.99992 245.49993,-233.99993 z " opacity="0.47777775" fill="url(#linearGradient13153)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16977,171.3113)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="0.47777775" fill="url(#linearGradient13155)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 258.95633,-230.33389 C 258.95480,-227.64933 255.68707,-226.61994 255.68707,-226.61994 C 255.68707,-226.61994 258.03581,-228.24589 258.02392,-230.32495 C 258.02392,-230.32495 258.95633,-230.33389 258.95633,-230.33389 z " fill="#555753" fill-opacity="1.0000000" fill-rule="evenodd" stroke="none" stroke-width="1.0000000px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/> + <path transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="0.47777775" fill="url(#linearGradient13157)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <path d="M 16.188855,11.000000 C 14.188755,11.000000 12.503275,12.079500 11.658285,13.614940 C 11.063375,13.393030 10.413645,13.261570 9.7323346,13.261570 C 6.9021246,13.261570 4.6148046,15.379740 4.6148046,17.979070 C 4.6148046,18.432820 4.7593346,18.835900 4.8899446,19.251200 C 3.5076246,20.116470 2.5421146,21.504770 2.5421146,23.155930 C 2.5421146,25.808760 3.1937346,28.149280 7.7696946,27.961780 C 7.8148146,27.959930 25.221175,28.058760 25.470105,27.943750 C 28.555315,28.169700 29.542115,25.498020 29.542115,23.244290 C 29.542115,21.543780 28.705175,20.194440 27.232845,19.366700 C 27.280805,19.108140 27.194285,18.815510 27.194285,18.544450 C 27.194285,15.945130 24.888635,13.826960 22.058415,13.826960 C 21.664925,13.826960 21.326015,13.961780 20.957875,14.038980 C 20.219415,12.270860 18.372865,11.000000 16.188855,11.000000 z " opacity="1.0000000" fill="url(#radialGradient13068)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000004" stroke-linejoin="round" stroke-miterlimit="4.0000000" stroke-dasharray="none" stroke-opacity="1.0000000"/> + </g> +</svg> diff --git a/examples/svg/embedded/weatherinfo/icons/weather-sunny-very-few-clouds.svg b/examples/svg/embedded/weatherinfo/icons/weather-sunny-very-few-clouds.svg new file mode 100644 index 0000000..a27d30a --- /dev/null +++ b/examples/svg/embedded/weatherinfo/icons/weather-sunny-very-few-clouds.svg @@ -0,0 +1,141 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="48px" height="48px" id="svg1306"> + <defs id="defs1308"> + <linearGradient xlink:href="#linearGradient6538" id="linearGradient6839" gradientUnits="userSpaceOnUse" x1="284.80219" y1="-441.23294" x2="288.89954" y2="-436.83109"/> + <linearGradient id="linearGradient6549"> + <stop offset="0" id="stop6551" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6553" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6549" id="linearGradient6837" gradientUnits="userSpaceOnUse" x1="286.66589" y1="-439.48358" x2="289.76562" y2="-436.70703"/> + <linearGradient id="linearGradient6527"> + <stop offset="0" id="stop6530" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6532" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6527" id="linearGradient6835" gradientUnits="userSpaceOnUse" x1="275.94193" y1="-437.10501" x2="279.97546" y2="-431.91833"/> + <linearGradient id="linearGradient6538"> + <stop offset="0" id="stop6540" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6542" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6538" id="linearGradient6833" gradientUnits="userSpaceOnUse" x1="285.94086" y1="-439.93900" x2="289.39124" y2="-436.44290"/> + <linearGradient id="linearGradient6513"> + <stop offset="0" id="stop6515" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6517" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6513" id="linearGradient6831" gradientUnits="userSpaceOnUse" x1="286.51172" y1="-441.29074" x2="289.85379" y2="-436.14453"/> + <linearGradient id="linearGradient6497"> + <stop offset="0" id="stop6499" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6501" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6497" id="linearGradient6829" gradientUnits="userSpaceOnUse" x1="287.51730" y1="-439.75281" x2="289.67633" y2="-436.32199"/> + <linearGradient id="linearGradient6470"> + <stop offset="0" id="stop6472" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6474" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6470" id="linearGradient6827" gradientUnits="userSpaceOnUse" x1="271.02170" y1="-441.05182" x2="285.02859" y2="-431.96991"/> + <linearGradient id="linearGradient4083"> + <stop id="stop4085" offset="0" stop-color="#ffffff" stop-opacity="0"/> + <stop offset="0.75" id="stop4089" stop-color="#ffffff" stop-opacity="0"/> + <stop id="stop4087" offset="1" stop-color="#ffffff" stop-opacity="1"/> + </linearGradient> + <linearGradient id="linearGradient4032"> + <stop id="stop4034" offset="0" stop-color="#fff7c2" stop-opacity="0.63829786"/> + <stop offset="0.59394139" id="stop4036" stop-color="#fcaf3e" stop-opacity="0.18348624"/> + <stop id="stop4038" offset="0.83850551" stop-color="#fcaf3e" stop-opacity="0.50458717"/> + <stop id="stop4040" offset="1" stop-color="#fcaf3e" stop-opacity="1"/> + </linearGradient> + <linearGradient id="linearGradient4026"> + <stop id="stop4028" offset="0" stop-color="#fff9c6" stop-opacity="1"/> + <stop offset="0.54166669" id="stop4042" stop-color="#fff28c" stop-opacity="1"/> + <stop id="stop4030" offset="1" stop-color="#ffea85" stop-opacity="1"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient4026" id="linearGradient3168" gradientUnits="userSpaceOnUse" x1="-28.968945" y1="-25.326815" x2="-37.19698" y2="-9.5590506"/> + <radialGradient xlink:href="#linearGradient4032" id="radialGradient4020" cx="-33.519073" cy="-22.113297" fx="-33.519073" fy="-22.113297" r="9.5" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.487739,1.292402,-1.10267,0.497242,-41.77393,32.41492)"/> + <radialGradient xlink:href="#linearGradient4083" id="radialGradient4081" cx="23.99999" cy="23.381506" fx="23.99999" fy="23.381506" r="19.141981" gradientTransform="matrix(1.006701,2.235326e-16,-2.23715e-16,1.007522,-0.160816,0.426981)" gradientUnits="userSpaceOnUse"/> + </defs> + + <metadata id="metadata1311"> + <rdf:RDF> + <cc:Work rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> + <dc:title>weather-clear</dc:title> + <dc:date>January 2006</dc:date> + <dc:creator> + <cc:Agent> + <dc:title>Ryan Collier (pseudo)</dc:title> + </cc:Agent> + </dc:creator> + <dc:publisher> + <cc:Agent> + <dc:title>http://www.tango-project.org</dc:title> + </cc:Agent> + </dc:publisher> + <dc:source>http://www.pseudocode.org</dc:source> + <dc:subject> + <rdf:Bag> + <rdf:li>weather</rdf:li> + <rdf:li>applet</rdf:li> + <rdf:li>notification</rdf:li> + </rdf:Bag> + </dc:subject> + <cc:license rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/"/> + <dc:contributor> + <cc:Agent> + <dc:title>Garrett LeSage</dc:title> + </cc:Agent> + </dc:contributor> + </cc:Work> + <cc:License rdf:about="http://creativecommons.org/licenses/by-sa/2.0/"> + <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/> + <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/> + <cc:requires rdf:resource="http://web.resource.org/cc/Notice"/> + <cc:requires rdf:resource="http://web.resource.org/cc/Attribution"/> + <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/> + <cc:requires rdf:resource="http://web.resource.org/cc/ShareAlike"/> + </cc:License> + </rdf:RDF> + </metadata> + <g id="layer1"> + <g> + <g opacity="0.7"> + <path d="M 24 2.5 L 21.625 9.1875 C 22.399034 9.0641318 23.191406 9 24 9 C 24.808594 9 25.600966 9.0641317 26.375 9.1875 L 24 2.5 z M 8.8125 8.78125 L 11.84375 15.21875 C 12.779034 13.928569 13.928569 12.779034 15.21875 11.84375 L 8.8125 8.78125 z M 39.21875 8.78125 L 32.78125 11.84375 C 34.071431 12.779034 35.220966 13.928569 36.15625 15.21875 L 39.21875 8.78125 z M 9.1875 21.59375 L 2.5 23.96875 L 9.1875 26.34375 C 9.0673373 25.57952 9 24.797813 9 24 C 9 23.180625 9.0608858 22.377571 9.1875 21.59375 z M 38.8125 21.625 C 38.935868 22.399034 39 23.191406 39 24 C 39 24.808594 38.935868 25.600966 38.8125 26.375 L 45.5 24 L 38.8125 21.625 z M 11.84375 32.78125 L 8.8125 39.1875 L 15.21875 36.15625 C 13.928569 35.220966 12.779034 34.071431 11.84375 32.78125 z M 36.15625 32.78125 C 35.229789 34.05926 34.087617 35.194799 32.8125 36.125 L 39.21875 39.1875 L 36.15625 32.78125 z M 21.625 38.8125 L 24 45.5 L 26.375 38.8125 C 25.600966 38.935868 24.808594 39 24 39 C 23.191406 39 22.399034 38.935868 21.625 38.8125 z " fill="#fce94f" fill-opacity="1" stroke="#fcaf3e" stroke-width="0.73732895" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-opacity="1"/> + <path d="M 24 5.25 L 22.65625 9.0625 C 23.098888 9.0231486 23.547187 9 24 9 C 24.452813 9 24.901112 9.0231486 25.34375 9.0625 L 24 5.25 z M 10.78125 10.75 L 12.5 14.375 C 13.071538 13.694089 13.724004 13.038745 14.40625 12.46875 L 10.78125 10.75 z M 37.25 10.75 L 33.625 12.46875 C 34.304675 13.038189 34.961811 13.695325 35.53125 14.375 L 37.25 10.75 z M 9.0625 22.625 L 5.28125 23.96875 L 9.0625 25.3125 C 9.024981 24.880146 9 24.442031 9 24 C 9 23.536406 9.0212735 23.077908 9.0625 22.625 z M 38.9375 22.65625 C 38.976851 23.098888 39 23.547187 39 24 C 39 24.452813 38.976851 24.901112 38.9375 25.34375 L 42.71875 24 L 38.9375 22.65625 z M 35.53125 33.59375 C 34.958293 34.27954 34.309985 34.957363 33.625 35.53125 L 37.25 37.25 L 35.53125 33.59375 z M 12.5 33.625 L 10.78125 37.21875 L 14.375 35.5 C 13.702932 34.935884 13.064116 34.297068 12.5 33.625 z M 22.65625 38.9375 L 24 42.71875 L 25.34375 38.9375 C 24.901112 38.976851 24.452813 39 24 39 C 23.547187 39 23.098888 38.976851 22.65625 38.9375 z " fill="none" fill-opacity="1" stroke="url(#radialGradient4081)" stroke-width="0.84646249" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-opacity="1"/> + </g> + <g> + <g> + <path transform="matrix(0.778062,-1.061285,1.061287,0.778062,67.47952,3.641324)" d="M -22.5 -17.5 A 9.5 9.5 0 1 1 -41.5,-17.5 A 9.5 9.5 0 1 1 -22.5 -17.5 z" fill="#ffee54" fill-opacity="1" stroke="#fcaf3e" stroke-width="0.75991178" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-opacity="1"/> + <path transform="matrix(1.244257,-0.167707,0.216642,1.251844,67.61648,40.527)" d="M -22.5 -17.5 A 9.5 9.5 0 1 1 -41.5,-17.5 A 9.5 9.5 0 1 1 -22.5 -17.5 z" fill="url(#radialGradient4020)" fill-opacity="1" stroke="none" stroke-width="1.01737845" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-opacity="1"/> + <path transform="matrix(0.715791,-0.976349,0.97635,0.715792,64.00044,5.269544)" d="M -22.5 -17.5 A 9.5 9.5 0 1 1 -41.5,-17.5 A 9.5 9.5 0 1 1 -22.5 -17.5 z" fill="none" fill-opacity="1" stroke="url(#linearGradient3168)" stroke-width="0.82601947" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-opacity="1"/> + </g> + </g> + </g> + <g transform="translate(-263.99,459.9855)"> + <path d="M 280.50000,-445.50000 C 278.22917,-445.50000 276.39009,-443.94972 275.78125,-441.87500 C 275.08802,-442.23883 274.33674,-442.50000 273.50000,-442.50000 C 270.74000,-442.50000 268.49999,-440.26001 268.50000,-437.50000 C 268.50000,-436.92107 268.66252,-436.39230 268.84375,-435.87500 C 267.47028,-435.10426 266.50000,-433.68600 266.50000,-432.00000 C 266.50000,-429.51600 268.51600,-427.49999 271.00000,-427.50000 C 271.17713,-427.50000 289.82287,-427.50000 290.00000,-427.50000 C 292.48399,-427.50000 294.50000,-429.51600 294.50000,-432.00000 C 294.50000,-433.68600 293.52972,-435.10426 292.15625,-435.87500 C 292.33749,-436.39229 292.50000,-436.92108 292.50000,-437.50000 C 292.50000,-440.26000 290.26000,-442.49999 287.50000,-442.50000 C 286.66326,-442.50000 285.91198,-442.23883 285.21875,-441.87500 C 284.60991,-443.94972 282.77083,-445.50000 280.50000,-445.50000 z " fill="#c4c5c2" fill-opacity="1.0000000" stroke="#888a85" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 280.50000,-445.00000 C 278.31028,-445.00000 276.77640,-443.66423 276.10445,-441.15648 C 275.43599,-441.50010 274.55686,-441.98983 273.75000,-441.98983 C 271.03349,-441.98983 268.99486,-440.05101 268.99487,-437.44429 C 268.99487,-436.89752 269.26208,-436.11085 269.43683,-435.62228 C 268.11240,-434.89433 267.00000,-433.73178 267.00000,-432.24973 C 267.00000,-429.90368 268.54617,-427.99964 271.33928,-427.99964 C 271.51009,-427.99964 289.48992,-427.99964 289.66072,-427.99964 C 292.43173,-427.99964 294.00000,-429.90368 294.00000,-432.24973 C 294.00000,-433.84210 292.88760,-434.91642 291.56317,-435.64437 C 291.73793,-436.13293 292.02724,-436.89753 292.02724,-437.44429 C 292.02724,-440.05100 289.91143,-442.01192 287.25001,-442.01193 C 286.44314,-442.01193 285.60820,-441.52219 284.93974,-441.17857 C 284.29089,-443.60011 282.68973,-445.00000 280.50000,-445.00000 z " opacity="1.0000000" fill="url(#linearGradient6827)" fill-opacity="1.0000000" stroke="none" stroke-width="0.99999958" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <g> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)" opacity="1.0000000" fill="url(#linearGradient6829)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <rect y="-438.00000" x="271.00000" height="9.0000000" width="20.000000" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830195,-35.68869)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <g> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19811,24.86321)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19818,24.86331)" opacity="1.0000000" fill="url(#linearGradient6831)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <g> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" opacity="1.0000000" fill="url(#linearGradient6833)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <g transform="translate(-1.000000,0.000000)"> + <path d="M 280.46875,-440.96875 C 276.88937,-440.96875 274.00000,-438.04812 274.00000,-434.46875 C 274.00000,-432.09807 275.34943,-430.13096 277.25000,-429.00000 L 283.71875,-429.00000 C 285.61932,-430.13096 286.96875,-432.12931 286.96875,-434.50000 C 286.96875,-438.07938 284.04812,-440.96875 280.46875,-440.96875 z " opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 280.50000,-441.00000 C 276.91200,-441.00000 274.00000,-438.08799 274.00000,-434.50000 C 274.00000,-432.12360 275.34485,-430.13368 277.25000,-429.00000 L 283.75000,-429.00000 C 285.65515,-430.13368 287.00000,-432.12360 287.00000,-434.50000 C 287.00000,-438.08800 284.08800,-440.99999 280.50000,-441.00000 z " opacity="1.0000000" fill="url(#linearGradient6835)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <path transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830296,-35.68884)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="url(#linearGradient6837)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 292.95640,-437.33396 C 292.95487,-434.64940 289.68714,-433.62001 289.68714,-433.62001 C 289.68714,-433.62001 292.03588,-435.24596 292.02399,-437.32502 C 292.02399,-437.32502 292.95640,-437.33396 292.95640,-437.33396 z " fill="#888a85" fill-opacity="1.0000000" fill-rule="evenodd" stroke="none" stroke-width="1.0000000px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/> + <g transform="matrix(1.142857,0.000000,0.000000,1.142857,-28.57139,67.00008)"> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" opacity="1.0000000" fill="url(#linearGradient6839)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + </g> + </g> +</svg> diff --git a/examples/svg/embedded/weatherinfo/icons/weather-sunny.svg b/examples/svg/embedded/weatherinfo/icons/weather-sunny.svg new file mode 100644 index 0000000..248199c --- /dev/null +++ b/examples/svg/embedded/weatherinfo/icons/weather-sunny.svg @@ -0,0 +1,82 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="48px" height="48px" id="svg1306"> + <defs id="defs1308"> + <linearGradient id="linearGradient4083"> + <stop id="stop4085" offset="0" stop-color="#ffffff" stop-opacity="0"/> + <stop offset="0.75" id="stop4089" stop-color="#ffffff" stop-opacity="0"/> + <stop id="stop4087" offset="1" stop-color="#ffffff" stop-opacity="1"/> + </linearGradient> + <linearGradient id="linearGradient4032"> + <stop id="stop4034" offset="0" stop-color="#fff7c2" stop-opacity="0.63829786"/> + <stop offset="0.59394139" id="stop4036" stop-color="#fcaf3e" stop-opacity="0.18348624"/> + <stop id="stop4038" offset="0.83850551" stop-color="#fcaf3e" stop-opacity="0.50458717"/> + <stop id="stop4040" offset="1" stop-color="#fcaf3e" stop-opacity="1"/> + </linearGradient> + <linearGradient id="linearGradient4026"> + <stop id="stop4028" offset="0" stop-color="#fff9c6" stop-opacity="1"/> + <stop offset="0.54166669" id="stop4042" stop-color="#fff28c" stop-opacity="1"/> + <stop id="stop4030" offset="1" stop-color="#ffea85" stop-opacity="1"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient4026" id="linearGradient3168" gradientUnits="userSpaceOnUse" x1="-28.968945" y1="-25.326815" x2="-37.19698" y2="-9.5590506"/> + <radialGradient xlink:href="#linearGradient4032" id="radialGradient4020" cx="-33.519073" cy="-22.113297" fx="-33.519073" fy="-22.113297" r="9.5" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.487739,1.292402,-1.10267,0.497242,-41.77393,32.41492)"/> + <radialGradient xlink:href="#linearGradient4083" id="radialGradient4081" cx="23.99999" cy="23.381506" fx="23.99999" fy="23.381506" r="19.141981" gradientTransform="matrix(1.006701,2.235326e-16,-2.23715e-16,1.007522,-0.160816,0.426981)" gradientUnits="userSpaceOnUse"/> + </defs> + + <metadata id="metadata1311"> + <rdf:RDF> + <cc:Work rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> + <dc:title>weather-clear</dc:title> + <dc:date>January 2006</dc:date> + <dc:creator> + <cc:Agent> + <dc:title>Ryan Collier (pseudo)</dc:title> + </cc:Agent> + </dc:creator> + <dc:publisher> + <cc:Agent> + <dc:title>http://www.tango-project.org</dc:title> + </cc:Agent> + </dc:publisher> + <dc:source>http://www.pseudocode.org</dc:source> + <dc:subject> + <rdf:Bag> + <rdf:li>weather</rdf:li> + <rdf:li>applet</rdf:li> + <rdf:li>notification</rdf:li> + </rdf:Bag> + </dc:subject> + <cc:license rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/"/> + <dc:contributor> + <cc:Agent> + <dc:title>Garrett LeSage</dc:title> + </cc:Agent> + </dc:contributor> + </cc:Work> + <cc:License rdf:about="http://creativecommons.org/licenses/by-sa/2.0/"> + <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/> + <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/> + <cc:requires rdf:resource="http://web.resource.org/cc/Notice"/> + <cc:requires rdf:resource="http://web.resource.org/cc/Attribution"/> + <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/> + <cc:requires rdf:resource="http://web.resource.org/cc/ShareAlike"/> + </cc:License> + </rdf:RDF> + </metadata> + <g id="layer1"> + <g> + <g opacity="0.7"> + <path d="M 24 2.5 L 21.625 9.1875 C 22.399034 9.0641318 23.191406 9 24 9 C 24.808594 9 25.600966 9.0641317 26.375 9.1875 L 24 2.5 z M 8.8125 8.78125 L 11.84375 15.21875 C 12.779034 13.928569 13.928569 12.779034 15.21875 11.84375 L 8.8125 8.78125 z M 39.21875 8.78125 L 32.78125 11.84375 C 34.071431 12.779034 35.220966 13.928569 36.15625 15.21875 L 39.21875 8.78125 z M 9.1875 21.59375 L 2.5 23.96875 L 9.1875 26.34375 C 9.0673373 25.57952 9 24.797813 9 24 C 9 23.180625 9.0608858 22.377571 9.1875 21.59375 z M 38.8125 21.625 C 38.935868 22.399034 39 23.191406 39 24 C 39 24.808594 38.935868 25.600966 38.8125 26.375 L 45.5 24 L 38.8125 21.625 z M 11.84375 32.78125 L 8.8125 39.1875 L 15.21875 36.15625 C 13.928569 35.220966 12.779034 34.071431 11.84375 32.78125 z M 36.15625 32.78125 C 35.229789 34.05926 34.087617 35.194799 32.8125 36.125 L 39.21875 39.1875 L 36.15625 32.78125 z M 21.625 38.8125 L 24 45.5 L 26.375 38.8125 C 25.600966 38.935868 24.808594 39 24 39 C 23.191406 39 22.399034 38.935868 21.625 38.8125 z " fill="#fce94f" fill-opacity="1" stroke="#fcaf3e" stroke-width="0.73732895" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-opacity="1"/> + <path d="M 24 5.25 L 22.65625 9.0625 C 23.098888 9.0231486 23.547187 9 24 9 C 24.452813 9 24.901112 9.0231486 25.34375 9.0625 L 24 5.25 z M 10.78125 10.75 L 12.5 14.375 C 13.071538 13.694089 13.724004 13.038745 14.40625 12.46875 L 10.78125 10.75 z M 37.25 10.75 L 33.625 12.46875 C 34.304675 13.038189 34.961811 13.695325 35.53125 14.375 L 37.25 10.75 z M 9.0625 22.625 L 5.28125 23.96875 L 9.0625 25.3125 C 9.024981 24.880146 9 24.442031 9 24 C 9 23.536406 9.0212735 23.077908 9.0625 22.625 z M 38.9375 22.65625 C 38.976851 23.098888 39 23.547187 39 24 C 39 24.452813 38.976851 24.901112 38.9375 25.34375 L 42.71875 24 L 38.9375 22.65625 z M 35.53125 33.59375 C 34.958293 34.27954 34.309985 34.957363 33.625 35.53125 L 37.25 37.25 L 35.53125 33.59375 z M 12.5 33.625 L 10.78125 37.21875 L 14.375 35.5 C 13.702932 34.935884 13.064116 34.297068 12.5 33.625 z M 22.65625 38.9375 L 24 42.71875 L 25.34375 38.9375 C 24.901112 38.976851 24.452813 39 24 39 C 23.547187 39 23.098888 38.976851 22.65625 38.9375 z " fill="none" fill-opacity="1" stroke="url(#radialGradient4081)" stroke-width="0.84646249" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-opacity="1"/> + </g> + <g> + <g> + <path transform="matrix(0.778062,-1.061285,1.061287,0.778062,67.47952,3.641324)" d="M -22.5 -17.5 A 9.5 9.5 0 1 1 -41.5,-17.5 A 9.5 9.5 0 1 1 -22.5 -17.5 z" fill="#ffee54" fill-opacity="1" stroke="#fcaf3e" stroke-width="0.75991178" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-opacity="1"/> + <path transform="matrix(1.244257,-0.167707,0.216642,1.251844,67.61648,40.527)" d="M -22.5 -17.5 A 9.5 9.5 0 1 1 -41.5,-17.5 A 9.5 9.5 0 1 1 -22.5 -17.5 z" fill="url(#radialGradient4020)" fill-opacity="1" stroke="none" stroke-width="1.01737845" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-opacity="1"/> + <path transform="matrix(0.715791,-0.976349,0.97635,0.715792,64.00044,5.269544)" d="M -22.5 -17.5 A 9.5 9.5 0 1 1 -41.5,-17.5 A 9.5 9.5 0 1 1 -22.5 -17.5 z" fill="none" fill-opacity="1" stroke="url(#linearGradient3168)" stroke-width="0.82601947" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-opacity="1"/> + </g> + </g> + </g> + </g> +</svg> diff --git a/examples/svg/embedded/weatherinfo/icons/weather-thundershower.svg b/examples/svg/embedded/weatherinfo/icons/weather-thundershower.svg new file mode 100644 index 0000000..e1c2286 --- /dev/null +++ b/examples/svg/embedded/weatherinfo/icons/weather-thundershower.svg @@ -0,0 +1,224 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="48px" height="48px" id="svg1306"> + <defs id="defs1308"> + <linearGradient id="linearGradient5358"> + <stop offset="0" id="stop5360" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop5362" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient id="linearGradient5346"> + <stop offset="0" id="stop5348" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop5350" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient id="linearGradient8397"> + <stop offset="0" id="stop8400" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop8402" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient8397" id="linearGradient13503" gradientUnits="userSpaceOnUse" x1="238.00478" y1="-388.47476" x2="245.65462" y2="-382.64539"/> + <linearGradient id="linearGradient8315"> + <stop offset="0" id="stop8317" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop8319" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient8315" id="linearGradient13501" gradientUnits="userSpaceOnUse" x1="230.87598" y1="-390.43951" x2="235.25652" y2="-386.95901"/> + <linearGradient id="linearGradient8381"> + <stop offset="0" id="stop8383" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop8385" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient8381" id="linearGradient13499" gradientUnits="userSpaceOnUse" x1="246.74042" y1="-391.31381" x2="252.69785" y2="-385.35165"/> + <linearGradient id="linearGradient8331"> + <stop offset="0" id="stop8333" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop8335" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient8331" id="linearGradient13497" gradientUnits="userSpaceOnUse" x1="240.07379" y1="-393.40720" x2="245.82706" y2="-388.55029"/> + <linearGradient id="linearGradient8302"> + <stop offset="0" id="stop8304" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop8306" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient8302" id="linearGradient13495" gradientUnits="userSpaceOnUse" gradientTransform="translate(69.00000,155.0000)" x1="228.50261" y1="-392.30591" x2="266.36395" y2="-379.26862"/> + <linearGradient xlink:href="#linearGradient6538" id="linearGradient13143" gradientUnits="userSpaceOnUse" x1="284.80219" y1="-441.23294" x2="288.89954" y2="-436.83109"/> + <linearGradient xlink:href="#linearGradient6549" id="linearGradient13141" gradientUnits="userSpaceOnUse" x1="286.66589" y1="-439.48358" x2="289.76562" y2="-436.70703"/> + <linearGradient xlink:href="#linearGradient6527" id="linearGradient13139" gradientUnits="userSpaceOnUse" gradientTransform="translate(-35.00007,207.0001)" x1="275.94193" y1="-437.10501" x2="279.97546" y2="-431.91833"/> + <linearGradient xlink:href="#linearGradient6538" id="linearGradient13137" gradientUnits="userSpaceOnUse" x1="285.94086" y1="-439.93900" x2="289.39124" y2="-436.44290"/> + <linearGradient xlink:href="#linearGradient6513" id="linearGradient13135" gradientUnits="userSpaceOnUse" x1="286.51172" y1="-441.29074" x2="289.85379" y2="-436.14453"/> + <linearGradient xlink:href="#linearGradient6497" id="linearGradient13133" gradientUnits="userSpaceOnUse" x1="287.51730" y1="-439.75281" x2="289.67633" y2="-436.32199"/> + <linearGradient xlink:href="#linearGradient6470" id="linearGradient13131" gradientUnits="userSpaceOnUse" gradientTransform="translate(-34.00007,207.0001)" x1="271.02170" y1="-441.05182" x2="285.02859" y2="-431.96991"/> + <linearGradient xlink:href="#linearGradient8874" id="linearGradient11195" gradientUnits="userSpaceOnUse" gradientTransform="translate(14.15871,7.082841)" x1="-190.47688" y1="-332.51181" x2="-196.19046" y2="-328.53433"/> + <linearGradient xlink:href="#linearGradient8904" id="linearGradient11193" gradientUnits="userSpaceOnUse" gradientTransform="translate(13.80516,2.840199)" x1="-191.28896" y1="-328.07861" x2="-192.41396" y2="-315.32861"/> + <linearGradient id="linearGradient8874"> + <stop offset="0" id="stop8876" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop8878" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient8874" id="linearGradient11191" gradientUnits="userSpaceOnUse" gradientTransform="translate(14.15871,7.082841)" x1="-190.47688" y1="-332.51181" x2="-196.19046" y2="-328.53433"/> + <linearGradient id="linearGradient8904"> + <stop offset="0" id="stop8906" stop-color="#fcaf3e" stop-opacity="1"/> + <stop offset="1" id="stop8908" stop-color="#fcaf3e" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient8904" id="linearGradient11189" gradientUnits="userSpaceOnUse" gradientTransform="translate(13.80516,2.840199)" x1="-191.28896" y1="-328.07861" x2="-192.41396" y2="-315.32861"/> + <radialGradient xlink:href="#linearGradient5123" id="radialGradient13211" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.930946,6.185702e-16,-2.842711e-16,0.448244,245.3644,184.9256)" cx="-229.75000" cy="-343.95554" fx="-229.75000" fy="-343.95554" r="14.501380"/> + <linearGradient xlink:href="#linearGradient6538" id="linearGradient13157" gradientUnits="userSpaceOnUse" x1="284.80219" y1="-441.23294" x2="288.89954" y2="-436.83109"/> + <linearGradient id="linearGradient6549"> + <stop offset="0" id="stop6551" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6553" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6549" id="linearGradient13155" gradientUnits="userSpaceOnUse" x1="286.66589" y1="-439.48358" x2="289.76562" y2="-436.70703"/> + <linearGradient id="linearGradient6527"> + <stop offset="0" id="stop6530" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6532" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6527" id="linearGradient13153" gradientUnits="userSpaceOnUse" gradientTransform="translate(-35.00007,207.0001)" x1="275.94193" y1="-437.10501" x2="279.97546" y2="-431.91833"/> + <linearGradient id="linearGradient6538"> + <stop offset="0" id="stop6540" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6542" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6538" id="linearGradient13151" gradientUnits="userSpaceOnUse" x1="285.94086" y1="-439.93900" x2="289.39124" y2="-436.44290"/> + <linearGradient id="linearGradient6513"> + <stop offset="0" id="stop6515" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6517" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6513" id="linearGradient13149" gradientUnits="userSpaceOnUse" x1="286.51172" y1="-441.29074" x2="289.85379" y2="-436.14453"/> + <linearGradient id="linearGradient6497"> + <stop offset="0" id="stop6499" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6501" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6497" id="linearGradient13147" gradientUnits="userSpaceOnUse" x1="287.51730" y1="-439.75281" x2="289.67633" y2="-436.32199"/> + <linearGradient id="linearGradient6470"> + <stop offset="0" id="stop6472" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop6474" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <linearGradient xlink:href="#linearGradient6470" id="linearGradient13145" gradientUnits="userSpaceOnUse" gradientTransform="translate(-34.00007,207.0001)" x1="271.02170" y1="-441.05182" x2="285.02859" y2="-431.96991"/> + <linearGradient id="linearGradient5123"> + <stop offset="0" id="stop5125" stop-color="#ffffff" stop-opacity="1"/> + <stop offset="1" id="stop5127" stop-color="#ffffff" stop-opacity="0"/> + </linearGradient> + <radialGradient xlink:href="#linearGradient5123" id="radialGradient13068" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.930946,6.185702e-16,-2.842711e-16,0.448244,229.9269,180.9261)" cx="-229.75000" cy="-343.95554" fx="-229.75000" fy="-343.95554" r="14.501380"/> + <radialGradient xlink:href="#linearGradient5346" id="radialGradient23739" gradientUnits="userSpaceOnUse" gradientTransform="matrix(7.065158e-2,4.154803e-2,-6.201499e-2,0.109408,207.4757,-189.8182)" cx="21.920311" cy="-382.96454" fx="21.920311" fy="-382.96454" r="21.743534"/> + <linearGradient xlink:href="#linearGradient5358" id="linearGradient23741" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-5.358613e-2,0.102849,-9.281434e-2,-5.937964e-2,198.9051,-255.6893)" x1="6.8942904" y1="-359.82382" x2="27.400387" y2="-381.30222"/> + <radialGradient xlink:href="#linearGradient5346" id="radialGradient23743" gradientUnits="userSpaceOnUse" gradientTransform="matrix(7.065158e-2,4.154803e-2,-6.201499e-2,0.109408,207.4757,-189.8182)" cx="21.920311" cy="-382.96454" fx="21.920311" fy="-382.96454" r="21.743534"/> + <linearGradient xlink:href="#linearGradient5358" id="linearGradient23745" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-5.358613e-2,0.102849,-9.281434e-2,-5.937964e-2,198.9051,-255.6893)" x1="6.8942904" y1="-359.82382" x2="27.400387" y2="-381.30222"/> + <radialGradient xlink:href="#linearGradient5346" id="radialGradient23747" gradientUnits="userSpaceOnUse" gradientTransform="matrix(7.065158e-2,4.154803e-2,-6.201499e-2,0.109408,207.4757,-189.8182)" cx="21.920311" cy="-382.96454" fx="21.920311" fy="-382.96454" r="21.743534"/> + <linearGradient xlink:href="#linearGradient5358" id="linearGradient23749" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-5.358613e-2,0.102849,-9.281434e-2,-5.937964e-2,198.9051,-255.6893)" x1="6.8942904" y1="-359.82382" x2="27.400387" y2="-381.30222"/> + </defs> + + <metadata id="metadata1311"> + <rdf:RDF> + <cc:Work rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> + <dc:title>weather-storm</dc:title> + <dc:date>January 2006</dc:date> + <dc:creator> + <cc:Agent> + <dc:title>Ryan Collier</dc:title> + </cc:Agent> + </dc:creator> + <dc:publisher> + <cc:Agent> + <dc:title>http://www.tango-project.org</dc:title> + </cc:Agent> + </dc:publisher> + <dc:source>http://www.pseudocode.org</dc:source> + <dc:subject> + <rdf:Bag> + <rdf:li>weather</rdf:li> + <rdf:li>applet</rdf:li> + <rdf:li>notify</rdf:li> + </rdf:Bag> + </dc:subject> + <cc:license rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/"/> + </cc:Work> + <cc:License rdf:about="http://creativecommons.org/licenses/by-sa/2.0/"> + <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/> + <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/> + <cc:requires rdf:resource="http://web.resource.org/cc/Notice"/> + <cc:requires rdf:resource="http://web.resource.org/cc/Attribution"/> + <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/> + <cc:requires rdf:resource="http://web.resource.org/cc/ShareAlike"/> + </cc:License> + </rdf:RDF> + </metadata> + <g id="layer1"> + <g> + <g transform="translate(-287.0204,244.9995)"> + <path d="M 311.50000,-242.99998 C 308.72758,-242.99998 306.39177,-241.42627 305.09375,-239.18748 C 304.14939,-239.66252 303.12856,-239.99998 302.00000,-239.99998 C 298.13600,-239.99998 295.00000,-236.86398 295.00000,-232.99998 C 295.00000,-229.13598 298.13600,-225.99998 302.00000,-225.99998 C 304.41967,-225.99998 306.43009,-227.31930 307.68750,-229.18748 C 308.82170,-228.49786 310.07648,-227.99998 311.50000,-227.99998 C 312.41312,-227.99998 313.25295,-228.23200 314.06250,-228.53123 C 314.57244,-227.66350 315.24162,-226.95151 316.06250,-226.37498 C 316.05526,-226.24460 316.00000,-226.13216 316.00000,-225.99998 C 316.00000,-222.13598 319.13599,-218.99998 323.00000,-218.99998 C 326.86400,-218.99998 330.00000,-222.13598 330.00000,-225.99998 C 330.00000,-228.36967 328.74102,-230.35832 326.93750,-231.62498 C 326.94474,-231.75536 327.00000,-231.86780 327.00000,-231.99998 C 327.00000,-235.86398 323.86401,-238.99998 320.00000,-238.99998 C 319.37730,-238.99998 318.82481,-238.77779 318.25000,-238.62498 C 317.05547,-241.18382 314.50866,-242.99998 311.50000,-242.99998 z " opacity="1.0000000" fill="#555753" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 311.50000,-241.99998 C 308.71952,-241.99998 306.36549,-240.23813 305.43750,-237.78123 C 304.45208,-238.49067 303.30607,-238.99998 302.00000,-238.99998 C 298.68800,-238.99998 296.00000,-236.31198 296.00000,-232.99998 C 296.00000,-229.68798 298.68800,-226.99998 302.00000,-226.99998 C 304.42775,-226.99998 306.49324,-228.45556 307.43750,-230.53123 C 308.55826,-229.61367 309.93964,-228.99998 311.50000,-228.99998 C 312.57454,-228.99998 313.54428,-229.31894 314.43750,-229.78123 C 314.83590,-228.78147 315.53864,-227.99491 316.37500,-227.34373 C 316.19499,-226.74811 316.00000,-226.15408 316.00000,-225.49998 C 316.00000,-221.91198 318.91200,-218.99998 322.50000,-218.99998 C 326.08800,-218.99998 329.00000,-221.91198 329.00000,-225.49998 C 329.00000,-227.86077 327.66567,-229.83017 325.78125,-230.96873 C 325.84384,-231.31596 326.00000,-231.63481 326.00000,-231.99998 C 326.00000,-235.31198 323.31200,-237.99998 320.00000,-237.99998 C 319.14702,-237.99998 318.32870,-237.82130 317.59375,-237.49998 C 316.73998,-240.09386 314.37851,-241.99997 311.50000,-241.99998 z " opacity="1.0000000" fill="url(#linearGradient13495)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z" transform="matrix(0.964447,0.000000,0.000000,0.964447,89.28852,144.5262)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <g> + <path transform="matrix(0.882630,0.000000,0.000000,0.882630,96.18078,108.1091)" d="M 250.18322 -389.30136 A 6.2313786 6.2313786 0 1 1 237.72046,-389.30136 A 6.2313786 6.2313786 0 1 1 250.18322 -389.30136 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(0.882630,0.000000,0.000000,0.882630,96.18078,108.1091)" d="M 250.18322 -389.30136 A 6.2313786 6.2313786 0 1 1 237.72046,-389.30136 A 6.2313786 6.2313786 0 1 1 250.18322 -389.30136 z" opacity="0.49444440" fill="url(#linearGradient13497)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <g> + <path transform="matrix(0.911728,0.000000,0.000000,0.911728,90.45407,120.2336)" d="M 257.25429 -385.78790 A 6.0325046 6.0325046 0 1 1 245.18928,-385.78790 A 6.0325046 6.0325046 0 1 1 257.25429 -385.78790 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(0.911728,0.000000,0.000000,0.911728,90.45407,120.2336)" d="M 257.25429 -385.78790 A 6.0325046 6.0325046 0 1 1 245.18928,-385.78790 A 6.0325046 6.0325046 0 1 1 257.25429 -385.78790 z" opacity="0.49444440" fill="url(#linearGradient13499)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <g> + <path transform="matrix(1.142799,0.000000,0.000000,1.142799,35.23229,210.2770)" d="M 237.80885 -387.88715 A 4.3752232 4.3752232 0 1 1 229.05840,-387.88715 A 4.3752232 4.3752232 0 1 1 237.80885 -387.88715 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.142799,0.000000,0.000000,1.142799,35.23229,210.2770)" d="M 237.80885 -387.88715 A 4.3752232 4.3752232 0 1 1 229.05840,-387.88715 A 4.3752232 4.3752232 0 1 1 237.80885 -387.88715 z" opacity="0.49444440" fill="url(#linearGradient13501)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <g> + <path transform="matrix(1.038636,0.000000,0.000000,1.038636,59.84906,169.4899)" d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path transform="matrix(1.038636,0.000000,0.000000,1.038636,59.84907,169.4899)" d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z" opacity="0.49444440" fill="url(#linearGradient13503)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + </g> + <g transform="translate(208.8564,357.8851)"> + <path d="M -173.24571,-327.59122 L -176.37021,-323.31202 L -172.59078,-323.31202 C -172.59078,-323.31202 -175.29396,-318.78622 -180.16632,-310.38562 C -178.07014,-318.33294 -177.21353,-321.35581 -177.21353,-321.35581 L -182.37682,-321.35581 L -178.33401,-327.59122 L -173.24571,-327.59122 z " fill="#edd400" fill-opacity="1.0000000" fill-rule="evenodd" stroke="url(#linearGradient11189)" stroke-width="1.0000006px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/> + <path d="M -173.75946,-327.84461 L -177.50268,-322.68152 L -173.54648,-322.85830 C -173.54648,-322.85830 -173.68639,-322.39837 -178.55875,-313.99777 C -176.46257,-321.94509 -176.48985,-321.96275 -176.48985,-321.96275 L -181.38797,-321.87436 L -177.69871,-327.57944 L -173.75946,-327.84461 z " opacity="1.0000000" fill="url(#linearGradient11191)" fill-opacity="1.0000000" fill-rule="evenodd" stroke="none" stroke-width="1.0000006px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/> + </g> + <g transform="translate(-215.0060,252.9994)"> + <path d="M 246.49993,-238.49993 C 244.22910,-238.49993 242.39002,-236.94965 241.78118,-234.87493 C 241.08795,-235.23876 240.33667,-235.49993 239.49993,-235.49993 C 236.73993,-235.49993 234.49992,-233.25994 234.49993,-230.49993 C 234.49993,-229.92100 234.66245,-229.39223 234.84368,-228.87493 C 233.47021,-228.10419 232.49993,-226.68593 232.49993,-224.99993 C 232.49993,-222.51593 234.51593,-220.49992 236.99993,-220.49993 C 237.17706,-220.49993 255.82280,-220.49993 255.99993,-220.49993 C 258.48392,-220.49993 260.49993,-222.51593 260.49993,-224.99993 C 260.49993,-226.68593 259.52965,-228.10419 258.15618,-228.87493 C 258.33742,-229.39222 258.49993,-229.92101 258.49993,-230.49993 C 258.49993,-233.25993 256.25993,-235.49992 253.49993,-235.49993 C 252.66319,-235.49993 251.91191,-235.23876 251.21868,-234.87493 C 250.60984,-236.94965 248.77076,-238.49993 246.49993,-238.49993 z " fill="#888a85" fill-opacity="1.0000000" stroke="#555753" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 246.49993,-237.99993 C 244.31021,-237.99993 242.77633,-236.66416 242.10438,-234.15641 C 241.43592,-234.50003 240.55679,-234.98976 239.74993,-234.98976 C 237.03342,-234.98976 234.99479,-233.05094 234.99480,-230.44422 C 234.99480,-229.89745 235.26201,-229.11078 235.43676,-228.62221 C 234.11233,-227.89426 232.99993,-226.73171 232.99993,-225.24966 C 232.99993,-222.90361 234.54610,-220.99957 237.33921,-220.99957 C 237.51002,-220.99957 255.48985,-220.99957 255.66065,-220.99957 C 258.43166,-220.99957 259.99993,-222.90361 259.99993,-225.24966 C 259.99993,-226.84203 258.88753,-227.91635 257.56310,-228.64430 C 257.73786,-229.13286 258.02717,-229.89746 258.02717,-230.44422 C 258.02717,-233.05093 255.91136,-235.01185 253.24994,-235.01186 C 252.44307,-235.01186 251.60813,-234.52212 250.93967,-234.17850 C 250.29082,-236.60004 248.68966,-237.99993 246.49993,-237.99993 z " opacity="1.0000000" fill="url(#linearGradient13131)" fill-opacity="1.0000000" stroke="none" stroke-width="0.99999958" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)" opacity="0.47777775" fill="url(#linearGradient13133)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <rect width="20.000000" height="9.0000000" x="236.99994" y="-230.99992" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16987,171.3114)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19818,231.8633)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19825,231.8634)" opacity="0.47777775" fill="url(#linearGradient13135)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)" opacity="0.47777775" fill="url(#linearGradient13137)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 245.46868,-233.96868 C 241.88930,-233.96868 238.99993,-231.04805 238.99993,-227.46868 C 238.99993,-225.09800 240.34936,-223.13089 242.24993,-221.99993 L 248.71868,-221.99993 C 250.61925,-223.13089 251.96868,-225.12924 251.96868,-227.49993 C 251.96868,-231.07931 249.04805,-233.96868 245.46868,-233.96868 z " opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 245.49993,-233.99993 C 241.91193,-233.99993 238.99993,-231.08792 238.99993,-227.49993 C 238.99993,-225.12353 240.34478,-223.13361 242.24993,-221.99993 L 248.74993,-221.99993 C 250.65508,-223.13361 251.99993,-225.12353 251.99993,-227.49993 C 251.99993,-231.08793 249.08793,-233.99992 245.49993,-233.99993 z " opacity="0.47777775" fill="url(#linearGradient13139)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16977,171.3113)" opacity="0.47777775" fill="url(#linearGradient13141)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 258.95633,-230.33389 C 258.95480,-227.64933 255.68707,-226.61994 255.68707,-226.61994 C 255.68707,-226.61994 258.03581,-228.24589 258.02392,-230.32495 C 258.02392,-230.32495 258.95633,-230.33389 258.95633,-230.33389 z " fill="#555753" fill-opacity="1.0000000" fill-rule="evenodd" stroke="none" stroke-width="1.0000000px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)" opacity="0.47777775" fill="url(#linearGradient13143)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <g transform="translate(192.8564,354.8851)"> + <path d="M -173.24571,-327.59122 L -176.37021,-323.31202 L -172.59078,-323.31202 C -172.59078,-323.31202 -175.29396,-318.78622 -180.16632,-310.38562 C -178.07014,-318.33294 -177.21353,-321.35581 -177.21353,-321.35581 L -182.37682,-321.35581 L -178.33401,-327.59122 L -173.24571,-327.59122 z " fill="#edd400" fill-opacity="1.0000000" fill-rule="evenodd" stroke="url(#linearGradient11193)" stroke-width="1.0000006px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/> + <path d="M -173.75946,-327.84461 L -177.50268,-322.68152 L -173.54648,-322.85830 C -173.54648,-322.85830 -173.68639,-322.39837 -178.55875,-313.99777 C -176.46257,-321.94509 -176.48985,-321.96275 -176.48985,-321.96275 L -181.38797,-321.87436 L -177.69871,-327.57944 L -173.75946,-327.84461 z " opacity="1.0000000" fill="url(#linearGradient11195)" fill-opacity="1.0000000" fill-rule="evenodd" stroke="none" stroke-width="1.0000006px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/> + </g> + <path d="M 31.626355,14.999520 C 29.626255,14.999520 27.940775,16.079020 27.095785,17.614460 C 26.500875,17.392550 25.851145,17.261090 25.169835,17.261090 C 22.339625,17.261090 20.052305,19.379260 20.052305,21.978590 C 20.052305,22.432340 20.196835,22.835420 20.327445,23.250720 C 18.945125,24.115990 17.979615,25.504290 17.979615,27.155450 C 17.979615,29.808280 18.631235,32.148800 23.207195,31.961300 C 23.252315,31.959450 40.658675,32.058280 40.907605,31.943270 C 43.992815,32.169220 44.979615,29.497540 44.979615,27.243810 C 44.979615,25.543300 44.142675,24.193960 42.670345,23.366220 C 42.718305,23.107660 42.631785,22.815030 42.631785,22.543970 C 42.631785,19.944650 40.326135,17.826480 37.495915,17.826480 C 37.102425,17.826480 36.763515,17.961300 36.395375,18.038500 C 35.656915,16.270380 33.810365,14.999520 31.626355,14.999520 z " opacity="1.0000000" fill="url(#radialGradient13211)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000004" stroke-linejoin="round" stroke-miterlimit="4.0000000" stroke-dasharray="none" stroke-opacity="1.0000000"/> + <g transform="translate(-230.0203,248.9834)"> + <path d="M 246.49993,-238.49993 C 244.22910,-238.49993 242.39002,-236.94965 241.78118,-234.87493 C 241.08795,-235.23876 240.33667,-235.49993 239.49993,-235.49993 C 236.73993,-235.49993 234.49992,-233.25994 234.49993,-230.49993 C 234.49993,-229.92100 234.66245,-229.39223 234.84368,-228.87493 C 233.47021,-228.10419 232.49993,-226.68593 232.49993,-224.99993 C 232.49993,-222.51593 234.51593,-220.49992 236.99993,-220.49993 C 237.17706,-220.49993 255.82280,-220.49993 255.99993,-220.49993 C 258.48392,-220.49993 260.49993,-222.51593 260.49993,-224.99993 C 260.49993,-226.68593 259.52965,-228.10419 258.15618,-228.87493 C 258.33742,-229.39222 258.49993,-229.92101 258.49993,-230.49993 C 258.49993,-233.25993 256.25993,-235.49992 253.49993,-235.49993 C 252.66319,-235.49993 251.91191,-235.23876 251.21868,-234.87493 C 250.60984,-236.94965 248.77076,-238.49993 246.49993,-238.49993 z " fill="#888a85" fill-opacity="1.0000000" stroke="#555753" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 246.49993,-237.99993 C 244.31021,-237.99993 242.77633,-236.66416 242.10438,-234.15641 C 241.43592,-234.50003 240.55679,-234.98976 239.74993,-234.98976 C 237.03342,-234.98976 234.99479,-233.05094 234.99480,-230.44422 C 234.99480,-229.89745 235.26201,-229.11078 235.43676,-228.62221 C 234.11233,-227.89426 232.99993,-226.73171 232.99993,-225.24966 C 232.99993,-222.90361 234.54610,-220.99957 237.33921,-220.99957 C 237.51002,-220.99957 255.48985,-220.99957 255.66065,-220.99957 C 258.43166,-220.99957 259.99993,-222.90361 259.99993,-225.24966 C 259.99993,-226.84203 258.88753,-227.91635 257.56310,-228.64430 C 257.73786,-229.13286 258.02717,-229.89746 258.02717,-230.44422 C 258.02717,-233.05093 255.91136,-235.01185 253.24994,-235.01186 C 252.44307,-235.01186 251.60813,-234.52212 250.93967,-234.17850 C 250.29082,-236.60004 248.68966,-237.99993 246.49993,-237.99993 z " opacity="1.0000000" fill="url(#linearGradient13145)" fill-opacity="1.0000000" stroke="none" stroke-width="0.99999958" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)" opacity="0.47777775" fill="url(#linearGradient13147)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <rect width="20.000000" height="9.0000000" x="236.99994" y="-230.99992" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16987,171.3114)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19818,231.8633)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19825,231.8634)" opacity="0.47777775" fill="url(#linearGradient13149)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)" opacity="0.47777775" fill="url(#linearGradient13151)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 245.46868,-233.96868 C 241.88930,-233.96868 238.99993,-231.04805 238.99993,-227.46868 C 238.99993,-225.09800 240.34936,-223.13089 242.24993,-221.99993 L 248.71868,-221.99993 C 250.61925,-223.13089 251.96868,-225.12924 251.96868,-227.49993 C 251.96868,-231.07931 249.04805,-233.96868 245.46868,-233.96868 z " opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 245.49993,-233.99993 C 241.91193,-233.99993 238.99993,-231.08792 238.99993,-227.49993 C 238.99993,-225.12353 240.34478,-223.13361 242.24993,-221.99993 L 248.74993,-221.99993 C 250.65508,-223.13361 251.99993,-225.12353 251.99993,-227.49993 C 251.99993,-231.08793 249.08793,-233.99992 245.49993,-233.99993 z " opacity="0.47777775" fill="url(#linearGradient13153)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16977,171.3113)" opacity="0.47777775" fill="url(#linearGradient13155)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 258.95633,-230.33389 C 258.95480,-227.64933 255.68707,-226.61994 255.68707,-226.61994 C 255.68707,-226.61994 258.03581,-228.24589 258.02392,-230.32495 C 258.02392,-230.32495 258.95633,-230.33389 258.95633,-230.33389 z " fill="#555753" fill-opacity="1.0000000" fill-rule="evenodd" stroke="none" stroke-width="1.0000000px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)" opacity="0.47777775" fill="url(#linearGradient13157)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/> + </g> + <path d="M 16.188855,11.000000 C 14.188755,11.000000 12.503275,12.079500 11.658285,13.614940 C 11.063375,13.393030 10.413645,13.261570 9.7323346,13.261570 C 6.9021246,13.261570 4.6148046,15.379740 4.6148046,17.979070 C 4.6148046,18.432820 4.7593346,18.835900 4.8899446,19.251200 C 3.5076246,20.116470 2.5421146,21.504770 2.5421146,23.155930 C 2.5421146,25.808760 3.1937346,28.149280 7.7696946,27.961780 C 7.8148146,27.959930 25.221175,28.058760 25.470105,27.943750 C 28.555315,28.169700 29.542115,25.498020 29.542115,23.244290 C 29.542115,21.543780 28.705175,20.194440 27.232845,19.366700 C 27.280805,19.108140 27.194285,18.815510 27.194285,18.544450 C 27.194285,15.945130 24.888635,13.826960 22.058415,13.826960 C 21.664925,13.826960 21.326015,13.961780 20.957875,14.038980 C 20.219415,12.270860 18.372865,11.000000 16.188855,11.000000 z " opacity="1.0000000" fill="url(#radialGradient13068)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000004" stroke-linejoin="round" stroke-miterlimit="4.0000000" stroke-dasharray="none" stroke-opacity="1.0000000"/> + <g transform="translate(-212.91035,271.43)"> + <path d="M 231.62587,-228.77086 C 230.58662,-229.36665 230.23015,-230.68774 230.83016,-231.71967 C 232.16166,-233.80243 233.93524,-233.26584 234.84231,-235.46138 C 236.10323,-234.12777 235.63545,-227.21367 231.62587,-228.77086 z" fill="#729fcf" fill-opacity="1" stroke="#204a87" stroke-width="1.07456863" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path d="M 234.31017,-229.9035 C 233.82059,-229.03976 232.73502,-228.74348 231.88703,-229.24216 C 231.03903,-229.74084 230.74816,-230.84657 231.23774,-231.71031 C 231.72733,-232.57405 233.84374,-232.16235 234.58388,-234 C 235.43187,-233.50133 234.79976,-230.76724 234.31017,-229.9035 z" opacity="0.46111109" fill="url(#radialGradient23739)" fill-opacity="1" stroke="none" stroke-width="1.07457018" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dashoffset="0" stroke-opacity="1"/> + <path d="M 233.02237,-229 C 228.40776,-230.07384 233.25985,-233.71939 234,-232.92154 C 230.4176,-231.55118 233.02237,-229 233.02237,-229 z" opacity="1" fill="url(#linearGradient23741)" fill-opacity="1" stroke="none" stroke-width="1.07457018" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dashoffset="0" stroke-opacity="1"/> + </g> + <g transform="translate(-193.78094,269.3383)"> + <path d="M 231.62587,-228.77086 C 230.58662,-229.36665 230.23015,-230.68774 230.83016,-231.71967 C 232.16166,-233.80243 233.93524,-233.26584 234.84231,-235.46138 C 236.10323,-234.12777 235.63545,-227.21367 231.62587,-228.77086 z" fill="#729fcf" fill-opacity="1" stroke="#204a87" stroke-width="1.07456863" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path d="M 234.31017,-229.9035 C 233.82059,-229.03976 232.73502,-228.74348 231.88703,-229.24216 C 231.03903,-229.74084 230.74816,-230.84657 231.23774,-231.71031 C 231.72733,-232.57405 233.84374,-232.16235 234.58388,-234 C 235.43187,-233.50133 234.79976,-230.76724 234.31017,-229.9035 z" opacity="0.46111109" fill="url(#radialGradient23743)" fill-opacity="1" stroke="none" stroke-width="1.07457018" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dashoffset="0" stroke-opacity="1"/> + <path d="M 233.02237,-229 C 228.40776,-230.07384 233.25985,-233.71939 234,-232.92154 C 230.4176,-231.55118 233.02237,-229 233.02237,-229 z" opacity="1" fill="url(#linearGradient23745)" fill-opacity="1" stroke="none" stroke-width="1.07457018" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dashoffset="0" stroke-opacity="1"/> + </g> + <g transform="translate(-225.96722,264.58414)"> + <path d="M 231.62587,-228.77086 C 230.58662,-229.36665 230.23015,-230.68774 230.83016,-231.71967 C 232.16166,-233.80243 233.93524,-233.26584 234.84231,-235.46138 C 236.10323,-234.12777 235.63545,-227.21367 231.62587,-228.77086 z" fill="#729fcf" fill-opacity="1" stroke="#204a87" stroke-width="1.07456863" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/> + <path d="M 234.31017,-229.9035 C 233.82059,-229.03976 232.73502,-228.74348 231.88703,-229.24216 C 231.03903,-229.74084 230.74816,-230.84657 231.23774,-231.71031 C 231.72733,-232.57405 233.84374,-232.16235 234.58388,-234 C 235.43187,-233.50133 234.79976,-230.76724 234.31017,-229.9035 z" opacity="0.46111109" fill="url(#radialGradient23747)" fill-opacity="1" stroke="none" stroke-width="1.07457018" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dashoffset="0" stroke-opacity="1"/> + <path d="M 233.02237,-229 C 228.40776,-230.07384 233.25985,-233.71939 234,-232.92154 C 230.4176,-231.55118 233.02237,-229 233.02237,-229 z" opacity="1" fill="url(#linearGradient23749)" fill-opacity="1" stroke="none" stroke-width="1.07457018" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dashoffset="0" stroke-opacity="1"/> + </g> + </g> + </g> +</svg> diff --git a/examples/svg/embedded/weatherinfo/weatherinfo.cpp b/examples/svg/embedded/weatherinfo/weatherinfo.cpp new file mode 100644 index 0000000..3648309 --- /dev/null +++ b/examples/svg/embedded/weatherinfo/weatherinfo.cpp @@ -0,0 +1,498 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the demonstration applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtCore> +#include <QtWidgets> +#include <QtNetwork> +#include <QtSvg> + +class WeatherInfo: public QMainWindow +{ + Q_OBJECT + +private: + + QGraphicsView *m_view; + QGraphicsScene m_scene; + QString city; + QGraphicsRectItem *m_statusItem; + QGraphicsTextItem *m_temperatureItem; + QGraphicsTextItem *m_conditionItem; + QGraphicsSvgItem *m_iconItem; + QList<QGraphicsRectItem*> m_forecastItems; + QList<QGraphicsTextItem*> m_dayItems; + QList<QGraphicsSvgItem*> m_conditionItems; + QList<QGraphicsTextItem*> m_rangeItems; + QTimeLine m_timeLine; + QHash<QString, QString> m_icons; + QNetworkAccessManager m_manager; + +public: + WeatherInfo(QWidget *parent = 0): QMainWindow(parent) { + + m_view = new QGraphicsView(this); + setCentralWidget(m_view); + + setupScene(); + m_view->setScene(&m_scene); + m_view->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + m_view->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + + m_view->setFrameShape(QFrame::NoFrame); + setWindowTitle("Weather Info"); + + QStringList cities; + cities << "Oslo"; + cities << "Berlin"; + cities << "Brisbane"; + cities << "Helsinki"; + cities << "San Diego"; + for (int i = 0; i < cities.count(); ++i) { + QAction *action = new QAction(cities[i], this); + connect(action, SIGNAL(triggered()), SLOT(chooseCity())); + addAction(action); + } + setContextMenuPolicy(Qt::ActionsContextMenu); + + connect(&m_manager, SIGNAL(finished(QNetworkReply*)), + this, SLOT(handleNetworkData(QNetworkReply*))); + + QTimer::singleShot(0, this, SLOT(delayedInit())); + } + +private slots: + void delayedInit() { + request("Oslo"); + } + +private slots: + + void chooseCity() { + QAction *action = qobject_cast<QAction*>(sender()); + if (action) + request(action->text()); + } + + void handleNetworkData(QNetworkReply *networkReply) { + QUrl url = networkReply->url(); + if (!networkReply->error()) + digest(QString::fromUtf8(networkReply->readAll())); + networkReply->deleteLater(); + } + + void animate(int frame) { + qreal progress = static_cast<qreal>(frame) / 100; +#if QT_VERSION >= 0x040500 + m_iconItem->setOpacity(progress); +#endif + qreal hw = width() / 2.0; + m_statusItem->setPos(-hw + hw * progress, 0); + for (int i = 0; i < m_forecastItems.count(); ++i) { + qreal ofs = i * 0.5 / m_forecastItems.count(); + qreal alpha = qBound(qreal(0), 2 * (progress - ofs), qreal(1)); +#if QT_VERSION >= 0x040500 + m_conditionItems[i]->setOpacity(alpha); +#endif + QPointF pos = m_forecastItems[i]->pos(); + if (width() > height()) { + qreal fx = width() - width() * 0.4 * alpha; + m_forecastItems[i]->setPos(fx, pos.y()); + } else { + qreal fx = height() - height() * 0.5 * alpha; + m_forecastItems[i]->setPos(pos.x(), fx); + } + } + } + +private: + + void setupScene() { + + QColor textColor = palette().color(QPalette::WindowText); + QFont textFont = font(); + textFont.setBold(true); + textFont.setPointSize(textFont.pointSize() * 2); + + m_temperatureItem = m_scene.addText(QString(), textFont); + m_temperatureItem->setDefaultTextColor(textColor); + + m_conditionItem = m_scene.addText(QString(), textFont); + m_conditionItem->setDefaultTextColor(textColor); + + m_iconItem = new QGraphicsSvgItem; + m_scene.addItem(m_iconItem); + + m_statusItem = m_scene.addRect(0, 0, 10, 10); + m_statusItem->setPen(Qt::NoPen); + m_statusItem->setBrush(Qt::NoBrush); + m_temperatureItem->setParentItem(m_statusItem); + m_conditionItem->setParentItem(m_statusItem); + m_iconItem->setParentItem(m_statusItem); + + connect(&m_timeLine, SIGNAL(frameChanged(int)), SLOT(animate(int))); + m_timeLine.setDuration(1100); + m_timeLine.setFrameRange(0, 100); + m_timeLine.setCurveShape(QTimeLine::EaseInCurve); + } + + void request(const QString &location) { + QUrl url("http://www.google.com/ig/api"); + QUrlQuery query; + query.addQueryItem("hl", "en"); + query.addQueryItem("weather", location); + url.setQuery(query); + + m_manager.get(QNetworkRequest(url)); + + city = QString(); + setWindowTitle("Loading..."); + } + + QString extractIcon(const QString &data) { + if (m_icons.isEmpty()) { + m_icons["mostly_cloudy"] = "weather-few-clouds"; + m_icons["cloudy"] = "weather-overcast"; + m_icons["mostly_sunny"] = "weather-sunny-very-few-clouds"; + m_icons["partly_cloudy"] = "weather-sunny-very-few-clouds"; + m_icons["sunny"] = "weather-sunny"; + m_icons["flurries"] = "weather-snow"; + m_icons["fog"] = "weather-fog"; + m_icons["haze"] = "weather-haze"; + m_icons["icy"] = "weather-icy"; + m_icons["sleet"] = "weather-sleet"; + m_icons["chance_of_sleet"] = "weather-sleet"; + m_icons["snow"] = "weather-snow"; + m_icons["chance_of_snow"] = "weather-snow"; + m_icons["mist"] = "weather-showers"; + m_icons["rain"] = "weather-showers"; + m_icons["chance_of_rain"] = "weather-showers"; + m_icons["storm"] = "weather-storm"; + m_icons["chance_of_storm"] = "weather-storm"; + m_icons["thunderstorm"] = "weather-thundershower"; + m_icons["chance_of_tstorm"] = "weather-thundershower"; + } + QRegExp regex("([\\w]+).gif$"); + if (regex.indexIn(data) != -1) { + QString i = regex.cap(); + i = i.left(i.length() - 4); + QString name = m_icons.value(i); + if (!name.isEmpty()) { + name.prepend(":/icons/"); + name.append(".svg"); + return name; + } + } + return QString(); + } + + static QString toCelcius(QString t, QString unit) { + bool ok = false; + int degree = t.toInt(&ok); + if (!ok) + return QString(); + if (unit != "SI") + degree = ((degree - 32) * 5 + 8)/ 9; + return QString::number(degree) + QChar(176); + } + + +#define GET_DATA_ATTR xml.attributes().value("data").toString() + + void digest(const QString &data) { + + QColor textColor = palette().color(QPalette::WindowText); + QString unitSystem; + + delete m_iconItem; + m_iconItem = new QGraphicsSvgItem(); + m_scene.addItem(m_iconItem); + m_iconItem->setParentItem(m_statusItem); + qDeleteAll(m_dayItems); + qDeleteAll(m_conditionItems); + qDeleteAll(m_rangeItems); + qDeleteAll(m_forecastItems); + m_dayItems.clear(); + m_conditionItems.clear(); + m_rangeItems.clear(); + m_forecastItems.clear(); + + QXmlStreamReader xml(data); + while (!xml.atEnd()) { + xml.readNext(); + if (xml.tokenType() == QXmlStreamReader::StartElement) { + if (xml.name() == "city") { + city = GET_DATA_ATTR; + setWindowTitle(city); + } + if (xml.name() == "unit_system") + unitSystem = xml.attributes().value("data").toString(); + // Parse current weather conditions + if (xml.name() == "current_conditions") { + while (!xml.atEnd()) { + xml.readNext(); + if (xml.name() == "current_conditions") + break; + if (xml.tokenType() == QXmlStreamReader::StartElement) { + if (xml.name() == "condition") { + m_conditionItem->setPlainText(GET_DATA_ATTR); + } + if (xml.name() == "icon") { + QString name = extractIcon(GET_DATA_ATTR); + if (!name.isEmpty()) { + delete m_iconItem; + m_iconItem = new QGraphicsSvgItem(name); + m_scene.addItem(m_iconItem); + m_iconItem->setParentItem(m_statusItem); + } + } + if (xml.name() == "temp_c") { + QString s = GET_DATA_ATTR + QChar(176); + m_temperatureItem->setPlainText(s); + } + } + } + } + // Parse and collect the forecast conditions + if (xml.name() == "forecast_conditions") { + QGraphicsTextItem *dayItem = 0; + QGraphicsSvgItem *statusItem = 0; + QString lowT, highT; + while (!xml.atEnd()) { + xml.readNext(); + if (xml.name() == "forecast_conditions") { + if (dayItem && statusItem && + !lowT.isEmpty() && !highT.isEmpty()) { + m_dayItems << dayItem; + m_conditionItems << statusItem; + QString txt = highT + '/' + lowT; + QGraphicsTextItem* rangeItem; + rangeItem = m_scene.addText(txt); + rangeItem->setDefaultTextColor(textColor); + m_rangeItems << rangeItem; + QGraphicsRectItem *box; + box = m_scene.addRect(0, 0, 10, 10); + box->setPen(Qt::NoPen); + box->setBrush(Qt::NoBrush); + m_forecastItems << box; + dayItem->setParentItem(box); + statusItem->setParentItem(box); + rangeItem->setParentItem(box); + } else { + delete dayItem; + delete statusItem; + } + break; + } + if (xml.tokenType() == QXmlStreamReader::StartElement) { + if (xml.name() == "day_of_week") { + QString s = GET_DATA_ATTR; + dayItem = m_scene.addText(s.left(3)); + dayItem->setDefaultTextColor(textColor); + } + if (xml.name() == "icon") { + QString name = extractIcon(GET_DATA_ATTR); + if (!name.isEmpty()) { + statusItem = new QGraphicsSvgItem(name); + m_scene.addItem(statusItem); + } + } + if (xml.name() == "low") + lowT = toCelcius(GET_DATA_ATTR, unitSystem); + if (xml.name() == "high") + highT = toCelcius(GET_DATA_ATTR, unitSystem); + } + } + } + + } + } + + m_timeLine.stop(); + layoutItems(); + animate(0); + m_timeLine.start(); + } + + void layoutItems() { + m_scene.setSceneRect(0, 0, width() - 1, height() - 1); + m_view->centerOn(width() / 2, height() / 2); + if (width() > height()) + layoutItemsLandscape(); + else + layoutItemsPortrait(); + } + + void layoutItemsLandscape() { + m_statusItem->setRect(0, 0, width() / 2 - 1, height() - 1); + + if (!m_iconItem->boundingRect().isEmpty()) { + qreal dim = qMin(width() * 0.6, height() * 0.8); + qreal pad = (height() - dim) / 2; + qreal sw = dim / m_iconItem->boundingRect().width(); + qreal sh = dim / m_iconItem->boundingRect().height(); + m_iconItem->setTransform(QTransform().scale(sw, sh)); + m_iconItem->setPos(1, pad); + } + + m_temperatureItem->setPos(2, 2); + qreal h = m_conditionItem->boundingRect().height(); + m_conditionItem->setPos(10, height() - h); + + if (m_dayItems.count()) { + qreal left = width() * 0.6; + qreal h = height() / m_dayItems.count(); + QFont textFont = font(); + textFont.setPixelSize(static_cast<int>(h * 0.3)); + qreal statusWidth = 0; + qreal rangeWidth = 0; + for (int i = 0; i < m_dayItems.count(); ++i) { + m_dayItems[i]->setFont(textFont); + QRectF brect = m_dayItems[i]->boundingRect(); + statusWidth = qMax(statusWidth, brect.width()); + brect = m_rangeItems[i]->boundingRect(); + rangeWidth = qMax(rangeWidth, brect.width()); + } + qreal space = width() - left - statusWidth - rangeWidth; + qreal dim = qMin(h, space); + qreal pad = statusWidth + (space - dim) / 2; + for (int i = 0; i < m_dayItems.count(); ++i) { + qreal base = h * i; + m_forecastItems[i]->setPos(left, base); + m_forecastItems[i]->setRect(0, 0, width() - left, h); + QRectF brect = m_dayItems[i]->boundingRect(); + qreal ofs = (h - brect.height()) / 2; + m_dayItems[i]->setPos(0, ofs); + brect = m_rangeItems[i]->boundingRect(); + ofs = (h - brect.height()) / 2; + m_rangeItems[i]->setPos(width() - rangeWidth - left, ofs); + brect = m_conditionItems[i]->boundingRect(); + ofs = (h - dim) / 2; + m_conditionItems[i]->setPos(pad, ofs); + if (brect.isEmpty()) + continue; + qreal sw = dim / brect.width(); + qreal sh = dim / brect.height(); + m_conditionItems[i]->setTransform(QTransform().scale(sw, sh)); + } + } + } + + void layoutItemsPortrait() { + + m_statusItem->setRect(0, 0, width() - 1, height() / 2 - 1); + + if (!m_iconItem->boundingRect().isEmpty()) { + qreal dim = qMin(width() * 0.8, height() * 0.4); + qreal ofsy = (height() / 2 - dim) / 2; + qreal ofsx = (width() - dim) / 3; + qreal sw = dim / m_iconItem->boundingRect().width(); + qreal sh = dim / m_iconItem->boundingRect().height(); + m_iconItem->setTransform(QTransform().scale(sw, sh)); + m_iconItem->setPos(ofsx, ofsy); + } + + m_temperatureItem->setPos(2, 2); + qreal ch = m_conditionItem->boundingRect().height(); + qreal cw = m_conditionItem->boundingRect().width(); + m_conditionItem->setPos(width() - cw , height() / 2 - ch - 20); + + if (m_dayItems.count()) { + qreal top = height() * 0.5; + qreal w = width() / m_dayItems.count(); + qreal statusHeight = 0; + qreal rangeHeight = 0; + for (int i = 0; i < m_dayItems.count(); ++i) { + m_dayItems[i]->setFont(font()); + QRectF brect = m_dayItems[i]->boundingRect(); + statusHeight = qMax(statusHeight, brect.height()); + brect = m_rangeItems[i]->boundingRect(); + rangeHeight = qMax(rangeHeight, brect.height()); + } + qreal space = height() - top - statusHeight - rangeHeight; + qreal dim = qMin(w, space); + + qreal boxh = statusHeight + rangeHeight + dim; + qreal pad = (height() - top - boxh) / 2; + + for (int i = 0; i < m_dayItems.count(); ++i) { + qreal base = w * i; + m_forecastItems[i]->setPos(base, top); + m_forecastItems[i]->setRect(0, 0, w, boxh); + QRectF brect = m_dayItems[i]->boundingRect(); + qreal ofs = (w - brect.width()) / 2; + m_dayItems[i]->setPos(ofs, pad); + + brect = m_rangeItems[i]->boundingRect(); + ofs = (w - brect.width()) / 2; + m_rangeItems[i]->setPos(ofs, pad + statusHeight + dim); + + brect = m_conditionItems[i]->boundingRect(); + ofs = (w - dim) / 2; + m_conditionItems[i]->setPos(ofs, pad + statusHeight); + if (brect.isEmpty()) + continue; + qreal sw = dim / brect.width(); + qreal sh = dim / brect.height(); + m_conditionItems[i]->setTransform(QTransform().scale(sw, sh)); + } + } + } + + + void resizeEvent(QResizeEvent *event) { + Q_UNUSED(event); + layoutItems(); + } + +}; + +#include "weatherinfo.moc" + +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + + WeatherInfo w; + w.resize(520, 288); + w.show(); + + return app.exec(); +} diff --git a/examples/svg/embedded/weatherinfo/weatherinfo.pro b/examples/svg/embedded/weatherinfo/weatherinfo.pro new file mode 100644 index 0000000..94aefd1 --- /dev/null +++ b/examples/svg/embedded/weatherinfo/weatherinfo.pro @@ -0,0 +1,9 @@ +TEMPLATE = app +TARGET = weatherinfo +SOURCES = weatherinfo.cpp +RESOURCES = weatherinfo.qrc +QT += network svg + +target.path = $$[QT_INSTALL_EXAMPLES]/svg/embedded/weatherinfo +INSTALLS += target +QT+=widgets diff --git a/examples/svg/embedded/weatherinfo/weatherinfo.qrc b/examples/svg/embedded/weatherinfo/weatherinfo.qrc new file mode 100644 index 0000000..6e9d224 --- /dev/null +++ b/examples/svg/embedded/weatherinfo/weatherinfo.qrc @@ -0,0 +1,16 @@ +<RCC> + <qresource prefix="/" > + <file>icons/weather-few-clouds.svg</file> + <file>icons/weather-fog.svg</file> + <file>icons/weather-haze.svg</file> + <file>icons/weather-icy.svg</file> + <file>icons/weather-overcast.svg</file> + <file>icons/weather-showers.svg</file> + <file>icons/weather-sleet.svg</file> + <file>icons/weather-snow.svg</file> + <file>icons/weather-storm.svg</file> + <file>icons/weather-sunny.svg</file> + <file>icons/weather-sunny-very-few-clouds.svg</file> + <file>icons/weather-thundershower.svg</file> + </qresource> +</RCC> diff --git a/examples/svg/embeddedsvgviewer/embeddedsvgviewer.pro b/examples/svg/embeddedsvgviewer/embeddedsvgviewer.pro index 2445f96..40d4a6c 100644 --- a/examples/svg/embeddedsvgviewer/embeddedsvgviewer.pro +++ b/examples/svg/embeddedsvgviewer/embeddedsvgviewer.pro @@ -5,10 +5,8 @@ HEADERS += embeddedsvgviewer.h SOURCES += embeddedsvgviewer.cpp main.cpp RESOURCES += embeddedsvgviewer.qrc -target.path = $$[QT_INSTALL_EXAMPLES]/qtsvg/svg/embeddedsvgviewer -sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro *.html *.svg files -sources.path = $$[QT_INSTALL_EXAMPLES]/qtsvg/svg/embeddedsvgviewer -INSTALLS += target sources +target.path = $$[QT_INSTALL_EXAMPLES]/svg/embeddedsvgviewer +INSTALLS += target wince* { DEPLOYMENT_PLUGIN += qsvg diff --git a/examples/svg/network/bearercloud/bearercloud.cpp b/examples/svg/network/bearercloud/bearercloud.cpp new file mode 100644 index 0000000..02b6c50 --- /dev/null +++ b/examples/svg/network/bearercloud/bearercloud.cpp @@ -0,0 +1,196 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "bearercloud.h" +#include "cloud.h" + +#include <QGraphicsTextItem> +#include <QTimer> +#include <QDateTime> +#include <QHostInfo> + +#include <QDebug> + +#include <math.h> + +#ifndef M_PI +#define M_PI 3.14159265358979323846 +#endif + +//! [0] +BearerCloud::BearerCloud(QObject *parent) +: QGraphicsScene(parent), timerId(0) +{ + setSceneRect(-300, -300, 600, 600); + + qsrand(QDateTime::currentDateTime().toTime_t()); + + offset[QNetworkConfiguration::Active] = 2 * M_PI * qrand() / RAND_MAX; + offset[QNetworkConfiguration::Discovered] = offset[QNetworkConfiguration::Active] + M_PI / 6; + offset[QNetworkConfiguration::Defined] = offset[QNetworkConfiguration::Discovered] - M_PI / 6; + offset[QNetworkConfiguration::Undefined] = offset[QNetworkConfiguration::Undefined] + M_PI / 6; + + thisDevice = new QGraphicsTextItem(QHostInfo::localHostName()); + thisDevice->setData(0, QLatin1String("This Device")); + thisDevice->setPos(thisDevice->boundingRect().width() / -2, + thisDevice->boundingRect().height() / -2); + addItem(thisDevice); + + qreal radius = Cloud::getRadiusForState(QNetworkConfiguration::Active); + QGraphicsEllipseItem *orbit = new QGraphicsEllipseItem(-radius, -radius, 2*radius, 2*radius); + orbit->setPen(QColor(Qt::green)); + addItem(orbit); + radius = Cloud::getRadiusForState(QNetworkConfiguration::Discovered); + orbit = new QGraphicsEllipseItem(-radius, -radius, 2*radius, 2*radius); + orbit->setPen(QColor(Qt::blue)); + addItem(orbit); + radius = Cloud::getRadiusForState(QNetworkConfiguration::Defined); + orbit = new QGraphicsEllipseItem(-radius, -radius, 2*radius, 2*radius); + orbit->setPen(QColor(Qt::darkGray)); + addItem(orbit); + radius = Cloud::getRadiusForState(QNetworkConfiguration::Undefined); + orbit = new QGraphicsEllipseItem(-radius, -radius, 2*radius, 2*radius); + orbit->setPen(QColor(Qt::lightGray)); + addItem(orbit); + + connect(&manager, SIGNAL(configurationAdded(QNetworkConfiguration)), + this, SLOT(configurationAdded(QNetworkConfiguration))); + connect(&manager, SIGNAL(configurationRemoved(QNetworkConfiguration)), + this, SLOT(configurationRemoved(QNetworkConfiguration))); + connect(&manager, SIGNAL(configurationChanged(QNetworkConfiguration)), + this, SLOT(configurationChanged(QNetworkConfiguration))); + + QTimer::singleShot(0, this, SLOT(updateConfigurations())); +} +//! [0] + +BearerCloud::~BearerCloud() +{ +} + +void BearerCloud::cloudMoved() +{ + if (!timerId) + timerId = startTimer(1000 / 25); +} + +void BearerCloud::timerEvent(QTimerEvent *) +{ + QList<Cloud *> clouds; + foreach (QGraphicsItem *item, items()) { + if (Cloud *cloud = qgraphicsitem_cast<Cloud *>(item)) + clouds << cloud; + } + + foreach (Cloud *cloud, clouds) + cloud->calculateForces(); + + bool cloudsMoved = false; + foreach (Cloud *cloud, clouds) + cloudsMoved |= cloud->advance(); + + if (!cloudsMoved) { + killTimer(timerId); + timerId = 0; + } +} + +//! [2] +void BearerCloud::configurationAdded(const QNetworkConfiguration &config) +{ + const QNetworkConfiguration::StateFlags state = config.state(); + + configStates.insert(state, config.identifier()); + + const qreal radius = Cloud::getRadiusForState(state); + const int count = configStates.count(state); + const qreal angle = 2 * M_PI / count; + + Cloud *item = new Cloud(config); + configurations.insert(config.identifier(), item); + + item->setPos(radius * cos((count-1) * angle + offset[state]), + radius * sin((count-1) * angle + offset[state])); + + addItem(item); + + cloudMoved(); +} +//! [2] + +//! [3] +void BearerCloud::configurationRemoved(const QNetworkConfiguration &config) +{ + foreach (const QNetworkConfiguration::StateFlags &state, configStates.uniqueKeys()) + configStates.remove(state, config.identifier()); + + Cloud *item = configurations.take(config.identifier()); + + item->setFinalScale(0.0); + item->setDeleteAfterAnimation(true); + + cloudMoved(); +} +//! [3] + +//! [4] +void BearerCloud::configurationChanged(const QNetworkConfiguration &config) +{ + foreach (const QNetworkConfiguration::StateFlags &state, configStates.uniqueKeys()) + configStates.remove(state, config.identifier()); + + configStates.insert(config.state(), config.identifier()); + + cloudMoved(); +} +//! [4] + +//! [1] +void BearerCloud::updateConfigurations() +{ + QList<QNetworkConfiguration> allConfigurations = manager.allConfigurations(); + + while (!allConfigurations.isEmpty()) + configurationAdded(allConfigurations.takeFirst()); + + cloudMoved(); +} +//! [1] + diff --git a/examples/svg/network/bearercloud/bearercloud.h b/examples/svg/network/bearercloud/bearercloud.h new file mode 100644 index 0000000..cd8e45e --- /dev/null +++ b/examples/svg/network/bearercloud/bearercloud.h @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QNetworkConfigurationManager> + +#include <QGraphicsScene> +#include <QMap> +#include <QHash> + +QT_USE_NAMESPACE + +class Cloud; + +class BearerCloud : public QGraphicsScene +{ + Q_OBJECT + +public: + BearerCloud(QObject *parent = 0); + ~BearerCloud(); + + void cloudMoved(); + + void timerEvent(QTimerEvent *event); + +private Q_SLOTS: + void configurationAdded(const QNetworkConfiguration &config); + void configurationRemoved(const QNetworkConfiguration &config); + void configurationChanged(const QNetworkConfiguration &config); + void updateConfigurations(); + +private: + QNetworkConfigurationManager manager; + + QGraphicsTextItem *thisDevice; + QHash<QString, Cloud *> configurations; + + QMap<QNetworkConfiguration::StateFlags, qreal> offset; + QMultiMap<QNetworkConfiguration::StateFlags, QString> configStates; + + int timerId; +}; + diff --git a/examples/svg/network/bearercloud/bearercloud.pro b/examples/svg/network/bearercloud/bearercloud.pro new file mode 100644 index 0000000..723c8c7 --- /dev/null +++ b/examples/svg/network/bearercloud/bearercloud.pro @@ -0,0 +1,18 @@ +HEADERS = bearercloud.h \ + cloud.h + +SOURCES = main.cpp \ + bearercloud.cpp \ + cloud.cpp + +RESOURCES = icons.qrc + +TARGET = bearercloud + +QT = core gui widgets network svg + +CONFIG += console + +# install +target.path = $$[QT_INSTALL_EXAMPLES]/svg/network/bearercloud +INSTALLS += target diff --git a/examples/svg/network/bearercloud/bluetooth.svg b/examples/svg/network/bearercloud/bluetooth.svg new file mode 100644 index 0000000..32e2fa3 --- /dev/null +++ b/examples/svg/network/bearercloud/bluetooth.svg @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.1" id="图层_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="21.792" height="21.819" + viewBox="0 0 21.792 21.819" overflow="visible" enable-background="new 0 0 21.792 21.819" xml:space="preserve"> +<linearGradient id="XMLID_2_" gradientUnits="userSpaceOnUse" x1="11.0322" y1="2.8701" x2="11.0322" y2="21.2133"> + <stop offset="0" style="stop-color:#95D1DB"/> + <stop offset="0.0684" style="stop-color:#7FBAE0"/> + <stop offset="0.2073" style="stop-color:#5892EA"/> + <stop offset="0.3506" style="stop-color:#3871F1"/> + <stop offset="0.4971" style="stop-color:#2058F7"/> + <stop offset="0.648" style="stop-color:#0E45FC"/> + <stop offset="0.8061" style="stop-color:#033BFE"/> + <stop offset="0.9831" style="stop-color:#0037FF"/> +</linearGradient> +<path fill="url(#XMLID_2_)" stroke="#4D4D4D" stroke-width="0.5" stroke-linejoin="round" d="M10.496,10.931l5.303-4.672 + L9.172,0.292l-0.05,9.427L9.109,9.708v0.029L7.304,8.168L6.266,9.364l1.802,1.567l-1.802,1.567l1.038,1.195l1.806-1.569v0.029 + l0.013-0.012l0.05,9.428l6.627-5.966L10.496,10.931z M10.672,3.993l2.502,2.252l-2.525,2.225L10.672,3.993z M13.174,15.617 + l-2.502,2.252l-0.023-4.477L13.174,15.617z"/> +<rect opacity="0" fill="#FFFFFF" width="21.792" height="21.792"/> +</svg> diff --git a/examples/svg/network/bearercloud/cell.svg b/examples/svg/network/bearercloud/cell.svg new file mode 100644 index 0000000..7519868 --- /dev/null +++ b/examples/svg/network/bearercloud/cell.svg @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.1" id="图层_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="15.667" height="15.794" + viewBox="0 0 15.667 15.794" style="overflow:visible;enable-background:new 0 0 15.667 15.794;" xml:space="preserve"> +<rect style="fill:none;" width="15.667" height="15.666"/> +<g> + <rect x="3.791" y="0.583" style="fill:#996633;" width="1" height="7.963"/> + <rect x="10.917" y="0.583" style="fill:#996633;" width="1" height="7.963"/> + <linearGradient id="XMLID_2_" gradientUnits="userSpaceOnUse" x1="7.8936" y1="1.6753" x2="7.8936" y2="15.1908"> + <stop offset="0" style="stop-color:#D9C7A8"/> + <stop offset="0.1575" style="stop-color:#CEB28C"/> + <stop offset="0.395" style="stop-color:#C09869"/> + <stop offset="0.6188" style="stop-color:#B58550"/> + <stop offset="0.8212" style="stop-color:#AF7940"/> + <stop offset="0.9831" style="stop-color:#AD753B"/> + </linearGradient> + <rect x="6.728" y="0.583" style="fill:url(#XMLID_2_);stroke:#000000;stroke-width:0.75;" width="2.333" height="14.836"/> + <rect x="3.433" y="2.541" style="fill:#C4AB96;stroke:#000000;stroke-width:0.75;" width="8.92" height="2.413"/> + <rect x="3.433" y="6.635" style="fill:#C4AB96;stroke:#000000;stroke-width:0.75;" width="8.92" height="2.412"/> +</g> +</svg> diff --git a/examples/svg/network/bearercloud/cloud.cpp b/examples/svg/network/bearercloud/cloud.cpp new file mode 100644 index 0000000..0531ad2 --- /dev/null +++ b/examples/svg/network/bearercloud/cloud.cpp @@ -0,0 +1,385 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "cloud.h" +#include "bearercloud.h" + +#include <qnetworksession.h> + +#include <QGraphicsTextItem> +#include <QGraphicsSvgItem> +#include <QGraphicsSceneMouseEvent> +#include <QSvgRenderer> +#include <QPainter> + +#include <QDebug> + +#include <math.h> + +static QMap<QNetworkConfiguration::BearerType, QSvgRenderer *> svgCache; + +//! [0] +Cloud::Cloud(const QNetworkConfiguration &config, QGraphicsItem *parent) +: QGraphicsItem(parent), configuration(config), deleteAfterAnimation(false) +{ + session = new QNetworkSession(configuration, this); + connect(session, SIGNAL(newConfigurationActivated()), + this, SLOT(newConfigurationActivated())); + connect(session, SIGNAL(stateChanged(QNetworkSession::State)), + this, SLOT(stateChanged(QNetworkSession::State))); + + setFlag(ItemIsMovable); +#if (QT_VERSION >= QT_VERSION_CHECK(4, 6, 0)) + setFlag(ItemSendsGeometryChanges); +#endif + setZValue(1); + + icon = new QGraphicsSvgItem(this); + text = new QGraphicsTextItem(this); + + currentScale = 0; + finalScale = 1; + setTransform(QTransform::fromScale(currentScale, currentScale), false); + setOpacity(0); + + newConfigurationActivated(); +} +//! [0] + +Cloud::~Cloud() +{ +} + +void Cloud::setFinalScale(qreal factor) +{ + finalScale = factor; +} + +void Cloud::setDeleteAfterAnimation(bool deleteAfter) +{ + deleteAfterAnimation = deleteAfter; +} + +void Cloud::calculateForces() +{ + if (!scene() || scene()->mouseGrabberItem() == this) { + newPos = pos(); + return; + } + + // sum up all the forces push this item away + qreal xvel = 0; + qreal yvel = 0; + QLineF orbitForce; + foreach (QGraphicsItem *item, scene()->items()) { + // other clouds + Cloud *cloud = qgraphicsitem_cast<Cloud *>(item); + if (!cloud && item->data(0) != QLatin1String("This Device")) + continue; + + qreal factor = 1.0; + + QLineF line(cloud ? item->mapToScene(0, 0) : QPointF(0, 0), mapToScene(0, 0)); + if (item->data(0) == QLatin1String("This Device")) + orbitForce = line; + + if (cloud) + factor = cloud->currentScale; + + qreal dx = line.dx(); + qreal dy = line.dy(); + double l = 2.0 * (dx * dx + dy * dy); + if (l > 0) { + xvel += factor * dx * 200.0 / l; + yvel += factor * dy * 200.0 / l; + } + } + + // tendency to stay at a fixed orbit + qreal orbit = getRadiusForState(configuration.state()); + qreal distance = orbitForce.length(); + + QLineF unit = orbitForce.unitVector(); + + orbitForce.setLength(xvel * unit.dx() + yvel * unit.dy()); + + qreal w = 2 - exp(-pow(distance-orbit, 2)/(2 * 50)); + + if (distance < orbit) { + xvel += orbitForce.dx() * w; + yvel += orbitForce.dy() * w; + } else { + xvel -= orbitForce.dx() * w; + yvel -= orbitForce.dy() * w; + } + + if (qAbs(xvel) < 0.1 && qAbs(yvel) < 0.1) + xvel = yvel = 0; + + QRectF sceneRect = scene()->sceneRect(); + newPos = pos() + QPointF(xvel, yvel); + newPos.setX(qMin(qMax(newPos.x(), sceneRect.left() + 10), sceneRect.right() - 10)); + newPos.setY(qMin(qMax(newPos.y(), sceneRect.top() + 10), sceneRect.bottom() - 10)); +} + +bool Cloud::advance() +{ + static const qreal scaleDelta = 0.01; + + bool animated = false; + + if (currentScale < finalScale) { + animated = true; + currentScale = qMin<qreal>(currentScale + scaleDelta, finalScale); + setTransform(QTransform::fromScale(currentScale, currentScale), false); + } else if (currentScale > finalScale) { + animated = true; + currentScale = qMax<qreal>(currentScale - scaleDelta, finalScale); + setTransform(QTransform::fromScale(currentScale, currentScale), false); + } + + if (newPos != pos()) { + setPos(newPos); + animated = true; + } + + if (opacity() != finalOpacity) { + animated = true; + if (qAbs(finalScale - currentScale) > 0.0) { + // use scale as reference + setOpacity(opacity() + scaleDelta * (finalOpacity - opacity()) / + qAbs(finalScale - currentScale)); + } else { + setOpacity(finalOpacity); + } + } + + if (!animated && deleteAfterAnimation) + deleteLater(); + + return animated; +} + +QRectF Cloud::boundingRect() const +{ + return childrenBoundingRect(); +} + +void Cloud::paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *) +{ +} + +//! [4] +QVariant Cloud::itemChange(GraphicsItemChange change, const QVariant &value) +{ + switch (change) { + case ItemPositionHasChanged: + if (BearerCloud *bearercloud = qobject_cast<BearerCloud *>(scene())) + bearercloud->cloudMoved(); + default: + ; + }; + + return QGraphicsItem::itemChange(change, value); +} +//! [4] + +//! [3] +void Cloud::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) +{ + if (event->button() == Qt::LeftButton) { + if (session->isOpen()) + session->close(); + else + session->open(); + + event->accept(); + } +} +//! [3] + +//! [2] +void Cloud::stateChanged(QNetworkSession::State state) +{ + if (configuration.name().isEmpty()) + finalOpacity = qreal(0.1); + else if (session->state() == QNetworkSession::NotAvailable) + finalOpacity = 0.5; + else + finalOpacity = 1.0; + +#if !defined(Q_OS_WINCE) + QString tooltip; + + if (configuration.name().isEmpty()) + tooltip += tr("<b>HIDDEN NETWORK</b><br>"); + else + tooltip += tr("<b>%1</b><br>").arg(configuration.name()); + +#ifndef QT_NO_NETWORKINTERFACE + const QNetworkInterface interface = session->interface(); + if (interface.isValid()) + tooltip += tr("<br>Interface: %1").arg(interface.humanReadableName()); + tooltip += tr("<br>Id: %1").arg(configuration.identifier()); +#endif + + const QString bearerTypeName = configuration.bearerTypeName(); + if (!bearerTypeName.isEmpty()) + tooltip += tr("<br>Bearer: %1").arg(bearerTypeName); + + QString s = tr("<br>State: %1 (%2)"); + switch (state) { + case QNetworkSession::Invalid: + s = s.arg(tr("Invalid")); + break; + case QNetworkSession::NotAvailable: + s = s.arg(tr("Not Available")); + break; + case QNetworkSession::Connecting: + s = s.arg(tr("Connecting")); + break; + case QNetworkSession::Connected: + s = s.arg(tr("Connected")); + break; + case QNetworkSession::Closing: + s = s.arg(tr("Closing")); + break; + case QNetworkSession::Disconnected: + s = s.arg(tr("Disconnected")); + break; + case QNetworkSession::Roaming: + s = s.arg(tr("Roaming")); + break; + default: + s = s.arg(tr("Unknown")); + } + + if (session->isOpen()) + s = s.arg(tr("Open")); + else + s = s.arg(tr("Closed")); + + tooltip += s; + + tooltip += tr("<br><br>Active time: %1 seconds").arg(session->activeTime()); + tooltip += tr("<br>Received data: %1 bytes").arg(session->bytesReceived()); + tooltip += tr("<br>Sent data: %1 bytes").arg(session->bytesWritten()); + + setToolTip(tooltip); +#else + Q_UNUSED(state); +#endif +} +//! [2] + +//! [1] +void Cloud::newConfigurationActivated() +{ + QNetworkConfiguration::BearerType bearerType = configuration.bearerType(); + if (!svgCache.contains(bearerType)) { + QSvgRenderer *renderer = 0; + switch (bearerType) { + case QNetworkConfiguration::BearerWLAN: + renderer = new QSvgRenderer(QLatin1String(":wlan.svg")); + break; + case QNetworkConfiguration::BearerEthernet: + renderer = new QSvgRenderer(QLatin1String(":lan.svg")); + break; + case QNetworkConfiguration::Bearer2G: + renderer = new QSvgRenderer(QLatin1String(":cell.svg")); + break; + case QNetworkConfiguration::BearerBluetooth: + renderer = new QSvgRenderer(QLatin1String(":bluetooth.svg")); + break; + case QNetworkConfiguration::BearerCDMA2000: + case QNetworkConfiguration::BearerWCDMA: + case QNetworkConfiguration::BearerHSPA: + renderer = new QSvgRenderer(QLatin1String(":umts.svg")); + break; + default: + renderer = new QSvgRenderer(QLatin1String(":unknown.svg")); + } + + if (renderer) + svgCache.insert(bearerType, renderer); + } + + icon->setSharedRenderer(svgCache[bearerType]); + + if (configuration.name().isEmpty()) { + text->setPlainText(tr("HIDDEN NETWORK")); + } else { + if (configuration.type() == QNetworkConfiguration::ServiceNetwork) + text->setHtml("<b>" + configuration.name() + "</b>"); + else + text->setPlainText(configuration.name()); + } + + const qreal height = icon->boundingRect().height() + text->boundingRect().height(); + + icon->setPos(icon->boundingRect().width() / -2, height / -2); + + text->setPos(text->boundingRect().width() / -2, + height / 2 - text->boundingRect().height()); + + stateChanged(session->state()); +} +//! [1] + +qreal Cloud::getRadiusForState(QNetworkConfiguration::StateFlags state) +{ + switch (state) { + case QNetworkConfiguration::Active: + return 100; + break; + case QNetworkConfiguration::Discovered: + return 150; + break; + case QNetworkConfiguration::Defined: + return 200; + break; + case QNetworkConfiguration::Undefined: + return 250; + break; + default: + return 300; + } +} + diff --git a/examples/svg/network/bearercloud/cloud.h b/examples/svg/network/bearercloud/cloud.h new file mode 100644 index 0000000..1756b81 --- /dev/null +++ b/examples/svg/network/bearercloud/cloud.h @@ -0,0 +1,98 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QNetworkConfiguration> +#include <QNetworkSession> + +#include <QGraphicsItem> +QT_USE_NAMESPACE + +QT_BEGIN_NAMESPACE +class QGraphicsTextItem; +class QGraphicsSvgItem; +QT_END_NAMESPACE + +class Cloud : public QObject, public QGraphicsItem +{ + Q_OBJECT + Q_INTERFACES(QGraphicsItem) + +public: + explicit Cloud(const QNetworkConfiguration &config, QGraphicsItem *parent = 0); + ~Cloud(); + + enum { Type = UserType + 1 }; + int type() const { return Type; } + + void setFinalScale(qreal factor); + void setDeleteAfterAnimation(bool deleteAfter); + + void calculateForces(); + + bool advance(); + QRectF boundingRect() const; + void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *); + + static qreal getRadiusForState(QNetworkConfiguration::StateFlags state); + +protected: + QVariant itemChange(GraphicsItemChange change, const QVariant &value); + void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event); + +private Q_SLOTS: + void stateChanged(QNetworkSession::State state); + void newConfigurationActivated(); + +private: + QNetworkConfiguration configuration; + QNetworkSession *session; + + QGraphicsTextItem *text; + QGraphicsSvgItem *icon; + + qreal finalOpacity; + qreal finalScale; + qreal currentScale; + + QPointF newPos; + + bool deleteAfterAnimation; +}; + diff --git a/examples/svg/network/bearercloud/gprs.svg b/examples/svg/network/bearercloud/gprs.svg new file mode 100644 index 0000000..4a992c1 --- /dev/null +++ b/examples/svg/network/bearercloud/gprs.svg @@ -0,0 +1,199 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://web.resource.org/cc/" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.0" + id="图层_1" + width="13" + height="14" + viewBox="0 0 21.228 20.825" + style="overflow:visible;enable-background:new 0 0 21.228 20.825;" + xml:space="preserve" + sodipodi:version="0.32" + inkscape:version="0.44.1" + sodipodi:docname="GPRS-online.svg" + sodipodi:docbase="/home/user"><metadata + id="metadata76"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs + id="defs74"> + <linearGradient + y2="18.770201" + x2="19.1735" + y1="2.1933999" + x1="2.5967" + gradientUnits="userSpaceOnUse" + id="XMLID_5_" + gradientTransform="matrix(1.749056,0,0,1.749987,1.149567,1.483541)"> + <stop + id="stop6" + style="stop-color:#F8DB41" + offset="0" /> + <stop + id="stop8" + style="stop-color:#F8D73F" + offset="0.1193" /> + <stop + id="stop10" + style="stop-color:#F9CB3A" + offset="0.2384" /> + <stop + id="stop12" + style="stop-color:#FAB731" + offset="0.3576" /> + <stop + id="stop14" + style="stop-color:#FC9B24" + offset="0.4768" /> + <stop + id="stop16" + style="stop-color:#FE7714" + offset="0.595" /> + <stop + id="stop18" + style="stop-color:#FE7513" + offset="0.6011" /> + </linearGradient> + + <linearGradient + y2="13.7331" + x2="24.2068" + y1="-2.8408" + x1="7.6328001" + gradientUnits="userSpaceOnUse" + id="XMLID_6_"> + <stop + id="stop23" + style="stop-color:#F8DB41" + offset="0" /> + <stop + id="stop25" + style="stop-color:#F8D73F" + offset="0.1193" /> + <stop + id="stop27" + style="stop-color:#F9CB3A" + offset="0.2384" /> + <stop + id="stop29" + style="stop-color:#FAB731" + offset="0.3576" /> + <stop + id="stop31" + style="stop-color:#FC9B24" + offset="0.4768" /> + <stop + id="stop33" + style="stop-color:#FE7714" + offset="0.595" /> + <stop + id="stop35" + style="stop-color:#FE7513" + offset="0.6011" /> + </linearGradient> + + <linearGradient + y2="23.8965" + x2="14.043" + y1="7.3242002" + x1="-2.5293" + gradientUnits="userSpaceOnUse" + id="XMLID_7_"> + <stop + id="stop40" + style="stop-color:#F8DB41" + offset="0" /> + <stop + id="stop42" + style="stop-color:#F8D73F" + offset="0.1193" /> + <stop + id="stop44" + style="stop-color:#F9CB3A" + offset="0.2384" /> + <stop + id="stop46" + style="stop-color:#FAB731" + offset="0.3576" /> + <stop + id="stop48" + style="stop-color:#FC9B24" + offset="0.4768" /> + <stop + id="stop50" + style="stop-color:#FE7714" + offset="0.595" /> + <stop + id="stop52" + style="stop-color:#FE7513" + offset="0.6011" /> + </linearGradient> + + <linearGradient + y2="18.5788" + x2="19.364" + y1="2.0039001" + x1="2.7890999" + gradientUnits="userSpaceOnUse" + id="XMLID_8_"> + <stop + id="stop57" + style="stop-color:#F8DB41" + offset="0" /> + <stop + id="stop59" + style="stop-color:#F8D73F" + offset="0.1193" /> + <stop + id="stop61" + style="stop-color:#F9CB3A" + offset="0.2384" /> + <stop + id="stop63" + style="stop-color:#FAB731" + offset="0.3576" /> + <stop + id="stop65" + style="stop-color:#FC9B24" + offset="0.4768" /> + <stop + id="stop67" + style="stop-color:#FE7714" + offset="0.595" /> + <stop + id="stop69" + style="stop-color:#FE7513" + offset="0.6011" /> + </linearGradient> + +</defs><sodipodi:namedview + inkscape:window-height="960" + inkscape:window-width="1183" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + guidetolerance="10.0" + gridtolerance="10.0" + objecttolerance="10.0" + borderopacity="1.0" + bordercolor="#666666" + pagecolor="#ffffff" + id="base" + width="13px" + height="14px" + inkscape:zoom="19.543817" + inkscape:cx="10.614" + inkscape:cy="10.386917" + inkscape:window-x="186" + inkscape:window-y="93" + inkscape:current-layer="图层_1" /> +<path + id="path20" + d="M 11.043976,12.916206 L 11.043976,9.4232323 L 19.388723,9.4232323 L 19.388723,16.573679 C 17.790085,17.616671 16.380346,18.330666 15.15076,18.708663 C 13.922922,19.084911 12.465959,19.272159 10.779869,19.272159 C 8.7054879,19.272159 7.0141507,18.934412 5.7076059,18.253667 C 4.399312,17.574672 3.3866086,16.564929 2.6677466,15.222689 C 1.9488846,13.880449 1.58683,12.336961 1.58683,10.599223 C 1.58683,8.7652372 1.9803676,7.172749 2.7674428,5.820009 C 3.5527689,4.4655191 4.7053968,3.4365268 6.2288246,2.7312819 C 7.4111865,2.190536 9.0045765,1.921038 11.008995,1.921038 C 12.939953,1.921038 14.386422,2.0890367 15.343156,2.4232842 C 16.301639,2.7610318 17.093961,3.2825279 17.728868,3.9860227 C 18.360278,4.6930174 18.834272,5.5890108 19.150851,6.6722527 L 13.938664,7.5629961 C 13.72353,6.9330008 13.361475,6.4465044 12.849002,6.1157569 C 12.33478,5.7815093 11.68588,5.6117606 10.890059,5.6117606 C 9.7111951,5.6117606 8.7632067,6.0072577 8.0653334,6.7965018 C 7.3622129,7.5839959 7.0071545,8.8352366 7.0071545,10.541474 C 7.0071545,12.35621 7.365711,13.654701 8.0740787,14.433445 C 8.7824464,15.212189 9.7776592,15.600686 11.043976,15.600686 C 11.647401,15.600686 12.224589,15.514937 12.770295,15.346938 C 13.321247,15.18069 13.943911,14.897192 14.652279,14.492945 L 14.652279,12.917956 L 11.043976,12.917956 L 11.043976,12.916206 z " + style="fill:black;stroke:white;stroke-width:1.30633846;stroke-miterlimit:4;stroke-dasharray:none;stroke-linejoin:round;stroke-linecap:butt;stroke-opacity:1;fill-opacity:1" /> +</svg> diff --git a/examples/svg/network/bearercloud/icons.qrc b/examples/svg/network/bearercloud/icons.qrc new file mode 100644 index 0000000..7dea1f2 --- /dev/null +++ b/examples/svg/network/bearercloud/icons.qrc @@ -0,0 +1,11 @@ +<!DOCTYPE RCC><RCC version="1.0"> +<qresource> + <file>wlan.svg</file> + <file>lan.svg</file> + <file>unknown.svg</file> + <file>bluetooth.svg</file> + <file>cell.svg</file> + <file>gprs.svg</file> + <file>umts.svg</file> +</qresource> +</RCC> diff --git a/examples/svg/network/bearercloud/lan.svg b/examples/svg/network/bearercloud/lan.svg new file mode 100755 index 0000000..4f7f63d --- /dev/null +++ b/examples/svg/network/bearercloud/lan.svg @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.1" id="图层_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="21.929" height="20.665" + viewBox="0 0 21.929 20.665" style="overflow:visible;enable-background:new 0 0 21.929 20.665;" xml:space="preserve"> +<g> + <linearGradient id="XMLID_3_" gradientUnits="userSpaceOnUse" x1="1.7178" y1="5.3706" x2="20.9333" y2="5.3706"> + <stop offset="0.0393" style="stop-color:#C2DC1A"/> + <stop offset="0.2192" style="stop-color:#BEDA1A"/> + <stop offset="0.3978" style="stop-color:#B2D61B"/> + <stop offset="0.5758" style="stop-color:#9ECE1D"/> + <stop offset="0.7536" style="stop-color:#82C320"/> + <stop offset="0.9298" style="stop-color:#5FB423"/> + <stop offset="0.9326" style="stop-color:#5EB423"/> + </linearGradient> + <polygon style="fill:url(#XMLID_3_);stroke:#000000;stroke-linejoin:round;" points="21.429,7.716 10.965,7.716 10.965,0.5 + 0.5,10.241 21.429,10.241 "/> + <linearGradient id="XMLID_4_" gradientUnits="userSpaceOnUse" x1="1.7178" y1="15.2944" x2="20.9333" y2="15.2944"> + <stop offset="0.0393" style="stop-color:#C2DC1A"/> + <stop offset="0.2192" style="stop-color:#BEDA1A"/> + <stop offset="0.3978" style="stop-color:#B2D61B"/> + <stop offset="0.5758" style="stop-color:#9ECE1D"/> + <stop offset="0.7536" style="stop-color:#82C320"/> + <stop offset="0.9298" style="stop-color:#5FB423"/> + <stop offset="0.9326" style="stop-color:#5EB423"/> + </linearGradient> + <polygon style="fill:url(#XMLID_4_);stroke:#000000;stroke-linejoin:round;" points="0.5,12.949 10.965,12.949 10.965,20.165 + 21.429,10.424 0.5,10.424 "/> +</g> +</svg> diff --git a/examples/svg/network/bearercloud/main.cpp b/examples/svg/network/bearercloud/main.cpp new file mode 100644 index 0000000..b81bca8 --- /dev/null +++ b/examples/svg/network/bearercloud/main.cpp @@ -0,0 +1,88 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "bearercloud.h" + +#include <QApplication> +#include <QGraphicsView> + +class CloudView : public QGraphicsView +{ + Q_OBJECT + +public: + CloudView(QGraphicsScene *scene); + ~CloudView() { } + +protected: + void resizeEvent(QResizeEvent *) { + fitInView(sceneRect(), Qt::KeepAspectRatio); + } +#ifdef Q_OS_WINCE + void hideEvent(QHideEvent *) { + qApp->quit(); + } +#endif +}; + +CloudView::CloudView(QGraphicsScene *scene) +: QGraphicsView(scene) +{ + setRenderHints(QPainter::TextAntialiasing | QPainter::Antialiasing | + QPainter::SmoothPixmapTransform); +#if defined (Q_OS_WINCE) + setWindowState(Qt::WindowMaximized); +#endif +} + +#include "main.moc" + +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + + BearerCloud bearerCloud; + + CloudView view(&bearerCloud); + view.show(); + + return app.exec(); +} + diff --git a/examples/svg/network/bearercloud/umts.svg b/examples/svg/network/bearercloud/umts.svg new file mode 100644 index 0000000..c1b372e --- /dev/null +++ b/examples/svg/network/bearercloud/umts.svg @@ -0,0 +1,200 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://web.resource.org/cc/" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.0" + id="图层_1" + width="13" + height="14" + viewBox="0 0 21.228 20.825" + style="overflow:visible;enable-background:new 0 0 21.228 20.825;" + xml:space="preserve" + sodipodi:version="0.32" + inkscape:version="0.44.1" + sodipodi:docname="umts-enabled.svg" + sodipodi:docbase="/home/user"><metadata + id="metadata76"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs + id="defs74"> + <linearGradient + y2="18.770201" + x2="19.1735" + y1="2.1933999" + x1="2.5967" + gradientUnits="userSpaceOnUse" + id="XMLID_5_" + gradientTransform="matrix(1.749056,0,0,1.749987,1.149567,1.483541)"> + <stop + id="stop6" + style="stop-color:#F8DB41" + offset="0" /> + <stop + id="stop8" + style="stop-color:#F8D73F" + offset="0.1193" /> + <stop + id="stop10" + style="stop-color:#F9CB3A" + offset="0.2384" /> + <stop + id="stop12" + style="stop-color:#FAB731" + offset="0.3576" /> + <stop + id="stop14" + style="stop-color:#FC9B24" + offset="0.4768" /> + <stop + id="stop16" + style="stop-color:#FE7714" + offset="0.595" /> + <stop + id="stop18" + style="stop-color:#FE7513" + offset="0.6011" /> + </linearGradient> + + <linearGradient + y2="13.7331" + x2="24.2068" + y1="-2.8408" + x1="7.6328001" + gradientUnits="userSpaceOnUse" + id="XMLID_6_"> + <stop + id="stop23" + style="stop-color:#F8DB41" + offset="0" /> + <stop + id="stop25" + style="stop-color:#F8D73F" + offset="0.1193" /> + <stop + id="stop27" + style="stop-color:#F9CB3A" + offset="0.2384" /> + <stop + id="stop29" + style="stop-color:#FAB731" + offset="0.3576" /> + <stop + id="stop31" + style="stop-color:#FC9B24" + offset="0.4768" /> + <stop + id="stop33" + style="stop-color:#FE7714" + offset="0.595" /> + <stop + id="stop35" + style="stop-color:#FE7513" + offset="0.6011" /> + </linearGradient> + + <linearGradient + y2="23.8965" + x2="14.043" + y1="7.3242002" + x1="-2.5293" + gradientUnits="userSpaceOnUse" + id="XMLID_7_"> + <stop + id="stop40" + style="stop-color:#F8DB41" + offset="0" /> + <stop + id="stop42" + style="stop-color:#F8D73F" + offset="0.1193" /> + <stop + id="stop44" + style="stop-color:#F9CB3A" + offset="0.2384" /> + <stop + id="stop46" + style="stop-color:#FAB731" + offset="0.3576" /> + <stop + id="stop48" + style="stop-color:#FC9B24" + offset="0.4768" /> + <stop + id="stop50" + style="stop-color:#FE7714" + offset="0.595" /> + <stop + id="stop52" + style="stop-color:#FE7513" + offset="0.6011" /> + </linearGradient> + + <linearGradient + y2="18.5788" + x2="19.364" + y1="2.0039001" + x1="2.7890999" + gradientUnits="userSpaceOnUse" + id="XMLID_8_"> + <stop + id="stop57" + style="stop-color:#F8DB41" + offset="0" /> + <stop + id="stop59" + style="stop-color:#F8D73F" + offset="0.1193" /> + <stop + id="stop61" + style="stop-color:#F9CB3A" + offset="0.2384" /> + <stop + id="stop63" + style="stop-color:#FAB731" + offset="0.3576" /> + <stop + id="stop65" + style="stop-color:#FC9B24" + offset="0.4768" /> + <stop + id="stop67" + style="stop-color:#FE7714" + offset="0.595" /> + <stop + id="stop69" + style="stop-color:#FE7513" + offset="0.6011" /> + </linearGradient> + +</defs><sodipodi:namedview + inkscape:window-height="960" + inkscape:window-width="1183" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + guidetolerance="10.0" + gridtolerance="10.0" + objecttolerance="10.0" + borderopacity="1.0" + bordercolor="#666666" + pagecolor="#ffffff" + id="base" + width="13px" + height="14px" + inkscape:zoom="53.714286" + inkscape:cx="6.5" + inkscape:cy="7" + inkscape:window-x="252" + inkscape:window-y="164" + inkscape:current-layer="图层_1" /> + +<path + style="font-size:26.12677002px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:black;fill-opacity:1;stroke:white;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" + d="M 10.438113,0.60410378 C 9.5195858,0.60412318 8.5840584,0.67216158 7.6315264,0.80821918 C 6.6789835,0.94431518 5.6924268,1.1484304 4.7228823,1.4205653 L 4.7228823,5.0436132 C 5.5223309,4.6949314 6.3643059,4.4057684 7.1722669,4.2271517 C 7.9802179,4.0485668 8.7796689,3.9720237 9.5706225,3.9720075 C 10.64222,3.9720235 11.433166,4.1846436 12.020007,4.5843536 C 12.606829,4.9840947 12.938516,5.5369062 12.938526,6.2683055 C 12.938515,7.0592656 12.623838,7.663106 12.020007,8.054315 C 11.416156,8.4370429 10.497638,8.615644 9.2644494,8.615632 L 7.1722669,8.615632 L 7.1722669,11.779421 L 9.1623917,11.779421 C 10.548667,11.779429 11.569243,11.992048 12.275151,12.442796 C 12.989544,12.885053 13.346746,13.565437 13.346757,14.43292 C 13.346746,15.2749 13.023563,15.921266 12.32618,16.372017 C 11.637281,16.822775 10.616705,17.035395 9.3154783,17.035392 C 8.4394768,17.035395 7.5719873,16.907823 6.6619784,16.67819 C 5.7604653,16.440059 4.8249372,16.116877 3.9064208,15.657613 L 3.9064208,19.433747 C 4.8674613,19.748424 5.8370084,19.995064 6.815065,20.148151 C 7.8016169,20.309742 8.7966784,20.403295 9.7747379,20.403295 C 12.547295,20.403294 14.656485,19.901511 16.102315,18.923459 C 17.548116,17.936904 18.296539,16.474077 18.296555,14.586007 C 18.296539,13.318797 17.947843,12.289717 17.275978,11.473248 C 16.612589,10.648291 15.286744,9.8267627 14.975337,9.738267 C 15.211467,9.5707147 16.382959,8.96434 16.969805,8.2584304 C 17.556621,7.544039 17.837281,6.617016 17.837296,5.5028728 C 17.837281,3.8699658 17.233439,2.6367701 16.000257,1.8287961 C 14.775552,1.0123535 12.913001,0.60412318 10.438113,0.60410378 z M 10.570571,1.2772502 C 13.045459,1.2772695 14.306521,1.5736708 15.531226,2.3901134 C 16.764408,3.1980876 17.174992,3.8601944 17.175007,5.4931014 C 17.174992,6.6072444 16.924732,7.1976942 16.337916,7.9120856 C 15.75107,8.617996 15.186496,9.1223119 15.071966,9.2290638 L 14.321733,9.8826672 C 15.605945,10.214364 16.173958,10.84372 16.837348,11.668677 C 17.509211,12.485146 17.613621,13.298168 17.613637,14.565378 C 17.613621,16.453449 16.977028,17.365815 15.531226,18.35237 C 14.085396,19.330422 12.587467,19.720376 9.8149096,19.720377 C 8.8368504,19.720377 7.7809882,19.596424 6.7944362,19.434833 C 5.8163797,19.281747 5.4689503,19.167564 4.5079098,18.852887 L 4.4775095,16.626075 C 5.3960259,17.085338 5.6790363,17.174005 6.5805495,17.412136 C 7.4905585,17.641769 8.5827919,17.809513 9.4587934,17.80951 C 10.76002,17.809513 12.167112,17.341749 12.856012,16.89099 C 13.553395,16.440238 14.111093,15.203243 14.111104,14.361263 C 14.111093,13.493779 13.591033,12.385621 12.87664,11.943364 C 12.170732,11.492617 10.853754,11.107368 9.4674791,11.10736 L 7.8041559,11.117131 L 7.8041559,9.277922 L 9.3871358,9.257293 C 10.620324,9.257304 12.006788,8.936474 12.610639,8.553746 C 13.21447,8.1625376 13.682233,7.0288655 13.682244,6.2379054 C 13.682234,5.5065062 13.268032,4.4542632 12.681211,4.0545222 C 12.09437,3.6548121 10.824621,3.2391624 9.7530236,3.2391464 C 8.9620698,3.2391624 7.9791321,3.3048486 7.1711811,3.4834335 C 6.3632201,3.66205 6.1954773,3.6645831 5.3960287,4.0132649 L 5.3862573,1.9308538 C 6.3558019,1.6587188 6.8320701,1.5566613 7.784613,1.4205653 C 8.7371446,1.2845077 9.6520438,1.2772696 10.570571,1.2772502 z " + id="text1901" + sodipodi:nodetypes="csccsssssccccsssssccssssscsssccsssccsssssccsssssccccsssssccsc" /></svg>
\ No newline at end of file diff --git a/examples/svg/network/bearercloud/unknown.svg b/examples/svg/network/bearercloud/unknown.svg new file mode 100644 index 0000000..fd10298 --- /dev/null +++ b/examples/svg/network/bearercloud/unknown.svg @@ -0,0 +1,76 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="25" + height="9.0681238" + id="svg2" + sodipodi:version="0.32" + inkscape:version="0.46" + version="1.0" + sodipodi:docname="unknown.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape"> + <defs + id="defs4"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective10" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="19.416667" + inkscape:cx="15.244635" + inkscape:cy="11.639485" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1459" + inkscape:window-height="964" + inkscape:window-x="453" + inkscape:window-y="166" /> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-6.891787e-8,-19.931876)"> + <text + xml:space="preserve" + style="font-size:13.16195393px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" + x="-1.0539845" + y="29" + id="text3239"><tspan + sodipodi:role="line" + id="tspan3241" + x="-1.0539845" + y="29">NET</tspan></text> + </g> +</svg> diff --git a/examples/svg/network/bearercloud/wlan.svg b/examples/svg/network/bearercloud/wlan.svg new file mode 100644 index 0000000..8b86089 --- /dev/null +++ b/examples/svg/network/bearercloud/wlan.svg @@ -0,0 +1,151 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="27" + height="29" + id="svg2" + sodipodi:version="0.32" + inkscape:version="0.46" + version="1.0" + sodipodi:docname="wlan.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape"> + <defs + id="defs4"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective10" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="19.416667" + inkscape:cx="23.665236" + inkscape:cy="11.639485" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1912" + inkscape:window-height="1130" + inkscape:window-x="0" + inkscape:window-y="0" /> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + id="g6334" + transform="translate(1.0000001,0)"> + <path + id="path2393" + d="M 12.500248,9.499893 L 12.500248,28.500095" + style="fill:none;fill-rule:evenodd;stroke:#3bb3ff;stroke-width:0.99981093;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:open="true" + sodipodi:end="4.1887902" + sodipodi:start="2.0943951" + transform="matrix(1.0216765,0,0,1.0324764,0.4493163,-22.692096)" + d="M 8.8583691,34.085043 A 3.9141631,3.9141631 0 0 1 8.8583691,27.305513" + sodipodi:ry="3.9141631" + sodipodi:rx="3.9141631" + sodipodi:cy="30.695278" + sodipodi:cx="10.815451" + id="path3171" + style="fill:none;fill-opacity:0;stroke:#3bb3ff;stroke-width:0.97365081;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + sodipodi:open="true" + sodipodi:end="4.1887902" + sodipodi:start="2.0943951" + transform="matrix(1.6055152,0,0,1.6224868,-7.5798083,-40.80263)" + d="M 8.8583691,34.085043 A 3.9141631,3.9141631 0 0 1 8.8583691,27.305513" + sodipodi:ry="3.9141631" + sodipodi:rx="3.9141631" + sodipodi:cy="30.695278" + sodipodi:cx="10.815451" + id="path3175" + style="fill:none;fill-opacity:0;stroke:#3bb3ff;stroke-width:0.61958688;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + sodipodi:open="true" + sodipodi:end="4.1887902" + sodipodi:start="2.0943951" + transform="matrix(2.4812855,0,0,2.5075146,-17.62358,-67.968804)" + d="M 8.8583691,34.085043 A 3.9141631,3.9141631 0 0 1 8.8583691,27.305513" + sodipodi:ry="3.9141631" + sodipodi:rx="3.9141631" + sodipodi:cy="30.695278" + sodipodi:cx="10.815451" + id="path3177" + style="fill:none;fill-opacity:0;stroke:#3bb3ff;stroke-width:0.40090355;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + sodipodi:open="true" + sodipodi:end="4.1887902" + sodipodi:start="2.0943951" + transform="matrix(-1.0216765,0,0,1.0324764,24.550388,-22.692096)" + d="M 8.8583691,34.085043 A 3.9141631,3.9141631 0 0 1 8.8583691,27.305513" + sodipodi:ry="3.9141631" + sodipodi:rx="3.9141631" + sodipodi:cy="30.695278" + sodipodi:cx="10.815451" + id="path3179" + style="fill:none;fill-opacity:0;stroke:#3bb3ff;stroke-width:0.97365081;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + sodipodi:open="true" + sodipodi:end="4.1887902" + sodipodi:start="2.0943951" + transform="matrix(-1.6055152,0,0,1.6224868,32.580246,-40.80263)" + d="M 8.8583691,34.085043 A 3.9141631,3.9141631 0 0 1 8.8583691,27.305513" + sodipodi:ry="3.9141631" + sodipodi:rx="3.9141631" + sodipodi:cy="30.695278" + sodipodi:cx="10.815451" + id="path3181" + style="fill:none;fill-opacity:0;stroke:#3bb3ff;stroke-width:0.61958688;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + <path + sodipodi:open="true" + sodipodi:end="4.1887902" + sodipodi:start="2.0943951" + transform="matrix(-2.4812855,0,0,2.5075146,42.623143,-67.968804)" + d="M 8.8583691,34.085043 A 3.9141631,3.9141631 0 0 1 8.8583691,27.305513" + sodipodi:ry="3.9141631" + sodipodi:rx="3.9141631" + sodipodi:cy="30.695278" + sodipodi:cx="10.815451" + id="path3183" + style="fill:none;fill-opacity:0;stroke:#3bb3ff;stroke-width:0.40090355;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + sodipodi:type="arc" /> + </g> + </g> +</svg> diff --git a/examples/svg/network/network.pro b/examples/svg/network/network.pro new file mode 100644 index 0000000..6cf6c42 --- /dev/null +++ b/examples/svg/network/network.pro @@ -0,0 +1,3 @@ +TEMPLATE = subdirs +!contains(QT_CONFIG, no-widgets): SUBDIRS += bearercloud +QT+=widgets diff --git a/examples/svg/opengl/framebufferobject/bubbles.svg b/examples/svg/opengl/framebufferobject/bubbles.svg new file mode 100644 index 0000000..5173012 --- /dev/null +++ b/examples/svg/opengl/framebufferobject/bubbles.svg @@ -0,0 +1,215 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +<svg width="20cm" height="15cm" viewBox="0 0 800 600" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink/" + baseProfile="tiny" version="1.2"> + <title>Spheres</title> + <desc>Semi-transparent bubbles on a colored background.</desc> + <defs> + <!-- Create radial gradients for each bubble. --> + <radialGradient id="blueBubble" gradientUnits="userSpaceOnUse" + cx="0" cy="0" r="100" fx="-50" fy="-50"> + <stop offset="0%" stop-color="white" stop-opacity="1" /> + <stop offset="25%" stop-color="#cdcdff" stop-opacity=".65" /> + <stop offset="100%" stop-color="#cdaacd" stop-opacity=".75" /> + </radialGradient> + <radialGradient id="redBubble" gradientUnits="userSpaceOnUse" + cx="0" cy="0" r="100" fx="-50" fy="-50"> + <stop offset="0%" stop-color="white" stop-opacity="1" /> + <stop offset="25%" stop-color="#ffcdcd" stop-opacity=".65" /> + <stop offset="100%" stop-color="#bbbb99" stop-opacity=".75" /> + </radialGradient> + <radialGradient id="greenBubble" gradientUnits="userSpaceOnUse" + cx="0" cy="0" r="100" fx="-50" fy="-50"> + <stop offset="0%" stop-color="white" stop-opacity="1" /> + <stop offset="25%" stop-color="#cdffcd" stop-opacity=".65" /> + <stop offset="100%" stop-color="#99aaaa" stop-opacity=".75" /> + </radialGradient> + <radialGradient id="yellowBubble" gradientUnits="userSpaceOnUse" + cx="0" cy="0" r="100" fx="-50" fy="-50"> + <stop offset="0%" stop-color="white" stop-opacity="1" /> + <stop offset="25%" stop-color="#ffffcd" stop-opacity=".65" /> + <stop offset="100%" stop-color="#bbbbaa" stop-opacity=".75" /> + </radialGradient> + <radialGradient id="background" gradientUnits="userSpaceOnUse" + cx="0" cy="0" r="400" fx="250" fy="250"> + <stop offset="0%" stop-color="#ffffee" /> + <stop offset="100%" stop-color="#ccccaa" /> + </radialGradient> + <linearGradient id="surface" gradientUnits="userSpaceOnUse" + x1="-100" y1="200" x2="400" y2="200"> + <stop offset="0%" stop-color="#ffffcc" /> + <stop offset="100%" stop-color="#bbbb88" /> + </linearGradient> + + <!-- Create radial gradients for each circle to make them look like + spheres. --> + <radialGradient id="blueSphere" gradientUnits="userSpaceOnUse" + cx="0" cy="0" r="100" fx="-50" fy="-50"> + <stop offset="0%" stop-color="white" /> + <stop offset="75%" stop-color="blue" /> + <stop offset="100%" stop-color="#222244" /> + </radialGradient> + <radialGradient id="redSphere" gradientUnits="userSpaceOnUse" + cx="0" cy="0" r="100" fx="-50" fy="-50"> + <stop offset="0%" stop-color="white" /> + <stop offset="75%" stop-color="red" /> + <stop offset="100%" stop-color="#442222" /> + </radialGradient> + <radialGradient id="greenSphere" gradientUnits="userSpaceOnUse" + cx="0" cy="0" r="100" fx="-50" fy="-50"> + <stop offset="0%" stop-color="white" /> + <stop offset="75%" stop-color="green" /> + <stop offset="100%" stop-color="#113311" /> + </radialGradient> + <radialGradient id="yellowSphere" gradientUnits="userSpaceOnUse" + cx="0" cy="0" r="100" fx="-50" fy="-50"> + <stop offset="0%" stop-color="white" /> + <stop offset="75%" stop-color="yellow" /> + <stop offset="100%" stop-color="#444422" /> + </radialGradient> + <radialGradient id="shadowGrad" gradientUnits="userSpaceOnUse" + cx="0" cy="0" r="100" fx="-50" fy="50"> + <stop offset="0%" stop-color="black" stop-opacity="1.0" /> + <stop offset="100%" stop-color="black" stop-opacity="0.0" /> + </radialGradient> + + <!-- Define a shadow for each sphere. --> + <circle id="shadow" fill="url(#shadowGrad)" cx="0" cy="0" r="100" /> + <g id="bubble"> + <circle fill="black" cx="0" cy="0" r="50" /> + <circle fill="#a6ce39" cx="0" cy="0" r="33" /> + <path fill="black" d="M 37,50 L 50,37 L 12,-1 L 22,-11 L 10,-24 L -24,10 + L -11,22 L -1,12 Z" /> + <circle cx="0" cy="0" r="100" /> + </g> + </defs> + <g> + <rect fill="url(#background)" x="0" y="0" width="800" height="600" /> + </g> + + <g transform="translate(200,700)"> + <use xlink:href="#bubble" fill="url(#blueBubble)" /> + <animateTransform attributeName="transform" type="translate" additive="sum" + values="0,0; 0,-800" begin="1s" dur="10s" fill="freeze" repeatCount="indefinite" /> + </g> + <g transform="translate(315,700)"> + <g transform="scale(0.5,0.5)"> + <use xlink:href="#bubble" fill="url(#redBubble)" /> + </g> + <animateTransform attributeName="transform" type="translate" additive="sum" + values="0,0; 0,-800" begin="3s" dur="7s" fill="freeze" repeatCount="indefinite" /> + </g> + <g transform="translate(80,700)"> + <g transform="scale(0.65,0.65)"> + <use xlink:href="#bubble" fill="url(#greenBubble)" /> + </g> + <animateTransform attributeName="transform" type="translate" additive="sum" + values="0,0; 0,-800" begin="5s" dur="9s" fill="freeze" repeatCount="indefinite" /> + </g> + <g transform="translate(255,700)"> + <g transform="scale(0.3,0.3)"> + <use xlink:href="#bubble" fill="url(#yellowBubble)" /> + </g> + <animateTransform attributeName="transform" type="translate" additive="sum" + values="0,0; 0,-800" begin="2s" dur="6s" fill="freeze" repeatCount="indefinite" /> + </g> + <g transform="translate(565,700)"> + <g transform="scale(0.4,0.4)"> + <use xlink:href="#bubble" fill="url(#blueBubble)" /> + </g> + <animateTransform attributeName="transform" type="translate" additive="sum" + values="0,0; 0,-800" begin="4s" dur="8s" fill="freeze" repeatCount="indefinite" /> + </g> + <g transform="translate(715,700)"> + <g transform="scale(0.6,0.6)"> + <use xlink:href="#bubble" fill="url(#redBubble)" /> + </g> + <animateTransform attributeName="transform" type="translate" additive="sum" + values="0,0; 0,-800" begin="1s" dur="4s" fill="freeze" repeatCount="indefinite" /> + </g> + <g transform="translate(645,700)"> + <g transform="scale(0.375,0.375)"> + <use xlink:href="#bubble" fill="url(#greenBubble)" /> + </g> + <animateTransform attributeName="transform" type="translate" additive="sum" + values="0,0; 0,-800" begin="0s" dur="11s" fill="freeze" repeatCount="indefinite" /> + </g> + <g transform="translate(555,700)"> + <g transform="scale(0.9,0.9)"> + <use xlink:href="#bubble" fill="url(#yellowBubble)" /> + </g> + <animateTransform attributeName="transform" type="translate" additive="sum" + values="0,0; 0,-800" begin="3s" dur="7.5s" fill="freeze" repeatCount="indefinite" /> + </g> + + <g transform="translate(360,700)"> + <g transform="scale(0.5,0.5)"> + <use xlink:href="#bubble" fill="url(#blueBubble)" /> + </g> + <animateTransform attributeName="transform" type="translate" additive="sum" + values="0,0; 0,-800" begin="3s" dur="6s" fill="freeze" repeatCount="indefinite" /> + </g> + <g transform="translate(215,700)"> + <g transform="scale(0.45,0.45)"> + <use xlink:href="#bubble" fill="url(#redBubble)" /> + </g> + <animateTransform attributeName="transform" type="translate" additive="sum" + values="0,0; 0,-800" begin="5.5s" dur="7s" fill="freeze" repeatCount="indefinite" /> + </g> + <g transform="translate(420,700)"> + <g transform="scale(0.75,0.75)"> + <use xlink:href="#bubble" fill="url(#greenBubble)" /> + </g> + <animateTransform attributeName="transform" type="translate" additive="sum" + values="0,0; 0,-800" begin="1s" dur="9s" fill="freeze" repeatCount="indefinite" /> + </g> + <g transform="translate(815,700)"> + <g transform="scale(0.6,0.6)"> + <use xlink:href="#bubble" fill="url(#yellowBubble)" /> + </g> + <animateTransform attributeName="transform" type="translate" additive="sum" + values="0,0; 0,-800" begin="2s" dur="9.5s" fill="freeze" repeatCount="indefinite" /> + </g> + + <g transform="translate(225,375)" > + <g transform="scale(1.0,0.5)" > + <path d="M 0 0 L 350 0 L 450 450 L -100 450 z" + fill="url(#surface)" stroke="none" /> + </g> + </g> + <g transform="translate(200,0)" > + <g transform="translate(200,490) scale(2.0,1.0) rotate(45)" > + <rect fill="#a6ce39" x="-69" y="-69" width="138" height="138" /> + <circle fill="black" cx="0" cy="0" r="50" /> + <circle fill="#a6ce39" cx="0" cy="0" r="33" /> + <path fill="black" d="M 37,50 L 50,37 L 12,-1 L 22,-11 L 10,-24 L -24,10 + L -11,22 L -1,12 Z" /> + <animateTransform attributeName="transform" type="rotate" additive="sum" values="0; 360" + begin="0s" dur="10s" fill="freeze" repeatCount="indefinite" /> + </g> + <g transform="translate(200,375)"> + <use xlink:href="#shadow" transform="translate(25,55) scale(1.0,0.5)" /> + <circle fill="url(#blueSphere)" cx="0" cy="0" r="100" /> + </g> + <g transform="translate(315,440)"> + <g transform="scale(0.5,0.5)"> + <use xlink:href="#shadow" transform="translate(25,55) scale(1.0,0.5)" /> + <circle fill="url(#redSphere)" cx="0" cy="0" r="100" /> + </g> + </g> + <g transform="translate(80,475)"> + <g transform="scale(0.65,0.65)"> + <use xlink:href="#shadow" transform="translate(25,55) scale(1.0,0.5)" /> + <circle fill="url(#greenSphere)" cx="0" cy="0" r="100" /> + </g> + </g> + <g transform="translate(255,525)"> + <g transform="scale(0.3,0.3)"> + <use xlink:href="#shadow" transform="translate(25,55) scale(1.0,0.5)" /> + <circle fill="url(#yellowSphere)" cx="0" cy="0" r="100" /> + </g> + </g> + </g> +</svg> diff --git a/examples/svg/opengl/framebufferobject/designer.png b/examples/svg/opengl/framebufferobject/designer.png Binary files differnew file mode 100644 index 0000000..4f32d57 --- /dev/null +++ b/examples/svg/opengl/framebufferobject/designer.png diff --git a/examples/svg/opengl/framebufferobject/framebufferobject.pro b/examples/svg/opengl/framebufferobject/framebufferobject.pro new file mode 100644 index 0000000..45f3f19 --- /dev/null +++ b/examples/svg/opengl/framebufferobject/framebufferobject.pro @@ -0,0 +1,9 @@ +QT += widgets opengl svg + +HEADERS += glwidget.h +SOURCES += glwidget.cpp main.cpp +RESOURCES += framebufferobject.qrc + +# install +target.path = $$[QT_INSTALL_EXAMPLES]/svg/opengl/framebufferobject +INSTALLS += target diff --git a/examples/svg/opengl/framebufferobject/framebufferobject.qrc b/examples/svg/opengl/framebufferobject/framebufferobject.qrc new file mode 100644 index 0000000..986f1ca --- /dev/null +++ b/examples/svg/opengl/framebufferobject/framebufferobject.qrc @@ -0,0 +1,6 @@ +<!DOCTYPE RCC><RCC version="1.0"> +<qresource prefix="/res"> + <file>bubbles.svg</file> + <file>designer.png</file> +</qresource> +</RCC> diff --git a/examples/svg/opengl/framebufferobject/glwidget.cpp b/examples/svg/opengl/framebufferobject/glwidget.cpp new file mode 100644 index 0000000..1f3ff78 --- /dev/null +++ b/examples/svg/opengl/framebufferobject/glwidget.cpp @@ -0,0 +1,329 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtGui/QImage> +#include "glwidget.h" + +#include <math.h> + +#ifndef GL_MULTISAMPLE +#define GL_MULTISAMPLE 0x809D +#endif + +GLWidget::GLWidget(QWidget *parent) + : QGLWidget(QGLFormat(QGL::SampleBuffers|QGL::AlphaChannel), parent) +{ + setWindowTitle(tr("OpenGL framebuffer objects")); + makeCurrent(); + + if (QGLFramebufferObject::hasOpenGLFramebufferBlit()) { + QGLFramebufferObjectFormat format; + format.setSamples(4); + format.setAttachment(QGLFramebufferObject::CombinedDepthStencil); + + render_fbo = new QGLFramebufferObject(512, 512, format); + texture_fbo = new QGLFramebufferObject(512, 512); + } else { + render_fbo = new QGLFramebufferObject(1024, 1024); + texture_fbo = render_fbo; + } + + rot_x = rot_y = rot_z = 0.0f; + scale = 0.1f; + anim = new QTimeLine(750, this); + anim->setUpdateInterval(20); + connect(anim, SIGNAL(valueChanged(qreal)), SLOT(animate(qreal))); + connect(anim, SIGNAL(finished()), SLOT(animFinished())); + + svg_renderer = new QSvgRenderer(QLatin1String(":/res/bubbles.svg"), this); + connect(svg_renderer, SIGNAL(repaintNeeded()), this, SLOT(draw())); + + logo = QImage(":/res/designer.png"); + logo = logo.convertToFormat(QImage::Format_ARGB32); + + tile_list = glGenLists(1); + glNewList(tile_list, GL_COMPILE); + glBegin(GL_QUADS); + { + glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f); + glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f); + glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f); + glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f); + + glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f); + glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f); + glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f); + glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f); + + glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f); + glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, 1.0f, 1.0f); + glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, 1.0f, 1.0f); + glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f); + + glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, -1.0f, -1.0f); + glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, -1.0f, -1.0f); + glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f); + glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f); + + glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f); + glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f); + glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f); + glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f); + + glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f); + glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f); + glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f); + glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f); + } + glEnd(); + glEndList(); + + wave = new GLfloat[logo.width()*logo.height()]; + memset(wave, 0, logo.width()*logo.height()); + startTimer(30); // wave timer +} + +GLWidget::~GLWidget() +{ + delete[] wave; + glDeleteLists(tile_list, 1); + delete texture_fbo; + if (render_fbo != texture_fbo) + delete render_fbo; +} + +void GLWidget::paintEvent(QPaintEvent *) +{ + draw(); +} + +void GLWidget::draw() +{ + QPainter p(this); // used for text overlay + + // save the GL state set for QPainter + saveGLState(); + + // render the 'bubbles.svg' file into our framebuffer object + QPainter fbo_painter(render_fbo); + svg_renderer->render(&fbo_painter); + fbo_painter.end(); + + if (render_fbo != texture_fbo) { + QRect rect(0, 0, render_fbo->width(), render_fbo->height()); + QGLFramebufferObject::blitFramebuffer(texture_fbo, rect, + render_fbo, rect); + } + + // draw into the GL widget + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glFrustum(-1, 1, -1, 1, 10, 100); + glTranslatef(0.0f, 0.0f, -15.0f); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glViewport(0, 0, width(), height()); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + glBindTexture(GL_TEXTURE_2D, texture_fbo->texture()); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glEnable(GL_TEXTURE_2D); + glEnable(GL_MULTISAMPLE); + glEnable(GL_CULL_FACE); + + // draw background + glPushMatrix(); + glScalef(1.7f, 1.7f, 1.7f); + glColor4f(1.0f, 1.0f, 1.0f, 1.0f); + glCallList(tile_list); + glPopMatrix(); + + const int w = logo.width(); + const int h = logo.height(); + + glRotatef(rot_x, 1.0f, 0.0f, 0.0f); + glRotatef(rot_y, 0.0f, 1.0f, 0.0f); + glRotatef(rot_z, 0.0f, 0.0f, 1.0f); + glScalef(scale/w, scale/w, scale/w); + + glDepthFunc(GL_LESS); + glEnable(GL_DEPTH_TEST); + // draw the Qt icon + glTranslatef(-w+1, -h+1, 0.0f); + for (int y=h-1; y>=0; --y) { + uint *p = (uint*) logo.scanLine(y); + uint *end = p + w; + int x = 0; + while (p < end) { + glColor4ub(qRed(*p), qGreen(*p), qBlue(*p), uchar(qAlpha(*p)*.9)); + glTranslatef(0.0f, 0.0f, wave[y*w+x]); + if (qAlpha(*p) > 128) + glCallList(tile_list); + glTranslatef(0.0f, 0.0f, -wave[y*w+x]); + glTranslatef(2.0f, 0.0f, 0.0f); + ++x; + ++p; + } + glTranslatef(-w*2.0f, 2.0f, 0.0f); + } + + // restore the GL state that QPainter expects + restoreGLState(); + + // draw the overlayed text using QPainter + p.setPen(QColor(197, 197, 197, 157)); + p.setBrush(QColor(197, 197, 197, 127)); + p.drawRect(QRect(0, 0, width(), 50)); + p.setPen(Qt::black); + p.setBrush(Qt::NoBrush); + const QString str1(tr("A simple OpenGL framebuffer object example.")); + const QString str2(tr("Use the mouse wheel to zoom, press buttons and move mouse to rotate, double-click to flip.")); + QFontMetrics fm(p.font()); + p.drawText(width()/2 - fm.width(str1)/2, 20, str1); + p.drawText(width()/2 - fm.width(str2)/2, 20 + fm.lineSpacing(), str2); +} + +void GLWidget::mousePressEvent(QMouseEvent *e) +{ + anchor = e->pos(); +} + +void GLWidget::mouseMoveEvent(QMouseEvent *e) +{ + QPoint diff = e->pos() - anchor; + if (e->buttons() & Qt::LeftButton) { + rot_x += diff.y()/5.0f; + rot_y += diff.x()/5.0f; + } else if (e->buttons() & Qt::RightButton) { + rot_z += diff.x()/5.0f; + } + + anchor = e->pos(); + draw(); +} + +void GLWidget::wheelEvent(QWheelEvent *e) +{ + e->delta() > 0 ? scale += scale*0.1f : scale -= scale*0.1f; + draw(); +} + +void GLWidget::mouseDoubleClickEvent(QMouseEvent *) +{ + anim->start(); +} + +void GLWidget::animate(qreal val) +{ + rot_y = val * 180; + draw(); +} + +void GLWidget::animFinished() +{ + if (anim->direction() == QTimeLine::Forward) + anim->setDirection(QTimeLine::Backward); + else + anim->setDirection(QTimeLine::Forward); +} + +void GLWidget::saveGLState() +{ + glPushAttrib(GL_ALL_ATTRIB_BITS); + glMatrixMode(GL_PROJECTION); + glPushMatrix(); + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); +} + +void GLWidget::restoreGLState() +{ + glMatrixMode(GL_PROJECTION); + glPopMatrix(); + glMatrixMode(GL_MODELVIEW); + glPopMatrix(); + glPopAttrib(); +} + +#define PI 3.14159 + +void GLWidget::timerEvent(QTimerEvent *) +{ + if (QApplication::mouseButtons() != 0) + return; + + static bool scale_in = true; + + if (scale_in && scale > 35.0f) + scale_in = false; + else if (!scale_in && scale < .5f) + scale_in = true; + + scale = scale_in ? scale + scale*0.01f : scale-scale*0.01f; + rot_z += 0.3f; + rot_x += 0.1f; + + int dx, dy; // disturbance point + float s, v, W, t; + int i, j; + static float wt[128][128]; + const int width = logo.width(); + const int AMP = 5; + + dx = dy = width >> 1; + + W = .3f; + v = -4; // wave speed + + for (i = 0; i < width; ++i) { + for ( j = 0; j < width; ++j) { + s = sqrt((double) ((j - dx) * (j - dx) + (i - dy) * (i - dy))); + wt[i][j] += 0.1f; + t = s / v; + if (s != 0) + wave[i*width + j] = AMP * sin(2 * PI * W * (wt[i][j] + t)) / (0.2*(s + 2)); + else + wave[i*width + j] = AMP * sin(2 * PI * W * (wt[i][j] + t)); + } + } +} diff --git a/examples/svg/opengl/framebufferobject/glwidget.h b/examples/svg/opengl/framebufferobject/glwidget.h new file mode 100644 index 0000000..c689ad5 --- /dev/null +++ b/examples/svg/opengl/framebufferobject/glwidget.h @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtOpenGL> +#include <QImage> +#include <QTimeLine> +#include <QSvgRenderer> + +class GLWidget : public QGLWidget +{ + Q_OBJECT + +public: + GLWidget(QWidget *parent); + ~GLWidget(); + + void saveGLState(); + void restoreGLState(); + + void paintEvent(QPaintEvent *); + void mousePressEvent(QMouseEvent *); + void mouseDoubleClickEvent(QMouseEvent *); + void mouseMoveEvent(QMouseEvent *); + void timerEvent(QTimerEvent *); + void wheelEvent(QWheelEvent *); + +public slots: + void animate(qreal); + void animFinished(); + void draw(); + +private: + QPoint anchor; + float scale; + float rot_x, rot_y, rot_z; + GLuint tile_list; + GLfloat *wave; + + QImage logo; + QTimeLine *anim; + QSvgRenderer *svg_renderer; + QGLFramebufferObject *render_fbo; + QGLFramebufferObject *texture_fbo; +}; + diff --git a/examples/svg/opengl/framebufferobject/main.cpp b/examples/svg/opengl/framebufferobject/main.cpp new file mode 100644 index 0000000..3a414be --- /dev/null +++ b/examples/svg/opengl/framebufferobject/main.cpp @@ -0,0 +1,61 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtWidgets/QApplication> +#include <QtWidgets/QMessageBox> +#include "glwidget.h" + +int main(int argc, char **argv) +{ + Q_INIT_RESOURCE(framebufferobject); + + QApplication a(argc, argv); + if (!QGLFormat::hasOpenGL() || !QGLFramebufferObject::hasOpenGLFramebufferObjects()) { + QMessageBox::information(0, "OpenGL framebuffer objects", + "This system does not support OpenGL/framebuffer objects."); + return -1; + } + + GLWidget widget(0); + widget.resize(640, 480); + widget.show(); + return a.exec(); +} + diff --git a/examples/svg/opengl/opengl.pro b/examples/svg/opengl/opengl.pro new file mode 100644 index 0000000..fd845b6 --- /dev/null +++ b/examples/svg/opengl/opengl.pro @@ -0,0 +1,3 @@ +TEMPLATE = subdirs +!contains(QT_CONFIG, no-widgets): SUBDIRS += framebufferobject +QT+=widgets diff --git a/examples/svg/richtext/richtext.pro b/examples/svg/richtext/richtext.pro new file mode 100644 index 0000000..be9c6c3 --- /dev/null +++ b/examples/svg/richtext/richtext.pro @@ -0,0 +1,3 @@ +TEMPLATE = subdirs +!contains(QT_CONFIG, no-widgets): SUBDIRS += textobject +QT+=widgets diff --git a/examples/svg/richtext/textobject/files/heart.svg b/examples/svg/richtext/textobject/files/heart.svg new file mode 100644 index 0000000..ba5f050 --- /dev/null +++ b/examples/svg/richtext/textobject/files/heart.svg @@ -0,0 +1,55 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --><svg viewBox="100 200 550 500" height="595.27559pt" id="svg1" inkscape:version="0.40+cvs" sodipodi:docbase="C:\Documents and Settings\Jon Phillips\My Documents\projects\clipart-project\submissions" sodipodi:docname="heart-left-highlight.svg" sodipodi:version="0.32" width="595.27559pt" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:svg="http://www.w3.org/2000/svg"> +<metadata> +<rdf:RDF xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> +<cc:Work rdf:about=""> +<dc:title>Heart Left-Highlight</dc:title> +<dc:description>This is a normal valentines day heart.</dc:description> +<dc:subject> +<rdf:Bag> +<rdf:li>holiday</rdf:li> +<rdf:li>valentines</rdf:li> +<rdf:li></rdf:li> +<rdf:li>valentine</rdf:li> +<rdf:li>hash(0x8a091c0)</rdf:li> +<rdf:li>hash(0x8a0916c)</rdf:li> +<rdf:li>signs_and_symbols</rdf:li> +<rdf:li>hash(0x8a091f0)</rdf:li> +<rdf:li>day</rdf:li> +</rdf:Bag> +</dc:subject> +<dc:publisher> +<cc:Agent rdf:about="http://www.openclipart.org"> +<dc:title>Jon Phillips</dc:title> +</cc:Agent> +</dc:publisher> +<dc:creator> +<cc:Agent> +<dc:title>Jon Phillips</dc:title> +</cc:Agent> +</dc:creator> +<dc:rights> +<cc:Agent> +<dc:title>Jon Phillips</dc:title> +</cc:Agent> +</dc:rights> +<dc:date></dc:date> +<dc:format>image/svg+xml</dc:format> +<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> +<cc:license rdf:resource="http://web.resource.org/cc/PublicDomain"/> +<dc:language>en</dc:language> +</cc:Work> +<cc:License rdf:about="http://web.resource.org/cc/PublicDomain"> +<cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/> +<cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/> +<cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/> +</cc:License> +</rdf:RDF> +</metadata> +<defs id="defs3"/> +<sodipodi:namedview bordercolor="#666666" borderopacity="1.0" id="base" inkscape:current-layer="layer1" inkscape:cx="549.40674" inkscape:cy="596.00159" inkscape:document-units="px" inkscape:guide-bbox="true" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:window-height="615" inkscape:window-width="866" inkscape:window-x="88" inkscape:window-y="116" inkscape:zoom="0.35000000" pagecolor="#ffffff" showguides="true"/> +<g id="layer1" inkscape:groupmode="layer" inkscape:label="Layer 1"> +<path d="M 263.41570,235.14588 C 197.17570,235.14588 143.41575,288.90587 143.41575,355.14588 C 143.41575,489.90139 279.34890,525.23318 371.97820,658.45392 C 459.55244,526.05056 600.54070,485.59932 600.54070,355.14588 C 600.54070,288.90588 546.78080,235.14587 480.54070,235.14588 C 432.49280,235.14588 391.13910,263.51631 371.97820,304.33338 C 352.81740,263.51630 311.46370,235.14587 263.41570,235.14588 z " id="path7" sodipodi:nodetypes="ccccccc" style="fill:#e60000;fill-opacity:1.0000000;stroke:#000000;stroke-width:18.700001;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"/> +<path d="M 265.00000,253.59375 C 207.04033,253.59375 160.00000,300.63407 160.00000,358.59375 C 160.00000,476.50415 278.91857,507.43251 359.96875,624.00000 C 366.52868,614.08205 220.00000,478.47309 220.00000,378.59375 C 220.00000,320.63407 267.04033,273.59375 325.00000,273.59375 C 325.50453,273.59375 325.99718,273.64912 326.50000,273.65625 C 309.22436,261.07286 288.00557,253.59374 265.00000,253.59375 z " id="path220" sodipodi:nodetypes="ccccccc" style="fill:#e6e6e6;fill-opacity:0.64556962;stroke:none;stroke-width:18.700001;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"/> +</g> +</svg> diff --git a/examples/svg/richtext/textobject/main.cpp b/examples/svg/richtext/textobject/main.cpp new file mode 100644 index 0000000..4a0a6a0 --- /dev/null +++ b/examples/svg/richtext/textobject/main.cpp @@ -0,0 +1,52 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtWidgets> + +#include "window.h" + +int main(int argv, char **args) +{ + QApplication app(argv, args); + + Window window; + window.show(); + return app.exec(); +} diff --git a/examples/svg/richtext/textobject/resources.qrc b/examples/svg/richtext/textobject/resources.qrc new file mode 100644 index 0000000..39b2f5d --- /dev/null +++ b/examples/svg/richtext/textobject/resources.qrc @@ -0,0 +1,5 @@ +<RCC> + <qresource prefix="/"> + <file>files/heart.svg</file> + </qresource> +</RCC> diff --git a/examples/svg/richtext/textobject/svgtextobject.cpp b/examples/svg/richtext/textobject/svgtextobject.cpp new file mode 100644 index 0000000..8e3e3e9 --- /dev/null +++ b/examples/svg/richtext/textobject/svgtextobject.cpp @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtWidgets> +#include <QtSvg> + +#include "svgtextobject.h" +#include "window.h" + +//![0] +QSizeF SvgTextObject::intrinsicSize(QTextDocument * /*doc*/, int /*posInDocument*/, + const QTextFormat &format) +{ + QImage bufferedImage = qvariant_cast<QImage>(format.property(Window::SvgData)); + QSize size = bufferedImage.size(); + + if (size.height() > 25) + size *= 25.0 / (double) size.height(); + + return QSizeF(size); +} +//![0] + +//![1] +void SvgTextObject::drawObject(QPainter *painter, const QRectF &rect, + QTextDocument * /*doc*/, int /*posInDocument*/, + const QTextFormat &format) +{ + QImage bufferedImage = qvariant_cast<QImage>(format.property(Window::SvgData)); + + painter->drawImage(rect, bufferedImage); +} +//![1] + diff --git a/examples/svg/richtext/textobject/svgtextobject.h b/examples/svg/richtext/textobject/svgtextobject.h new file mode 100644 index 0000000..f9ba114 --- /dev/null +++ b/examples/svg/richtext/textobject/svgtextobject.h @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef SVGTEXTOBJECT_H +#define SVGTEXTOBJECT_H + +#include <QTextObjectInterface> + +QT_BEGIN_NAMESPACE +class QTextDocument; +class QTextFormat; +class QPainter; +class QRectF; +class QSizeF; +QT_END_NAMESPACE + +//![0] //![1] +class SvgTextObject : public QObject, public QTextObjectInterface +{ + Q_OBJECT + Q_INTERFACES(QTextObjectInterface) +//![1] + +public: + QSizeF intrinsicSize(QTextDocument *doc, int posInDocument, + const QTextFormat &format); + void drawObject(QPainter *painter, const QRectF &rect, QTextDocument *doc, + int posInDocument, const QTextFormat &format); +}; +//![0] + +#endif diff --git a/examples/svg/richtext/textobject/textobject.desktop b/examples/svg/richtext/textobject/textobject.desktop new file mode 100644 index 0000000..1b0980f --- /dev/null +++ b/examples/svg/richtext/textobject/textobject.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Encoding=UTF-8 +Version=1.0 +Type=Application +Terminal=false +Name=Text Object +Exec=/opt/usr/bin/textobject +Icon=textobject +X-Window-Icon= +X-HildonDesk-ShowInToolbar=true +X-Osso-Type=application/x-executable diff --git a/examples/svg/richtext/textobject/textobject.pro b/examples/svg/richtext/textobject/textobject.pro new file mode 100644 index 0000000..34e84dc --- /dev/null +++ b/examples/svg/richtext/textobject/textobject.pro @@ -0,0 +1,18 @@ +HEADERS = svgtextobject.h \ + window.h +SOURCES = main.cpp \ + svgtextobject.cpp \ + window.cpp + +QT += svg + +RESOURCES = resources.qrc + +# install +target.path = $$[QT_INSTALL_EXAMPLES]/svg/richtext/textobject +INSTALLS += target + +filesToDeploy.files = files/*.svg +filesToDeploy.path = files +DEPLOYMENT += filesToDeploy +QT+=widgets diff --git a/examples/svg/richtext/textobject/window.cpp b/examples/svg/richtext/textobject/window.cpp new file mode 100644 index 0000000..ba1d16d --- /dev/null +++ b/examples/svg/richtext/textobject/window.cpp @@ -0,0 +1,117 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtWidgets> +#include <QtSvg> + +#include "window.h" +#include "svgtextobject.h" + +Window::Window() +{ + setupGui(); + setupTextObject(); + + setWindowTitle("Text Object Example"); +} + +//![1] +void Window::insertTextObject() +{ + QString fileName = fileNameLineEdit->text(); + QFile file(fileName); + if (!file.open(QIODevice::ReadOnly)) { + QMessageBox::warning(this, tr("Error Opening File"), + tr("Could not open '%1'").arg(fileName)); + } + + QByteArray svgData = file.readAll(); +//![1] + +//![2] + QTextCharFormat svgCharFormat; + svgCharFormat.setObjectType(SvgTextFormat); + QSvgRenderer renderer(svgData); + + QImage svgBufferImage(renderer.defaultSize(), QImage::Format_ARGB32); + QPainter painter(&svgBufferImage); + renderer.render(&painter, svgBufferImage.rect()); + + svgCharFormat.setProperty(SvgData, svgBufferImage); + + QTextCursor cursor = textEdit->textCursor(); + cursor.insertText(QString(QChar::ObjectReplacementCharacter), svgCharFormat); + textEdit->setTextCursor(cursor); +} +//![2] + +//![3] +void Window::setupTextObject() +{ + QObject *svgInterface = new SvgTextObject; + svgInterface->setParent(this); + textEdit->document()->documentLayout()->registerHandler(SvgTextFormat, svgInterface); +} +//![3] + +void Window::setupGui() +{ + fileNameLabel = new QLabel(tr("Svg File Name:")); + fileNameLineEdit = new QLineEdit; + insertTextObjectButton = new QPushButton(tr("Insert Image")); + + fileNameLineEdit->setText(":/files/heart.svg"); + connect(insertTextObjectButton, SIGNAL(clicked()), + this, SLOT(insertTextObject())); + + QHBoxLayout *bottomLayout = new QHBoxLayout; + bottomLayout->addWidget(fileNameLabel); + bottomLayout->addWidget(fileNameLineEdit); + bottomLayout->addWidget(insertTextObjectButton); + + textEdit = new QTextEdit; + + QVBoxLayout *mainLayout = new QVBoxLayout; + mainLayout->addWidget(textEdit); + mainLayout->addLayout(bottomLayout); + + setLayout(mainLayout); +} + diff --git a/examples/svg/richtext/textobject/window.h b/examples/svg/richtext/textobject/window.h new file mode 100644 index 0000000..7551233 --- /dev/null +++ b/examples/svg/richtext/textobject/window.h @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef WINDOW_H +#define WINDOW_H + +#include <QWidget> +#include <QTextFormat> + +QT_BEGIN_NAMESPACE +class QTextEdit; +class QLineEdit; +class QPushButton; +class QLabel; +QT_END_NAMESPACE + +//![0] +class Window : public QWidget +{ + Q_OBJECT + +public: + enum { SvgTextFormat = QTextFormat::UserObject + 1 }; + enum SvgProperties { SvgData = 1 }; + + Window(); + +private slots: + void insertTextObject(); + +private: + void setupTextObject(); + void setupGui(); + +private: + QTextEdit *textEdit; + QLabel *fileNameLabel; + QLineEdit *fileNameLineEdit; + QPushButton *insertTextObjectButton; +}; +//![0] + +#endif diff --git a/examples/svg/svg.pro b/examples/svg/svg.pro index fdadc81..979f391 100644 --- a/examples/svg/svg.pro +++ b/examples/svg/svg.pro @@ -1,10 +1,8 @@ TEMPLATE = subdirs !contains(QT_CONFIG, no-widgets): SUBDIRS += embeddedsvgviewer svggenerator svgviewer +SUBDIRS += embedded richtext draganddrop network -QT+=widgets +contains(QT_CONFIG,opengl):!contains(QT_CONFIG,opengles2):SUBDIRS += opengl -# install -sources.files = svg.pro -sources.path = $$[QT_INSTALL_EXAMPLES]/qtsvg/svg -INSTALLS += sources +QT+=widgets diff --git a/examples/svg/svggenerator/svggenerator.pro b/examples/svg/svggenerator/svggenerator.pro index 6945418..f13a9c4 100644 --- a/examples/svg/svggenerator/svggenerator.pro +++ b/examples/svg/svggenerator/svggenerator.pro @@ -11,9 +11,7 @@ QT += svg INCLUDEPATH += $$PWD # install -target.path = $$[QT_INSTALL_EXAMPLES]/qtsvg/svg/svggenerator -sources.files = $$SOURCES $$HEADERS $$RESOURCES forms doc resources svggenerator.pro -sources.path = $$[QT_INSTALL_EXAMPLES]/qtsvg/svg/svggenerator -INSTALLS += target sources +target.path = $$[QT_INSTALL_EXAMPLES]/svg/svggenerator +INSTALLS += target QT+=widgets diff --git a/examples/svg/svgviewer/svgviewer.pro b/examples/svg/svgviewer/svgviewer.pro index 9614741..43a89dc 100644 --- a/examples/svg/svgviewer/svgviewer.pro +++ b/examples/svg/svgviewer/svgviewer.pro @@ -11,10 +11,8 @@ contains(QT_CONFIG, opengl): QT += opengl CONFIG += console # install -target.path = $$[QT_INSTALL_EXAMPLES]/qtsvg/svg/svgviewer -sources.files = $$SOURCES $$HEADERS $$RESOURCES svgviewer.pro files -sources.path = $$[QT_INSTALL_EXAMPLES]/qtsvg/svg/svgviewer -INSTALLS += target sources +target.path = $$[QT_INSTALL_EXAMPLES]/svg/svgviewer +INSTALLS += target wince*: { addFiles.files = files\\*.svg |