App-Music-PlayTab
view release on metacpan or search on metacpan
lib/App/Music/PlayTab/Output/PostScript.pm view on Meta::CPAN
}
sub bar { # API
my ( $self, $first ) = @_;
ps_move();
if ( defined($barno) ) {
if ( $first ) {
print { $self->{fh} } ( $barno > 0 ? ("($barno) barn\n") : ("bar\n") );
}
else {
print { $self->{fh} } ("bar\n");
$barno++;
}
}
else {
print { $self->{fh} } ("bar\n");
}
ps_skip(4);
}
sub newline { # API
my ( $self, $count ) = @_;
ps_advance($count);
}
sub print_space {
ps_step();
}
sub print_rest {
my $self = shift;
ps_move();
print { $self->{fh} } ("rest\n");
ps_step();
}
sub print_same {
my ( $self, $wh, $xs ) = @_;
my $save_x = $x;
$x += ($xs * $xd) / 2;
ps_move();
print { $self->{fh} } ("same$wh\n"); # TODO: change to "same"
$x = $save_x;
ps_skip($xs * $xd);
}
sub print_ta {
my $self = shift;
ps_move();
print { $self->{fh} } ("ta\n");
ps_step();
}
sub postfix { # API
my ( $self, $text ) = @_;
ps_skip(4);
$self->text( $text, $md );
}
sub text { # API
my ( $self, $text, $xxmd, $font ) = @_;
$font ||= 'SF';
my $xm = $md;
$md = $xxmd || 0;
ps_move();
print { $self->{fh} } ( $font, ' (', $text, ') show', "\n");
$md = $xm;
}
sub print_hmore {
ps_skip(4);
}
sub print_less {
ps_skip(-4);
}
sub grids { # API
my ( $self, $grids ) = @_;
my $n = int( ( 570 - $md - 60 ) / 80 );
my $i = 0;
foreach my $ch ( @$grids ) {
$self->print_grid($ch);
if ( ++$i >= $n ) {
$self->newline(4);
$i = 0;
}
else {
ps_gridstep();
}
}
$self->newline(3);
}
my @Rom = qw(I II III IV V VI VII VIII IX X XI XII);
sub print_grid {
my ( $self, $grid ) = @_;
my @c = @$grid;
my $chord = shift(@c);
my $ps = ref($chord) ? $chord->ps : "($chord) show";
print { $self->{fh} } ('1000 1000 moveto', "\n",
$ps, "\n",
'currentpoint pop 1000 sub 2 div', "\n");
ps_move();
print { $self->{fh} } (2.5*$std_gridscale, ' exch sub 8 add 0 rmoveto ',
$ps, "\n");
ps_move();
my $c = shift(@c);
if ( $c ) {
$c = "($Rom[$c-1])"
}
else {
$c = '()';
}
print { $self->{fh} } ('8 ', -5-(4*$std_gridscale), " rmoveto @c $c dots\n");
}
################ PostScript routines ################
my $ps_pages = 0;
( run in 0.515 second using v1.01-cache-2.11-cpan-5735350b133 )