changeset 1569:fcbfc99cf8e6

skip lines with negative y position if there is too many lines to display
author atlka
date Fri, 17 Aug 2001 08:47:58 +0000
parents 2d4904c16667
children 0757d1f4fe7d
files libvo/sub.c
diffstat 1 files changed, 25 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/libvo/sub.c	Fri Aug 17 07:26:07 2001 +0000
+++ b/libvo/sub.c	Fri Aug 17 08:47:58 2001 +0000
@@ -48,14 +48,16 @@
 //        printf("osd.progbar  width=%d  xpos=%d\n",width,x);
 
         c=vo_osd_progbar_type;
-        if(vo_osd_progbar_type>0 && (font=vo_font->font[c])>=0)
-            draw_alpha(x-vo_font->width[c]-vo_font->spacewidth,y,
+        if(vo_osd_progbar_type>0 && (font=vo_font->font[c])>=0) {
+	    int xp=x-vo_font->width[c]-vo_font->spacewidth;
+	   draw_alpha((xp<0?0:xp),y,
               vo_font->width[c],
               vo_font->pic_a[font]->h,
               vo_font->pic_b[font]->bmp+vo_font->start[c],
               vo_font->pic_a[font]->bmp+vo_font->start[c],
               vo_font->pic_a[font]->w);
-
+	}
+   
         c=OSD_PB_START;
         if ((font=vo_font->font[c])>=0)
             draw_alpha(x,y,
@@ -197,24 +199,30 @@
 
    k=i=0; l=lines;
    while (l--){
-       x = xtbl[i++];
-       if(y<dys)
-       while ((c=utbl[k++])){
-	     if (x>=0 && x+vo_font->width[c]<=dxs)
-		if ((font=vo_font->font[c])>=0)
-	           draw_alpha(x,y,
-			      vo_font->width[c],
+      if (y>=0){
+	 x= xtbl[i++]; 
+	 while ((c=utbl[k++])){
+	    if (x>=0 && x+vo_font->width[c]<=dxs)
+	       if ((font=vo_font->font[c])>=0)
+		  draw_alpha(x,y,
+			     vo_font->width[c],
 //			      vo_font->pic_a[font]->h,
-			      (y+vo_font->pic_a[font]->h<=dys)?vo_font->pic_a[font]->h:dys-y,
-			      vo_font->pic_b[font]->bmp+vo_font->start[c],
-			      vo_font->pic_a[font]->bmp+vo_font->start[c],
-			      vo_font->pic_a[font]->w);
-	  x+=vo_font->width[c]+vo_font->charspace;
-       }
-       y+=vo_font->height;
+			     (y+vo_font->pic_a[font]->h<=dys)?vo_font->pic_a[font]->h:dys-y,
+			     vo_font->pic_b[font]->bmp+vo_font->start[c],
+			     vo_font->pic_a[font]->bmp+vo_font->start[c],
+			     vo_font->pic_a[font]->w);
+	    x+=vo_font->width[c]+vo_font->charspace;
+	 }
+      } else { 
+	 while (utbl[k++]) ; // skip lines with negative y value
+	 i++;		     // seldom case but who know ;-)
+      }
+      y+=vo_font->height;
    }
 }
 
+
+
 static int draw_alpha_init_flag=0;
 
 extern void vo_draw_alpha_init();