added support for accessing (scaled) original size of loaded images
authorHolger Schemel <info@artsoft.org>
Thu, 4 Mar 2021 18:57:56 +0000 (19:57 +0100)
committerHolger Schemel <info@artsoft.org>
Thu, 4 Mar 2021 19:46:27 +0000 (20:46 +0100)
commit4afa1876ca64ce2b3084c64ea0c60ea42be92127
tree0e31a639063d3117a0a466ea1cd1cea0cae08e53
parent1c9e305ffcb3dd5fd571817d1a50b276703b621c
added support for accessing (scaled) original size of loaded images

Before, loaded images were stored and accessed in "standard" size,
with an exception for game element graphics in non-standard size (like
using game element graphics with a tile size of 64x64 pixels).

This has the disadvantage that global animations using the same image
file are displayed incorrectly, because of not using the original size
of the image, but the (potentially down-scaled) "standard" image size
(as the original sized graphics are only used for game elements).

This change adds a bitmap pointer to easily access the original sized
bitmap (which can either be the normal, standard-sized bitmap, or the
custom sized bitmap used for in-game element graphics). In addition,
the original sized bitmap is also stored in cases where it would have
been discarded before (like image files with double-sized element
graphics used in graphics sets that only use standard sized element
graphics, which causes the original bitmap to be down-scaled and freed
again, only keeping the down-scaled bitmap, so the bitmap in original
size is not available anymore for global animations using the same
image file).

When talking about "original sized bitmaps" here, this is the size of
the image _after_ applying a possible option "scale_up_factor", which
is always applied first.

Correctly using the "original sized bitmaps" for global animations
will be fixed with the next commit.
src/libgame/image.h
src/libgame/system.c