X11FontCommandsImpl.mesa
Copyright Ó 1991 by Xerox Corporation.  All rights reserved.
Christian Jacobi, January 23, 1991 12:53 pm PST 
Christian Jacobi, October 9, 1992 0:03 am PDT
Willie-s, November 25, 1991 4:55 pm PST
 
DIRECTORY 
Rope, 
Commander, 
CommanderOps, 
IO,
Process,
X11CommanderOps,
Xl;
 
X11FontCommandsImpl: 
CEDAR 
MONITOR 
IMPORTS Commander, CommanderOps, IO, Process, X11CommanderOps, Xl =
 
ListFontsWithInfoCommand: Commander.CommandProc = {
Inner: X11CommanderOps.ConnectionProc = {
Each: Xl.FontInfoProc = {
ENABLE ABORTED => GOTO Oops; --catch abort to be able to close connection
Process.CheckForAbort[];
IO.PutF1[cmd.out, "%g\n", IO.rope[name]];
IO.PutF[cmd.out, "   fontAscent %g  fontDescent %g\n", IO.int[info.fontAscent], IO.int[info.fontDescent]];
RETURN [FALSE];
EXITS Oops => RETURN [TRUE]
};
 
count: INT ¬ Xl.ListFontsWithInfo[connection, Each, pattern, 1000, cmd];
};
 
pattern: Rope.ROPE; 
IF CommanderOps.NumArgs[cmd]#2 
THEN {
ERROR CommanderOps.Failed["needs pattern argument"];
};
 
pattern ¬ CommanderOps.ArgN[cmd, 1];
X11CommanderOps.DoWithConnection[Inner];
};
 
EnumerateFontsCommand: Commander.CommandProc = {
pattern: Rope.ROPE;
Inner: X11CommanderOps.ConnectionProc = {
Each: Xl.NameProc = {
ENABLE ABORTED => GOTO Oops; --catch abort to be able to close connection
Process.CheckForAbort[];
IO.PutF1[cmd.out, "%g\n", IO.rope[name]];
RETURN [FALSE];
EXITS Oops => RETURN [TRUE]
};
 
[] ¬ Xl.ListFonts[connection, Each, pattern, 1000];
};
 
IF CommanderOps.NumArgs[cmd]#2 
THEN {
ERROR CommanderOps.Failed["needs pattern argument"];
};
 
pattern ¬ CommanderOps.ArgN[cmd, 1];
X11CommanderOps.DoWithConnection[Inner];
};
 
GetFontPathCommand: Commander.CommandProc = {
Inner: X11CommanderOps.ConnectionProc = {
FOR list: 
LIST 
OF Rope.
ROPE ¬ Xl.GetFontPath[connection], list.rest 
WHILE list#
NIL 
DO
IO.PutF1[cmd.out, "%g\n", IO.rope[list.first]];
ENDLOOP;
 
};
 
X11CommanderOps.DoWithConnection[Inner];
};
 
ListExtensionsCommand: Commander.CommandProc = {
Inner: X11CommanderOps.ConnectionProc = {
FOR list: 
LIST 
OF Rope.
ROPE ¬ Xl.ListExtensions[connection], list.rest 
WHILE list#
NIL 
DO
IO.PutF1[cmd.out, "%g\n", IO.rope[list.first]];
ENDLOOP;
 
};
 
X11CommanderOps.DoWithConnection[Inner];
};
 
ServerInfoCommand: Commander.CommandProc = {
Inner: X11CommanderOps.ConnectionProc = {
info: Xl.InfoRef ¬ Xl.Info[connection];
screenCount: INT ¬ Xl.ScreenCount[connection];
IO.PutF1[cmd.out, "name: %g\n", IO.rope[Xl.ServerName[connection]]];
IO.PutF[cmd.out, "protocol major: %g  minor: %g\n", IO.card[info.protocolMajorVersion], IO.card[info.protocolMinorVersion]];
IO.PutF1[cmd.out, "release: %g\n", IO.int[info.releaseNumber]];
IO.PutF1[cmd.out, "vendor: %g\n", IO.rope[info.vendor]];
IO.PutF1[cmd.out, "number of screens: %g\n", IO.int[screenCount]];
IO.PutF1[cmd.out, "number of formats: %g\n", IO.int[info.numberOfFORMATs]];
};
 
X11CommanderOps.DoWithConnection[Inner];
};
 
OtherServerInfoCommand: Commander.CommandProc = {
Inner: X11CommanderOps.ConnectionProc = {
info: Xl.InfoRef ¬ Xl.Info[connection];
IO.PutF1[cmd.out, "bitmapFormatScanlineUnit: %g\n", IO.int[info.bitmapFormatScanlineUnit]];
IO.PutF1[cmd.out, "bitmapFormatScanlinePad: %g\n", IO.int[info.bitmapFormatScanlinePad]];
IO.PutF1[cmd.out, "max request length words: %g\n", IO.int[info.maxRequestLength]];
IO.PutF1[cmd.out, "max request length bytes: %g\n", IO.int[info.maxRequestLengthBytes]];
SELECT info.imageByteOrder 
FROM
lsbFirst => IO.PutRope[cmd.out, "imageByteOrder: lsbFirst\n"];
msbFirst => IO.PutRope[cmd.out, "imageByteOrder: msbFirst\n"];
ENDCASE => ERROR;
 
SELECT info.bitmapFormatBitOrder 
FROM
leastSignificant => IO.PutRope[cmd.out, "bitmapFormatBitOrder: leastSignificant\n"];
mostSignificant => IO.PutRope[cmd.out, "bitmapFormatBitOrder: mostSignificant\n"];
ENDCASE => ERROR;
 
};
 
X11CommanderOps.DoWithConnection[Inner];
};
 
doc: Rope.ROPE = "...query default X server";
Commander.Register[key: "X11ListFontsWithInfo", proc: ListFontsWithInfoCommand, doc: doc];
Commander.Register[key: "X11EnumerateFonts", proc: EnumerateFontsCommand, doc: doc];
Commander.Register[key: "X11GetFontPath", proc: GetFontPathCommand, doc: doc];
Commander.Register[key: "X11ListExtensions", proc: ListExtensionsCommand, doc: doc];
Commander.Register[key: "X11ServerInfo", proc: ServerInfoCommand, doc: doc];
Commander.Register[key: "X11MoreServerInfo", proc: OtherServerInfoCommand, doc: doc];
END.