Mercurial > mplayer.hg
changeset 24243:aeffa880c7d6
Add code to clear left and right borders not only top and bottom.
Patch by Tomas Janousek (tomi nomi cz) with small modifications by me.
author | reimar |
---|---|
date | Tue, 28 Aug 2007 13:54:27 +0000 |
parents | 76f5d8892c04 |
children | e446bad0872c |
files | libmpcodecs/vf_expand.c |
diffstat | 1 files changed, 20 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/libmpcodecs/vf_expand.c Tue Aug 28 11:20:24 2007 +0000 +++ b/libmpcodecs/vf_expand.c Tue Aug 28 13:54:27 2007 +0000 @@ -78,8 +78,22 @@ if(y0>=vf->priv->exp_y+orig_h) return; h=y-y0; } - if(x0>=vf->priv->exp_x || x0+w<=vf->priv->exp_x+orig_w) return; - // TODO clear left and right side of the image if needed + if(x0<vf->priv->exp_x){ + // it has parts on the left side of the image: + int x=x0+w; + if(x>vf->priv->exp_x) x=vf->priv->exp_x; + remove_func_2(x0,y0,x-x0,h); + if(x0+w<=vf->priv->exp_x) return; + w-=x-x0;x0=x; + } + if(x0+w>vf->priv->exp_x+orig_w){ + // it has parts on the right side of the image: + int x=x0; + if(x<vf->priv->exp_x+orig_w) x=vf->priv->exp_x+orig_w; + remove_func_2(x,y0,x0+w-x,h); + if(x0>=vf->priv->exp_x+orig_w) return; + w=x-x0; + } } static void draw_func(int x0,int y0, int w,int h,unsigned char* src, unsigned char *srca, int stride){ @@ -154,6 +168,10 @@ remove_func_2(0,0,vf->priv->exp_w,vf->priv->exp_y); if (vf->priv->exp_y+h < vf->priv->exp_h) remove_func_2(0,vf->priv->exp_y+h,vf->priv->exp_w,vf->priv->exp_h-h-vf->priv->exp_y); + if (vf->priv->exp_x > 0) + remove_func_2(0,vf->priv->exp_y,vf->priv->exp_x,h); + if (vf->priv->exp_x+w < vf->priv->exp_w) + remove_func_2(vf->priv->exp_x+w,vf->priv->exp_y,vf->priv->exp_w-w-vf->priv->exp_x,h); } else { // partial clear: vo_remove_text(vf->priv->exp_w,vf->priv->exp_h,remove_func);