LibreOffice Module sd (master) 1
|
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< GenericPageCache > | mpImplementation |
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:
Limit the amount of space that may be used for storing preview bitmaps and throw.
There is another somewhat similar methods for requesting new previews: GetPreviewBitmap() schedules a re-rendering (when necessary) and returns the preview what is currently available, either as a preview of the preview or, when nothing has changed since the last call, as the final thing.
Definition at line 63 of file SlsPageCache.hxx.
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.
sd::slidesorter::cache::PageCache::~PageCache | ( | ) |
Definition at line 42 of file SlsPageCache.cxx.
void sd::slidesorter::cache::PageCache::ChangeSize | ( | const Size & | rPreviewSize, |
const bool | bDoSuperSampling | ||
) |
Definition at line 46 of file SlsPageCache.cxx.
References mpImplementation.
Definition at line 60 of file SlsPageCache.cxx.
References mpImplementation.
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.
rRequestData | This data is used to determine the preview. |
bResize | When <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. |
Definition at line 53 of file SlsPageCache.cxx.
References mpImplementation.
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.
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().
void sd::slidesorter::cache::PageCache::Pause | ( | ) |
Definition at line 97 of file SlsPageCache.cxx.
References mpImplementation.
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().
void sd::slidesorter::cache::PageCache::Resume | ( | ) |
Definition at line 102 of file SlsPageCache.cxx.
References mpImplementation.
void sd::slidesorter::cache::PageCache::SetMarkedPreviewBitmap | ( | const CacheKey | aKey, |
const BitmapEx & | rBitmap | ||
) |
Definition at line 66 of file SlsPageCache.cxx.
References mpImplementation.
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.
|
private |
Definition at line 136 of file SlsPageCache.hxx.
Referenced by ChangeSize(), GetMarkedPreviewBitmap(), GetPreviewBitmap(), InvalidateCache(), InvalidatePreviewBitmap(), Pause(), RequestPreviewBitmap(), Resume(), SetMarkedPreviewBitmap(), and SetPreciousFlag().