pict.ss
(module pict mzscheme
  (require "private/pict.ss"
           "private/core-layout.ss"
           "private/loc-wrapper.ss"
           "reduction-semantics.ss"
           (lib "mred.ss" "mred")
           (lib "mrpict.ss" "texpict")
           (lib "contract.ss"))
  
  (provide/contract 
   [reduction-relation->pict 
    (opt-> (reduction-relation?)
           ((or/c false/c (listof (union string? symbol?))))
           pict?)]
   [reduction-relation->ps 
    (opt-> (reduction-relation?
            (union string? path?))
           ((or/c false/c (listof (union string? symbol?))))
           void?)]
   [language->pict
    (-> compiled-lang? 
        (or/c false/c (cons/c symbol? (listof symbol?)))
        pict?)]
   [language->ps
    (-> compiled-lang?
        (or/c false/c (cons/c symbol? (listof symbol?)))
        (union path? string?)
        void?)]
   [extend-language-show-union (parameter/c boolean?)])
  
  ; syntax
  (provide metafunction->pict
           metafunction->ps)
  
  (provide/contract
   [current-text (parameter/c (-> string? text-style/c number? pict?))])
  
  (provide/contract
   [label-style (parameter/c text-style/c)]
   [literal-style (parameter/c text-style/c)]
   [metafunction-style (parameter/c text-style/c)]
   [default-style (parameter/c text-style/c)]
   [non-terminal-style (parameter/c text-style/c)]
   [non-terminal-subscript-style (parameter/c text-style/c)]
   [linebreaks (parameter/c (or/c false/c (listof boolean?)))]
   [curly-quotes-for-strings (parameter/c boolean?)])

  (provide/contract
   [rule-pict-style 
    (parameter/c (symbols 'compact-vertical
                          'vertical 
                          'vertical-overlapping-side-conditions
                          'horizontal))]
   [arrow-space (parameter/c natural-number/c)]
   [label-space (parameter/c natural-number/c)]
   [metafunction-pict-style 
    (parameter/c (symbols 'left-right
                          'up-down))])
  
  (provide/contract
   [label-font-size (parameter/c (and/c (between/c 1 255) integer?))]
   [default-font-size (parameter/c (and/c (between/c 1 255) integer?))]
   [metafunction-font-size (parameter/c (and/c (between/c 1 255) integer?))]
   [reduction-relation-rule-separation (parameter/c (and/c integer? positive? exact?))])

  (provide
   build-loc-wrapper
   loc-wrapper?
   loc-wrapper-e
   loc-wrapper-line
   loc-wrapper-line-span
   loc-wrapper-column
   loc-wrapper-column-span)
  
  (provide/contract
   [just-before (-> (or/c pict? string?) loc-wrapper? loc-wrapper?)]
   [just-after (-> (or/c pict? string?) loc-wrapper? loc-wrapper?)])
  (provide with-unquote-rewriter
           with-compound-rewriter
           with-atomic-rewriter)
  
  (provide/contract
   [set-arrow-pict! (-> symbol? (-> pict?) void?)]))