summaryrefslogtreecommitdiff
path: root/library
authormickeyl <mickeyl>2005-02-19 17:18:27 (UTC)
committer mickeyl <mickeyl>2005-02-19 17:18:27 (UTC)
commitbe32e0c045814142954ac37c89715313633d6aa2 (patch) (unidiff)
tree93a6fc7a84b4073fb04cc0b3377c4bb7e11bd091 /library
parentb7bf9c7acdc010eb30bc246372efb0d1b394166a (diff)
downloadopie-be32e0c045814142954ac37c89715313633d6aa2.zip
opie-be32e0c045814142954ac37c89715313633d6aa2.tar.gz
opie-be32e0c045814142954ac37c89715313633d6aa2.tar.bz2
make inline image support optional
Diffstat (limited to 'library') (more/less context) (ignore whitespace changes)
-rw-r--r--library/resource.cpp34
1 files changed, 29 insertions, 5 deletions
diff --git a/library/resource.cpp b/library/resource.cpp
index b31876f..3b5e9ec 100644
--- a/library/resource.cpp
+++ b/library/resource.cpp
@@ -20,27 +20,29 @@
20 20
21#define QTOPIA_INTERNAL_MIMEEXT 21#define QTOPIA_INTERNAL_MIMEEXT
22#include <qpe/qpeapplication.h> 22#include <qpe/qpeapplication.h>
23#include "resource.h" 23#include "resource.h"
24#include "mimetype.h" 24#include "mimetype.h"
25#include <qdir.h> 25#include <qdir.h>
26#include <qpixmapcache.h> 26#include <qpixmapcache.h>
27 27
28// this namespace is just a workaround for a gcc bug 28// this namespace is just a workaround for a gcc bug
29// gcc exports inline functions in the generated file 29// gcc exports inline functions in the generated file
30// inlinepics_p.h 30// inlinepics_p.h
31 31
32#ifndef LIBQPE_NO_INLINE_IMAGES
32namespace { 33namespace {
33#include "inlinepics_p.h" 34#include "inlinepics_p.h"
34} 35}
36#endif
35 37
36static bool g_notUseSet = ::getenv("OVERWRITE_ICON_SET"); 38static bool g_notUseSet = ::getenv("OVERWRITE_ICON_SET");
37 39
38/*! 40/*!
39 \class Resource resource.h 41 \class Resource resource.h
40 \brief The Resource class provides access to named resources. 42 \brief The Resource class provides access to named resources.
41 43
42 The resources may be provided from files or other sources. 44 The resources may be provided from files or other sources.
43 45
44 The allSounds() function returns a list of all the sounds available. 46 The allSounds() function returns a list of all the sounds available.
45 A particular sound can be searched for using findSound(). 47 A particular sound can be searched for using findSound().
46 48
@@ -87,35 +89,45 @@ QBitmap Resource::loadBitmap( const QString &pix )
87 return bm; 89 return bm;
88} 90}
89 91
90/*! 92/*!
91 Returns the filename of a pixmap called \a pix. You should avoid including 93 Returns the filename of a pixmap called \a pix. You should avoid including
92 any filename type extension (e.g. .png, .xpm). 94 any filename type extension (e.g. .png, .xpm).
93 95
94 Normally you will use loadPixmap() rather than this function. 96 Normally you will use loadPixmap() rather than this function.
95*/ 97*/
96QString Resource::findPixmap( const QString &pix ) 98QString Resource::findPixmap( const QString &pix )
97{ 99{
98 QString picsPath = QPEApplication::qpeDir() + "pics/"; 100 QString picsPath = QPEApplication::qpeDir() + "pics/";
99
100 QString f; 101 QString f;
101 102
102 // Common case optimizations... 103 // Common case optimizations...
103 f = picsPath + pix + ".png"; 104 f = picsPath + pix + ".png";
104 if ( QFile( f ).exists() ) 105 if ( QFile( f ).exists() )
105 return f; 106 return f;
106 f = picsPath + pix + ".xpm"; 107 f = picsPath + pix + ".xpm";
107 if ( QFile( f ).exists() ) 108 if ( QFile( f ).exists() )
108 return f; 109 return f;
109 110
111#ifdef LIBQPE_NO_INLINE_IMAGES
112 QString picsPathInline = picsPath + "inline/";
113 // Common case optimizations...
114 f = picsPathInline + pix + ".png";
115 if ( QFile( f ).exists() )
116 return f;
117 f = picsPathInline + pix + ".xpm";
118 if ( QFile( f ).exists() )
119 return f;
120#endif
121
110 // All formats... 122 // All formats...
111 QStrList fileFormats = QImageIO::inputFormats(); 123 QStrList fileFormats = QImageIO::inputFormats();
112 QString ff = fileFormats.first(); 124 QString ff = fileFormats.first();
113 while ( fileFormats.current() ) { 125 while ( fileFormats.current() ) {
114 QStringList exts = MimeType("image/"+ff.lower()).extensions(); 126 QStringList exts = MimeType("image/"+ff.lower()).extensions();
115 for ( QStringList::ConstIterator it = exts.begin(); it!=exts.end(); ++it ) { 127 for ( QStringList::ConstIterator it = exts.begin(); it!=exts.end(); ++it ) {
116 QString f = picsPath + pix + "." + *it; 128 QString f = picsPath + pix + "." + *it;
117 if ( QFile(f).exists() ) 129 if ( QFile(f).exists() )
118 return f; 130 return f;
119 } 131 }
120 ff = fileFormats.next(); 132 ff = fileFormats.next();
121 } 133 }
@@ -154,38 +166,50 @@ QString Resource::findSound( const QString &name )
154QStringList Resource::allSounds() 166QStringList Resource::allSounds()
155{ 167{
156 QDir resourcedir( QPEApplication::qpeDir() + "sounds/", "*.wav" ); 168 QDir resourcedir( QPEApplication::qpeDir() + "sounds/", "*.wav" );
157 QStringList entries = resourcedir.entryList(); 169 QStringList entries = resourcedir.entryList();
158 QStringList result; 170 QStringList result;
159 for (QStringList::Iterator i=entries.begin(); i != entries.end(); ++i) 171 for (QStringList::Iterator i=entries.begin(); i != entries.end(); ++i)
160 result.append((*i).replace(QRegExp("\\.wav"),"")); 172 result.append((*i).replace(QRegExp("\\.wav"),""));
161 return result; 173 return result;
162} 174}
163 175
164static QImage load_image(const QString &name) 176static QImage load_image(const QString &name)
165{ 177{
178 QImage img;
179
166 if (g_notUseSet ) { 180 if (g_notUseSet ) {
167 // try file 181 // try file
168 QImage img;
169 QString f = Resource::findPixmap(name); 182 QString f = Resource::findPixmap(name);
170 if ( !f.isEmpty() ) 183 if ( !f.isEmpty() )
171 img.load(f); 184 img.load(f);
185#ifndef LIBQPE_NO_INLINE_IMAGES
172 if (img.isNull() ) 186 if (img.isNull() )
173 img = qembed_findImage(name.latin1() ); 187 img = qembed_findImage(name.latin1() );
188#endif
174 return img; 189 return img;
175 } 190 }
176 else{ 191 else{
177 QImage img = qembed_findImage(name.latin1()); 192#ifndef LIBQPE_NO_INLINE_IMAGES
178 193 img = qembed_findImage(name.latin1());
179 if ( img.isNull() ) { 194#else
195 QString f = Resource::findPixmap( "/inline/" + name );
196 if ( !f.isEmpty() )
197 {
198 img.load(f);
199 return img;
200 }
201#endif
202 if ( img.isNull() )
203 {
180 // No inlined image, try file 204 // No inlined image, try file
181 QString f = Resource::findPixmap(name); 205 QString f = Resource::findPixmap(name);
182 if ( !f.isEmpty() ) 206 if ( !f.isEmpty() )
183 img.load(f); 207 img.load(f);
184 } 208 }
185 return img; 209 return img;
186 } 210 }
187} 211}
188 212
189/*! 213/*!
190 Returns the QImage called \a name. You should avoid including 214 Returns the QImage called \a name. You should avoid including
191 any filename type extension (e.g. .png, .xpm). 215 any filename type extension (e.g. .png, .xpm).