Creates an RTImage cache

Fixes:
- Fixes GUI issue on Windows (GDI handles limit reached)
- Fixes an incorrect icon name in Perspective tool
- Adds robustness RTScalable::loadSurfaceFromIcon function
This commit is contained in:
Pandagrapher
2022-09-02 19:15:42 +02:00
parent 35ce0d1227
commit 1c85926200
6 changed files with 130 additions and 21 deletions

View File

@@ -161,19 +161,7 @@ Cairo::RefPtr<Cairo::ImageSurface> RTSurface::get()
{
if (dpiBack != RTScalable::getDPI() ||
scaleBack != RTScalable::getScale()) {
switch (type) {
case RTSurface::IconType :
surface = RTScalable::loadSurfaceFromIcon(name, icon_size);
break;
case RTSurface::PNGType :
surface = RTScalable::loadSurfaceFromPNG(name);
break;
case RTSurface::SVGType :
surface = RTScalable::loadSurfaceFromSVG(name);
break;
default :
break;
}
updateSurface();
// Save new DPI and scale
dpiBack = RTScalable::getDPI();
@@ -182,3 +170,21 @@ Cairo::RefPtr<Cairo::ImageSurface> RTSurface::get()
return surface;
}
void RTSurface::updateSurface()
{
// Update surface based on the scale
switch (type) {
case RTSurface::IconType :
surface = RTScalable::loadSurfaceFromIcon(name, icon_size);
break;
case RTSurface::PNGType :
surface = RTScalable::loadSurfaceFromPNG(name);
break;
case RTSurface::SVGType :
surface = RTScalable::loadSurfaceFromSVG(name);
break;
default :
break;
}
}