git.ucc.asn.au
/
tpg
/
acess2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
| inline |
side by side
Networking - Heaps of changes
[tpg/acess2.git]
/
Usermode
/
Applications
/
axwin2_src
/
WM
/
video.c
diff --git
a/Usermode/Applications/axwin2_src/WM/video.c
b/Usermode/Applications/axwin2_src/WM/video.c
index
7e25360
..
39ba1e5
100644
(file)
--- a/
Usermode/Applications/axwin2_src/WM/video.c
+++ b/
Usermode/Applications/axwin2_src/WM/video.c
@@
-104,7
+104,11
@@
void Video_DrawImage(short X, short Y, short W, short H, tImage *Image)
{
int x, y;
uint8_t *buf = (uint8_t *)(gpScreenBuffer + Y*giScreenWidth + X);
- uint8_t *data = Image->Data;
+ uint8_t *data;
+
+ // Sanity please
+ if( !Image )
+ return ;
// Bounds Check
if( X >= giScreenWidth ) return ;
@@
-118,6
+122,8
@@
void Video_DrawImage(short X, short Y, short W, short H, tImage *Image)
if( X + W > giScreenWidth ) W = giScreenWidth - X;
if( Y + H > giScreenHeight ) H = giScreenHeight - Y;
+ // Do the render
+ data = Image->Data;
switch( Image->Format )
{
case IMGFMT_BGRA:
@@
-125,7
+131,8
@@
void Video_DrawImage(short X, short Y, short W, short H, tImage *Image)
{
int r, g, b, a; // New
int or, og, ob; // Original
- for( x = 0; x < W; x ++ ) {
+ for( x = 0; x < W; x ++ )
+ {
b = data[x*4+0]; g = data[x*4+1]; r = data[x*4+2]; a = data[x*4+3];
if( a == 0 ) continue; // 100% transparent
ob = buf[x*4+0]; og = buf[x*4+1]; or = buf[x*4+2];
@@
-159,7
+166,8
@@
void Video_DrawImage(short X, short Y, short W, short H, tImage *Image)
case IMGFMT_RGB:
for( y = 0; y < H; y ++ )
{
- for( x = 0; x < W; x ++ ) {
+ for( x = 0; x < W; x ++ )
+ {
buf[x*4+0] = data[x*3+2]; // Blue
buf[x*4+1] = data[x*3+1]; // Green
buf[x*4+2] = data[x*3+0]; // Red
@@
-168,5
+176,8
@@
void Video_DrawImage(short X, short Y, short W, short H, tImage *Image)
buf += giScreenWidth * 4;
}
break;
+ default:
+ _SysDebug("ERROR: Unknown image format %i\n", Image->Format);
+ break;
}
}
UCC
git Repository :: git.ucc.asn.au