2 Copyright (c) 2006 Paolo Capriotti <p.capriotti@sns.it>
3 (c) 2006 Maurizio Monge <maurizio.monge@kdemail.net>
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
12 #include "loader/theme.h"
13 #include "pixmaploader.h"
15 class PixmapLoader::ThemeLoader
: public Loader::Theme
{
19 ThemeLoader(const QString
& s
)
26 PixmapLoader::ThemeLoadersCache
PixmapLoader::s_loaders
;
29 PixmapLoader::PixmapLoader()
35 PixmapLoader::~PixmapLoader() {
39 void PixmapLoader::flush() {
43 m_loader
->unrefSize(m_size
);
45 /* unref the loader, and possibly destroy it */
46 if(!--m_loader
->m_ref_count
) {
48 s_loaders
.erase(m_base
);
54 void PixmapLoader::setBasePath(const QString
& base
) {
55 //QString base = PixmapLoader::ThemeLoader::resolveBasePath(__base);
64 void PixmapLoader::setSize(int s
) {
69 m_loader
->unrefSize(m_size
);
74 void PixmapLoader::initialize() {
78 /* try to get a loader */
79 if(s_loaders
.count(m_base
))
80 m_loader
= s_loaders
[m_base
];
82 m_loader
= new ThemeLoader(m_base
);
83 s_loaders
[m_base
] = m_loader
;
86 m_loader
->m_ref_count
++;
87 m_loader
->refSize(m_size
);
90 QPixmap
PixmapLoader::operator()(const QString
& id
) {
91 if(!m_size
|| m_base
.isEmpty())
97 return m_loader
->getPixmap(id
, m_size
);
100 Loader::PixmapOrMap
PixmapLoader::getPixmapMap(const QString
& id
) {
101 if(!m_size
|| m_base
.isEmpty())
102 return Loader::PixmapOrMap();
107 return m_loader
->getPixmapMap(id
, m_size
);
110 Loader::Glyph
PixmapLoader::getGlyph(const QString
& id
) {
111 if(!m_size
|| m_base
.isEmpty())
112 return Loader::Glyph();
117 return m_loader
->getGlyph(id
, m_size
);