diff options
Diffstat (limited to 'sd/source/ui/view/bmcache.cxx')
-rw-r--r-- | sd/source/ui/view/bmcache.cxx | 109 |
1 files changed, 0 insertions, 109 deletions
diff --git a/sd/source/ui/view/bmcache.cxx b/sd/source/ui/view/bmcache.cxx index d8781733c520..c7f313037ff8 100644 --- a/sd/source/ui/view/bmcache.cxx +++ b/sd/source/ui/view/bmcache.cxx @@ -58,115 +58,6 @@ BitmapCache::~BitmapCache() } } -/************************************************************************* -|* -|* Cache-Eintrag einfuegen -|* -\************************************************************************/ - -void BitmapCache::Add(const SdPage* pPage, const Bitmap& rBmp, long nZoom) -{ - BitmapCacheEntry* pEntry = NULL; - ULONG nSizeOfBitmap = rBmp.GetSizeBytes(); - - if( nSizeOfBitmap < nMaxSize ) - { - while (nCurSize + nSizeOfBitmap > nMaxSize) - { - if( aEntries.Count() ) - { - pEntry = (BitmapCacheEntry*) aEntries.Remove(aEntries.Count() - 1); - - if( pEntry && pEntry->pGraphicObject ) - { - nCurSize -= pEntry->nSizeBytes; - delete pEntry->pGraphicObject; - } - - delete pEntry; - } - else - break; - } - - pEntry = new BitmapCacheEntry; - pEntry->pPage = pPage; - pEntry->pGraphicObject = new GraphicObject( rBmp ); - pEntry->nSizeBytes = nSizeOfBitmap; - pEntry->nZoom = nZoom; - - aEntries.Insert( pEntry, (ULONG) 0 ); - nCurSize += nSizeOfBitmap; - } -} - -/************************************************************************* -|* -|* Cache-Eintrag suchen, Bitmap-Zeiger zurueckgeben (NULL, wenn Bitmap nicht -|* im Cache) -|* - auf rZoomPercent wird der Zoomfaktor der Bitmap geschrieben -|* - abs(nZoomTolerance) gibt die maximal erlaubte Abweichung des -|* Zoomfaktors an; ist die Toleranz negativ, so sucht der Cache den -|* "best fit", sonst den "first fit", -|* - es werden nur Bitmaps mit Zoomfaktoren kleiner oder gleich rZoomPercent -|* beruecksichtigt, um ein Verkleinern der Bitmap beim Zeichnen zu vermeiden -|* -\************************************************************************/ - -const GraphicObject* BitmapCache::Get( const SdPage* pPage, long& rZoomPercent, long nZoomTolerancePercent) -{ - BitmapCacheEntry* pEntry = NULL; - GraphicObject* pGraphicObject = NULL; - - if( nZoomTolerancePercent < 0 ) - { - // "best fit"-Suche - long nTolerance = -nZoomTolerancePercent; - BitmapCacheEntry* pBest = NULL; - long nBest = LONG_MAX; - long nTest = 0L; - - for( ULONG nPos = 0; nPos < aEntries.Count(); nPos++ ) - { - pEntry = (BitmapCacheEntry*) aEntries.GetObject( nPos ); - - if( pEntry->pPage == pPage ) - { - nTest = rZoomPercent - pEntry->nZoom; - - if( nTest >= 0 && nTest < nBest && nTest <= nTolerance ) - pBest = pEntry; - } - } - - pEntry = pBest; - } - else - { - // "first fit"-suche - for( ULONG nPos = 0; nPos < aEntries.Count(); nPos++ ) - { - pEntry = (BitmapCacheEntry*)aEntries.GetObject( nPos ); - - if (pEntry->pPage == pPage && Abs( pEntry->nZoom - rZoomPercent ) <= nZoomTolerancePercent ) - break; - else - pEntry = NULL; - } - } - - // was passendes gefunden? - if( pEntry ) - { - pGraphicObject = pEntry->pGraphicObject; - aEntries.Remove( pEntry ); - aEntries.Insert( pEntry, (ULONG) 0 ); - rZoomPercent = pEntry->nZoom; - } - - return pGraphicObject; -} - void BitmapCache::Remove( const SdPage* pPage ) { for( ULONG nPos = 0; nPos < aEntries.Count(); ) |