changeset 1824:33035a1d897e

small fixes, and Y check put back to avoid sig11
author arpi
date Sat, 01 Sep 2001 17:56:31 +0000
parents a6c67352ccac
children 1791c7930776
files libvo/sub.c
diffstat 1 files changed, 21 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/libvo/sub.c	Sat Sep 01 17:53:07 2001 +0000
+++ b/libvo/sub.c	Sat Sep 01 17:56:31 2001 +0000
@@ -162,7 +162,10 @@
       while (l--){
 	  t=vo_sub->text[i++];	  
 	  len=strlen(t)-1;
-
+	  
+	  printf("sub(%d) '%s'\n",len,t);
+//	  if(len<0) memy -=h; // according to max of vo_font->pic_a[font]->h 
+//	  else
 	  for (j=0;j<=len;j++){
 	      if ((c=t[j])>=0x80){
 		 if (sub_unicode) 
@@ -184,11 +187,21 @@
 		 lastk=k;
 		 lastStripPosition=j;
 		 lastxsize=xsize;
-	      } else if ((font=vo_font->font[c])>=0){
+	      }
+#if 1
+	      else if ((font=vo_font->font[c])>=0){
 		  if (vo_font->pic_a[font]->h > h){
 		     h=vo_font->pic_a[font]->h;
 		  }
 	      }
+#endif
+#if 0
+	      else if ((font=vo_font->font[c])>=0){
+		  if ((memy-h)+vo_font->pic_a[font]->h > dys){
+		     h=vo_font->pic_a[font]->h;
+		  }
+	      }
+#endif
 	      xsize+=vo_font->width[c]+vo_font->charspace;
 	      if (dxs<xsize){
 		 if (lastStripPosition>0){
@@ -216,21 +229,24 @@
 		 lasth=h;
 		 h=vo_font->height;
 	      }
+	      printf("h: %d -> %d  \n",vo_font->height,h);
 	      memy -=h; // according to max of vo_font->pic_a[font]->h 
 	  }
       }
    }
    
    y = memy;
+   
+//   printf("lines=%d  y=%d\n",lines,y);
 
    i=j=0; l=lines;
-   while (l--){
+   while (i<lines){
 	 x= xtbl[i++]; 
 	 while ((c=utbl[j++])){
-	       if ((font=vo_font->font[c])>=0)
+	       if ((font=vo_font->font[c])>=0 && y<dys)
 		  draw_alpha(x,y,
 			     vo_font->width[c],
-			     vo_font->pic_a[font]->h,
+			     vo_font->pic_a[font]->h+y<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);