~ubuntu-branches/ubuntu/gutsy/kde4libs/gutsy

« back to all changes in this revision

Viewing changes to kdeui/util/ksvgrenderer.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Jonathan Riddell
  • Date: 2007-02-21 11:00:12 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20070221110012-6kw8khr9knv6lmg1
Tags: 3.80.3-0ubuntu1
New upstream unstable release

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * This file is part of the KDE project, module kdecore.
 
3
 * Copyright (C) 2006 Oswald Buddenhagen <ossi@kde.org>
 
4
 *
 
5
 * This is free software; it comes under the GNU Library General
 
6
 * Public License, version 2. See the file "COPYING.LIB" for the
 
7
 * exact licensing terms.
 
8
 */
 
9
 
 
10
#include "ksvgrenderer.h"
 
11
 
 
12
#include <kfilterdev.h>
 
13
 
 
14
#include <QtCore/QBuffer>
 
15
#include <QtCore/QFile>
 
16
 
 
17
KSvgRenderer::KSvgRenderer(QObject *parent) : QSvgRenderer(parent)
 
18
{
 
19
}
 
20
 
 
21
KSvgRenderer::KSvgRenderer(const QString &filename, QObject *parent) :
 
22
    QSvgRenderer(parent)
 
23
{
 
24
    load(filename);
 
25
}
 
26
 
 
27
KSvgRenderer::KSvgRenderer(const QByteArray &contents, QObject *parent) :
 
28
    QSvgRenderer(parent)
 
29
{
 
30
    load(contents);
 
31
}
 
32
 
 
33
bool
 
34
KSvgRenderer::load(const QString &filename)
 
35
{
 
36
    QFile fi(filename);
 
37
    if (!fi.open(QIODevice::ReadOnly))
 
38
        return false;
 
39
    return load(fi.readAll());
 
40
}
 
41
 
 
42
bool
 
43
KSvgRenderer::load(const QByteArray &contents)
 
44
{
 
45
    if (!contents.startsWith("<?xml")) {
 
46
        QBuffer buf(const_cast<QByteArray *>(&contents));
 
47
        QIODevice *flt = KFilterDev::device(
 
48
            &buf, QString::fromLatin1("application/x-gzip"), false);
 
49
        if (!flt)
 
50
            return false;
 
51
        if (!flt->open(QIODevice::ReadOnly)) {
 
52
            delete flt;
 
53
            return false;
 
54
        }
 
55
        QByteArray ar = flt->readAll();
 
56
        delete flt;
 
57
        return QSvgRenderer::load(ar);
 
58
    }
 
59
    return QSvgRenderer::load(contents);
 
60
}
 
61
 
 
62
#include "ksvgrenderer.moc"