| # 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 |
| # General Public License for more details. |
| # |
| # You should have received a copy of the GNU 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; |