App-Music-PlayTab

 view release on metacpan or  search on metacpan

lib/App/Music/PlayTab/Output/PDF.pm  view on Meta::CPAN

#! perl

# Author          : Johan Vromans
# Created On      : Tue Apr 15 11:02:34 2014
# Last Modified By: Johan Vromans
# Last Modified On: Fri Apr  7 17:28:35 2017
# Update Count    : 698
# Status          : Unknown, Use with caution!

use utf8;

package App::Music::PlayTab::Output::PDF;

use strict;
use warnings;
use App::Packager;

our $VERSION = "0.002";

# Globals.

my $ps =
  { papersize     => [ 595, 840 ],	# A4, portrait
    marginleft    => 50,
    margintop     => 40,
    marginbottom  => 50,
    marginright   => 45,	# only used for page number!
    lineheight    => 15,
    fonts         => {
		      title    => { name => 'Helvetica',
				    file => 'ArialMT.ttf',
				    size => 16 },
		      subtitle => { name => 'Helvetica',
				    file => 'ArialMT.ttf',
				    size => 12 },
		      chord_n  => { name => 'Helvetica',
				    file => 'ArialMT.ttf',
				    size => 17 },
		      chord_cn => { name => 'Myriad-CnSemibold',
				    file => 'Myriad-CnSemibold.ttf',
				    size => 20 },
		      barno    => { file => 'Helvetica',
				    file => 'ArialMT.ttf',
				    size => 8 },
		      msyms    => { file => 'MSyms.ttf',
				    size => 15 },
		     },
  };

my $f_chord;
my $f_msyms;

# Actual media box.
my @mediabox;

# Low level PDF api.
my $pr;

# Initial delta values for width, height and margin.
my @delta_values;

# Position control.
my $xd = 0;			# step (in bar lines)
my $yd = 0;			# vertical space between lines
my $md = 0;			# additional left margin
my $x;				# actual x pos
my $y;				# actual y pos

my $barno;
my $std_gridscale = 8;
my $condensed = 0;

################ API Functions ################

# Object creation.
sub new {
    my ( $pkg, $args ) = @_;
    my $self = bless { }, $pkg;
    $self;
}

# Init the backend.
sub setup {
    my ( $self, $args, $title ) = @_;

    @delta_values = ( 0, 0, 0 );
    $ps->{fonts}->{chord} = $ps->{fonts}->{chord_n};
    @mediabox = ( 0, 0, @{ $ps->{papersize} } );

    if ( $args->{opus}->{globalsettings} ) {
	$self->globalsettings( $args->{opus}->{globalsettings} );
    }

    my $options = { pagedefs_default => { pdf => $ps } };
    $self->pagesettings($options);
    $ps = $self->{ps};

    # Add font dirs.
    for my $fontdir ( $self->{fontdir}, ::findlib("fonts"), $ENV{FONTDIR} ) {
	next unless $fontdir;



( run in 0.600 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )