]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/output-ps.scm
Update ROADMAP
[lilypond.git] / scm / output-ps.scm
index 9274279a2cf732f61d2db234c88b5d9c586e7bfe..9abd2774e8e46d057ad8b96182af5eef0d55ade6 100644 (file)
@@ -1,9 +1,20 @@
-;;;; output-ps.scm -- implement Scheme output interface for PostScript
+;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
 ;;;;
-;;;;  source file of the GNU LilyPond music typesetter
-;;;; 
-;;;; (c) 1998--2007 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; Copyright (C) 1998--2009 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;                 Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;                 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;;
+;;;; LilyPond is free software: you can redistribute it and/or modify
+;;;; it under the terms of the GNU General Public License as published by
+;;;; the Free Software Foundation, either version 3 of the License, or
+;;;; (at your option) any later version.
+;;;;
+;;;; LilyPond is distributed in the hope that it will be useful,
+;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;;; GNU General Public License for more details.
+;;;;
+;;;; You should have received a copy of the GNU General Public License
+;;;; along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
 
 ;;;; Note: currently misused as testbed for titles with markup, see
 ;;;;       input/test/title-markup.ly
 
 ;;;; Note: currently misused as testbed for titles with markup, see
 ;;;;       input/test/title-markup.ly
 ;;;;   * document output-interface
 
 (define-module (scm output-ps)
 ;;;;   * document output-interface
 
 (define-module (scm output-ps)
-  #:re-export (quote)
-
-  ;; JUNK this -- see lily.scm: ly:all-output-backend-commands
-  #:export (unknown
-           bezier-sandwich
-           char
-           circle
-           comment
-           dashed-line
-           dashed-slur
-           dot
-           draw-line
-            ellipse
-           embedded-ps
-           named-glyph
-           no-origin
-            oval
-           placebox
-           polygon
-           repeat-slash
-           resetcolor
-           resetrotation
-           round-filled-box
-           setcolor
-           setrotation
-           text
-           ))
-
+  #:re-export (quote))
 
 (use-modules (guile)
             (ice-9 regex)
 
 (use-modules (guile)
             (ice-9 regex)
 
   (define (glyph-spec w x y g)
     (let ((prefix (if (string? g) "/" "")))
 
   (define (glyph-spec w x y g)
     (let ((prefix (if (string? g) "/" "")))
-      (ly:format "~4f ~4f ~a~a"
-                (+ w x)  y
+      (ly:format "~4f ~4f ~4f ~a~a"
+                w x y
                 prefix g)))
   
   (ly:format 
                 prefix g)))
   
   (ly:format 
    x-radius y-radius thick))
 
 (define (placebox x y s) 
    x-radius y-radius thick))
 
 (define (placebox x y s) 
-  (ly:format
-"~4f ~4f moveto
-~a\n" x y s))
+  (if (not (string-null? s))
+      (ly:format "~4f ~4f moveto ~a\n" x y s)
+      ""))
 
 (define (polygon points blot-diameter filled?)
   (ly:format "~a ~4l ~a ~4f draw_polygon"
 
 (define (polygon points blot-diameter filled?)
   (ly:format "~a ~4l ~a ~4f draw_polygon"
              (list r g b)))
 
 ;; restore color from stack
              (list r g b)))
 
 ;; restore color from stack
-(define (resetcolor) "grestore \n")
+(define (resetcolor) "grestore\n")
 
 ;; rotation around given point
 (define (setrotation ang x y)
 
 ;; rotation around given point
 (define (setrotation ang x y)
             (cdr y)
             url))
 
             (cdr y)
             url))
 
-(define (utf-8-string pango-font-description string)
-  (ly:warning (_ "utf-8-string encountered in PS backend")))
-
 (define (path thickness exps)
   (define (convert-path-exps exps)
     (if (pair? exps)
 (define (path thickness exps)
   (define (convert-path-exps exps)
     (if (pair? exps)
              (cond
               ((memq head '(rmoveto rlineto lineto moveto)) 2)
               ((memq head '(rcurveto curveto)) 6)
              (cond
               ((memq head '(rmoveto rlineto lineto moveto)) 2)
               ((memq head '(rcurveto curveto)) 6)
+              ((eq? head 'closepath) 0)
               (else 1)))
             (args (take rest arity))
             )
               (else 1)))
             (args (take rest arity))
             )
     
     
   (ly:format
     
     
   (ly:format
-   "1 setlinecap ~a setlinewidth\n~l stroke"
+   "gsave currentpoint translate 1 setlinecap ~a setlinewidth\n~l stroke grestore"
    thickness
    thickness
-   (convert-path-exps exps) ))
+   (convert-path-exps exps)))