doc/t2h.pm
17ad5fbb
 # makeinfo HTML output init file
 #
 # Copyright (c) 2011, 2012 Free Software Foundation, Inc.
 # Copyright (c) 2014 Andreas Cadhalpun
 # Copyright (c) 2014 Tiancheng "Timothy" Gu
 #
 # This file is part of FFmpeg.
 #
 # FFmpeg is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # the Free Software Foundation; either version 3 of the License, or
 # (at your option) any later version.
 #
 # FFmpeg is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
883f3e18
 # General Public License for more details.
17ad5fbb
 #
883f3e18
 # You should have received a copy of the GNU General Public
17ad5fbb
 # License along with FFmpeg; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
 # no navigation elements
 set_from_init_file('HEADERS', 0);
 
 # TOC and Chapter headings link
 set_from_init_file('TOC_LINKS', 1);
 
 # print the TOC where @contents is used
 set_from_init_file('INLINE_CONTENTS', 1);
 
 # make chapters <h2>
 set_from_init_file('CHAPTER_HEADER_LEVEL', 2);
 
 # Do not add <hr>
 set_from_init_file('DEFAULT_RULE', '');
 set_from_init_file('BIG_RULE', '');
 
 # Customized file beginning
 sub ffmpeg_begin_file($$$)
 {
     my $self = shift;
     my $filename = shift;
     my $element = shift;
 
     my $command;
     if ($element and $self->get_conf('SPLIT')) {
         $command = $self->element_command($element);
     }
 
     my ($title, $description, $encoding, $date, $css_lines,
         $doctype, $bodytext, $copying_comment, $after_body_open,
         $extra_head, $program_and_version, $program_homepage,
         $program, $generator) = $self->_file_header_informations($command);
 
     my $links = $self->_get_links ($filename, $element);
 
     my $head1 = $ENV{"FFMPEG_HEADER1"} || <<EOT;
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <!-- Created by $program_and_version, $program_homepage -->
   <head>
     <meta charset="utf-8">
     <title>
 EOT
     my $head_title = <<EOT;
       $title
 EOT
 
     my $head2 = $ENV{"FFMPEG_HEADER2"} || <<EOT;
     </title>
c7011789
     <link rel="stylesheet" type="text/css" href="bootstrap.min.css">
17ad5fbb
     <link rel="stylesheet" type="text/css" href="style.min.css">
   </head>
   <body>
     <div style="width: 95%; margin: auto">
       <h1>
 EOT
 
     my $head3 = $ENV{"FFMPEG_HEADER3"} || <<EOT;
       </h1>
 EOT
 
     return $head1 . $head_title . $head2 . $head_title . $head3;
 }
 texinfo_register_formatting_function('begin_file', \&ffmpeg_begin_file);
 
 # Customized file ending
 sub ffmpeg_end_file($)
 {
     my $self = shift;
     my $program_string = &{$self->{'format_program_string'}}($self);
     my $program_text = <<EOT;
       <p style="font-size: small;">
         $program_string
       </p>
 EOT
     my $footer = $ENV{FFMPEG_FOOTER} || <<EOT;
     </div>
   </body>
 </html>
 EOT
     return $program_text . $footer;
 }
 texinfo_register_formatting_function('end_file', \&ffmpeg_end_file);
 
 # Dummy title command
 # Ignore title. Title is handled through ffmpeg_begin_file().
 set_from_init_file('USE_TITLEPAGE_FOR_TITLE', 1);
 sub ffmpeg_title($$$$)
 {
     return '';
 }
 
 texinfo_register_command_formatting('titlefont',
                                     \&ffmpeg_title);
 
 # Customized float command. Part of code borrowed from GNU Texinfo.
 sub ffmpeg_float($$$$$)
 {
     my $self = shift;
     my $cmdname = shift;
     my $command = shift;
     my $args = shift;
     my $content = shift;
 
     my ($caption, $prepended) = Texinfo::Common::float_name_caption($self,
                                                                 $command);
     my $caption_text = '';
     my $prepended_text;
     my $prepended_save = '';
 
     if ($self->in_string()) {
         if ($prepended) {
             $prepended_text = $self->convert_tree_new_formatting_context(
                 $prepended, 'float prepended');
         } else {
             $prepended_text = '';
         }
         if ($caption) {
             $caption_text = $self->convert_tree_new_formatting_context(
                 {'contents' => $caption->{'args'}->[0]->{'contents'}},
                 'float caption');
         }
         return $prepended.$content.$caption_text;
     }
 
     my $id = $self->command_id($command);
     my $label;
     if (defined($id) and $id ne '') {
         $label = "<a name=\"$id\"></a>";
     } else {
         $label = '';
     }
 
     if ($prepended) {
         if ($caption) {
             # prepend the prepended tree to the first paragraph
             my @caption_original_contents = @{$caption->{'args'}->[0]->{'contents'}};
             my @caption_contents;
             my $new_paragraph;
             while (@caption_original_contents) {
                 my $content = shift @caption_original_contents;
                 if ($content->{'type'} and $content->{'type'} eq 'paragraph') {
                     %{$new_paragraph} = %{$content};
                     $new_paragraph->{'contents'} = [@{$content->{'contents'}}];
                     unshift (@{$new_paragraph->{'contents'}}, {'cmdname' => 'strong',
                              'args' => [{'type' => 'brace_command_arg',
                                                     'contents' => [$prepended]}]});
                     push @caption_contents, $new_paragraph;
                     last;
                 } else {
                     push @caption_contents, $content;
                 }
             }
             push @caption_contents, @caption_original_contents;
             if ($new_paragraph) {
                 $caption_text = $self->convert_tree_new_formatting_context(
                  {'contents' => \@caption_contents}, 'float caption');
                 $prepended_text = '';
             }
         }
         if ($caption_text eq '') {
             $prepended_text = $self->convert_tree_new_formatting_context(
                 $prepended, 'float prepended');
             if ($prepended_text ne '') {
                 $prepended_save = $prepended_text;
                 $prepended_text = '<p><strong>'.$prepended_text.'</strong></p>';
             }
         }
     } else {
         $prepended_text = '';
     }
 
     if ($caption and $caption_text eq '') {
         $caption_text = $self->convert_tree_new_formatting_context(
             $caption->{'args'}->[0], 'float caption');
     }
     if ($prepended_text.$caption_text ne '') {
         $prepended_text = $self->_attribute_class('div','float-caption'). '>'
                 . $prepended_text;
         $caption_text .= '</div>';
     }
     my $html_class = '';
     if ($prepended_save =~ /NOTE/) {
         $html_class = 'info';
         $prepended_text = '';
         $caption_text   = '';
     } elsif ($prepended_save =~ /IMPORTANT/) {
         $html_class = 'warning';
         $prepended_text = '';
         $caption_text   = '';
     }
     return $self->_attribute_class('div', $html_class). '>' . "\n" .
         $prepended_text . $caption_text . $content . '</div>';
 }
 
 texinfo_register_command_formatting('float',
                                     \&ffmpeg_float);
 
 1;