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 "spriteloader.h"
15 class SpriteLoader::Loader
: public ::Loader::Theme
{
18 Loader(const QString
& s
)
24 /* inherit instead of typedef to ease forward declaration :) */
25 class SpriteLoader::LoadersCache
: public
26 std::map
<QString
, SpriteLoader::Loader
*> {
29 SpriteLoader::LoadersCache
SpriteLoader::loaders
;
31 SpriteLoader::SpriteLoader()
37 SpriteLoader::~SpriteLoader() {
41 void SpriteLoader::flush() {
45 m_loader
->unrefSize(m_size
);
47 /* unref the loader, and possibly destroy it */
48 if(!--m_loader
->m_ref_count
) {
50 loaders
.erase(m_base
);
56 void SpriteLoader::setBasePath(const QString
& base
) {
57 //QString base = PixmapLoader::Loader::resolveBasePath(__base);
66 void SpriteLoader::setSize(int s
) {
71 m_loader
->unrefSize(m_size
);
76 void SpriteLoader::initialize() {
80 /* try to get a loader */
81 if(loaders
.count(m_base
))
82 m_loader
= loaders
[m_base
];
84 m_loader
= new Loader(m_base
);
85 loaders
[m_base
] = m_loader
;
88 m_loader
->m_ref_count
++;
89 m_loader
->refSize(m_size
);
92 QPixmap
SpriteLoader::operator()(const QString
& id
) {
93 if(!m_size
|| m_base
.isEmpty())
99 return m_loader
->getPixmap(id
, m_size
);
102 ::Loader::PixmapOrMap
SpriteLoader::getPixmapMap(const QString
& id
) {
103 if(!m_size
|| m_base
.isEmpty())
104 return ::Loader::PixmapOrMap();
109 return m_loader
->getPixmapMap(id
, m_size
);
112 ::Loader::Glyph
SpriteLoader::getGlyph(const QString
& id
) {
113 if(!m_size
|| m_base
.isEmpty())
114 return ::Loader::Glyph();
119 return m_loader
->getGlyph(id
, m_size
);