mirror of https://github.com/FFmpeg/FFmpeg.git
texi2html is deprecated by upstream in favor of makeinfo/texi2any. See: - https://www.gnu.org/software/texinfo/manual/texinfo/html_node/texi2html.html - https://wiki.debian.org/Texi2htmlTransition - https://lists.debian.org/debian-devel/2013/05/msg01516.html This is actually two separate changes. Based on a patch by Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>. Fixes Trac ticket #3232. Signed-off-by: Timothy Gu <timothygu99@gmail.com>pull/88/head
parent
75a9859ac6
commit
17ad5fbb8a
7 changed files with 248 additions and 4 deletions
@ -0,0 +1,220 @@ |
||||
# 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="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; |
Loading…
Reference in new issue