Reviewed-by: Timothy Gu <timothygu99@gmail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
		
			
				
	
	
		
			222 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
			
		
		
	
	
			222 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
# 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
 | 
						|
# Lesser General Public License for more details.
 | 
						|
#
 | 
						|
# You should have received a copy of the GNU Lesser General Public
 | 
						|
# 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>
 | 
						|
    <link rel="stylesheet" type="text/css" href="bootstrap.min.css">
 | 
						|
    <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;
 |