;; Copyright (c) 2001-2003 by David Frese, Norbert Freudemann

;; *** draw image text ***********************************************

(import-xlib-function draw-image-string (display drawable gc x y string)
  "scx_Draw_Image_String")

;; string has to be a list of (byte1 . byte2) pairs, where byte1 and
;; byte2 are characters
(import-xlib-function draw-image-string-16
  (display drawable gc x y string)
  "scx_Draw_Image_String_16")

;; *** draw polytext text ********************************************

(define-record-type text-item :text-item
  (make-text-item string delta font)
  text-item?
  (string text-item:string)
  (delta text-item:delta)
  (font text-item:font))

(define-exported-binding "scx-text-item" :text-item)

(define-syntax make-text-items
  (syntax-rules
   (change-font with-delta)
   ((make-text-items (change-font font) rest ...)
    (cons (make-text-item #f 0 font)
	  (make-text-items rest ...)))
   ((make-text-items (with-delta d text) rest ...)
    (cons (make-text-item text d none)
	  (make-text-items rest ...)))
   ((make-text-items text rest ...)
    (cons (make-text-item text 0 none)
	  (make-text-items rest ...)))
   ((make-text-items)
    '())))

(import-xlib-function draw-text (display drawable gc x y items)
  "scx_Draw_Text")

(import-xlib-function draw-text-16 (display drawable gc x y items)
  "scx_Draw_Text_16")

;; *** compute or query text extents *********************************

;; returns a char-struct record (the direction, font-ascent and
;; font-descent can be obtained from the font-struct directly)
(import-lambda-definition text-extents (font-struct string)
  "scx_Text_Extents")

;; string has to be a list of (byte1 . byte2) pairs, where byte1 and
;; byte2 are characters
(import-lambda-definition text-extents-16 (font-struct string)
  "scx_Text_Extents_16")