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 )