diff options
Diffstat (limited to 'engines/glk/picture.cpp')
-rw-r--r-- | engines/glk/picture.cpp | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/engines/glk/picture.cpp b/engines/glk/picture.cpp index 8461983c45..89e75fa941 100644 --- a/engines/glk/picture.cpp +++ b/engines/glk/picture.cpp @@ -126,6 +126,21 @@ Picture *Pictures::load(uint32 id) { return pic; } +Picture *Pictures::scale(Picture *src, size_t sx, size_t sy) { + // Check for the presence of an already scaled version of that size + Picture *dst = retrieve(src->_id, true); + if (dst && dst->w == sx && dst->h == sy) + return dst; + + // Create a new picture of the destination size and rescale the source picture + dst = new Picture(sx, sy, src->format); + dst->_id = src->_id; + dst->_scaled = true; + dst->transBlitFrom(*src, src->getBounds(), dst->getBounds(), (uint)-1); + + storeScaled(dst); +} + /*--------------------------------------------------------------------------*/ void Picture::increment() { @@ -139,11 +154,6 @@ void Picture::decrement() { } } -Picture *Picture::scale(int sx, int sy) { - // TODO: gli_picture_scale - return nullptr; -} - void Picture::drawPicture(int x0, int y0, int dx0, int dy0, int dx1, int dy1) { // TODO: drawPicture } |