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
7b56df7
..
39ba1e5
100644
(file)
--- a/
Usermode/Applications/axwin2_src/WM/video.c
+++ b/
Usermode/Applications/axwin2_src/WM/video.c
@@
-11,6
+11,7
@@
void Video_Setup(void);
void Video_Update(void);
void Video_FillRect(short X, short Y, short W, short H, uint32_t Color);
void Video_Setup(void);
void Video_Update(void);
void Video_FillRect(short X, short Y, short W, short H, uint32_t Color);
+void Video_DrawRect(short X, short Y, short W, short H, uint32_t Color);
// === GLOBALS ===
// === GLOBALS ===
@@
-95,14
+96,6
@@
void Video_DrawRect(short X, short Y, short W, short H, uint32_t Color)
Video_FillRect(X+W-1, Y, 1, H, Color);
}
Video_FillRect(X+W-1, Y, 1, H, Color);
}
-/**
- * \brief Draw text to the screen
- */
-void Video_DrawText(short X, short Y, short W, short H, void *Font, int Point, uint32_t Color, char *Text)
-{
- // TODO!
-}
-
/**
* \brief Draw an image to the screen
* \todo Maybe have support for an offset in the image
/**
* \brief Draw an image to the screen
* \todo Maybe have support for an offset in the image
@@
-111,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);
{
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 ;
// Bounds Check
if( X >= giScreenWidth ) return ;
@@
-125,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;
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:
switch( Image->Format )
{
case IMGFMT_BGRA:
@@
-132,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
{
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];
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];
@@
-166,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 ++ )
{
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
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
@@
-175,5
+176,8
@@
void Video_DrawImage(short X, short Y, short W, short H, tImage *Image)
buf += giScreenWidth * 4;
}
break;
buf += giScreenWidth * 4;
}
break;
+ default:
+ _SysDebug("ERROR: Unknown image format %i\n", Image->Format);
+ break;
}
}
}
}
UCC
git Repository :: git.ucc.asn.au