summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoratlka <atlka@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-08-28 12:43:41 +0000
committeratlka <atlka@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-08-28 12:43:41 +0000
commit60737e38456d9a118272c47b517616c001f6b1b8 (patch)
treedd81684ce0ff5e653a9f79360970bc30b9307fff
parent92828938a340c26b4fd5a568439ad700a1f09835 (diff)
downloadmpv-60737e38456d9a118272c47b517616c001f6b1b8.tar.bz2
mpv-60737e38456d9a118272c47b517616c001f6b1b8.tar.xz
corrections to OSD progbar position calculations
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@1727 b3059339-0415-0410-9bf9-f77b7e298cf2
-rw-r--r--libvo/sub.c22
-rw-r--r--mplayer.c16
2 files changed, 25 insertions, 13 deletions
diff --git a/libvo/sub.c b/libvo/sub.c
index 756072003b..890b9a3820 100644
--- a/libvo/sub.c
+++ b/libvo/sub.c
@@ -30,12 +30,20 @@ inline static void vo_draw_text_osd(int dxs,int dys,void (*draw_alpha)(int x0,in
}
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 @@ inline static void vo_draw_text_progbar(int dxs,int dys,void (*draw_alpha)(int x
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 @@ void vo_draw_text(int dxs,int dys,void (*draw_alpha)(int x0,int y0, int w,int h,
}
}
+
diff --git a/mplayer.c b/mplayer.c
index 53f1aa6c83..8f175e97ac 100644
--- a/mplayer.c
+++ b/mplayer.c
@@ -1612,8 +1612,8 @@ if(auto_quality>0){
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(auto_quality>0){
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(auto_quality>0){
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(auto_quality>0){
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(auto_quality>0){
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 @@ if(rel_seek_secs || abs_seek_pos){
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