From fd5560f9a4ea8f8e9e065d52a48155f3d8197ffb Mon Sep 17 00:00:00 2001 From: chregu82 <64577148+chregu82@users.noreply.github.com> Date: Fri, 7 Aug 2020 00:01:04 +0200 Subject: [PATCH] Small improvements, don't draw outside of screen --- bin/kernel.img | Bin 353504 -> 353504 bytes bin/kernel7.img | Bin 357600 -> 357600 bytes bin/kernel8-32.img | Bin 353504 -> 357600 bytes bin/recovery7l.img | Bin 283796 -> 283796 bytes pigfx_config.h.in | 2 +- src/gfx.c | 136 +++++++++++++++++++++++++++++---------------- 6 files changed, 88 insertions(+), 50 deletions(-) diff --git a/bin/kernel.img b/bin/kernel.img index ba9e465a81706a3acfbb48bfd4c1115e9cb818e9..652fd0b322532a0b68282d018dc91bec82961b19 100755 GIT binary patch delta 6788 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 delta 6224 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 aBb*@!5QO@SaFNfeY+ki~`3%ua!T$gya#BkG diff --git a/bin/kernel7.img b/bin/kernel7.img index 1939b0384237c31105169ec7098b5fc2a8efd661..95958c9453d00cc323f6be425e6b3504c0e49b05 100755 GIT binary patch delta 6467 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 S#>=!F*^yJ0d6Q+MB>x1sQX+u> delta 5710 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�?y+;@Yo20k%4KrQ;%=D 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 delta 37036 zcmch=51dWa`aizcnSaO38FQE!^OreeM#!Hz%+z3p8AhR@nWCssLli|!(WR&(qbL=% z)UHO&bXB@h)Tp7j6h#-8E`=yFj){yLMVF$^_x);{YT)4hG}@ALV2z1G=#t>;5TVBibcY-vBX08fBF_TGYiyTG8~hP@A&R9RiP^dGh$RkS zn>xXMu0k*CQ{#0N6rs)LHm(}b@!iCUA>S>vVmoe5ggozWVPNs8w+Np?Oj^lH|UZx8LwI`XivL6Pwt%sM=p z-x$_2EF9T1{$$w3$o)>O>6e%q@19J4V|Y8;-<`F83U{(0e)kA*)--62NUu#R^bX1d zN4VE7cs5G6bMG8T@mr!Ly-5kj^Z9LCArVHXq8OC z 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 diff --git a/bin/recovery7l.img b/bin/recovery7l.img index ba0b6b21609b7cc988dd49f83c4baa5bdb7de215..86a9a5c35886b421314222462de29f85dc92d20d 100755 GIT binary patch delta 5874 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 IA@!5|8%mOflmGw# delta 5141 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 DE;Yja diff --git a/pigfx_config.h.in b/pigfx_config.h.in index 3624e73..543ef05 100644 --- a/pigfx_config.h.in +++ b/pigfx_config.h.in @@ -10,7 +10,7 @@ #define PIGFX_MAJVERSION 1 /* Major version number */ #define PIGFX_MINVERSION 7 /* Minor version number */ -#define PIGFX_BUILDVERSION 0 /* Build version. */ +#define PIGFX_BUILDVERSION 1 /* Build version. */ /** Versions: diff --git a/src/gfx.c b/src/gfx.c index c5b4df8..08b45ff 100644 --- a/src/gfx.c +++ b/src/gfx.c @@ -355,6 +355,12 @@ void gfx_set_transparent_color( GFX_COL color ) */ void gfx_put_sprite_NORMAL( unsigned char* p_sprite, unsigned int x, unsigned int y ) { + // Check Nul pointer + if (p_sprite == 0) return; + // Check start + if (x >= ctx.W || y >= ctx.H) return; + + // Get framebuffer address and bitmap size unsigned char* pf = PFB(x,y); unsigned int *p_spr_32 = (unsigned int*)p_sprite; unsigned int width = *p_spr_32; p_spr_32++; @@ -362,20 +368,21 @@ void gfx_put_sprite_NORMAL( unsigned char* p_sprite, unsigned int x, unsigned in unsigned int i,j; unsigned char* pspr = (unsigned char*)p_spr_32; + + // limit bitmap size to screen + if (y+height >= ctx.H) height = ctx.H - y - 1; + unsigned int usedwidth = width; + if (x+width >= ctx.W) usedwidth = ctx.W - x - 1; - for( i=0; i= ctx.W || y >= ctx.H) return; + unsigned char* pf = PFB(x,y); unsigned int *p_spr_32 = (unsigned int*)p_sprite; unsigned int width = *p_spr_32; p_spr_32++; @@ -393,23 +405,34 @@ void gfx_put_sprite_XOR( unsigned char* p_sprite, unsigned int x, unsigned int y unsigned int i,j; unsigned char* pspr = (unsigned char*)p_spr_32; + + // limit bitmap size to screen + if (y+height >= ctx.H) height = ctx.H - y - 1; + unsigned int usedwidth = width; + if (x+width >= ctx.W) usedwidth = ctx.W - x - 1; - for( i=0; i= ctx.W || y >= ctx.H) return; + unsigned char* pf = PFB(x,y); unsigned int *p_spr_32 = (unsigned int*)p_sprite; unsigned int width = *p_spr_32; p_spr_32++; @@ -417,18 +440,23 @@ void gfx_put_sprite_TRANSPARENT( unsigned char* p_sprite, unsigned int x, unsign unsigned int i,j; unsigned char* pspr = (unsigned char*)p_spr_32; + + // limit bitmap size to screen + if (y+height >= ctx.H) height = ctx.H - y - 1; + unsigned int usedwidth = width; + if (x+width >= ctx.W) usedwidth = ctx.W - x - 1; - for( i=0; i= ctx.W || y >= ctx.H) return; + // Get width and height uint32_t* pW = (uint32_t*)pBitmap; uint32_t* pH = pW+1; @@ -461,19 +494,22 @@ void gfx_save_background(tSprite* pSprite, unsigned char* pBitmap, unsigned int unsigned char* pScreen = PFB(x,y); unsigned int i,j; unsigned char* pSave = pSprite->pBackground+8; - for( i=0; i<*pH; ++i ) + unsigned int height = *pH; + unsigned int width = *pW; + + // limit bitmap size to screen + if (y+height >= ctx.H) height = ctx.H - y - 1; + unsigned int usedwidth = width; + if (x+width >= ctx.W) usedwidth = ctx.W - x - 1; + + for( i=0; icmd_params[1]]) { gfx_save_background(&ctx.sprite[state->cmd_params[0]], ctx.bitmap.pBitmap[state->cmd_params[1]], state->cmd_params[2], state->cmd_params[3]); + gfx_put_sprite((unsigned char*)ctx.bitmap.pBitmap[state->cmd_params[1]], state->cmd_params[2], state->cmd_params[3]); // Save drawing mode and transparentcolor ctx.sprite[state->cmd_params[0]].transparentcolor = ctx.transparentcolor; @@ -1548,7 +1585,7 @@ int state_fun_final_letter( char ch, scn_state *state ) ctx.sprite[state->cmd_params[0]].bitmapRef = state->cmd_params[1]; ctx.sprite[state->cmd_params[0]].x = state->cmd_params[2]; ctx.sprite[state->cmd_params[0]].y = state->cmd_params[3]; - gfx_put_sprite((unsigned char*)ctx.bitmap.pBitmap[state->cmd_params[1]], state->cmd_params[2], state->cmd_params[3]); + } } } @@ -1575,21 +1612,22 @@ int state_fun_final_letter( char ch, scn_state *state ) if (state->cmd_params_size == 3) { // expects sprite index, x, y - if (state->cmd_params[0] < MAXSPRITES) + if ((state->cmd_params[0] < MAXSPRITES) && (ctx.sprite[state->cmd_params[0]].active)) { gfx_remove_sprite(state->cmd_params[0]); gfx_save_background(&ctx.sprite[state->cmd_params[0]], ctx.bitmap.pBitmap[ctx.sprite[state->cmd_params[0]].bitmapRef], state->cmd_params[1], state->cmd_params[2]); - ctx.sprite[state->cmd_params[0]].active = 1; - ctx.sprite[state->cmd_params[0]].x = state->cmd_params[1]; - ctx.sprite[state->cmd_params[0]].y = state->cmd_params[2]; if (ctx.sprite[state->cmd_params[0]].mode == drawingNORMAL) gfx_put_sprite_NORMAL((unsigned char*)ctx.bitmap.pBitmap[ctx.sprite[state->cmd_params[0]].bitmapRef], state->cmd_params[1], state->cmd_params[2]); else if (ctx.sprite[state->cmd_params[0]].mode == drawingXOR) gfx_put_sprite_XOR((unsigned char*)ctx.bitmap.pBitmap[ctx.sprite[state->cmd_params[0]].bitmapRef], state->cmd_params[1], state->cmd_params[2]); else gfx_put_sprite_TRANSPARENT((unsigned char*)ctx.bitmap.pBitmap[ctx.sprite[state->cmd_params[0]].bitmapRef], state->cmd_params[1], state->cmd_params[2]); + + ctx.sprite[state->cmd_params[0]].active = 1; + ctx.sprite[state->cmd_params[0]].x = state->cmd_params[1]; + ctx.sprite[state->cmd_params[0]].y = state->cmd_params[2]; } } retval = 0;