diff options
author | Adrian Lees <adrian@aemulor.com> | 2006-03-24 03:44:37 +0000 |
---|---|---|
committer | Adrian Lees <adrian@aemulor.com> | 2006-03-24 03:44:37 +0000 |
commit | 4b03028b5111ca43dc5028c4aee471a83dbae58f (patch) | |
tree | 8c815dc593b719817a2d5c4a59e3ece5b926e289 /riscos/sprite.c | |
parent | 4c7a6f4f5c92c35cf48cb4816bd386b9b2985221 (diff) | |
download | netsurf-4b03028b5111ca43dc5028c4aee471a83dbae58f.tar.gz netsurf-4b03028b5111ca43dc5028c4aee471a83dbae58f.tar.bz2 |
[project @ 2006-03-24 03:44:33 by adrianl]
Use thumbnails for iconised windows
svn path=/import/netsurf/; revision=2157
Diffstat (limited to 'riscos/sprite.c')
-rw-r--r-- | riscos/sprite.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/riscos/sprite.c b/riscos/sprite.c index 27bc4f8af..941e224f0 100644 --- a/riscos/sprite.c +++ b/riscos/sprite.c @@ -110,3 +110,37 @@ bool sprite_redraw(struct content *c, int x, int y, } #endif + + +/** + * Returns the bit depth of a sprite + * + * \param s sprite + * \return depth in bpp + */ + +byte sprite_bpp(const osspriteop_header *s) +{ + /* bit 31 indicates the presence of a full alpha channel rather than a binary mask */ + int type = ((unsigned)s->mode >> osspriteop_TYPE_SHIFT) & 15; + byte bpp = 0; + + switch (type) { + case osspriteop_TYPE_OLD: + { + bits psr; + int val; + if (!xos_read_mode_variable(s->mode, os_MODEVAR_LOG2_BPP, &val, &psr) && + !(psr & _C)) bpp = 1 << val; + } + break; + case osspriteop_TYPE1BPP: bpp = 1; break; + case osspriteop_TYPE2BPP: bpp = 2; break; + case osspriteop_TYPE4BPP: bpp = 4; break; + case osspriteop_TYPE8BPP: bpp = 8; break; + case osspriteop_TYPE16BPP: bpp = 16; break; + case osspriteop_TYPE32BPP: bpp = 32; break; + case osspriteop_TYPE_CMYK: bpp = 32; break; + } + return bpp; +} |