Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Annotation of /sml/trunk/src/eXene/examples/widgets/font.sml
ViewVC logotype

Annotation of /sml/trunk/src/eXene/examples/widgets/font.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2 - (view) (download)

1 : monnier 2 (* simple.sml
2 :     *
3 :     * COPYRIGHT (c) 1991,1995 by AT&T Bell Laboratories. See COPYRIGHT file for details.
4 :     *)
5 :     structure TestFont :
6 :     sig
7 :     val doit' : string list * string -> unit
8 :     val doit : unit -> unit
9 :     val main : string list * 'a -> unit
10 :     end =
11 :     struct
12 :     structure W = Widget
13 :     structure F = Format
14 :    
15 :     fun printInfo (msg, Font.CharInfo info) = (
16 :     CIO.print msg;
17 :     CIO.print(F.format ": lb %d rb %d wd %d\n"
18 :     [F.INT (#left_bearing info), F.INT(#right_bearing info),
19 :     F.INT (#char_wid info)])
20 :     )
21 :    
22 :     fun fontInfo font = let
23 :     val {min_bounds,max_bounds, min_char, max_char} = Font.fontInfoOf font
24 :     val charInfo = Font.charInfoOf font
25 :     fun loop c =
26 :     if c > max_char then ()
27 :     else let
28 :     val info = charInfo c
29 :     in
30 :     printInfo(makestring c,info);
31 :     loop (c+1)
32 :     end handle Font.NoCharInfo => loop (c+1)
33 :     in
34 :     CIO.print(F.format "min_char = %d max_char = %d\n" [F.INT min_char,
35 :     F.INT max_char]);
36 :     printInfo ("min_bounds",min_bounds);
37 :     printInfo ("max_bounds",max_bounds);
38 :     loop min_char
39 :     end
40 :    
41 :     val fname = "-Adobe-Helvetica-Bold-R-Normal--*-120-*"
42 :    
43 :     fun goodbye root = let
44 :     fun quit () = (W.delRoot root; RunCML.shutdown())
45 :     val font = W.openFont root fname
46 :     in
47 :     fontInfo font;
48 :     quit ()
49 :     end
50 :    
51 :     fun doit' (debugFlags, server) = (
52 :     XDebug.init debugFlags;
53 :     RunEXene.runWArgs goodbye {dpy= SOME server,timeq=NONE}
54 :     )
55 :    
56 :     fun doit () = RunEXene.run goodbye
57 :    
58 :     fun main (prog::server::_,_) = doit'([], server)
59 :     | main _ = doit ()
60 :    
61 :     end (* Simple *)

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0