% lilyponddefs.tex
%
% Include file for LilyPond.
%
% This file defines various macros to accomodate lilypond output.
%
% Avoid \par while reading this file.
\edef\lilyponddefsELC{\the\endlinechar}%
\endlinechar -1\relax

% TeXbook ex 7.7
\def\ifundefined#1{
  \expandafter\ifx\csname#1\endcsname\relax
}

% If we must make titles, do so, before we're skipped.

\ifx\mustmakelilypondtitle\undefined
\else
  \makelilypondtitle
\fi

\ifx\mustmakelilypondpiecetitle\undefined
\else
  \makelilypondpiecetitle
\fi

% skip if included already

\def\SkipLilydefs{
  \endlinechar \lilyponddefsELC
  \endinput}
\ifundefined{EndLilyPondOutput}
  \def\EndLilyPondOutput{\csname bye\endcsname}
  \def\SkipLilydefs{}
\fi
\SkipLilydefs

% need to do some stuff to turn page numbering off

\ifundefined{documentclass}
  \input lilypond-plaintex
\else
  \input lilypond-latex
\fi

% The feta characters
\input feta20

\font\fetasixteen = feta16
\def\fetafont{\fetasixteen}
\def\fetachar#1{\hbox{\fetasixteen#1}}

\def\botalign#1{
  \vbox to 0pt{\vss #1}
}
\def\leftalign#1{
  \hbox to 0pt{#1\hss}
}

% Attempt to keep lilypiecetitle together with the piece:

%
% TODO: figure this out.
%

\def\myfilbreak{}%\par\vfil\penalty200\vfilneg}


\ifundefined{lilypondpaperinterscorelinefill}
  \def\lilypondpaperinterscorelinefill{0}
\else
  \def\lilypondpaperinterscorelinefill{1}
\fi

\def\interscoreline{
  \vskip \lilypondpaperinterscoreline \lilypondpaperunit
    plus \lilypondpaperinterscorelinefill fill
}

\def\placebox#1#2#3{
  \botalign{
    \hbox{\raise #1\leftalign{\kern #2{}#3}}
  }
}

% Are we using PDFTeX?  If so, use pdf definitions.
% MiKTeX checks \pdfoutput the wrong way; this makes our
% check more complicated.
\ifx\pdfoutput\undefined  
  \input lily-ps-defs
\else
  \ifx\pdfoutput\relax
    \input lily-ps-defs
  \else
    \pdfoutput = 1
    \input lily-pdf-defs
  \fi
\fi

\def\EndLilyPondOutput{
  \ifundefined{lilypondpaperlastpagefill}
    \vskip 0pt plus \lilypondpaperinterscorelinefill00 fill
  \fi
  \csname bye\endcsname
}

% Need to do some stuff to turn page numbering off;
% they seriously mess up your fragments.

\ifx\csname nolilyfooter\endcsname\relax
  \message{[footer defined]}
  \csname lilyfooter\texsuffix\endcsname
\else
  \message{[footer empty]}
  \csname nolilyfooter\texsuffix\endcsname
\fi

% It is very bad that lilyponddefs.tex gets included in every lilypond
% output snippet.  This is necessary because these output snippets
% often get encapsulated, eg by texinfo. This should be fixed by
% putting the variable parts in this file into a macro so that loading
% the file multiple times can be avoided.
\ifx\outputscale\undefined
  \csname global\endcsname\csname newdimen\endcsname\outputscale
  \csname global\endcsname\csname newdimen\endcsname\scoreshift
\fi

% Restore newline functionality (disabled to avoid \par).
\endlinechar \lilyponddefsELC
\endinput
