vlc | branch: master | Jean-Baptiste Kempf <[email protected]> | Sun Apr  3 
02:16:58 2011 +0200| [168e56b088523cfd923a2fb76363947ce7708779] | committer: 
Jean-Baptiste Kempf

Subtitles: basic support for {y:i}, {y:b} and {y:u}

This is not fully working, though...
See #1825

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=168e56b088523cfd923a2fb76363947ce7708779
---

 modules/codec/subsdec.c  |   25 +++++++++++++++++++++++--
 modules/demux/subtitle.c |    6 +++---
 2 files changed, 26 insertions(+), 5 deletions(-)

diff --git a/modules/codec/subsdec.c b/modules/codec/subsdec.c
index 2d74b63..21f2211 100644
--- a/modules/codec/subsdec.c
+++ b/modules/codec/subsdec.c
@@ -981,10 +981,31 @@ static char *CreateHtmlSubtitle( int *pi_align, char 
*psz_subtitle )
             /* Hide {\stupidity} */
             psz_subtitle = strchr( psz_subtitle, '}' ) + 1;
         }
-        else if( psz_subtitle[0] == '{' && ( psz_subtitle[1] == 'Y' || 
psz_subtitle[1] == 'y' )
+        else if( psz_subtitle[0] == '{' &&
+                ( psz_subtitle[1] == 'Y' || psz_subtitle[1] == 'y' )
                 && psz_subtitle[2] == ':' && strchr( psz_subtitle, '}' ) )
         {
-            /* Hide {Y:stupidity} */
+            // FIXME: We don't do difference between Y and y, and we should.
+            if( psz_subtitle[3] == 'i' )
+            {
+                HtmlPut( &psz_html, "<i>" );
+                strcat( psz_tag, "i" );
+            }
+            if( psz_subtitle[3] == 'b' )
+            {
+                HtmlPut( &psz_html, "<b>" );
+                strcat( psz_tag, "b" );
+            }
+            if( psz_subtitle[3] == 'u' )
+            {
+                HtmlPut( &psz_html, "<u>" );
+                strcat( psz_tag, "u" );
+            }
+            psz_subtitle = strchr( psz_subtitle, '}' ) + 1;
+        }
+        else if( psz_subtitle[0] == '{' &&  psz_subtitle[2] == ':' && strchr( 
psz_subtitle, '}' ) )
+        {
+            // Hide other {x:y} atrocities, like {c:$bbggrr} or {P:x}
             psz_subtitle = strchr( psz_subtitle, '}' ) + 1;
         }
         else if( psz_subtitle[0] == '\\' && psz_subtitle[1] )
diff --git a/modules/demux/subtitle.c b/modules/demux/subtitle.c
index f0f7e03..7fcd8d6 100644
--- a/modules/demux/subtitle.c
+++ b/modules/demux/subtitle.c
@@ -1681,7 +1681,7 @@ static int ParseJSS( demux_t *p_demux, subtitle_t 
*p_subtitle, int i_idx )
             continue;
         }
     }
-       
+
     while( psz_text[ strlen( psz_text ) - 1 ] == '\\' )
     {
         const char *s2 = TextGetLine( txt );
@@ -1702,7 +1702,7 @@ static int ParseJSS( demux_t *p_demux, subtitle_t 
*p_subtitle, int i_idx )
         if( !psz_text )
              return VLC_ENOMEM;
 
-               psz_orig = psz_text;
+        psz_orig = psz_text;
         strcat( psz_text, s2 );
     }
 
@@ -1787,7 +1787,7 @@ static int ParseJSS( demux_t *p_demux, subtitle_t 
*p_subtitle, int i_idx )
             else if( *(psz_text + 1 ) == '\r' ||  *(psz_text + 1 ) == '\n' ||
                      *(psz_text + 1 ) == '\0' )
             {
-                               psz_text++;
+                psz_text++;
             }
             break;
         default:

_______________________________________________
vlc-commits mailing list
[email protected]
http://mailman.videolan.org/listinfo/vlc-commits

Reply via email to