Trees | Indices | Help |
---|
|
1 #!/usr/bin/env python 2 # -*- coding: UTF8 -*- 3 #******************************************************************************\ 4 #* $Source$ 5 #* $Id$ 6 #* 7 #* Copyright (C) 2006-2009, Jérome Kieffer <kieffer@terre-adelie.org> 8 #* Conception : Jérôme KIEFFER, Mickael Profeta & Isabelle Letard 9 #* Licence GPL v2 10 #* 11 #* This program is free software; you can redistribute it and/or modify 12 #* it under the terms of the GNU General Public License as published by 13 #* the Free Software Foundation; either version 2 of the License, or 14 #* (at your option) any later version. 15 #* 16 #* This program is distributed in the hope that it will be useful, 17 #* but WITHOUT ANY WARRANTY; without even the implied warranty of 18 #* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 #* GNU General Public License for more details. 20 #* 21 #* You should have received a copy of the GNU General Public License 22 #* along with this program; if not, write to the Free Software 23 #* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 24 #* 25 #*****************************************************************************/ 26 27 """ 28 ImageCache is a class containing a copy of the bitmap of images . 29 Technically it is a Borg (design Pattern) so every instance of ImageCache has exactly the same contents. 30 """ 31 from config import Config 32 config = Config() 33 ################################################################################################ 34 ############### Class ImageCache for storing the bitmaps in a Borg ############################ 35 ################################################################################################37 """this class is a Borg : always returns the same values regardless to the instance of the object 38 it is used as data storage for bitmaps ... with a limit of max_len 39 """ 40 __shared_state = {} 41 __data_initialized = False7343 self.__dict__ = self.__shared_state 44 if not ImageCache.__data_initialized : 45 ImageCache.__data_initialized = True 46 self.ordered = [] 47 self.imageDict = {} 48 self.maxSize = maxSize 49 self.size = 051 """x.__setitem__(i, y) <==> x[i]=y""" 52 self.imageDict[ key ] = value 53 if key in self.ordered: 54 index = self.ordered.index(key) 55 self.ordered.pop(index) 56 pixBuf = self.imageDict[ key ] 57 self.size -= 3 * pixBuf.get_width() * pixBuf.get_height() 58 self.size += 3 * value.get_width() * value.get_height() 59 if self.size > self.maxSize: 60 firstKey = self.ordered[ 0 ] 61 if config.DEBUG: print("Removing file %s from cache" % firstKey) 62 firstPixBuf = self.imageDict.pop(firstKey) 63 self.size -= 3 * firstPixBuf.get_width() * firstPixBuf.get_height() 64 self.ordered = self.ordered[1:] 65 self.ordered.append(key)66
Trees | Indices | Help |
---|
Generated by Epydoc 3.0.1 on Wed Apr 28 21:40:51 2010 | http://epydoc.sourceforge.net |