summaryrefslogtreecommitdiff
path: root/riscos/sprite.c
diff options
context:
space:
mode:
authorAdrian Lees <adrian@aemulor.com>2006-03-24 03:44:37 +0000
committerAdrian Lees <adrian@aemulor.com>2006-03-24 03:44:37 +0000
commit4b03028b5111ca43dc5028c4aee471a83dbae58f (patch)
tree8c815dc593b719817a2d5c4a59e3ece5b926e289 /riscos/sprite.c
parent4c7a6f4f5c92c35cf48cb4816bd386b9b2985221 (diff)
downloadnetsurf-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.c34
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;
+}