LibreOffice Module sd (master) 1
Public Member Functions | Private Attributes | List of all members
sd::slidesorter::cache::PageCache Class Reference

The page cache is responsible for the creation and storage of preview bitmaps of pages that are shown by the slide sorter. More...

#include <SlsPageCache.hxx>

Public Member Functions

 PageCache (const Size &rPreviewSize, const bool bDoSuperSampling, const SharedCacheContext &rpCacheContext)
 The page cache is created with a reference to the slide sorter so that it has access to both the view and the model and so can fill itself with requests for all or just the visible pages. More...
 
 ~PageCache ()
 
void ChangeSize (const Size &rPreviewSize, const bool bDoSuperSampling)
 
BitmapEx GetPreviewBitmap (const CacheKey aKey, const bool bResize)
 Request a preview bitmap for the specified page object in the specified size. More...
 
BitmapEx GetMarkedPreviewBitmap (const CacheKey aKey)
 
void SetMarkedPreviewBitmap (const CacheKey aKey, const BitmapEx &rBitmap)
 
void RequestPreviewBitmap (const CacheKey aKey)
 When the requested preview bitmap does not yet exist or is not up-to-date then the rendering of one is scheduled. More...
 
void InvalidatePreviewBitmap (const CacheKey aKey)
 Tell the cache that the bitmap associated with the given request data is not up-to-date anymore. More...
 
void InvalidateCache ()
 Call this method when all preview bitmaps have to be generated anew. More...
 
void SetPreciousFlag (const CacheKey aKey, const bool bIsPrecious)
 With the precious flag you can control whether a bitmap can be removed or reduced in size to make room for other bitmaps or is so precious that it will not touched. More...
 
void Pause ()
 
void Resume ()
 

Private Attributes

std::unique_ptr< GenericPageCachempImplementation
 

Detailed Description

The page cache is responsible for the creation and storage of preview bitmaps of pages that are shown by the slide sorter.

Bitmaps for previews and a cache are used to speed up the display (painting) of the slide sorter. But, of course, we have to limit this time-space-tradeoff by limiting the amount of space that can be use to store bitmaps.

There are several strategies employed by this class to shorten the perceived time that is used to paint the slide sorter:

Definition at line 63 of file SlsPageCache.hxx.

Constructor & Destructor Documentation

◆ PageCache()

sd::slidesorter::cache::PageCache::PageCache ( const Size rPreviewSize,
const bool  bDoSuperSampling,
const SharedCacheContext rpCacheContext 
)

The page cache is created with a reference to the slide sorter so that it has access to both the view and the model and so can fill itself with requests for all or just the visible pages.

It is the task of the PageCacheManager to create new objects of this class.

Definition at line 30 of file SlsPageCache.cxx.

◆ ~PageCache()

sd::slidesorter::cache::PageCache::~PageCache ( )

Definition at line 42 of file SlsPageCache.cxx.

Member Function Documentation

◆ ChangeSize()

void sd::slidesorter::cache::PageCache::ChangeSize ( const Size rPreviewSize,
const bool  bDoSuperSampling 
)

Definition at line 46 of file SlsPageCache.cxx.

References mpImplementation.

◆ GetMarkedPreviewBitmap()

BitmapEx sd::slidesorter::cache::PageCache::GetMarkedPreviewBitmap ( const CacheKey  aKey)

Definition at line 60 of file SlsPageCache.cxx.

References mpImplementation.

◆ GetPreviewBitmap()

BitmapEx sd::slidesorter::cache::PageCache::GetPreviewBitmap ( const CacheKey  aKey,
const bool  bResize 
)

Request a preview bitmap for the specified page object in the specified size.

The returned bitmap may be a preview of the preview, i.e. either a scaled (up or down) version of a previous preview (of the wrong size) or an empty bitmap. In this case a request for the generation of a new preview is created and inserted into the request queue. When the preview is available in the right size the page shape will be told to paint itself again. When it then calls this method again if receives the correctly sized preview bitmap.

Parameters
rRequestDataThis data is used to determine the preview.
bResizeWhen <TRUE> then when the available bitmap has not the requested size, it is scaled before it is returned. When <FALSE> then the bitmap is returned in the wrong size and it is the task of the caller to scale it.
Returns
Returns a bitmap that is either empty, contains a scaled (up or down) version or is the requested bitmap.

Definition at line 53 of file SlsPageCache.cxx.

References mpImplementation.

◆ InvalidateCache()

void sd::slidesorter::cache::PageCache::InvalidateCache ( )

Call this method when all preview bitmaps have to be generated anew.

This is the case when the size of the page objects on the screen has changed or when the model has changed.

Definition at line 85 of file SlsPageCache.cxx.

References mpImplementation.

◆ InvalidatePreviewBitmap()

void sd::slidesorter::cache::PageCache::InvalidatePreviewBitmap ( const CacheKey  aKey)

Tell the cache that the bitmap associated with the given request data is not up-to-date anymore.

This will invalidate all previews in other caches that represent the same page as well. A new preview is requested and will lead eventually to a repaint of the associated page object.

Definition at line 78 of file SlsPageCache.cxx.

References mpImplementation, and RequestPreviewBitmap().

◆ Pause()

void sd::slidesorter::cache::PageCache::Pause ( )

Definition at line 97 of file SlsPageCache.cxx.

References mpImplementation.

◆ RequestPreviewBitmap()

void sd::slidesorter::cache::PageCache::RequestPreviewBitmap ( const CacheKey  aKey)

When the requested preview bitmap does not yet exist or is not up-to-date then the rendering of one is scheduled.

Otherwise this method does nothing.

Definition at line 73 of file SlsPageCache.cxx.

References mpImplementation.

Referenced by InvalidatePreviewBitmap().

◆ Resume()

void sd::slidesorter::cache::PageCache::Resume ( )

Definition at line 102 of file SlsPageCache.cxx.

References mpImplementation.

◆ SetMarkedPreviewBitmap()

void sd::slidesorter::cache::PageCache::SetMarkedPreviewBitmap ( const CacheKey  aKey,
const BitmapEx rBitmap 
)

Definition at line 66 of file SlsPageCache.cxx.

References mpImplementation.

◆ SetPreciousFlag()

void sd::slidesorter::cache::PageCache::SetPreciousFlag ( const CacheKey  aKey,
const bool  bIsPrecious 
)

With the precious flag you can control whether a bitmap can be removed or reduced in size to make room for other bitmaps or is so precious that it will not touched.

A typical use is to set the precious flag for exactly the visible pages.

Definition at line 90 of file SlsPageCache.cxx.

References mpImplementation.

Member Data Documentation

◆ mpImplementation

std::unique_ptr<GenericPageCache> sd::slidesorter::cache::PageCache::mpImplementation
private

The documentation for this class was generated from the following files: