Mercurial > mplayer.hg
changeset 1726:38871427a131
corrections to OSD progbar position calculations
author | atlka |
---|---|
date | Tue, 28 Aug 2001 12:43:41 +0000 |
parents | 24e75b632740 |
children | 9da2b587b029 |
files | libvo/sub.c mplayer.c |
diffstat | 2 files changed, 25 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/libvo/sub.c Tue Aug 28 10:54:31 2001 +0000 +++ b/libvo/sub.c Tue Aug 28 12:43:41 2001 +0000 @@ -30,12 +30,20 @@ } int vo_osd_progbar_type=-1; -int vo_osd_progbar_value=100; // 0..255 +int vo_osd_progbar_value=100; // 0..256 + +// if we have n=256 bars then OSD progbar looks like below +// +// 0 1 2 3 ... 256 <= vo_osd_progbar_value +// | | | | | +// [ === === === ... === ] +// +// the above schema is rescalled to n=elems bars inline static void vo_draw_text_progbar(int dxs,int dys,void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride)){ unsigned char *s; unsigned char *sa; - int i,w,h,st; + int i,w,h,st,mark; int y=(dys-vo_font->height)/2; int c,font; int delimw=vo_font->width[OSD_PB_START] @@ -45,8 +53,15 @@ int charw=vo_font->width[OSD_PB_0]+vo_font->charspace; int elems=width/charw; int x=(dxs-elems*charw-delimw)/2; - int mark=(vo_osd_progbar_value*(elems+1))>>8; + if (vo_osd_progbar_value<=0) + mark=0; + else { + int mm=vo_osd_progbar_value*elems; + mark=mm>>8; + if (mm & 0x00FF) mark++; + if (mark>elems) mark=elems; + } // printf("osd.progbar width=%d xpos=%d\n",width,x); c=vo_osd_progbar_type; @@ -254,3 +269,4 @@ } } +
--- a/mplayer.c Tue Aug 28 10:54:31 2001 +0000 +++ b/mplayer.c Tue Aug 28 12:43:41 2001 +0000 @@ -1612,8 +1612,8 @@ if(osd_level){ osd_visible=sh_video->fps; // 1 sec vo_osd_progbar_type=OSD_VOLUME; - vo_osd_progbar_value=(mixer_l+mixer_r)*255/200; - //printf("volume: %d\n",vo_osd_progbar_value); + vo_osd_progbar_value=((mixer_l+mixer_r)*256.0)/200.0; + // printf("volume: %d\n",vo_osd_progbar_value); } #endif } @@ -1649,7 +1649,7 @@ if(osd_level){ osd_visible=sh_video->fps; // 1 sec vo_osd_progbar_type=OSD_CONTRAST; - vo_osd_progbar_value=(v_cont)*255/100; + vo_osd_progbar_value=((v_cont)<<8)/100; } #endif } @@ -1668,7 +1668,7 @@ if(osd_level){ osd_visible=sh_video->fps; // 1 sec vo_osd_progbar_type=OSD_BRIGHTNESS; - vo_osd_progbar_value=(v_bright)*255/100; + vo_osd_progbar_value=((v_bright)<<8)/100; } #endif } @@ -1687,7 +1687,7 @@ if(osd_level){ osd_visible=sh_video->fps; // 1 sec vo_osd_progbar_type=OSD_HUE; - vo_osd_progbar_value=(v_hue)*255/100; + vo_osd_progbar_value=((v_hue)<<8)/100; } #endif } @@ -1706,7 +1706,7 @@ if(osd_level){ osd_visible=sh_video->fps; // 1 sec vo_osd_progbar_type=OSD_SATURATION; - vo_osd_progbar_value=(v_saturation)*255/100; + vo_osd_progbar_value=((v_saturation)<<8)/100; } #endif } @@ -1763,10 +1763,6 @@ osd_visible=sh_video->fps; // 1 sec vo_osd_progbar_type=0; vo_osd_progbar_value=(demuxer->filepos-demuxer->movi_start)/len; - if (vo_osd_progbar_value<0) - vo_osd_progbar_value=0; - else if (vo_osd_progbar_value>255) - vo_osd_progbar_value=255; } } #endif