/[gzz]/gzz/gfx/libimagecache/ImageCache.cxx
ViewVC logotype

Diff of /gzz/gfx/libimagecache/ImageCache.cxx

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2 by deetsay, Fri Sep 13 14:35:37 2002 UTC revision 1.3 by deetsay, Wed Sep 18 08:04:05 2002 UTC
# Line 18  namespace ImageCache { Line 18  namespace ImageCache {
18    
19  //---------------------------------------------------------------------------  //---------------------------------------------------------------------------
20    
 #define START_PIXBUF_BACKGROUND_LOADER  ((GdkPixbuf *)(-1))  
   
21      CachedImage::CachedImage() {      CachedImage::CachedImage() {
22          loader = NULL;          loader = NULL;
23          requestedLOD = -1;          requestedLOD = -1;
# Line 149  namespace ImageCache { Line 147  namespace ImageCache {
147          size = 0;          size = 0;
148          loading = gdk_pixbuf_new(GDK_COLORSPACE_RGB, false, 8, 16, 16);          loading = gdk_pixbuf_new(GDK_COLORSPACE_RGB, false, 8, 16, 16);
149          gdk_pixbuf_ref(loading);          gdk_pixbuf_ref(loading);
150            gtk_object_set_user_data(GTK_OBJECT(loading), (gpointer)(-1));
151      }      }
152    
153      ImageCache::~ImageCache() {      ImageCache::~ImageCache() {
154          imageByUrx.clear();          imageByUri.clear();
155          urxByImage.clear();          uriByImage.clear();
156    
157          list<CachedImage *>::iterator iter;          list<CachedImage *>::iterator iter;
158    
# Line 167  namespace ImageCache { Line 166  namespace ImageCache {
166          gdk_pixbuf_unref(loading);          gdk_pixbuf_unref(loading);
167      }      }
168    
169      GdkPixbuf *ImageCache::getPixbuf(string urx, int lod) {      GdkPixbuf *ImageCache::getPixbuf(string uri, int lod) {
170          CachedImage *ci = imageByUrx[urx];          CachedImage *ci = imageByUri[uri];
171          if (ci == NULL) {          if (ci == NULL) {
172              ci = new CachedImage();              ci = new CachedImage();
173              imageByUrx[urx] = ci;              imageByUri[uri] = ci;
174              urxByImage[ci] = urx;              uriByImage[ci] = uri;
175          }          }
176          else recentlyUsedImages.remove(ci);          else recentlyUsedImages.remove(ci);
177    
# Line 183  namespace ImageCache { Line 182  namespace ImageCache {
182          GdkPixbuf *pb = ci->getPixbuf(lod);          GdkPixbuf *pb = ci->getPixbuf(lod);
183          if (pb == START_PIXBUF_BACKGROUND_LOADER) {          if (pb == START_PIXBUF_BACKGROUND_LOADER) {
184    
185              //backgroundLoader->startLoading(urx);              //backgroundLoader->startLoading(uri);
186    
187              pb = ci->getPixbuf(lod);              pb = ci->getPixbuf(lod);
188          }          }
189          return (pb == NULL ? loading : pb);          return (pb == NULL ? loading : pb);
190      }      }
191    
192      int ImageCache::write(string urx, char *data, int len) {      int ImageCache::write(string uri, char *data, int len) {
193          CachedImage *ci = imageByUrx[urx];          CachedImage *ci = imageByUri[uri];
194          return (ci == NULL ? -1 : ci->write(data, len));          return (ci == NULL ? -1 : ci->write(data, len));
195      }      }
196    
197      int ImageCache::cropToSize(int maxSize) {      int ImageCache::trimToSize(int maxSize) {
198          CachedImage *ci;          CachedImage *ci;
199          int sizeChange;          int sizeChange;
200          while ((size >= maxSize) && (!recentlyUsedImages.empty())) {          while ((size >= maxSize) && (!recentlyUsedImages.empty())) {
# Line 206  namespace ImageCache { Line 205  namespace ImageCache {
205    
206              sizeChange = ci->getSizeChange();              sizeChange = ci->getSizeChange();
207              if (sizeChange == 0) {              if (sizeChange == 0) {
208                  string urx = urxByImage[ci];                  string uri = uriByImage[ci];
209                  urxByImage.erase(ci);                  uriByImage.erase(ci);
210                  imageByUrx.erase(urx);                  imageByUri.erase(uri);
211                  size -= ci->getCurrentSize();                  size -= ci->getCurrentSize();
212                  delete ci;                  delete ci;
213              }              }

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26