+2006-05-09 Han-Wen Nienhuys <hanwen@lilypond.org>
+
+ * stepmake/aclocal.m4: use python-config for x-compile flags. Backport.
+
+ * scripts/lilypond-book.py (do_process_cmd): backport: create .png
+ for html files. Backport.
+
+ * scm/framework-ps.scm (write-preamble): use mac-font? even if
+ gs-font-load is set. Backport.
+
+ * mf/feta-bolletjes.mf: fix attachment of triangle head. backport.
+
+ * mf/GNUmakefile ($(NCSB_OTFS)): backport: gen and install OTF
+ files, new NCSB dir handling. backport.
+
+ * lily/music-sequence.cc (maximum_length): backport robustness fix.
+
+ * input/tutorial/GNUmakefile (EXTRA_DIST_FILES): dist html file too.
+
+ * configure.in (LINK_GXX_STATICALLY): new --with-ncsb-dir. (backport)
+
+ * config.make.in: NCSB_SOURCE_FILES
+
+ * flower/include/std-vector.hh:
+ (default_compare): backport: use only 1 compare optor.
+
2006-05-07 Graham Percival <gpermus@gmail.com>
* Documentation/user/ all: backport everything from 2.9 docs.
vimdir = $(lilypond_datadir)/vim
-NCSB_DIR = @NCSB_DIR@
+NCSB_SOURCE_FILES = @NCSB_SOURCE_FILES@
################################################################
## PROGRAMS
DOCUMENTATION = @DOCUMENTATION@
DOTEXE = @DOTEXE@
FIND = @FIND@
+FCMATCH = @FCMATCH@
FLEX = @FLEX@
FLEXLEXER_FILE = @FLEXLEXER_FILE@
FONTFORGE = @FONTFORGE@
NCSB_DIR=unknown
AC_ARG_WITH(ncsb-dir,
[ --with-ncsb-dir=DIR location of Century Schoolbook fonts
- Default: detect with locate(1)],
+ Default: detect with fc-match(1)],
[NCSB_DIR=$withval])
reloc_b=no
# must come before any header checks
STEPMAKE_COMPILE
+
+
+
+AC_CHECK_PROG(FCMATCH, fc-match, fc-match)
+AC_MSG_CHECKING([New Century Schoolbook PFB files])
+AC_SUBST(NCSB_SOURCE_FILES)
+if test "$NCSB_DIR" != "" ; then
+ NCSB_SOURCE_FILES=""
+ for f in c059013l c059016l c059033l c059036l; do
+ if test ! -f "$NCSB_DIR/$f.pfb"; then
+ AC_MSG_WARN($NCSB_DIR does not contain $f.pfb.)
+ else
+ NCSB_SOURCE_FILES="$NCSB_DIR/$f.pfb $NCSB_SOURCE_FILES"
+ fi
+ done
+else
+ if test "$FCMATCH" != ""; then
+ for style in Roman Italic "Bold Italic" Bold; do
+ NCSB_FILE=`$FCMATCH --verbose 'Century Schoolbook L:style=$style' | grep 'file:'`
+
+ NCSB_FILE=`echo $NCSB_FILE | sed 's/^.*"\(.*\)".*$/\1/g'`
+ NCSB_SOURCE_FILES="$NCSB_FILE $NCSB_SOURCE_FILES"
+ done
+ else
+ AC_MSG_RESULT(not found)
+ echo "Can't find Century Schoolbook files. Install FontConfig's fc-match,"
+ echo "or use --with-ncsb-dir"
+ fi
+fi
+AC_MSG_RESULT($NCSB_SOURCE_FILES)
+
+
STEPMAKE_PYTHON(REQUIRED, 2.2)
STEPMAKE_GCC(REQUIRED, 2.8)
STEPMAKE_CXX(REQUIRED)
AC_DEFINE(ARGV0_RELOCATION)
fi
-AC_MSG_CHECKING([New Century Schoolbook PFB files])
-if test "$NCSB_DIR" = "unknown"; then
- # use `type' command rather than external program `which'
- type locate >& /dev/null
- if test "$?" = "0"; then
- for d in `locate c059033l.pfb `; do
- if test -f `dirname "$d"`/c059033l.afm ; then
- NCSB_DIR=`dirname "$d"`
- break
- fi
- done
- if test "$NCSB_DIR" = "unknown"; then
- AC_MSG_WARN(Could not find c059033l.pfb. Use --enable-ncsb-path to set path)
- fi
- else
- AC_MSG_WARN(Could not find locate(1). Use --enable-ncsb-path to set path to c059033l.pfb)
- fi
-fi
-AC_MSG_RESULT($NCSB_DIR)
-AC_SUBST(NCSB_DIR)
HOST_ARCH=`$CC -dumpmachine`
AC_SUBST(HOST_ARCH)
{
if (a < b)
return -1;
- else if (a > b)
+ else if (b < a)
return 1;
else
return 0;
LOCALSTEPMAKE_TEMPLATES=ly mutopia
-EXTRA_DIST_FILES= lbook-texi-test.texi lbook-latex-test.tex
+EXTRA_DIST_FILES= lbook-texi-test.texi lbook-latex-test.tex lbook-html-test.html
include $(depth)/make/stepmake.make
for (SCM s = l; scm_is_pair (s); s = scm_cdr (s))
{
Music *m = unsmob_music (scm_car (s));
- Moment l = m->get_length ();
- dur = max (dur, l);
+ if (!m)
+ programming_error ("Music sequence should have music elements");
+ else
+ {
+ Moment l = m->get_length ();
+ dur = max (dur, l);
+ }
}
return dur;
SVG_FILES = $(OTF_FILES:%.otf=%.svg) $(ALL_FONTS:%=$(outdir)/%.svg)
-NCSB_SOURCE_FILES=c059013l c059016l c059033l c059036l
-NCSB_TTFS=$(addprefix $(outdir)/,CenturySchL-Ital.ttf CenturySchL-BoldItal.ttf CenturySchL-Roma.ttf CenturySchL-Bold.ttf)
+NCSB_OTFS=$(addprefix $(outdir)/,CenturySchL-Ital.ttf CenturySchL-BoldItal.ttf CenturySchL-Roma.ttf CenturySchL-Bold.ttf)
NCSB_INSTALL_DIR=$(local_lilypond_datadir)/fonts/otf
LOG_FILES = $(FETA_MF_FILES:%.mf=$(outdir)/%.log)
# Make tfm files first, log files last,
# so that normally log files aren't made twice
-ALL_GEN_FILES= $(TFM_FILES) $(TEXTABLES) $(TFM_FILES) $(LOG_FILES) $(ENC_FILES) $(LISP_FILES) $(FETA_LIST_FILES) $(OTF_TABLES) $(NCSB_TTFS) $(PFA_FILES) $(OTF_FILES) $(SVG_FILES) $(outdir)/fonts.cache-1
+ALL_GEN_FILES= $(TFM_FILES) $(TEXTABLES) $(TFM_FILES) $(LOG_FILES) $(ENC_FILES) $(LISP_FILES) $(FETA_LIST_FILES) $(OTF_TABLES) $(NCSB_OTFS) $(PFA_FILES) $(OTF_FILES) $(SVG_FILES) $(outdir)/fonts.cache-1
#PRE_INSTALL=$(MAKE) "$(ALL_GEN_FILES)"
INSTALLATION_OUT_FILES1=$(TEXTABLES)
INSTALLATION_OUT_DIR2=$(local_lilypond_datadir)/fonts/otf
-INSTALLATION_OUT_FILES2=$(OTF_FILES) $(NCSB_TTFS)
+INSTALLATION_OUT_FILES2=$(OTF_FILES) $(NCSB_OTFS)
INSTALLATION_OUT_DIR3=$(local_lilypond_datadir)/fonts/tfm
INSTALLATION_OUT_FILES3=$(TFM_FILES)
cp $< $@
-$(NCSB_TTFS): $(addsuffix .pfb,$(addprefix $(NCSB_DIR)/,$(NCSB_SOURCE_FILES))) $(buildscript-dir)/pfx2ttf.fontforge
+$(NCSB_OTFS): $(NCSB_SOURCE_FILES) $(buildscript-dir)/pfx2ttf.fontforge
$(foreach i,$(NCSB_SOURCE_FILES), \
$(FONTFORGE) -script $(buildscript-dir)/pfx2ttf.fontforge \
- $(NCSB_DIR)/$(i).pfb $(NCSB_DIR)/$(i).afm $(outdir)/ && ) true
+ $(i).pfb $(i).afm $(outdir)/ && ) true
message "******************************************************";
message "Using feta Autometric macros.";
-message "Do not worry about the @ signs in the output, they are not errors.";
+message "order of messages: ";
+message " NAME/CODE/BP/WD/DP/HT/WX/WY";
message "******************************************************";
message "";
enddef;
+%
+%
+% UGH : xs not declared as argument.
+%
def define_triangle_shape (expr stemdir) =
save triangle_a, triangle_b, triangle_c;
save triangle_out_a, triangle_out_b, triangle_out_c;
& {direction infinity of triangle_out_c}z1'l
.. cycle;
+
labels (0, 10, 20, 30);
penlabels (1, 1', 2, 2', 3, 3', 12, 23, 31);
% attachment Y
if stemdir = 1:
charwy := ypart exact_right_point;
- charwx := xpart exact_right_point;
+ charwx := xpart exact_right_point + .5 pen_thick# * xs;
else:
charwy := -ypart exact_down_point;
- charwx := (width# - xpart exact_down_point);
+ charwx := (width# - (xpart exact_down_point - 0.5 * xs * pen_thick#));
fi
enddef;
enddef;
-fet_beginchar ("Half trianglehead", "d1triangle");
+fet_beginchar ("Half trianglehead (downstem)", "d1triangle");
draw_small_triangle_head (-1);
draw_staff (-2, 2, 0);
fet_endchar;
-fet_beginchar ("Half trianglehead", "u1triangle");
+fet_beginchar ("Half trianglehead (upstem)", "u1triangle");
draw_small_triangle_head (1);
draw_staff (-2, 2, 0.5);
enddef;
-fet_beginchar ("Quart trianglehead", "u2triangle");
+fet_beginchar ("Quart trianglehead (upstem)", "u2triangle");
draw_closed_triangle_head (1);
draw_staff (-2, 2, 0);
fet_endchar;
-fet_beginchar ("Quart trianglehead", "d2triangle");
+fet_beginchar ("Quart trianglehead (downstem)", "d2triangle");
draw_closed_triangle_head (-1);
draw_staff (-2, 2, 0.5);
;; TODO: use interface for this!
(quantized-positions ,number-pair? "Beam positions after quanting.")
- (chord-tremolo ,boolean? "if set, this beam is a tremolo. ")
(begin-of-line-visible ,boolean? "Used for marking ChordNames that should only show changes.")
(quantize-position ,boolean? "If set, a vertical alignment is aligned to be within staff spaces.")
(cons
name
- (cond
- ((string-match "^([eE]mmentaler|[Aa]ybabtu)" file-name)
- (ps-load-file (ly:find-file
- (format "~a.otf" file-name))))
- ((string? bare-file-name)
- (ps-load-file file-name))
- (else
- (ly:warning (_ "can't embed ~S=~S") name file-name)
- "")))))
+
+ (if (mac-font? bare-file-name)
+ (handle-mac-font name bare-file-name)
+ (cond
+ ((string-match "^([eE]mmentaler|[Aa]ybabtu)" file-name)
+ (ps-load-file (ly:find-file
+ (format "~a.otf" file-name))))
+ ((string? bare-file-name)
+ (ps-load-file file-name))
+ (else
+ (ly:warning (_ "can't embed ~S=~S") name file-name)
+ "")))
+
+ )))
(define (dir-join a b)
(if (equal? a "")
(else
(ly:warning (_ "don't know how to embed ~S=~S") name file-name)
""))))
-
+
+ (define (mac-font? bare-file-name)
+ (and
+ (eq? PLATFORM 'darwin)
+ bare-file-name
+ (or
+ (string-match "\\.dfont" bare-file-name)
+ (= (stat:size (stat bare-file-name)) 0))))
+
(define (load-font font-name-filename)
(let* ((font (car font-name-filename))
(name (cadr font-name-filename))
name
(cond
- ((and
- (eq? PLATFORM 'darwin)
- bare-file-name (string-match "\\.dfont" bare-file-name))
- (handle-mac-font name bare-file-name))
-
- ((and
- (eq? PLATFORM 'darwin)
- bare-file-name (= (stat:size (stat bare-file-name)) 0))
+ ((mac-font? bare-file-name)
(handle-mac-font name bare-file-name))
((and font (cff-font? font))
(define-public (offset-flip-y o)
(cons (car o) (- (cdr o))))
+(define-public (offset-scale o scale)
+ (cons (* (car o) scale)
+ (* (cdr o) scale)))
+
(define-public (ly:list->offsets accum coords)
(if (null? coords)
accum
(max 0 (- (cdr x) (car x))))
(define-public interval-start car)
+(define-public (ordered-cons a b)
+ (cons (min a b)
+ (max a b)))
+
(define-public interval-end cdr)
+(define-public (interval-index interval dir)
+ "Interpolate INTERVAL between between left (DIR=-1) and right (DIR=+1)"
+
+ (* (+ (interval-start interval) (interval-end interval)
+ (* dir (- (interval-end interval) (interval-start interval))))
+ 0.5))
+
(define-public (interval-center x)
"Center the number-pair X, when an interval"
(if (interval-empty? x)
(nan? (cdr i))
(inf? (cdr i)))))
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
"."))
+;; TeX C++ code actually hooks into TEX_STRING_HASHLIMIT
+(define-public TEX_STRING_HASHLIMIT 10000000)
+
;; gettext wrapper for guile < 1.7.2
(let* ((file-name (%search-load-path x)))
(if (ly:get-option 'verbose)
(ly:progress "[~A" file-name))
+ (if (not file-name)
+ (ly:error (_ "Can't find ~A" x)))
(primitive-load file-name)
(if (ly:get-option 'verbose)
(ly:progress "]"))))
;; load-from-path
'("lily-library.scm"
"file-cache.scm"
+; "define-event-classes.scm"
"define-music-types.scm"
"output-lib.scm"
"c++.scm"
""))
-;; TeX C++ code actually hooks into TEX_STRING_HASHLIMIT
-(define-public TEX_STRING_HASHLIMIT 10000000)
(define-public (text font str)
(call-with-output-string
(lambda (port)
def png_is_outdated (self):
base = self.basename ()
- ok = self.ly_is_outdated ()
+ ok = not self.ly_is_outdated ()
if global_options.format in (HTML, TEXINFO):
ok = ok and os.path.exists (base + '.eps')
if ok:
page_count = ps_page_count (base + '.eps')
- if page_count == 1:
+ if page_count <= 1:
ok = ok and os.path.exists (base + '.png')
elif page_count > 1:
for a in range (1, page_count + 1):
ly_names = filter (lambda x: x,
map (Lilypond_snippet.basename, ly_snippets))
texstr_names = filter (lambda x: x,
- map (Lilypond_snippet.basename, texstr_snippets))
+ map (Lilypond_snippet.basename, texstr_snippets))
png_names = filter (lambda x: x,
map (Lilypond_snippet.basename, png_snippets))
be_verbose=global_options.verbose,
progress_p= 1)
+ if global_options.format in (HTML, TEXINFO):
+ cmd += ' --format png '
+
# UGH
# the --process=CMD switch is a bad idea
# it is too generic for lilypond-book.
map (Lilypond_snippet.write_ly, ly_outdated)
progress ('\n')
- if ly_outdated:
+ outdated = png_outdated + texstr_outdated + ly_outdated
+ if outdated:
progress (_ ("Processing..."))
progress ('\n')
process_snippets (global_options.process_cmd, ly_outdated, texstr_outdated, png_outdated)
changequote([, ])#dnl
fi
+ if test "$cross_compiling" = "yes" -a -z "$PYTHON_CFLAGS"; then
+ PYTHON_CFLAGS=`python-config --cflags`
+ PYTHON_LDFLAGS=`python-config --ldflags`
+ fi
+
if test -z "$PYTHON_HEADER"; then
CPPFLAGS="$PYTHON_CFLAGS $CPPFLAGS"
AC_CHECK_HEADERS([Python.h],[PYTHON_HEADER=yes])
fi
])
+
+
AC_DEFUN(STEPMAKE_STL_DATA_METHOD, [
AC_LANG_PUSH(C++)
AC_CACHE_CHECK([for stl.data () method],