Bug #: none
[WebKit-https.git] / WebCore / ksvg2 / KSVGSettings.cpp
1 /*
2     Copyright (C) 2005 Nikolas Zimmermann <wildfox@kde.org>
3                   2005 Rob Buis <buis@kde.org>
4
5     This file is part of the KDE project
6
7     This library is free software; you can redistribute it and/or
8     modify it under the terms of the GNU Library General Public
9     License as published by the Free Software Foundation; either
10     version 2 of the License, or (at your option) any later version.
11
12     This library is distributed in the hope that it will be useful,
13     but WITHOUT ANY WARRANTY; without even the implied warranty of
14     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15     Library General Public License for more details.
16
17     You should have received a copy of the GNU Library General Public License
18     along with this library; see the file COPYING.LIB.  If not, write to
19     the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20     Boston, MA 02111-1307, USA.
21 */
22
23 #include <kglobal.h>
24 #include <kconfig.h>
25
26 #include "KSVGSettings.h"
27
28 using namespace KSVG;
29
30 class KSVGSettings::Private
31 {
32 public:
33     QString renderingBackend; // Default: 'agg'
34     QString parsingBackend; // Default: 'libxml'
35
36     bool fontKerning : 1; // Default: 'true'
37     bool progressive : 1; // Default: 'true'
38 };
39
40 KSVGSettings::KSVGSettings() : KDOM::KDOMSettings(), d(new Private())
41 {
42     init();
43 }
44
45 KSVGSettings::KSVGSettings(const KSVGSettings &other) : d(new Private())
46 {
47     *d = *other.d;
48 }
49
50 KSVGSettings::~KSVGSettings()
51 {
52     delete d;
53 }
54
55 void KSVGSettings::init()
56 {
57     KConfig global(QString::fromLatin1("ksvgrc"), true, false);
58     init(&global, true);
59
60     KConfig *local = KGlobal::config();
61     if(!local)
62         return;
63
64     init(local, false);
65 }
66
67 void KSVGSettings::init(KConfig *config, bool reset)
68 {
69     QString group_save = config->group();
70     
71     if(reset || config->hasGroup("Rendering"))
72     {
73         config->setGroup("Rendering");
74
75         if(reset || config->hasKey("Backend"))
76             d->renderingBackend = config->readEntry("Backend", QString::fromLatin1("agg"));
77
78         if(reset || config->hasKey("FontKerning"))
79             d->fontKerning = config->readBoolEntry("FontKerning", true);
80
81         if(reset || config->hasKey("ProgressiveRendering"))
82             d->progressive = config->readBoolEntry("ProgressiveRendering", true);
83     }
84
85     if(reset || config->hasGroup("Parsing"))
86     {
87         config->setGroup("Parsing");
88
89         if(reset || config->hasKey("Backend"))
90             d->parsingBackend = config->readEntry("Backend", QString::fromLatin1("libxml"));
91     }
92
93     config->setGroup(group_save);
94 }
95
96 QString KSVGSettings::parsingBackend() const
97 {
98     return d->parsingBackend;
99 }
100
101 void KSVGSettings::setParsingBackend(const QString &backend) const
102 {
103     d->parsingBackend = backend;
104
105     KConfig *config = KGlobal::config();
106     config->setGroup("Parsing");
107     config->writeEntry("Backend", backend);
108     config->sync();
109 }
110
111 QString KSVGSettings::renderingBackend() const
112 {
113     return d->renderingBackend;
114 }
115
116 void KSVGSettings::setRenderingBackend(const QString &backend) const
117 {
118     d->renderingBackend = backend;
119
120     KConfig *config = KGlobal::config();
121     config->setGroup("Rendering");
122     config->writeEntry("Backend", backend);
123     config->sync();
124 }
125
126 bool KSVGSettings::fontKerning() const
127 {
128     return d->fontKerning;
129 }
130
131 void KSVGSettings::setFontKerning(bool value)
132 {
133     d->fontKerning = value;
134
135     KConfig *config = KGlobal::config();
136     config->setGroup("Rendering");
137     config->writeEntry("FontKerning", value);
138     config->sync();
139 }
140
141 bool KSVGSettings::progressiveRendering() const
142 {
143     return d->progressive;
144 }
145         
146 void KSVGSettings::setProgressiveRendering(bool value)
147 {
148     d->progressive = value;
149
150     KConfig *config = KGlobal::config();
151     config->setGroup("Rendering");
152     config->writeEntry("ProgressiveRendering", value);
153     config->sync();
154 }
155
156 // vim:ts=4:noet