summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Coopersmith <alan.coopersmith@oracle.com>2014-05-26 10:13:31 -0700
committerAlan Coopersmith <alan.coopersmith@oracle.com>2014-05-26 16:03:48 -0700
commit9456437718d78b942333bdf74124c027ba35039f (patch)
tree6c9f42170c86622b19afeed19e4e63dfa1698219
parent7ebdc6c2ed2917dd48687aa16c6909186a575e2d (diff)
Convert sources to X.Org standard coding style
Via util/modular/x-indent-all.sh Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
-rw-r--r--isokeys.h1100
-rw-r--r--psgeom.c3243
-rw-r--r--utils.c255
-rw-r--r--utils.h128
-rw-r--r--xkbprint.c1305
-rw-r--r--xkbprint.h78
6 files changed, 3259 insertions, 2850 deletions
diff --git a/isokeys.h b/isokeys.h
index bf5fd7c..988c692 100644
--- a/isokeys.h
+++ b/isokeys.h
@@ -1,4 +1,4 @@
-#ifndef _ISOKEYS_H_
+#ifndef _ISOKEYS_H_
#define _ISOKEYS_H_ 1
/* $Xorg: isokeys.h,v 1.3 2000/08/17 19:54:49 cpqbld Exp $ */
@@ -10,19 +10,19 @@
fee is hereby granted, provided that the above copyright
notice appear in all copies and that both that copyright
notice and this permission notice appear in supporting
- documentation, and that the name of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
+ documentation, and that the name of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
+ Silicon Graphics makes no representation about the suitability
of this software for any purpose. It is provided "as is"
without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
- DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
@@ -93,545 +93,545 @@
#define XKC_ISO_Last_Group 'y'
#define XKC_ISO_Last_Group_Lock 'z'
-static char *IsoKeyCaps[]= {
- "%!PS-AdobeFont-1.0: IsoKeyCaps",
- "%%CreationDate: Sun Apr 16 22:14:26 1995",
- "%%VMusage: 8064 8064",
- "% Created with FontMonger Copyright (c) 1991-2 Ares Software Corp. All rights reserved.",
- "11 dict begin",
- "/FontInfo 9 dict dup begin",
- "/version (0.0) readonly def",
- "/Notice (Copyright (c) 1993-1995 Erik Fortune: Use and distribute freely, but preserve this copyright) readonly def",
- "/FullName (IsoKeyCaps) readonly def",
- "/FamilyName (IsoKeyCaps) readonly def",
- "/Weight (Regular) readonly def",
- "/ItalicAngle 0 def",
- "/isFixedPitch false def",
- "/UnderlinePosition -100 def",
- "/UnderlineThickness 50 def",
- "end readonly def",
- "/FontName /IsoKeyCaps def",
- "/Encoding StandardEncoding def",
- "/PaintType 0 def",
- "/FontType 1 def",
- "/FontMatrix [0.001 0 0 0.001 0 0] readonly def",
- "/FontBBox{30 0 1033 1019}readonly def",
- "%/UniqueID 0 def",
- "currentdict end",
- "currentfile eexec",
- "8551A6FE281A24F7FF33BF71784C08FAF0BEC6A24D2D9612EB9369F0F90A5C3A",
- "4CE0CDDEA2B6602004E0E71429DDD22F439E984BA180E326344321F3E6F379F3",
- "32FD065A9AF79BA836D33A465E4D52132E403C31712D939E800A492D5BD1B69A",
- "1D55092933BCD8CFB7BD6A7B1E8172AFEBBE8CAF0D3B5C9BC9BF376DC2A6CBA5",
- "BA6C605BF0342BAB197654B1472A5875778372A6407275CC2101D85C5E0C4452",
- "3258E0B2F6F1FF7C1F4CDBE7CDBCF7FE819761317D5CBBB0AA8568A4F610A7ED",
- "75840096F2412D4EDAE38A49301D06C0AD8D577018FD86E93D124E6DFA543F66",
- "BDCBA8EE83BD7BEAD8EB002A92CF1325702FA1106CE5C18511F55CE7014E3459",
- "78915163CF281F100E5E19F6200EDEC562EACAF3962204C68432B46E9AF33BAF",
- "22E995C2F23E0431EAA01028A1028A3B161DA5CC9D3CF8D8D28E3D39021C19B7",
- "64A39F0FD70E85ADC704255AFBE9C86F6BD855B80BA9BF7A0FEB207558479485",
- "76CF7C428960B3C73E52315DD854162F01CAAD32D1A07C07E879AB0F152EF376",
- "0D33B0B8D68D7A0E09E9145C0DF114C6CAEECD6465173DF643FF820944A3C1DD",
- "808F03B79B2900BBCCD33550C677777D48B9BD3B727849563C32076ABD5A74E5",
- "4421912FC0833B178FE21C6B7C6DEAEED50C843AE02AC024187CE9E15E7CE921",
- "AB0E8FAC03B2EF345D361E6BFEB0F030CD43355AED642EE478E257B2D06E4880",
- "C531CF4859A76D7B6EC1C331450084E78EA4C88AB0555E7D3B486DC0F93AF35A",
- "41D9313815B951690AC587FF9D39DF68AD050A91940B73A54E93F3AF3BB3B3E1",
- "5FFD455EF337811B52450532A4A9BDF4CD0A1120874DE11BC9F8F7394AB45E43",
- "4E2DEBC4588AA1DE3AC2E31EB7AFB4DA68E9C72FF1318AC06C2324B51BD3911B",
- "B3E64237E46D213D348C9611C1D32A3095C4AC75513189B26F6A85171864905B",
- "5DC60C151A4BDD182B0BE8C416500E3D46F6680214B33CCDF1CFF844EEBAC1CB",
- "63D7608EDC2B5A7F955680D5501DC2E3014212563F713F690E6964998A1CADFC",
- "B5073630BCA52FC3DDB9B3B9BDF9CB7CE9735ADC3B5E1D6B6210B33A1FC400B0",
- "392EE750598D7AD3978FCDF244D8EF20532C9DFC5DB04775CA3D5BF3823DA096",
- "C5FAB0AC9E89227D13951380189A3AE6240C6AC0D75E21AE7C82E4164334ADA2",
- "3FE21ADE74B6EFF0C51323DDF81D85D36F0441F3ABAE00B94A81F3EAAA860FE8",
- "881191FD60B98C4FEFEAA1BB0D1C6F6EB027EEA34B722AACD0E9DDEF644EAE74",
- "714CD8ABFF98D847CEAF1E6AA251F894A8DC3F5AFC0FC1B2197E940B4D473A38",
- "90674DE22BB9126D90A7B9F2C957A936CCEBE6406D5803EEB28A2F429466426A",
- "DF1559A9C6CDE09F035C7E9D79B54792A7CF42FFEF9C3968CBCB5185CEE897EC",
- "BAFFB11AA4D6BC1338301B9EB2BCD4A0CE792F3209A75C95FB448EEB460B7178",
- "223CFA97B547547D4CD37F2898CCFBCEC519E6C1363119C5B005C3EB38C2F7D5",
- "4B2711FACE82B6DB16387F3EF76EDDA4E1C3042D2F82EE0448BE80623558FB7D",
- "C4CC6F95FE735EA451E0F3C298E84E83357FF7163B8939D5B5F4B22ACC78FDC6",
- "2272A317BABE200DB627A7D2231D72555D7A06ADC228D2D9138D228A92395B4D",
- "BE7754E6C944EEAD5E95334FAF3F2888FAFE14C60FE19823A3E936A908180CD1",
- "C3E3E829DF1E98270C47A2352FA9F66C80ACFEC4FF572E6D41BD4C3324F0AEBA",
- "8DC7178820253F86513622A670D4CD880597667D05EEB4217D871D17700F5DF4",
- "1F3ECAF271FFB35D34F6FEBF07644B84B2458A2AED9D9E85CE5EA8FA9D3E12CE",
- "0E92D899CBC468BECCF6F9132A68C1F067CA0260196965C8814957CF9CF2EBCC",
- "4427B031B58AB8BE9C6EC8E2D406EFC85145A5A614C4EF911CD976127593BAFF",
- "46EE074E8D4791AB00B750BB17BB8CD0EE7A5A6C64AF8E1F59E3DCD87AEB1ADF",
- "44F9B644A4B30E7AE35A8749B2612BCC9DEF8AC9B4FA7B3FDC67ED1D817FC6CB",
- "32DD3811D0720B6D45C9FCFA7954C30EBF1DC58F9B0069931500648F0D1C0BF8",
- "3E45E08522EEA6533E00CE023D23C2F5718ACAC657F76557B2B6D980A6DF58A3",
- "A22A752A9D6938E2267AE85BF94D94E24DB2679A2191B8872469C0A7B4008E22",
- "39FC7FD65AC2DCCF87031757611D0B6BC2F90B91E9D097FB07C6C31D6699809B",
- "A46027BA8BF0DD4F4911C3F8F9A45993F19319BEB3CF42BC25EDE305BD1EA124",
- "4BFE062800EA8E16E3893DC59E552D0E13704E1F8B3278396D6F6A11DC6F8625",
- "E6329E1BB89FDCE310CCF08D1946239A563FF7D6867197E78129D91BE5C1C61D",
- "4FBA7F90E270AFEBDE6E60E09B56348C71058E9FA2646B8A86F35C3979A123A4",
- "9EC3D0FD488CB2F5ACF1D3088706E2BF31E2A8603F3FC4F2D4879F118A584F53",
- "2CDAABF2A5E8069F69444818E4A510AD4D5EA007D27E590176EB6B5C6A676AB2",
- "113324BBA8684FE9D6CE31653D763BEE8C6A2111E957D7FF83232DEFC94056B1",
- "A6A0834C1C5E5B8C32FF5C0E1156E31A3726649839C36A858A7DCBFC523C4BF9",
- "E715B1A964A33BB82B2DA197F3EAD6EFDD8B27D38F7989E097046DDF159188E4",
- "31D1FE927CECD187F751BD425F63E4F6774A88E53980F706202F0EF89827D7AD",
- "153D617FFFC3092679061B9D40EB6E730E254A952FD27C6AF464E9893C7A3D43",
- "485865629D72323F52B177D0F264428D37E1F57123F52B107356C8B8F82BD131",
- "B73C42619791E589D3CC46DF65889F0D68CB0E2726F89DD4A935FAC17E007AFD",
- "3775E87DC4F0B2A154743C3C7FAAFB4F3C248948B02A50F1294BCB125D472EF4",
- "4797210694EE52ED647972585096EF4AB914D033123CE6F7BD7FE8B9F73BF0F5",
- "2FDD8EC6C9979E96B47BD8C2F2ADCB420A723F55341CFEE2351F5A81D0565995",
- "BB1CE047667B8D992F98D98F6EEA1710A96731CF2350E92810E081EFC5197ADD",
- "4BAD3D1F39721F0AA5FD0CE3B57518ED0942D775E0732ADB79EB2C359B648DC9",
- "37D4371BC58654B5AE4FAE3D9816EADAE629FE6A7265E62F6F9D9CF7E954BF76",
- "4D16AFB7DAF32596EDBFF141CAD0B7435B6CBBFA633EAD6072242A3514F81581",
- "0E256858C9B884408683E2667518A6AE13B946A722997F5E906FEF0796908AA1",
- "96DDD7A1D094488E883B9E942A322E2C7D48EDDC55353F07747B63520264F0DC",
- "09C55DB76104E03C95B392B019AEB84CEBC86DF52782B5DDD1DE2AF49B9EEB12",
- "E2FCDF150D7CCDE7E2A8AA7B6A7096E2523565DCB2516D216DA76A14E8719704",
- "367749C9DA3C0991FB850638EFFEC2AAB75074FCED82C1F32F5709BEA7DECCFA",
- "6B11015858B9DA957FA94C1DC10F3588948061D9A18133ECB9FD33E098CB982E",
- "7EFAFDCE42EFAEB46CD931C4061D881CC5467BDBBBD04DEFFA91445E0BC22646",
- "30EDA1127AE6C68ACEFB5D97074380EE73763D3757B6FE283FC8537566AA35E5",
- "C116487B3E7E38202D4716A0036C07ACFD54E066736E1F96E466B1D9F4E3D332",
- "F68AFDFD1CE473561117A6B25B2CDD597F0FFBF1717DA5F38C7FA88C89BB04B7",
- "56A8B6D15530B9D4FED94CB7BC689939ABF9E039A8B6A6005711599FE62DEFD2",
- "0BB32B9D7955E2862CF70BDCC552A15DEBBE3C8FB6F5E262C567D1206E97BBBA",
- "06AA8E9DFE48EEFD014E950C04E21E26D8E68D58EED0A62F5E58A95ABB584DC4",
- "BD3713366EDEBC55AE8FB1945096BD923FE56EF2A120B3B626F5C003CFC5BDFB",
- "070B70F6547033D2265C604C427D1D2200BCAC51DE3E7FE9DE200A987072BDA3",
- "16C75109106C806E2A639E1FB113CF30DED85351DA5CB1355D361CA025183AEE",
- "36567C4A8F570C70F4893FADBB2255F7B492ABC83213B54F162D8971EB4E5388",
- "CCCB4D83FD37BFFD2EB55423FF50C435CA62BE8C3B9F2879119A24A50829A698",
- "37E0EAFB1BEA0B509A54CD7029F3D1EDDD790AC4B82130C05754D2E260F06E2E",
- "676708D48CA94A7C655C36588B93B1D8FAD063D716D8A72D46BE475F4843C831",
- "5AC6D800B85834F75AD70E70404A2E2780901017489ED3A36288E803AF935F19",
- "90CDC06EAB81FE6B3D4CB80D9061D325C912339561EE17D572A2C342B37238CE",
- "656875528F48E80BEBC19E9BDE56CDA65F388483C3A73E7CA7C7B073DE643BEB",
- "D08F10182A813CBD30F504C064654AF74B9E8C443870A7187DA38A27EC957D25",
- "9F6F727D1218FD5DAD0AB3A0F654C0C06B5CE7720933918C9551A2206CA54180",
- "50EA0108F66AE8AF9F98474BF9735F49E4A05E2A001B659C637AEADB3AC071DE",
- "EB68CBBF532F009CD1A9871164FA0F09FE55E4B56DCE68F9765DAC0CD0497C46",
- "C2832C7E6971F108C8CDDD10E94ABC1DCED238E660B91F8561B1049549C626F1",
- "0267DB45863575D5992AB90B43E4EF2F82BFB3E5C81CF180C989EB94898877F3",
- "B065A1463EDA899712880E7400F3287ECD7B80F29E3508DEFC0C119789899D52",
- "0C6DAA060576DE7F8EA48FAD1EAAA7769A9038775829A0FAB7A4629E735F4D32",
- "CDDCB81AE1D909C2068C36D6A5FCB9E172B220DC35A7A1AE5650536C96B7A76F",
- "777F7593F7415FB20CC60DBD8C10720B4AADFED9443E0085CB3801FDA3536EC4",
- "2033FE1B107965F6E4FE703E1B0988BECC59F91E72DB6EB3195176DAD3BAB734",
- "E7EEF31EF2F2ACF6040EFE49FB479BF83A955EB84EB5C865CD49912B7D5DA2FC",
- "2CDE55624F80B3D23CDAC025AC28EE363407516920B2BF7473BFC061702407E8",
- "228F0C9A929A54C1526C173A76744EB706CFF7A4D07A09AD09D6D31574042DD0",
- "4EB9B8B731EE1A93129F161361EB321FA24BFB33DF690F56E789DC9C3EA33088",
- "379E2A75A060674E2384DF17E3032B2A650914338F1C8618885299CADA420BD5",
- "984205B90B7447907F9F1548AA05C7C8D6625EEEDB0ADE7DC28B387ADAEB97EF",
- "36A57C71AE6AA07524FB1597EDF32E36FE357CD3AD459EB614DC01BB0ACBB798",
- "EE8E847B4D1F389E75ADAD0878D09AE4EFE9C88BE371C99161A5B4FDE4175C94",
- "D6F3CFDBA861573F13FE543B3F022B19496DE0D576C76E256530D4494D7C88F9",
- "F6B77C54E27D01B02EC77B89B7BEE0315D7EA824E90B04341AC8D23D24ECDED9",
- "8C21DC4AC9FA672950D90C6F22DFC5970EECA5A9B0AB2A50703F1F0EAFE9BA50",
- "968D01CF29A26E8DA61ECB20D8848B5D13C1328F95B8516963C21FF3D35E8CBF",
- "40A0A1802CB0980C44368E563B3CFC66CF39F96240CA07D01A4B63CC80361EB8",
- "59A42D27969E08E1A324D366382E5227A8DF4639304901958A83B93E168E709B",
- "9A3B01A5DF227D026D317AE5A74E291A0AAA5B4757CFBCFDF513344E90155C80",
- "38C3D5BFFF301103AFB1EFAD0873AD5ECBDDAF94DC5130CB4AE36A57C398147D",
- "C12F54F79B5935EBD8B61E59EA9007AB5509B87A982CB2FDB09F2CDBB9999FC9",
- "B6431C534FC8BFC5B681092D99AF972815F436CE0EE102DF6846E7EB84A5750A",
- "BC79FAB0AA3FEBDEDC54EBC205A0511870F6AE6D37C81A2601690BDB98911D64",
- "D84AD154152AE131810F85821C4F2C3C05F59DE17E67EA98401A585099287101",
- "C1C95EBE3ECF028BCDD5BCBA1136869F8E518152BE454EEB34F34B6EC4734FE6",
- "C562A227BF9BBCA8661F2ACC204C9272B9530FB49D1BA84FB9CA9DCF365BDC57",
- "739A5712A53429DA22ED24B0FBC0BB38C0D73654271EAE00D3830B2A67172682",
- "020BC20637ABF30F200E0DE76CD12C95E339CCC5F62DF6E0572784410E1DA428",
- "EB5D34B8014B6475B5EC1D427F9849C3BD626A3F56C3EB3A0838110756F5C6E3",
- "05944E5F42D3C37B6830041E637C202018A9CDEA58CCA8E586BC79779A82642B",
- "67BA03F48152C521B147D68FF52843D623F2DFA562DD05F094C46EF05A102717",
- "E00C38631DA09739B57B412D0EA6D17847A4BC9B5C56692CCDC78E32D71B68D2",
- "B274233DEB63CEFFB0704E15A869C0EA62A562A6F652ECAC59632EA2A4AE1CE2",
- "4210AD7820AE57A4CC2FFFF97E2C516DBB7515A61CC95B3715205D11E3347B30",
- "896CCD3C5262A498C7FB38952CF569766156BED8B5F5FC804C0674088E00CA8C",
- "C35A5ED23CBFDC39867D90590601F7D5CE0B13A21F297AF7C323FF418670C3ED",
- "76A9E1F47B24473A19E345241A0BA804DF96EB5B525C86940B90A5D09635F82A",
- "22B03C67F975B05FFFD6A91FAC4546868477E865C5663C6D3F9DC0C041C5CCAE",
- "8B24FC0585989679ADE6E4B47B9A4732BDDB3F7A7CEC62B6D113C229A2847460",
- "1BD84E7D699D78788BE3B7E757222A6C63BD35775B6111F584084A66981690F7",
- "B3B964473847838A572EFA5FF79E680DA838D8A75C895E335A3E68A7306F88FD",
- "DFBA96676427230D64F5A9AE513218789050379812F43B1AD7A9B7C1867363C8",
- "E51A7CD7498ADC89D8A3B523E40A849D202CB939D8DCF1F1ABF767DD7106F80F",
- "6D08ED45235F9DDF810F3E37C311888F300EC445D2FD4628E4A309ADC941D67F",
- "3281471C6F2BCBFE32BD962BFC5F40CECE29CBFDA22B789EF88660F1C3F44FAC",
- "57083CE27A13764B328DC286D0C37AEAE647B7CA5985A09673B032B34214223D",
- "7549B6B76300326FDB2C66AA89640007EB6032CC6A2FB9D61347952AD3ED0A9D",
- "0F9889E004EF5EBACCA1CFD9C948E0377C29874546338E5962786BE164AFACA5",
- "06A8A13669F77AA351A4CC2314291E1B04F0A8A498E05138BE6B5FE2680D0F54",
- "CB40D50785D40F23A53A411150EC34B702642BA3F2E1853BAFC6EBBF157B423F",
- "BB18F6D5BCE1955E2E8B783F44312B05FFD359FF00BA2EC1815E2092BF4931E8",
- "36DE3B8918DE90EB21D0A3B0D67563723E4C60474B68AABFB3628BD5F168774C",
- "D21A3531754DFC9CD4F4DE13EA2AE551D17A85A009B4E4015D137BF1303C2689",
- "85668192CC8BF8BCB0603B55E9B0594AB12777BBD65CB6C547A4BCADE881FB5F",
- "C9219C0D1D6ED38BDF82D5563E05EC9BB1B5571989000BA2B5E39BFBDAD09419",
- "B8A5CDF30266A54CA194B4C5DC22BFE34E5064C3A025CB6ADF4E5AE66A5A8B17",
- "9A46FCCE1CD1AA88B98BD3BDBCAFBB13829C5F28CA91CBE69C7EBC0CBC8EE699",
- "03445465213D2165241691A68F251E5E50F149F9CBEC53AB7F6D57442056D06F",
- "D08C1C9CAC47DA2DD4B4102A831FA456F9E75696394575A230EB12059E13AC05",
- "05748FE675563705C7D8B757E62399E3D9715A2535E88BEC0C083E256195A2BD",
- "AE88F970A8AE15D4FE13885D5AE5024EBB60EDAF7CE0D1032AEFAF852B62C353",
- "6BAD01A873C648D2FCB5CC4DBC8E72C280901FD80291CC179F4DD896E9EEFDB7",
- "46C56D194978600F20E85F2A3A80F4C422DAEB567C5CC5361B4387530F86D0D3",
- "D6100685F30F274B895AFAA871891BC2645F0C33AD1046FBB8BD202FA0578430",
- "A59C8F609032B1AC55BF146180B97C73033ADEC767E1A66487CC709A296E6F47",
- "A709D63B76D8FDE87CC9D271EFBCB2B61795B9DA375A707DB621B74D3ECC4B78",
- "95B65D08EA0836B6168F66637D5C52CC34F27A08A33083AFB20B3C2AA44B258F",
- "02F8B90F328B7747F29F760A3DC6E411532D251F7DFEED0EC492207716EF511B",
- "25CDC477C2F16B66F5C196E22B12AEA03F6EEF8FFF5998C700758F35E01DEFE3",
- "CA69A1D04B4344440EE96A61D7B2EE41F411013746F6134A26251D92BC34D4A5",
- "B3D242752EEEE1A9F4618180690C042501AE97A3330ECA396FE3F26CD27BC7E6",
- "9EE57067A64049D1CB6010DA78EABE831EB58C9D65E45F66452DB082F6A16391",
- "6A9E3C178424A9D5EF30DEB6ACE4C56714AB62D76576D5AFCE4E3B85DB887715",
- "EF4CEB4AE3F65AA654567C5032B3854D9CE71ABF84EE72D321CE7CADA953B46C",
- "C7554A76534D1B4E1EF5EB5B316B22561768894355C7488C7A2098BDFC3E2E45",
- "98D81C3E54B64940350A625B25CE8D7AC5632C785E52473CAF62A521E9B1F5A6",
- "9494B3ED5AF8A1CA1F8C2F1CDAC0B09E535AAA8E8F2DA4187D48CB6BDFBE46C7",
- "4E4985450F3BB4B2D5AFEB2C39B3D0DE4335D5FA728AF0424A6B92CF631D2574",
- "7265632291C813C2E3FE6DF152F88388ADCC411D1147E79CD8F42F43E65B1F62",
- "8C04C73BBAC4288681193BDE7294F659353B0DFC9EB47988E09FA957F9459B84",
- "4324A7BFE9DF0308FFDFDA3B09D04BE4B53B53E79FA3E359B547B1E620B48612",
- "4477D6F5CFDBED07E1ADA5373F28311F7D646E00385EBF4ACC7F97BBE0D38730",
- "236B03968176800A9B77B278D01433DD59101416DD276823560A0D6F0CEA5C7D",
- "B02447BAF113A14F175EF0C76CDC53B33ACD30D15A4F04BAB43B0770362BA094",
- "751C179F99B75C17A98BE2F578F16C765C8E69B5BADAEBEADA801FBA618B16E7",
- "CB1A0BC08903D9A3B7C80046FF74383C8D114C08635E1AE6F7A31D160885A50B",
- "FB0CE5D95284262769FBD60301FA55CF4437106CDBA0FD4DBAB88E6B033DECE2",
- "3713A08DB472C877C617F1259EC9284CE83F2AD3C5E449112DA2AEC5F3A2B67E",
- "A2DD50C162B2317659F1DEF5A5925346AF796F743AF986298D2806C9AD21E138",
- "C675E1ECF4C4281038EA71301C857910A4D2D2EFFDF3DEBE8AD13554A693C0F8",
- "A307B6A12CE3BEFB007875104FCD54E3ECFAC68F6B4C341342D86C55D5ED3E15",
- "103A7A8ADF2BF865164B2CFA5D80270AEAD3EDA2308CA8D39D0BC180C6AF19E5",
- "B2113A401D67FB8365996C07F6DACE02F8D40D593EF1D09FDF23CCE07EB0D7FE",
- "2AF470053C6C330AE096093BDFBD8001171584979B4B62B07C16B9E48DD16BE2",
- "D0F92838D3714C6207AAF4054576895067F6A16B9924ACD74FA517FD0CE7F385",
- "C3B8CADEC8AF14B6117889BB8A87998BE5D2CE825C76B83160FEAB166918081F",
- "D7F7429AAD157ECD554163FAD079DD7B8F215B914BC6AF1C0D703E39CEB78E1E",
- "AB249F595DBFA22CF82D20442360FCDAC67A548E9E51603F74E778072DBF6F71",
- "A91C02D31274C26968CCE4CA30D6D4B0EF9BF8E5C0800B4DF35E0B37D6FDD807",
- "CA3307547646AF7B780B5148D6630EB11E1C8AB22EB488DA8A75C43F0C4EB1AC",
- "DCA00B1E4BEE10262C8F099D4694EA649E9973EDCB9682E8E5CBA4260B428E7A",
- "2A5CC995F5BE1347CF37B7B749F3B66AA45A57740A8610901346375CA3286C87",
- "EB2C357F45879A60DAE7390E83A4623862766014998513C5873CFEAA6A0E601A",
- "C2B3DD723D570E858D5DC3203224A6A158408DC5517916992508C9F44492C7D6",
- "7B9F8B7FEAB2E42CDF6711C251E497444D0A895F3EF7C2E734BFE16DCE2C9758",
- "A958B22493B184DD5738F29F7CDB3FC225FF8C608F009C24DD75A04583083858",
- "3DB6A8E5411C847BB4C5C373028F05F3939AF74ED6B4FC2AB2520D443AFCAB5C",
- "B9B2212B523AF44F152A43ED6D5EF79F9CD3D9F0F27AABBF489141AA784D8FDF",
- "E2681AE71C6FE5A1407007B28F92FFDFE9E2572C14D3715FFE9ABE355D836B2B",
- "49CC1F20AD2E6124BDEECCFE629AAADAA9F0D4C8844235CB20429D07471CDC84",
- "8243D185AADD3980292B93FFC607D0C519B2F3390879E95E994A9FFEFE66DCD5",
- "65852BA418CD8C9D0C848162BBC5487B58C8809BA65C7AD1DECAA91FA370870F",
- "01AD641E9E9236B951F684D4767FEC64696C7D83E49C841A0304C14C946ABB82",
- "271137095F2DB04B02676F40CB838746E40D45702288746F1339928F70B355B8",
- "4E66FE1B09EE0FF59592A105A5CBE8BF3D3B7DE0C090C9E2D6A4576AB2E39831",
- "D3EA4F52DDCFF62073E5E00D0FE76BEF1DC2AD774F60085871B516CB34AF222F",
- "71078ED4DDCDE2FA99AF6402BCA28362748C6761C8F173C4BC757C7B3D48C61B",
- "339DB7F070F71401B6341C843A34B570E49A019D7A8E2993D805D50C6C8B16B4",
- "2BFD72B7896E44C498AFBFBD6D97487961AB646A060DF7907ECA59BEC1A5778D",
- "5DFDC71F6BBC51F8848561F6AEDF33E8D095E8419F83F63F973BAA1721A754A4",
- "9D2D6045B9D527C613AC0864A87122A2A561D7C238AA4255E9F23B90769AF358",
- "71F6FB5A4E089751DF62AFBB9C73ECF551B255AD4577A73436F1CB1FB8FD7339",
- "A6F3CB35310990E9E72CEB6F919F1055BC771C1E90BA75B7CEBA7972932A33A9",
- "29499030879C592806C491BA2552A6AD21235101C5639F4E2BF3BE1273F70A06",
- "6749DE6B01B7B606E938F55648385ABDDEA9F4C7EC08A0348C73795689C812C5",
- "8AFC865B2A8DB0D031E69C23E66BFBB7200EB207E5A922E44191262D9A7043BB",
- "DF22C4BE28F012CA7DF1C473C00D76070D49FD2140B35CE5621114B5A62AD7DE",
- "EBB007D72BCD07C1F7B97D31EF381FB0E38C15A85A2561194F6FA933C6698CCE",
- "07859D29E7E9F28FDE58078E3B3654422317AF59617E4E6CCAF3DE902B98DA08",
- "8D19266AA88457169BE37F770F20C2C98147F17CB8F84DEEBFC9010D7EA5F8BD",
- "43FD16ABEF0EF2EC6D872CD9AA9DC7A0121536A6158FD6F131C7F61975956C27",
- "B42FFE4BA0AC507A558B0C6A9BBAACEED7343322FF6E198F3D839B535C22BA42",
- "9513CE5F9D1D0D45B428FDC72A10D1B35AA9B7687929DBD72E137E84ABA45D25",
- "88EE8F1B34B77A3FEEEB77539C813D401CD5E9E1FAF3AF061CEC302A0F59371E",
- "C40154C36247509AEBBDE391BE0A26666D1538223033DFA6E6E7BD9C73BF677E",
- "4B693A82F02FC39A23B957F6E543E838E1046074053414D0589A0455FD02AEE9",
- "5E9F3F92D89957A212BCE644EB20DDDE639595308F159AAD3C5E7E260A38B2CF",
- "B5B113F441769FCBAF88F3BA451E8A2C9C8D35BAFD851A7A4EDBA0587506D657",
- "55BF09502908F9A49F71CEE69512EA49C1509CE9D3E0B9D5936C10DB21DFCC85",
- "D70B9F84DAB0590F85DDB7ADE716C4B01B50F79BCA32EC7F4CD8871007777B8A",
- "4E9F0016C725E9DFF8B6518D8D362BE2CA33E5DE9208F3A7102B0B03FBFFA836",
- "D6D22BCD4D5EDE958A513E1EC8AA07DE220875A9D387E1DD6084C7CC0CF687A0",
- "BCFED60917033820C1C32B987DC81BDEE6593B0C7C7CA61E9B7EA3190B8ECA8C",
- "576C3972A32FBDB5159DCD2709EC37E26D7E3EA4CE80B958A8C4DA9C31A49D5A",
- "261FBD5600BC760D8926D35D2EB7F6DF2B03B96BFB959331E3263D3939DF8E90",
- "265E78CB344C2A26C772BF181BE88D4EF52C768B7B7242A63F6143A90D9A58A9",
- "A631B71B0E3B2F1D769DA37712747A6EB962CEAE0BEDE3E1E8AF54BF0A125F71",
- "950C95C6BF00E9A1338933ADA6B6C0A36123E0B19C98BBB6A256BCBFAB649198",
- "F16AD9A97F9AC8DEB71BC414FE7787630EE20CF5CDFA8B153125551BE4E2AF7E",
- "2034287198BF5BFA020F711ACD733240177ED50369C489CD12A7646BC23C7ABA",
- "23C6BD876E5C8E58C9EC1A966AECFFC48303F3D5A992DB07D771CAAB68845396",
- "BB4C2D62BFCF8E83ABC4EABC844CBACB83DEF961F50B3E0E6A3B62D221075B04",
- "18E9ADB715E41B89CE64B968A05608D74918A613D3BFCFBF2DC8545F2F674F50",
- "79746450C4B6563A73B3B54FAC871C8E9B5C2F18264C24244C80A831D7730C7A",
- "900BDBCA48F86DABCACBACFCFE013A5A17E41AABB88A9175F933D0B67740AF81",
- "8CE62B3D94341A4A574567BB0EE15518D2527EF12C87DAC85525C1957C82BEB0",
- "3F6A11D271759E7D7A37844805F1536A06ED298ED5183B9CEA79A985A4BDD151",
- "BC7A1C7451D1A1CC6FAE40705944BEE06778917F5518BFD7F9193838FE6D2A7F",
- "D3A4A85BBE51C6344303866B6F136419DEA368CEC9E3A417E7D746A616A1545C",
- "17E5D079D5A3A44EA47F09BD384822F7FAD9DA7B374FFD7F8C2835EEBC78DD73",
- "FCC1BD92E8A08DE9508B60B26BA5E4E8B78918F8CAB2CE6F8BD2F278A9829038",
- "DDD01F54BF34454556C65E72B0F3BD3914F1DBD18B75F7B8AB7094982A7112BE",
- "3270DCCD71767EBCB3EF4F890E649934628DD7CF94B136F6519A018F25132437",
- "F358F45D41FDC9CEBDBC908C6A676EB509166654674F785B20B6E5B78FAE2887",
- "065213B3722367DACE7B4E5634197C4DBCB7559A44599269FE33C515444A8B23",
- "A568253F684148084CCA02D97DACDDD76BE161557335CBCEB7F169B947DBAF91",
- "F4FFBF67C9366607DC44EA5A009E33083F2FA00CC2DBE6DC22A8D9AC53220407",
- "054353C28520C1DBAFB1EC685F6B8DC947D2980E66F32B39FE4304DFCDDD7160",
- "91058B0A5DA0CD976EFFFFEF5FB319763ACE0D8C35018A5D6F96F9D35CB937C0",
- "CA376D5BA86F62CEFF2D70EE7C8B267C8EAE3AE4B5967D3E9621E4877BB51A46",
- "44C824586C2A259AEFA84989E818279D2D0E0AC23DABA22917C435AA185EEA4C",
- "1E947C6B521F50298AFE02A430C23639F4449C6E41B6A8FC76124A079407DF62",
- "EA10F42122BAB59346FDA72D33AAD31221A692753E4E7657F35BA720517DAC44",
- "02C348C371F08B4754CE237D36176D7EB6D4D556BFB1F9C9F8A66054CBC02E3A",
- "A7A92AD773142AD76CD0AA011A995EE454C578A9E9BB264BAB094E1C8E48D1A1",
- "E623990F534E80C09D10602DDD9AA4D9F44027357D5BA825ED3BBE12CA7E2F28",
- "340DA18D04CCE3C6A847026EA23B46F1F7B7E3D22AD6C120E1521CC29EEA4099",
- "FF437EB15CD35F83A6CEBD6A294598B4A7D722FAA3D39FA555C50BE2E278F70C",
- "1874EFB0507E8115B76162E81E86FF60088B022B7BC956F89DF766F2C63B5847",
- "4DC295DDCC98CC388E0D37672E158EA926B3C761074ED40A2E38071EF978D761",
- "EB724B94BCA71524341B1FF4FEDA4F17437506B13971426C03203BA8EE82A691",
- "11F328509170AACBC96B1D2A0B1502E7CE6D0F95FD29251351DA875F8FBED6E9",
- "C663ABFAB57FF0F91648E8067BE92F40EEFA8C2AE667653EABA645F0AF86450C",
- "4C36B85CE4DFBF94ACD273F7A1EE5FCDB615AB50007018E9BAB2A961CBDE51B3",
- "AD043A85E66C424AB842FFEB7968031AC54CABEE0A08C38B4F0A772A3DBACAB7",
- "94373F0696D9BA1CCA4312B827F28D50DF0EFBB82507DD8CB846F388D9D69DB0",
- "5C19E622B2FB4BE2AD7C54B08DEA4D4CB5F62989C792AB3D7AC8B363B805A247",
- "C27127CD54D70B894570F7DA2520E6A02435023F26FB5D13F0B8D1A1BB69212E",
- "210917867309B1D48495D1A663ABF0262DD0FE1C8105FCDBA4DDA22BB1C287B6",
- "93F84A8EDF318A5EFD561D1DF0734BA2C5020CBA32BCE27B5554E54D7B7A8C61",
- "3EBD1E41A94B04ECBA8C2AABE8DF9B488BBE70C62A2045D0D46B261211089ECC",
- "559AAF2957692D8E5CA2FDF25F13E65AB33187C6CCFDB55C58F5BF1EF6A042CD",
- "B055E313CF08A6999A3F88BE516D9F4A9B4A2D99F1CE911936779D8F03E885FE",
- "C122CAEB9A97D78D4F1F5D9EDD57AF4F41DE07DB4B3ACBA5E6735A2B8EBB85CE",
- "2578314F35B3B43B0A65410B351E492467B86FFE5A60841629117DC763AC6250",
- "67620F8E3FCD17D952A39E672B2E1D9F56731D1E1CAFD23640D9C1021B860564",
- "AE989ED5E8352001A5B197AC2443DE09BF95B6070F9A3AE17B12B6E1B75E01E9",
- "F8175C702F45DFB9D175604C443BBEB7C2B7EE99F3FFCDAB2A4E3AA51FCDF8D2",
- "FA67490C6641CFDD550E88A603FDB826E832C106AA61479FD85B0A035824BDC7",
- "94F2477790477E3677DA097EAC6C8C45DE026B414400D1EC6A3E4ED461DF192A",
- "3A89DE6E767A1A9A878DD4314F3E38D6E7C87677C1D2FE98D442CA289F46C9A7",
- "16B12E37EC75EF9831F035D8509A408730CACF274B6FE231652507CBDE35D834",
- "0BDE2F69A15F2ED25B66AD68469542DEC72E5A14F86CAD9CC8587838F280EDB4",
- "F32AC53FEB258C257ABFB0C81A6EAC90E948960E21AA8AF075FF9BC1D13C50AB",
- "3BD7D1759F6AEEA4E7F7DE5E5BB0434756B1F5E0496B05945B0F9155AC425D0E",
- "0431FBCFFD0C0506FA6E286B9723B13CDBBE6FCC18FEF2E5DE04133FF174D542",
- "96E7066799B093ED977ED9EA37E2212E83E7C49CBCFDDFEE65E3D4FE075BF852",
- "0580843F4888FD11B41277E2DFA316A9F4982E505D366A5189DDCCB37239C92B",
- "C5252E460FD9F2CBFC6F4583FDDACCEB96C32693AFC996457B031B34349CB55E",
- "4F71573576C09670E254D3504316DBAAF665D21202AE48916D56AB9C4096AD13",
- "D6DCE51FA775ECEFD1D22550904CC47A74478389720E2D210AA902D7CBF9AC73",
- "755686836CB2E7323BF4E2C5DF03A46DB006DDFA195D3267DD36A22E06B2AD27",
- "63E424B9F7F6A4B3DC36F7251D337B8886705554B821A877FB32E2E5C716532C",
- "1A985A0F99C0AAD06B5DC2A0532D4E7CF55151ED43F3FAE3F376B398C09D6679",
- "1A30188BA9286749206FF8C8C41EA2DC056F153BC85D12295BBBE0296AD10A88",
- "EBE4FC352F064CC5E60CB4AFE4200D05C5E4945D283ADC3FC16FB7AA36013BBD",
- "0FFCE0AFFF167B402EB614EDC0A308ED5EDF5CA03EB979C37B23FC01592CF70C",
- "257AC64E0466EFC998408D428B5D93FB57BC00CAB2ABED6F0555D9CBEFC6C846",
- "7BFB98F1E42E0EF8A54F77C702104B542C717B618DA79646E86A009B7295214E",
- "40F8680B5CD41E6319B745B944D1AF55266DABD86BFD3D847DC3A7D5A3033151",
- "6C5028C092F75EB61B98E5734A547B071D635908F0BEEC2FB47A46029BD02786",
- "E7EBE4BC203EC0923EC7C038CAD1B027C02A039BE44A2DC3C7C5E262732353ED",
- "6D83286B2276F2E65CD8AA44A90EE406C2C0C41475468B8FEA435A291ED72357",
- "4E37EBC592E76DA9E8697F4FCD0E773742AFBB5C14E23761FA091734E09B31FD",
- "456927E8D5C39470AA2E14FD0E2A1E13304373EC68BAC5DEB37A55B3274BEBE4",
- "57996DA6A306DF4A70145D46191FBDC5D6BB7190C62772705078F936753C47D0",
- "0CCD06DEC277F5338AD7C56A39504374C4D39FF5E95108B8D017103A767733F4",
- "D65DD1432A4096B9442FCB09B103C4BB7E7B2BBCDDFD587A7DC22C78E1E84BBF",
- "9560609360FEF653D0729A876AEC64F36881A9483FCFD8205DB0B6950778FFA5",
- "BBB874133508F6882AA1069E61D1A39194C80738DDB20973514B48C7B50C6AB6",
- "AC618239C303852B7AEE4A5113B2BB1AA6A0D41BCEF802E0D8EFF42FC8861801",
- "530382B77B0A26F06500878F626AD1DCA73A5DC27345EF6B7AE1E85B5CFDED86",
- "6B787E269E4E95718ECC2EC4B7C261164E9CDEE9B5686A0D935F317C8F334075",
- "C345A32E28C0805A2BA682FA41887AE4E23057092698B9405B5CF484ED5BA026",
- "68B0A2F09628398DB6A4534C483318F71D7516EB642981E943511F96DC908E97",
- "4843026866ADBF2A9EFFF6538773A1A59F1F6DFDB1DA693DF5B0C23F408B3A68",
- "2F090D19A815D95D2EE4EBA4E8F6AE75DDD32929887EB43318523C10BC35F866",
- "BF14C1B3E5C075DB7771B289BE06A53B7565B29F568225F3B69E8E2672B3617A",
- "BC92F8BBB01548B42B8D0D47A2915D3274640624653201A844A211AEBA3BC6F3",
- "988B14EA6D3F89E2A53C2B553F020BC4C2AB5265B456AF637228841286CBCF9A",
- "93F322493206F875A8DEF842D01B9E07552FF4433DE08CD2C46E32EA02BBBF3C",
- "0B4CFA5EFBD19DDB3BF988147411147A106D5B666B1864E180C4DDEF18F0E66C",
- "DD5DB39249F6E10AFFF3B2B192C9193618CAAE8A50D0C72ED1077C33E67A5925",
- "FD02E8210E04B6FEEBC6CB4FDEF5BCC5D6ABF88863D1E42DC59453F487E02AC5",
- "D1722D7D870EBB783B908002A9E9CFC47AC754EAB85D61EC085C54FEA4400B53",
- "1B4C36F97E27E78580668DBC4125DC1C441E6B3D7FD289D0565B6D5DE088E48D",
- "80A76EBB439F3F03FB590FC132106ABCDDADC3940FD001CCE367BCAEEBD49CBC",
- "57E6938F3A4D9821B5C7322403BACC60A78CAE26FA098BC1F52012F92CCA2E85",
- "D5CF1FD3CB2CECD7C645F3E24079E15C45AF216A04814F80B25BAC12D0254326",
- "33C436D3331E4D8FBA8D1FC95608890E53BC69655402BAAD8E88507D2CE982BA",
- "2C24CE8A7A01B97EC86E52ADFFD35DE000B1F9977B3B123D49677F340AB462DE",
- "D0BCD7C8D5CD4BA4E112F3139971E0677F2C2D88D5F8622B52871D320B9E3451",
- "8C3E7C060B8461F1211762B56844C0D348ABACE0FDC8716315D9AB730DF074F4",
- "2447C41537159FB79061E74902C4E61BFEF401440CFF106CD2971BC74DDA112D",
- "2A8E6A59722B47549893EF243A8211EDF7237DF8D45F56113E46B0AC603ADC96",
- "4CAC9B484F577111D4FAF3C31A274613AD058328CABC7F321687E225E36537C7",
- "2ECF4C43391D2B8F17BFA585D410DCD6D4E84C585BE2D2C2B3551A58BB0B10A8",
- "1B8972AF9FBAD462224F6FED35B0F57806319951FFEE953FE2184CCF54731CD6",
- "606144EC572A76F62CE419179936AE6B24E0C3B9244FF1BC0F534EC0EB2D5275",
- "D87E9347DF1E8432519C83D254170F7B21F7B9E0BE588EB574D1BBB9F4CD0473",
- "E7AFEE4A550D69F520F0D1E9CC5866B43EC9E27B1C9F9D4A37B54122DF8C2CE2",
- "2862A38932EA8E732AC1642585D2563601A4293EAB25AB35303A2CA6F850CC81",
- "5FA24A5B80DA3548455AB886B258F12FC52830BEDC453C3E8391B69F6E00DF82",
- "7559B157FC734FB54BC8AC451CA23633CC4976B3357793C35B8C14C8A1490FBD",
- "AD0D6D7D2BCCF71085E9274BCE1622879F82F574EDC1BD5A88CAABBB5E15FD44",
- "E3EB69B79EAE8648AAB84B9AE531D5C696AEF9BB35A026D0B9512516718B3109",
- "0C850BC4C041F1D01465164747DD814BC45272DE42799DCF2F835E6D0EB976A5",
- "B9B31E07D63461BD3C675FBE5F7465BEC51173C943CB98D698B21795CC5FB41A",
- "47854CBBA11640491F44C1A696A0AD80FD35E36572A6FF65AAEC73BF545AF00C",
- "FAC06E1A78BEB28D003FDBF9207C5B592DCF2919193A791FEDE7E751390047DD",
- "54238EDC19052708381F696C087C1FA7D2E06448F3FF878E86D99CFA0467D96D",
- "F999BB090D82BE3F395C0970EC9A23DACA7A2FE18EE9850B408AD5C5314A38FA",
- "D60192B4F07B511A043B4220F2E3B9A1F74B497DE545438F8437B48314036029",
- "E2C6661D8653511C21B3E962382A34173700B99854F2310CCFB2646DE3C7DD4F",
- "B322B888D79C5CFDBCDB68B89DE05A3260EC18BBA7FECADF417C874409E5846A",
- "DE168023A8165AA8A948F3857AA715041A6FBEBDBF40A439CF55E70093154F5A",
- "F3BA90D8A2563B61761F60E8B5654C84D20FA04EB95BA34AAFBF0AE9EEB0E50E",
- "E7694C03098EC568584EBD7798B9DB8EE7E5D3F9A2A6E8B1742EBC126E0C9E8C",
- "55FCC4C017C60EBB908D5F0F9B92A837C20FBB20AF9030576F9EDB97A57549AB",
- "6623FAEC8BF75A85069AE33C92EE2C9119A4CF364E8F2DAC4468B203E6607117",
- "6A23DD98DCB5237672CA50C8A9ED0898450405041B1383421C909C92D548673A",
- "3A94E9DAB2AB08575975FD2297D1ECA68286DA2B09E95D03F06D17D14012ACE1",
- "852C9664B0AA99F64BC55018A7237704D17EC9455842D3659896152045133C67",
- "F9A12F46E3B05D69C206D5571808EA0444D95D8427B282859292DB31AF512BDB",
- "F1A15DC6A05D02A7F2A0D51E04E4BC9CABFF499D4DC2BC397F807726D9FFD40D",
- "9E36E3193AA8E65827A626D43D5CA27F8DAF41DAA6A9E4CD9495D43A120E1EB9",
- "B78168B190157187335B7EE425632A03FFF33FE55A1F4F5D96353AC4A6E63708",
- "1F690E649E8BF1FE69547292495C8D6352083BAB6F8DDBBB50B48E31AB2BEB12",
- "F11215716823CEEC1406816C3705CE4EE32930DDDDD5127B591046E27FA7FFCE",
- "DE0DD5F16CF8ECF50127B0BE0CA98A0AF8F28E99E8A6974B13A9D69240D682C1",
- "0E6965A71550320DD26FB5E898F4C06B44412FDE481912C14973C9B1FB868E4B",
- "D8DD81E9215DE5B2C84EBE93844CBDA786E821E8FBE69C25C64282FC2528D45E",
- "9B724EF11E6D194713D39D1900BCB0E9BBB5510D2441081E3881A8CDCC30182B",
- "865494ED6040CC8187BF3B20E4148F61702EB447B1535798904343C5611BA28F",
- "898ACA1949B28ABF5458744683EF3EB1AA18C4B764CA98B73D0AEF7122F341B8",
- "F9E9A304A3D819A4C49F049216C6AB965CBD407D3A534AECB8B7705A43BD7E41",
- "8488E4C1C19A142F386BF5322918780CDF39A2711D6C9FF6BD899D287470A2B8",
- "7AA7C2437B4B7F8D186B54145EC21F873D4B1BEF7FF14F498B178132B3BFB743",
- "35FED1B975C8219F2FE0065B3696F2E3A168E219B448918F312A46444EE6FD46",
- "2DC08DB22EC1BED4ED5EA93FBF8A681955E51D1B8039B9391194E67C70036CD0",
- "68071AD868BB5B45F10912CD6D25949FDC7C51CBD656CEB590F2C54E67226DD0",
- "F19B7B14453B787C8799DE89D0F941E47CB7BF7F100FEA8B5D187C3E44452971",
- "E1F33C60132A726E171263EFADD47FE84A894913F71AF59BE6B73B6078D5CEAF",
- "C0F3D72DCB10CC0C2BF54845DCAC4EFD9767E2B431287FAD4C05F60918600084",
- "312713E10B2B321226B955BC3AE74B43AEF3EA37F43DB39525DB9C1739EDF7D2",
- "5D3EEB71153E95FACCEC05C247E33664C7AA8B104FAD1B4BA2F6D3236FB07E4F",
- "EBC6F636203C5E9ECDAEC157201310B1BF51D2976217EE528613630A2C1C56E4",
- "F827B8CF47E5CD91AAE8A1CC47843D08A5AFC1644998062F6C3AAA1B9092D97E",
- "701D52B53C5F77F2B9AF0A76C93A593727CD6A2851FB9D1065964C6EF0B5009D",
- "D08B11815EBCA4516F1888F063FB0912037EB8D9FC4886A6445BE0873662FF74",
- "C59E137841DBE0A2173C828CA9DF76E6F6C5B630F10924F0AF7E4AFD9853C760",
- "43E1A0C55C4DDA0163CD06B051F83455F30EF5DA9BCF0BA71C4F4A4D71B8CA48",
- "5792A228B687D34BC2C80C102B8083CC805FB03CE6319E8C627023B5A0DB6A63",
- "84BBCC6AC5B7BA398287E512411B67E72E9C6CE6EBCC47A28A54395E4860727A",
- "D0C79C95777613A2DAF1928E4B95A8F9E9FAAD9DF1321033BE432783CBC2078F",
- "89997213AB237D36676C1B37617ABF888A598CAC6BEC05422BB463EDFA5E1198",
- "0B0EBAB802CD03156DF98271059E7BDB02D3A3EF6F75EEEA351BFB253366B708",
- "2F7AE932EC46112E01943A7809DCE78A92DDD559678B1D5701FA861C49219594",
- "FF4B7C63AF3D658B1ADF4D659059ACA3AC0DFF1E0DA318209E725EF806DFF5E2",
- "D47FC76CAFA6BD1A97645F0CA52EE5284106B6D1C8B2246198C0A7932BAFD403",
- "A188D2D39D3B0054BC086F6D7BE59B8042D3B872243C8B477D2A910C8932AC87",
- "5664BF1F148966BDC4E2AC635A1A5E59DB8BF2B8E2ECC85D7B1F7880BF3B078D",
- "31F38EDE7A722B8C480B6A545A39562923B41E62D5650149D60B0C20B6BCC2E9",
- "A9F406450C1A3C90E95F9CAC58638D40E6A4377D3D47C5070C91A0D64F100D81",
- "BC33B1AA5A6EB9EECF9B0144FAB645447E819FBB5F4939083A9E645CACA8713D",
- "78F45063D65F72BA855D19C447E4072098ED86F488BDF4DEC0A8DC30E5AD5B21",
- "A7F9883E14FB6BF17E2FE5029330BD9DFE3A3D56C9D2FE34D4C78FCC8B958CE6",
- "33C991FDBA0E06A2B6C4E69CAB13620E7F5504CCDC233360D5894CB8AEF84013",
- "DE33ACED887ACFA18717F8845591C34D3744F7162B667C321E16A6281DA03C0D",
- "E36B0BEC4F7B9636924617FABA609608DBE48AC0BC832DC1CB969E3E361DAA5B",
- "A62A80624BED309BD04F04F46C5738A741ADE15A69751F425B1AAED1CD5F5235",
- "A1DC3353F1C9D5DFA400682D1B04C958D2383BF2C80CB45F0995AD23A1923B4A",
- "617C13A04FE97E881F960DF582C39C0F4EB2C02602A7FF2EBB047372B6988E5E",
- "BA8F41B9E1F1608BD2C71A84EE0B25D25962BE1BF87DC82398B0B18ED800062E",
- "6B45D0D4C4CCEC520FD94DCEB2F399C3AD660A0725BF85AA56DAC7AADE17FAD7",
- "A934AC7289CAFCF64A43ACCF8A0A47CCF444FB1E830B24612D6F508592B9F07E",
- "283B704ED442075870458649A2D61482D8AFC9B5F43618A2F4F9DFB13B127DFA",
- "1585EDF934C4F4BF51A125091762BD34450C347B3B9CB88B3CE0EA90EE6CE998",
- "165217D2DB6D6976935FFB4A35D0EE99B8B962442BD351A320D71C58D0C1A047",
- "D80C3163852E5FE3A16CE0D7E6A1EC067089B2D0D03EB3D9F4813EDA1B1B9FEF",
- "CC8011EEB70940D682EC62B723FF26A04DE6A516E7775B71C9A3C563C3BF4EE6",
- "71D0EEAACDF187668BC86E55911DC7BE8425E7CB9A895D5B9FB90C7C14821866",
- "7456817E567486104F3CB1E421461113602E38E953F8B7ACA8354E85495595C0",
- "F30ACD4F924CFE0DA12F045F3810DBEEC977D49EA63B7FE2F93167B4A6E4CEA1",
- "00423BD27005F76D0AA5DCC47869E59C16353CD84D9D8D02A655F1B488396D11",
- "D115B271D5B97E7E016565A36DDA1DD0282E6EEC10121EDF5448CA1DD9F2933C",
- "FF7E356597C2CBE16449B629753B149AF53D88D997684EE98CF80821E8DB271E",
- "01DC15E7AD4550BC78C86D3325A3E0CED5F5A9458CEE87BC16C916521EAA41ED",
- "91D777B050539F5348A9847BA7791691945732D716E8FFFD8621DBC710D4C39C",
- "FB5E18C07B19F48EC6814A197877ADA88E633A727AA35A7930B5A6DF71556D05",
- "7D823A07DD309BCA55493B8807D8F4C76311BECEF5D77B623858CC32FD04E12B",
- "FA5D004554D43A19EDE6BDAD4E006D67202EC2B583F23152376A73B4D52583D6",
- "AC9367577F3ACA9B924A306488D119D1808CA4656EA10D4D42B17E0BC15A057F",
- "89E582929DE1F7367A237BC7EA95FE8C8CD2AC8A06435A311494BC370A43E225",
- "D620AC1F48A931D33A5785C9795E65BBB98CA66019572F315CA8336CC38CD979",
- "D180D89CE8A4CC5DDA7A3C3F5C6F6CE063BE9939E2B732735520DE754AF80C08",
- "7DC94FD6253300B89E22D09FD10F11143B598030428DAE88C9343645030D8AFF",
- "A5DE6751236D6646589F076715F457A1D15B2F0EE1E521761A6D23971065170E",
- "7A2E5140C76C23C762ED78423CE29379D98C5222C90ABFFF328CEC87C4324F52",
- "C4687772E68435A64A0292FC2E7CE785F838831FFDAEA085CEC705C560E23F25",
- "B6FB9DB6EBED371A9F1CB457AEA3F9C60BF102EB619C609C41F3CBF2B081D968",
- "20DF6D8F12C043BD40932BF9DE476B2EE1748FFED74FBB6BB8326CEF4CD52584",
- "02E145163AC998C77726B8ED31755FA19846A09C26143574AC668E9942184ECC",
- "8322C4249694117089E2AC0D072425361A4BDA9BC11BB5EACCAE2638B0FDAB6B",
- "4AEA9507C37BF3CE4C8697C621597601FFB94540B67292DBE25F79CDCB5972EB",
- "5E8B03D77E90D5C9DD7761DE25F45B4EA9DEECB28BA0251A1A719ED84CE5B718",
- "14354FF1E3E054262B71E6EE6C2B60D967D1A9830265C646CB0B337511BE220B",
- "B17317446601588BB0524D53A2CCF43A94FF8F4C9806ECBB7823787F46715A6D",
- "9E112F27AD921A757C26051DEEDB6CC4F1D5963D180E963FFA6F36836C0FD66B",
- "1FA60EC5D70DCB3ED642F429191C3B1658ED2D7073EC47B21B308667EC93231D",
- "5FCEBF63479289BD8E08CD21C4C66012172C7054E86FC2EB5265828CDADA449E",
- "72087BB4DCB2C405235592E5DD7C887090857D2327110E3771DB4543A8A486FC",
- "9BCEC1F50F78335D4B1A04D32621E9495721ACB4A5195EC6EF10753B14265C09",
- "0A5D64567A643130897FACF00E0FA475899BFE626BEF8E774979890CBB171FE9",
- "7816599534D5C2C7B96A1B41F1A59A0DFE1518C54623976F413E08382835605F",
- "A4DF9518B225165C66BB61CC7E46C42256534F015F26FE787497E7260BBDB17A",
- "8D083731E65B464A5A0B3F16995ED0528F4A7616DF2C44B0E6B7E90A92F9A14C",
- "A69BC849DB7B521ADDB970FCDF8984CE098E2C652AC96CB59C71578E85EC2B0A",
- "DD87F320BF2A83E77C038F74279396F17005B601B9CF4286CC69D0B00819B924",
- "9434A6ACA5F3F6945E3D0A9D3E62AECFD4397B3F057A3972517B8636C626A38F",
- "386BA8A0DD685E2860B66A0B3DFE5BDD87B0B9E898ECF1F24290B1E2BD874117",
- "33F44E6047190D02666F5D7D75BDE78795F686450E79F165E3CB5566CA9D1769",
- "3B27FF1A1ABDBA23E738BF958A856E2E165B012E69B0BD3E22A71923652E5084",
- "F578CE7FAC7B8BC46F41002A12510587C0DE7D7E53632A832587D44112FF1FA6",
- "6331D5085F1BE7F54E51932EADE6F765F4D7FF16F1CF67E6993B90132713AAD3",
- "9C379BFEC0F3CE1127EE761EDD918F4FC6D6CC183E5F70AFB3C3F3C02D53D421",
- "3B41C82CD692D68948A1CFC1657F06271A488F4880ADD0B4EE4BFEBBA0D4050E",
- "5B4FACE27EC3765D7B9BBA2082D7781230A458AB4FC52C59D2B8DE84692A29A4",
- "98DD7F438FEBAEA30F0A80A0B0CF547DA77AF39F28AE909ED2139F1221133DB8",
- "8BE9C6B16DE70460AEEFFC6D35229777C7067B792E6FEEF48750B4A9DCA2D61A",
- "92A25061E3B3EDA05BC3BD42BE7C13BF212B0E3AA1874D89A85BC500518B766A",
- "9A8EDCE718985195772449D6970CF847F4A8DC01775D12B9F9C8B40C47363FDC",
- "0D8F68BA45E6919BA5421D36A8CCD1769E78308693D27BFC7F723DFD6D268EE5",
- "FE334C0C929CBE1355C5C297095E77D8996E704AAD3BAB62588652B4A8768FE1",
- "050447FC10D71F5A3DB24F824BDBA467AFDFF81732CF78328C6AA22E214F1484",
- "B2DC246963894CD35E912D5FB5E51E74969B86AFFA9D043C1830B4EE0A4C072D",
- "A401DF440DA4890548AA981C19765EA4667D65AA8A707B170E8A1BE3A7131366",
- "FBEE56D123852FD358A0BC43FB5C50E22C2B6F59FC68FB72A2C649247FAF0F64",
- "FB742031B2A4FFB2E693628ACF301F154A178E9E22BC836BECF61510FD366A75",
- "4CDEAAD91C645A418775F4036DFD66F904FBBC935B531D42477D0C976F7C6838",
- "05896BC83C69EC553276820393EE06FC1A944C924F8C931A4CBBFCB25DCF0707",
- "B3DF6CFE1129F3E4CDEDB00D97AEF08AEB689AC30F97B418148E036AC1F626BB",
- "4A71F01BE5BF68FB270CAF57320D1A0B7C14EEF27026774F2586868ECB6EACC7",
- "25F63C66007EC7A7FDBED5C979B8994AA7BA32381C50FBE058282569AC648399",
- "6F2069AAAB017B712EE248BD17621812BAF6AE41B39B490918841C7E0386CE88",
- "2528C98BF5E5C331048E0000000000000000000000000000000000000000000000000000000000000000",
- "0000000000000000000000000000000000000000000000000000000000000000",
- "0000000000000000000000000000000000000000000000000000000000000000",
- "0000000000000000000000000000000000000000000000000000000000000000",
- "0000000000000000000000000000000000000000000000000000000000000000",
- "0000000000000000000000000000000000000000000000000000000000000000",
- "0000000000000000000000000000000000000000000000000000000000000000",
- "0000000000000000000000000000000000000000000000000000000000000000",
- "cleartomark",
- NULL
+static char *IsoKeyCaps[] = {
+ "%!PS-AdobeFont-1.0: IsoKeyCaps",
+ "%%CreationDate: Sun Apr 16 22:14:26 1995",
+ "%%VMusage: 8064 8064",
+ "% Created with FontMonger Copyright (c) 1991-2 Ares Software Corp. All rights reserved.",
+ "11 dict begin",
+ "/FontInfo 9 dict dup begin",
+ "/version (0.0) readonly def",
+ "/Notice (Copyright (c) 1993-1995 Erik Fortune: Use and distribute freely, but preserve this copyright) readonly def",
+ "/FullName (IsoKeyCaps) readonly def",
+ "/FamilyName (IsoKeyCaps) readonly def",
+ "/Weight (Regular) readonly def",
+ "/ItalicAngle 0 def",
+ "/isFixedPitch false def",
+ "/UnderlinePosition -100 def",
+ "/UnderlineThickness 50 def",
+ "end readonly def",
+ "/FontName /IsoKeyCaps def",
+ "/Encoding StandardEncoding def",
+ "/PaintType 0 def",
+ "/FontType 1 def",
+ "/FontMatrix [0.001 0 0 0.001 0 0] readonly def",
+ "/FontBBox{30 0 1033 1019}readonly def",
+ "%/UniqueID 0 def",
+ "currentdict end",
+ "currentfile eexec",
+ "8551A6FE281A24F7FF33BF71784C08FAF0BEC6A24D2D9612EB9369F0F90A5C3A",
+ "4CE0CDDEA2B6602004E0E71429DDD22F439E984BA180E326344321F3E6F379F3",
+ "32FD065A9AF79BA836D33A465E4D52132E403C31712D939E800A492D5BD1B69A",
+ "1D55092933BCD8CFB7BD6A7B1E8172AFEBBE8CAF0D3B5C9BC9BF376DC2A6CBA5",
+ "BA6C605BF0342BAB197654B1472A5875778372A6407275CC2101D85C5E0C4452",
+ "3258E0B2F6F1FF7C1F4CDBE7CDBCF7FE819761317D5CBBB0AA8568A4F610A7ED",
+ "75840096F2412D4EDAE38A49301D06C0AD8D577018FD86E93D124E6DFA543F66",
+ "BDCBA8EE83BD7BEAD8EB002A92CF1325702FA1106CE5C18511F55CE7014E3459",
+ "78915163CF281F100E5E19F6200EDEC562EACAF3962204C68432B46E9AF33BAF",
+ "22E995C2F23E0431EAA01028A1028A3B161DA5CC9D3CF8D8D28E3D39021C19B7",
+ "64A39F0FD70E85ADC704255AFBE9C86F6BD855B80BA9BF7A0FEB207558479485",
+ "76CF7C428960B3C73E52315DD854162F01CAAD32D1A07C07E879AB0F152EF376",
+ "0D33B0B8D68D7A0E09E9145C0DF114C6CAEECD6465173DF643FF820944A3C1DD",
+ "808F03B79B2900BBCCD33550C677777D48B9BD3B727849563C32076ABD5A74E5",
+ "4421912FC0833B178FE21C6B7C6DEAEED50C843AE02AC024187CE9E15E7CE921",
+ "AB0E8FAC03B2EF345D361E6BFEB0F030CD43355AED642EE478E257B2D06E4880",
+ "C531CF4859A76D7B6EC1C331450084E78EA4C88AB0555E7D3B486DC0F93AF35A",
+ "41D9313815B951690AC587FF9D39DF68AD050A91940B73A54E93F3AF3BB3B3E1",
+ "5FFD455EF337811B52450532A4A9BDF4CD0A1120874DE11BC9F8F7394AB45E43",
+ "4E2DEBC4588AA1DE3AC2E31EB7AFB4DA68E9C72FF1318AC06C2324B51BD3911B",
+ "B3E64237E46D213D348C9611C1D32A3095C4AC75513189B26F6A85171864905B",
+ "5DC60C151A4BDD182B0BE8C416500E3D46F6680214B33CCDF1CFF844EEBAC1CB",
+ "63D7608EDC2B5A7F955680D5501DC2E3014212563F713F690E6964998A1CADFC",
+ "B5073630BCA52FC3DDB9B3B9BDF9CB7CE9735ADC3B5E1D6B6210B33A1FC400B0",
+ "392EE750598D7AD3978FCDF244D8EF20532C9DFC5DB04775CA3D5BF3823DA096",
+ "C5FAB0AC9E89227D13951380189A3AE6240C6AC0D75E21AE7C82E4164334ADA2",
+ "3FE21ADE74B6EFF0C51323DDF81D85D36F0441F3ABAE00B94A81F3EAAA860FE8",
+ "881191FD60B98C4FEFEAA1BB0D1C6F6EB027EEA34B722AACD0E9DDEF644EAE74",
+ "714CD8ABFF98D847CEAF1E6AA251F894A8DC3F5AFC0FC1B2197E940B4D473A38",
+ "90674DE22BB9126D90A7B9F2C957A936CCEBE6406D5803EEB28A2F429466426A",
+ "DF1559A9C6CDE09F035C7E9D79B54792A7CF42FFEF9C3968CBCB5185CEE897EC",
+ "BAFFB11AA4D6BC1338301B9EB2BCD4A0CE792F3209A75C95FB448EEB460B7178",
+ "223CFA97B547547D4CD37F2898CCFBCEC519E6C1363119C5B005C3EB38C2F7D5",
+ "4B2711FACE82B6DB16387F3EF76EDDA4E1C3042D2F82EE0448BE80623558FB7D",
+ "C4CC6F95FE735EA451E0F3C298E84E83357FF7163B8939D5B5F4B22ACC78FDC6",
+ "2272A317BABE200DB627A7D2231D72555D7A06ADC228D2D9138D228A92395B4D",
+ "BE7754E6C944EEAD5E95334FAF3F2888FAFE14C60FE19823A3E936A908180CD1",
+ "C3E3E829DF1E98270C47A2352FA9F66C80ACFEC4FF572E6D41BD4C3324F0AEBA",
+ "8DC7178820253F86513622A670D4CD880597667D05EEB4217D871D17700F5DF4",
+ "1F3ECAF271FFB35D34F6FEBF07644B84B2458A2AED9D9E85CE5EA8FA9D3E12CE",
+ "0E92D899CBC468BECCF6F9132A68C1F067CA0260196965C8814957CF9CF2EBCC",
+ "4427B031B58AB8BE9C6EC8E2D406EFC85145A5A614C4EF911CD976127593BAFF",
+ "46EE074E8D4791AB00B750BB17BB8CD0EE7A5A6C64AF8E1F59E3DCD87AEB1ADF",
+ "44F9B644A4B30E7AE35A8749B2612BCC9DEF8AC9B4FA7B3FDC67ED1D817FC6CB",
+ "32DD3811D0720B6D45C9FCFA7954C30EBF1DC58F9B0069931500648F0D1C0BF8",
+ "3E45E08522EEA6533E00CE023D23C2F5718ACAC657F76557B2B6D980A6DF58A3",
+ "A22A752A9D6938E2267AE85BF94D94E24DB2679A2191B8872469C0A7B4008E22",
+ "39FC7FD65AC2DCCF87031757611D0B6BC2F90B91E9D097FB07C6C31D6699809B",
+ "A46027BA8BF0DD4F4911C3F8F9A45993F19319BEB3CF42BC25EDE305BD1EA124",
+ "4BFE062800EA8E16E3893DC59E552D0E13704E1F8B3278396D6F6A11DC6F8625",
+ "E6329E1BB89FDCE310CCF08D1946239A563FF7D6867197E78129D91BE5C1C61D",
+ "4FBA7F90E270AFEBDE6E60E09B56348C71058E9FA2646B8A86F35C3979A123A4",
+ "9EC3D0FD488CB2F5ACF1D3088706E2BF31E2A8603F3FC4F2D4879F118A584F53",
+ "2CDAABF2A5E8069F69444818E4A510AD4D5EA007D27E590176EB6B5C6A676AB2",
+ "113324BBA8684FE9D6CE31653D763BEE8C6A2111E957D7FF83232DEFC94056B1",
+ "A6A0834C1C5E5B8C32FF5C0E1156E31A3726649839C36A858A7DCBFC523C4BF9",
+ "E715B1A964A33BB82B2DA197F3EAD6EFDD8B27D38F7989E097046DDF159188E4",
+ "31D1FE927CECD187F751BD425F63E4F6774A88E53980F706202F0EF89827D7AD",
+ "153D617FFFC3092679061B9D40EB6E730E254A952FD27C6AF464E9893C7A3D43",
+ "485865629D72323F52B177D0F264428D37E1F57123F52B107356C8B8F82BD131",
+ "B73C42619791E589D3CC46DF65889F0D68CB0E2726F89DD4A935FAC17E007AFD",
+ "3775E87DC4F0B2A154743C3C7FAAFB4F3C248948B02A50F1294BCB125D472EF4",
+ "4797210694EE52ED647972585096EF4AB914D033123CE6F7BD7FE8B9F73BF0F5",
+ "2FDD8EC6C9979E96B47BD8C2F2ADCB420A723F55341CFEE2351F5A81D0565995",
+ "BB1CE047667B8D992F98D98F6EEA1710A96731CF2350E92810E081EFC5197ADD",
+ "4BAD3D1F39721F0AA5FD0CE3B57518ED0942D775E0732ADB79EB2C359B648DC9",
+ "37D4371BC58654B5AE4FAE3D9816EADAE629FE6A7265E62F6F9D9CF7E954BF76",
+ "4D16AFB7DAF32596EDBFF141CAD0B7435B6CBBFA633EAD6072242A3514F81581",
+ "0E256858C9B884408683E2667518A6AE13B946A722997F5E906FEF0796908AA1",
+ "96DDD7A1D094488E883B9E942A322E2C7D48EDDC55353F07747B63520264F0DC",
+ "09C55DB76104E03C95B392B019AEB84CEBC86DF52782B5DDD1DE2AF49B9EEB12",
+ "E2FCDF150D7CCDE7E2A8AA7B6A7096E2523565DCB2516D216DA76A14E8719704",
+ "367749C9DA3C0991FB850638EFFEC2AAB75074FCED82C1F32F5709BEA7DECCFA",
+ "6B11015858B9DA957FA94C1DC10F3588948061D9A18133ECB9FD33E098CB982E",
+ "7EFAFDCE42EFAEB46CD931C4061D881CC5467BDBBBD04DEFFA91445E0BC22646",
+ "30EDA1127AE6C68ACEFB5D97074380EE73763D3757B6FE283FC8537566AA35E5",
+ "C116487B3E7E38202D4716A0036C07ACFD54E066736E1F96E466B1D9F4E3D332",
+ "F68AFDFD1CE473561117A6B25B2CDD597F0FFBF1717DA5F38C7FA88C89BB04B7",
+ "56A8B6D15530B9D4FED94CB7BC689939ABF9E039A8B6A6005711599FE62DEFD2",
+ "0BB32B9D7955E2862CF70BDCC552A15DEBBE3C8FB6F5E262C567D1206E97BBBA",
+ "06AA8E9DFE48EEFD014E950C04E21E26D8E68D58EED0A62F5E58A95ABB584DC4",
+ "BD3713366EDEBC55AE8FB1945096BD923FE56EF2A120B3B626F5C003CFC5BDFB",
+ "070B70F6547033D2265C604C427D1D2200BCAC51DE3E7FE9DE200A987072BDA3",
+ "16C75109106C806E2A639E1FB113CF30DED85351DA5CB1355D361CA025183AEE",
+ "36567C4A8F570C70F4893FADBB2255F7B492ABC83213B54F162D8971EB4E5388",
+ "CCCB4D83FD37BFFD2EB55423FF50C435CA62BE8C3B9F2879119A24A50829A698",
+ "37E0EAFB1BEA0B509A54CD7029F3D1EDDD790AC4B82130C05754D2E260F06E2E",
+ "676708D48CA94A7C655C36588B93B1D8FAD063D716D8A72D46BE475F4843C831",
+ "5AC6D800B85834F75AD70E70404A2E2780901017489ED3A36288E803AF935F19",
+ "90CDC06EAB81FE6B3D4CB80D9061D325C912339561EE17D572A2C342B37238CE",
+ "656875528F48E80BEBC19E9BDE56CDA65F388483C3A73E7CA7C7B073DE643BEB",
+ "D08F10182A813CBD30F504C064654AF74B9E8C443870A7187DA38A27EC957D25",
+ "9F6F727D1218FD5DAD0AB3A0F654C0C06B5CE7720933918C9551A2206CA54180",
+ "50EA0108F66AE8AF9F98474BF9735F49E4A05E2A001B659C637AEADB3AC071DE",
+ "EB68CBBF532F009CD1A9871164FA0F09FE55E4B56DCE68F9765DAC0CD0497C46",
+ "C2832C7E6971F108C8CDDD10E94ABC1DCED238E660B91F8561B1049549C626F1",
+ "0267DB45863575D5992AB90B43E4EF2F82BFB3E5C81CF180C989EB94898877F3",
+ "B065A1463EDA899712880E7400F3287ECD7B80F29E3508DEFC0C119789899D52",
+ "0C6DAA060576DE7F8EA48FAD1EAAA7769A9038775829A0FAB7A4629E735F4D32",
+ "CDDCB81AE1D909C2068C36D6A5FCB9E172B220DC35A7A1AE5650536C96B7A76F",
+ "777F7593F7415FB20CC60DBD8C10720B4AADFED9443E0085CB3801FDA3536EC4",
+ "2033FE1B107965F6E4FE703E1B0988BECC59F91E72DB6EB3195176DAD3BAB734",
+ "E7EEF31EF2F2ACF6040EFE49FB479BF83A955EB84EB5C865CD49912B7D5DA2FC",
+ "2CDE55624F80B3D23CDAC025AC28EE363407516920B2BF7473BFC061702407E8",
+ "228F0C9A929A54C1526C173A76744EB706CFF7A4D07A09AD09D6D31574042DD0",
+ "4EB9B8B731EE1A93129F161361EB321FA24BFB33DF690F56E789DC9C3EA33088",
+ "379E2A75A060674E2384DF17E3032B2A650914338F1C8618885299CADA420BD5",
+ "984205B90B7447907F9F1548AA05C7C8D6625EEEDB0ADE7DC28B387ADAEB97EF",
+ "36A57C71AE6AA07524FB1597EDF32E36FE357CD3AD459EB614DC01BB0ACBB798",
+ "EE8E847B4D1F389E75ADAD0878D09AE4EFE9C88BE371C99161A5B4FDE4175C94",
+ "D6F3CFDBA861573F13FE543B3F022B19496DE0D576C76E256530D4494D7C88F9",
+ "F6B77C54E27D01B02EC77B89B7BEE0315D7EA824E90B04341AC8D23D24ECDED9",
+ "8C21DC4AC9FA672950D90C6F22DFC5970EECA5A9B0AB2A50703F1F0EAFE9BA50",
+ "968D01CF29A26E8DA61ECB20D8848B5D13C1328F95B8516963C21FF3D35E8CBF",
+ "40A0A1802CB0980C44368E563B3CFC66CF39F96240CA07D01A4B63CC80361EB8",
+ "59A42D27969E08E1A324D366382E5227A8DF4639304901958A83B93E168E709B",
+ "9A3B01A5DF227D026D317AE5A74E291A0AAA5B4757CFBCFDF513344E90155C80",
+ "38C3D5BFFF301103AFB1EFAD0873AD5ECBDDAF94DC5130CB4AE36A57C398147D",
+ "C12F54F79B5935EBD8B61E59EA9007AB5509B87A982CB2FDB09F2CDBB9999FC9",
+ "B6431C534FC8BFC5B681092D99AF972815F436CE0EE102DF6846E7EB84A5750A",
+ "BC79FAB0AA3FEBDEDC54EBC205A0511870F6AE6D37C81A2601690BDB98911D64",
+ "D84AD154152AE131810F85821C4F2C3C05F59DE17E67EA98401A585099287101",
+ "C1C95EBE3ECF028BCDD5BCBA1136869F8E518152BE454EEB34F34B6EC4734FE6",
+ "C562A227BF9BBCA8661F2ACC204C9272B9530FB49D1BA84FB9CA9DCF365BDC57",
+ "739A5712A53429DA22ED24B0FBC0BB38C0D73654271EAE00D3830B2A67172682",
+ "020BC20637ABF30F200E0DE76CD12C95E339CCC5F62DF6E0572784410E1DA428",
+ "EB5D34B8014B6475B5EC1D427F9849C3BD626A3F56C3EB3A0838110756F5C6E3",
+ "05944E5F42D3C37B6830041E637C202018A9CDEA58CCA8E586BC79779A82642B",
+ "67BA03F48152C521B147D68FF52843D623F2DFA562DD05F094C46EF05A102717",
+ "E00C38631DA09739B57B412D0EA6D17847A4BC9B5C56692CCDC78E32D71B68D2",
+ "B274233DEB63CEFFB0704E15A869C0EA62A562A6F652ECAC59632EA2A4AE1CE2",
+ "4210AD7820AE57A4CC2FFFF97E2C516DBB7515A61CC95B3715205D11E3347B30",
+ "896CCD3C5262A498C7FB38952CF569766156BED8B5F5FC804C0674088E00CA8C",
+ "C35A5ED23CBFDC39867D90590601F7D5CE0B13A21F297AF7C323FF418670C3ED",
+ "76A9E1F47B24473A19E345241A0BA804DF96EB5B525C86940B90A5D09635F82A",
+ "22B03C67F975B05FFFD6A91FAC4546868477E865C5663C6D3F9DC0C041C5CCAE",
+ "8B24FC0585989679ADE6E4B47B9A4732BDDB3F7A7CEC62B6D113C229A2847460",
+ "1BD84E7D699D78788BE3B7E757222A6C63BD35775B6111F584084A66981690F7",
+ "B3B964473847838A572EFA5FF79E680DA838D8A75C895E335A3E68A7306F88FD",
+ "DFBA96676427230D64F5A9AE513218789050379812F43B1AD7A9B7C1867363C8",
+ "E51A7CD7498ADC89D8A3B523E40A849D202CB939D8DCF1F1ABF767DD7106F80F",
+ "6D08ED45235F9DDF810F3E37C311888F300EC445D2FD4628E4A309ADC941D67F",
+ "3281471C6F2BCBFE32BD962BFC5F40CECE29CBFDA22B789EF88660F1C3F44FAC",
+ "57083CE27A13764B328DC286D0C37AEAE647B7CA5985A09673B032B34214223D",
+ "7549B6B76300326FDB2C66AA89640007EB6032CC6A2FB9D61347952AD3ED0A9D",
+ "0F9889E004EF5EBACCA1CFD9C948E0377C29874546338E5962786BE164AFACA5",
+ "06A8A13669F77AA351A4CC2314291E1B04F0A8A498E05138BE6B5FE2680D0F54",
+ "CB40D50785D40F23A53A411150EC34B702642BA3F2E1853BAFC6EBBF157B423F",
+ "BB18F6D5BCE1955E2E8B783F44312B05FFD359FF00BA2EC1815E2092BF4931E8",
+ "36DE3B8918DE90EB21D0A3B0D67563723E4C60474B68AABFB3628BD5F168774C",
+ "D21A3531754DFC9CD4F4DE13EA2AE551D17A85A009B4E4015D137BF1303C2689",
+ "85668192CC8BF8BCB0603B55E9B0594AB12777BBD65CB6C547A4BCADE881FB5F",
+ "C9219C0D1D6ED38BDF82D5563E05EC9BB1B5571989000BA2B5E39BFBDAD09419",
+ "B8A5CDF30266A54CA194B4C5DC22BFE34E5064C3A025CB6ADF4E5AE66A5A8B17",
+ "9A46FCCE1CD1AA88B98BD3BDBCAFBB13829C5F28CA91CBE69C7EBC0CBC8EE699",
+ "03445465213D2165241691A68F251E5E50F149F9CBEC53AB7F6D57442056D06F",
+ "D08C1C9CAC47DA2DD4B4102A831FA456F9E75696394575A230EB12059E13AC05",
+ "05748FE675563705C7D8B757E62399E3D9715A2535E88BEC0C083E256195A2BD",
+ "AE88F970A8AE15D4FE13885D5AE5024EBB60EDAF7CE0D1032AEFAF852B62C353",
+ "6BAD01A873C648D2FCB5CC4DBC8E72C280901FD80291CC179F4DD896E9EEFDB7",
+ "46C56D194978600F20E85F2A3A80F4C422DAEB567C5CC5361B4387530F86D0D3",
+ "D6100685F30F274B895AFAA871891BC2645F0C33AD1046FBB8BD202FA0578430",
+ "A59C8F609032B1AC55BF146180B97C73033ADEC767E1A66487CC709A296E6F47",
+ "A709D63B76D8FDE87CC9D271EFBCB2B61795B9DA375A707DB621B74D3ECC4B78",
+ "95B65D08EA0836B6168F66637D5C52CC34F27A08A33083AFB20B3C2AA44B258F",
+ "02F8B90F328B7747F29F760A3DC6E411532D251F7DFEED0EC492207716EF511B",
+ "25CDC477C2F16B66F5C196E22B12AEA03F6EEF8FFF5998C700758F35E01DEFE3",
+ "CA69A1D04B4344440EE96A61D7B2EE41F411013746F6134A26251D92BC34D4A5",
+ "B3D242752EEEE1A9F4618180690C042501AE97A3330ECA396FE3F26CD27BC7E6",
+ "9EE57067A64049D1CB6010DA78EABE831EB58C9D65E45F66452DB082F6A16391",
+ "6A9E3C178424A9D5EF30DEB6ACE4C56714AB62D76576D5AFCE4E3B85DB887715",
+ "EF4CEB4AE3F65AA654567C5032B3854D9CE71ABF84EE72D321CE7CADA953B46C",
+ "C7554A76534D1B4E1EF5EB5B316B22561768894355C7488C7A2098BDFC3E2E45",
+ "98D81C3E54B64940350A625B25CE8D7AC5632C785E52473CAF62A521E9B1F5A6",
+ "9494B3ED5AF8A1CA1F8C2F1CDAC0B09E535AAA8E8F2DA4187D48CB6BDFBE46C7",
+ "4E4985450F3BB4B2D5AFEB2C39B3D0DE4335D5FA728AF0424A6B92CF631D2574",
+ "7265632291C813C2E3FE6DF152F88388ADCC411D1147E79CD8F42F43E65B1F62",
+ "8C04C73BBAC4288681193BDE7294F659353B0DFC9EB47988E09FA957F9459B84",
+ "4324A7BFE9DF0308FFDFDA3B09D04BE4B53B53E79FA3E359B547B1E620B48612",
+ "4477D6F5CFDBED07E1ADA5373F28311F7D646E00385EBF4ACC7F97BBE0D38730",
+ "236B03968176800A9B77B278D01433DD59101416DD276823560A0D6F0CEA5C7D",
+ "B02447BAF113A14F175EF0C76CDC53B33ACD30D15A4F04BAB43B0770362BA094",
+ "751C179F99B75C17A98BE2F578F16C765C8E69B5BADAEBEADA801FBA618B16E7",
+ "CB1A0BC08903D9A3B7C80046FF74383C8D114C08635E1AE6F7A31D160885A50B",
+ "FB0CE5D95284262769FBD60301FA55CF4437106CDBA0FD4DBAB88E6B033DECE2",
+ "3713A08DB472C877C617F1259EC9284CE83F2AD3C5E449112DA2AEC5F3A2B67E",
+ "A2DD50C162B2317659F1DEF5A5925346AF796F743AF986298D2806C9AD21E138",
+ "C675E1ECF4C4281038EA71301C857910A4D2D2EFFDF3DEBE8AD13554A693C0F8",
+ "A307B6A12CE3BEFB007875104FCD54E3ECFAC68F6B4C341342D86C55D5ED3E15",
+ "103A7A8ADF2BF865164B2CFA5D80270AEAD3EDA2308CA8D39D0BC180C6AF19E5",
+ "B2113A401D67FB8365996C07F6DACE02F8D40D593EF1D09FDF23CCE07EB0D7FE",
+ "2AF470053C6C330AE096093BDFBD8001171584979B4B62B07C16B9E48DD16BE2",
+ "D0F92838D3714C6207AAF4054576895067F6A16B9924ACD74FA517FD0CE7F385",
+ "C3B8CADEC8AF14B6117889BB8A87998BE5D2CE825C76B83160FEAB166918081F",
+ "D7F7429AAD157ECD554163FAD079DD7B8F215B914BC6AF1C0D703E39CEB78E1E",
+ "AB249F595DBFA22CF82D20442360FCDAC67A548E9E51603F74E778072DBF6F71",
+ "A91C02D31274C26968CCE4CA30D6D4B0EF9BF8E5C0800B4DF35E0B37D6FDD807",
+ "CA3307547646AF7B780B5148D6630EB11E1C8AB22EB488DA8A75C43F0C4EB1AC",
+ "DCA00B1E4BEE10262C8F099D4694EA649E9973EDCB9682E8E5CBA4260B428E7A",
+ "2A5CC995F5BE1347CF37B7B749F3B66AA45A57740A8610901346375CA3286C87",
+ "EB2C357F45879A60DAE7390E83A4623862766014998513C5873CFEAA6A0E601A",
+ "C2B3DD723D570E858D5DC3203224A6A158408DC5517916992508C9F44492C7D6",
+ "7B9F8B7FEAB2E42CDF6711C251E497444D0A895F3EF7C2E734BFE16DCE2C9758",
+ "A958B22493B184DD5738F29F7CDB3FC225FF8C608F009C24DD75A04583083858",
+ "3DB6A8E5411C847BB4C5C373028F05F3939AF74ED6B4FC2AB2520D443AFCAB5C",
+ "B9B2212B523AF44F152A43ED6D5EF79F9CD3D9F0F27AABBF489141AA784D8FDF",
+ "E2681AE71C6FE5A1407007B28F92FFDFE9E2572C14D3715FFE9ABE355D836B2B",
+ "49CC1F20AD2E6124BDEECCFE629AAADAA9F0D4C8844235CB20429D07471CDC84",
+ "8243D185AADD3980292B93FFC607D0C519B2F3390879E95E994A9FFEFE66DCD5",
+ "65852BA418CD8C9D0C848162BBC5487B58C8809BA65C7AD1DECAA91FA370870F",
+ "01AD641E9E9236B951F684D4767FEC64696C7D83E49C841A0304C14C946ABB82",
+ "271137095F2DB04B02676F40CB838746E40D45702288746F1339928F70B355B8",
+ "4E66FE1B09EE0FF59592A105A5CBE8BF3D3B7DE0C090C9E2D6A4576AB2E39831",
+ "D3EA4F52DDCFF62073E5E00D0FE76BEF1DC2AD774F60085871B516CB34AF222F",
+ "71078ED4DDCDE2FA99AF6402BCA28362748C6761C8F173C4BC757C7B3D48C61B",
+ "339DB7F070F71401B6341C843A34B570E49A019D7A8E2993D805D50C6C8B16B4",
+ "2BFD72B7896E44C498AFBFBD6D97487961AB646A060DF7907ECA59BEC1A5778D",
+ "5DFDC71F6BBC51F8848561F6AEDF33E8D095E8419F83F63F973BAA1721A754A4",
+ "9D2D6045B9D527C613AC0864A87122A2A561D7C238AA4255E9F23B90769AF358",
+ "71F6FB5A4E089751DF62AFBB9C73ECF551B255AD4577A73436F1CB1FB8FD7339",
+ "A6F3CB35310990E9E72CEB6F919F1055BC771C1E90BA75B7CEBA7972932A33A9",
+ "29499030879C592806C491BA2552A6AD21235101C5639F4E2BF3BE1273F70A06",
+ "6749DE6B01B7B606E938F55648385ABDDEA9F4C7EC08A0348C73795689C812C5",
+ "8AFC865B2A8DB0D031E69C23E66BFBB7200EB207E5A922E44191262D9A7043BB",
+ "DF22C4BE28F012CA7DF1C473C00D76070D49FD2140B35CE5621114B5A62AD7DE",
+ "EBB007D72BCD07C1F7B97D31EF381FB0E38C15A85A2561194F6FA933C6698CCE",
+ "07859D29E7E9F28FDE58078E3B3654422317AF59617E4E6CCAF3DE902B98DA08",
+ "8D19266AA88457169BE37F770F20C2C98147F17CB8F84DEEBFC9010D7EA5F8BD",
+ "43FD16ABEF0EF2EC6D872CD9AA9DC7A0121536A6158FD6F131C7F61975956C27",
+ "B42FFE4BA0AC507A558B0C6A9BBAACEED7343322FF6E198F3D839B535C22BA42",
+ "9513CE5F9D1D0D45B428FDC72A10D1B35AA9B7687929DBD72E137E84ABA45D25",
+ "88EE8F1B34B77A3FEEEB77539C813D401CD5E9E1FAF3AF061CEC302A0F59371E",
+ "C40154C36247509AEBBDE391BE0A26666D1538223033DFA6E6E7BD9C73BF677E",
+ "4B693A82F02FC39A23B957F6E543E838E1046074053414D0589A0455FD02AEE9",
+ "5E9F3F92D89957A212BCE644EB20DDDE639595308F159AAD3C5E7E260A38B2CF",
+ "B5B113F441769FCBAF88F3BA451E8A2C9C8D35BAFD851A7A4EDBA0587506D657",
+ "55BF09502908F9A49F71CEE69512EA49C1509CE9D3E0B9D5936C10DB21DFCC85",
+ "D70B9F84DAB0590F85DDB7ADE716C4B01B50F79BCA32EC7F4CD8871007777B8A",
+ "4E9F0016C725E9DFF8B6518D8D362BE2CA33E5DE9208F3A7102B0B03FBFFA836",
+ "D6D22BCD4D5EDE958A513E1EC8AA07DE220875A9D387E1DD6084C7CC0CF687A0",
+ "BCFED60917033820C1C32B987DC81BDEE6593B0C7C7CA61E9B7EA3190B8ECA8C",
+ "576C3972A32FBDB5159DCD2709EC37E26D7E3EA4CE80B958A8C4DA9C31A49D5A",
+ "261FBD5600BC760D8926D35D2EB7F6DF2B03B96BFB959331E3263D3939DF8E90",
+ "265E78CB344C2A26C772BF181BE88D4EF52C768B7B7242A63F6143A90D9A58A9",
+ "A631B71B0E3B2F1D769DA37712747A6EB962CEAE0BEDE3E1E8AF54BF0A125F71",
+ "950C95C6BF00E9A1338933ADA6B6C0A36123E0B19C98BBB6A256BCBFAB649198",
+ "F16AD9A97F9AC8DEB71BC414FE7787630EE20CF5CDFA8B153125551BE4E2AF7E",
+ "2034287198BF5BFA020F711ACD733240177ED50369C489CD12A7646BC23C7ABA",
+ "23C6BD876E5C8E58C9EC1A966AECFFC48303F3D5A992DB07D771CAAB68845396",
+ "BB4C2D62BFCF8E83ABC4EABC844CBACB83DEF961F50B3E0E6A3B62D221075B04",
+ "18E9ADB715E41B89CE64B968A05608D74918A613D3BFCFBF2DC8545F2F674F50",
+ "79746450C4B6563A73B3B54FAC871C8E9B5C2F18264C24244C80A831D7730C7A",
+ "900BDBCA48F86DABCACBACFCFE013A5A17E41AABB88A9175F933D0B67740AF81",
+ "8CE62B3D94341A4A574567BB0EE15518D2527EF12C87DAC85525C1957C82BEB0",
+ "3F6A11D271759E7D7A37844805F1536A06ED298ED5183B9CEA79A985A4BDD151",
+ "BC7A1C7451D1A1CC6FAE40705944BEE06778917F5518BFD7F9193838FE6D2A7F",
+ "D3A4A85BBE51C6344303866B6F136419DEA368CEC9E3A417E7D746A616A1545C",
+ "17E5D079D5A3A44EA47F09BD384822F7FAD9DA7B374FFD7F8C2835EEBC78DD73",
+ "FCC1BD92E8A08DE9508B60B26BA5E4E8B78918F8CAB2CE6F8BD2F278A9829038",
+ "DDD01F54BF34454556C65E72B0F3BD3914F1DBD18B75F7B8AB7094982A7112BE",
+ "3270DCCD71767EBCB3EF4F890E649934628DD7CF94B136F6519A018F25132437",
+ "F358F45D41FDC9CEBDBC908C6A676EB509166654674F785B20B6E5B78FAE2887",
+ "065213B3722367DACE7B4E5634197C4DBCB7559A44599269FE33C515444A8B23",
+ "A568253F684148084CCA02D97DACDDD76BE161557335CBCEB7F169B947DBAF91",
+ "F4FFBF67C9366607DC44EA5A009E33083F2FA00CC2DBE6DC22A8D9AC53220407",
+ "054353C28520C1DBAFB1EC685F6B8DC947D2980E66F32B39FE4304DFCDDD7160",
+ "91058B0A5DA0CD976EFFFFEF5FB319763ACE0D8C35018A5D6F96F9D35CB937C0",
+ "CA376D5BA86F62CEFF2D70EE7C8B267C8EAE3AE4B5967D3E9621E4877BB51A46",
+ "44C824586C2A259AEFA84989E818279D2D0E0AC23DABA22917C435AA185EEA4C",
+ "1E947C6B521F50298AFE02A430C23639F4449C6E41B6A8FC76124A079407DF62",
+ "EA10F42122BAB59346FDA72D33AAD31221A692753E4E7657F35BA720517DAC44",
+ "02C348C371F08B4754CE237D36176D7EB6D4D556BFB1F9C9F8A66054CBC02E3A",
+ "A7A92AD773142AD76CD0AA011A995EE454C578A9E9BB264BAB094E1C8E48D1A1",
+ "E623990F534E80C09D10602DDD9AA4D9F44027357D5BA825ED3BBE12CA7E2F28",
+ "340DA18D04CCE3C6A847026EA23B46F1F7B7E3D22AD6C120E1521CC29EEA4099",
+ "FF437EB15CD35F83A6CEBD6A294598B4A7D722FAA3D39FA555C50BE2E278F70C",
+ "1874EFB0507E8115B76162E81E86FF60088B022B7BC956F89DF766F2C63B5847",
+ "4DC295DDCC98CC388E0D37672E158EA926B3C761074ED40A2E38071EF978D761",
+ "EB724B94BCA71524341B1FF4FEDA4F17437506B13971426C03203BA8EE82A691",
+ "11F328509170AACBC96B1D2A0B1502E7CE6D0F95FD29251351DA875F8FBED6E9",
+ "C663ABFAB57FF0F91648E8067BE92F40EEFA8C2AE667653EABA645F0AF86450C",
+ "4C36B85CE4DFBF94ACD273F7A1EE5FCDB615AB50007018E9BAB2A961CBDE51B3",
+ "AD043A85E66C424AB842FFEB7968031AC54CABEE0A08C38B4F0A772A3DBACAB7",
+ "94373F0696D9BA1CCA4312B827F28D50DF0EFBB82507DD8CB846F388D9D69DB0",
+ "5C19E622B2FB4BE2AD7C54B08DEA4D4CB5F62989C792AB3D7AC8B363B805A247",
+ "C27127CD54D70B894570F7DA2520E6A02435023F26FB5D13F0B8D1A1BB69212E",
+ "210917867309B1D48495D1A663ABF0262DD0FE1C8105FCDBA4DDA22BB1C287B6",
+ "93F84A8EDF318A5EFD561D1DF0734BA2C5020CBA32BCE27B5554E54D7B7A8C61",
+ "3EBD1E41A94B04ECBA8C2AABE8DF9B488BBE70C62A2045D0D46B261211089ECC",
+ "559AAF2957692D8E5CA2FDF25F13E65AB33187C6CCFDB55C58F5BF1EF6A042CD",
+ "B055E313CF08A6999A3F88BE516D9F4A9B4A2D99F1CE911936779D8F03E885FE",
+ "C122CAEB9A97D78D4F1F5D9EDD57AF4F41DE07DB4B3ACBA5E6735A2B8EBB85CE",
+ "2578314F35B3B43B0A65410B351E492467B86FFE5A60841629117DC763AC6250",
+ "67620F8E3FCD17D952A39E672B2E1D9F56731D1E1CAFD23640D9C1021B860564",
+ "AE989ED5E8352001A5B197AC2443DE09BF95B6070F9A3AE17B12B6E1B75E01E9",
+ "F8175C702F45DFB9D175604C443BBEB7C2B7EE99F3FFCDAB2A4E3AA51FCDF8D2",
+ "FA67490C6641CFDD550E88A603FDB826E832C106AA61479FD85B0A035824BDC7",
+ "94F2477790477E3677DA097EAC6C8C45DE026B414400D1EC6A3E4ED461DF192A",
+ "3A89DE6E767A1A9A878DD4314F3E38D6E7C87677C1D2FE98D442CA289F46C9A7",
+ "16B12E37EC75EF9831F035D8509A408730CACF274B6FE231652507CBDE35D834",
+ "0BDE2F69A15F2ED25B66AD68469542DEC72E5A14F86CAD9CC8587838F280EDB4",
+ "F32AC53FEB258C257ABFB0C81A6EAC90E948960E21AA8AF075FF9BC1D13C50AB",
+ "3BD7D1759F6AEEA4E7F7DE5E5BB0434756B1F5E0496B05945B0F9155AC425D0E",
+ "0431FBCFFD0C0506FA6E286B9723B13CDBBE6FCC18FEF2E5DE04133FF174D542",
+ "96E7066799B093ED977ED9EA37E2212E83E7C49CBCFDDFEE65E3D4FE075BF852",
+ "0580843F4888FD11B41277E2DFA316A9F4982E505D366A5189DDCCB37239C92B",
+ "C5252E460FD9F2CBFC6F4583FDDACCEB96C32693AFC996457B031B34349CB55E",
+ "4F71573576C09670E254D3504316DBAAF665D21202AE48916D56AB9C4096AD13",
+ "D6DCE51FA775ECEFD1D22550904CC47A74478389720E2D210AA902D7CBF9AC73",
+ "755686836CB2E7323BF4E2C5DF03A46DB006DDFA195D3267DD36A22E06B2AD27",
+ "63E424B9F7F6A4B3DC36F7251D337B8886705554B821A877FB32E2E5C716532C",
+ "1A985A0F99C0AAD06B5DC2A0532D4E7CF55151ED43F3FAE3F376B398C09D6679",
+ "1A30188BA9286749206FF8C8C41EA2DC056F153BC85D12295BBBE0296AD10A88",
+ "EBE4FC352F064CC5E60CB4AFE4200D05C5E4945D283ADC3FC16FB7AA36013BBD",
+ "0FFCE0AFFF167B402EB614EDC0A308ED5EDF5CA03EB979C37B23FC01592CF70C",
+ "257AC64E0466EFC998408D428B5D93FB57BC00CAB2ABED6F0555D9CBEFC6C846",
+ "7BFB98F1E42E0EF8A54F77C702104B542C717B618DA79646E86A009B7295214E",
+ "40F8680B5CD41E6319B745B944D1AF55266DABD86BFD3D847DC3A7D5A3033151",
+ "6C5028C092F75EB61B98E5734A547B071D635908F0BEEC2FB47A46029BD02786",
+ "E7EBE4BC203EC0923EC7C038CAD1B027C02A039BE44A2DC3C7C5E262732353ED",
+ "6D83286B2276F2E65CD8AA44A90EE406C2C0C41475468B8FEA435A291ED72357",
+ "4E37EBC592E76DA9E8697F4FCD0E773742AFBB5C14E23761FA091734E09B31FD",
+ "456927E8D5C39470AA2E14FD0E2A1E13304373EC68BAC5DEB37A55B3274BEBE4",
+ "57996DA6A306DF4A70145D46191FBDC5D6BB7190C62772705078F936753C47D0",
+ "0CCD06DEC277F5338AD7C56A39504374C4D39FF5E95108B8D017103A767733F4",
+ "D65DD1432A4096B9442FCB09B103C4BB7E7B2BBCDDFD587A7DC22C78E1E84BBF",
+ "9560609360FEF653D0729A876AEC64F36881A9483FCFD8205DB0B6950778FFA5",
+ "BBB874133508F6882AA1069E61D1A39194C80738DDB20973514B48C7B50C6AB6",
+ "AC618239C303852B7AEE4A5113B2BB1AA6A0D41BCEF802E0D8EFF42FC8861801",
+ "530382B77B0A26F06500878F626AD1DCA73A5DC27345EF6B7AE1E85B5CFDED86",
+ "6B787E269E4E95718ECC2EC4B7C261164E9CDEE9B5686A0D935F317C8F334075",
+ "C345A32E28C0805A2BA682FA41887AE4E23057092698B9405B5CF484ED5BA026",
+ "68B0A2F09628398DB6A4534C483318F71D7516EB642981E943511F96DC908E97",
+ "4843026866ADBF2A9EFFF6538773A1A59F1F6DFDB1DA693DF5B0C23F408B3A68",
+ "2F090D19A815D95D2EE4EBA4E8F6AE75DDD32929887EB43318523C10BC35F866",
+ "BF14C1B3E5C075DB7771B289BE06A53B7565B29F568225F3B69E8E2672B3617A",
+ "BC92F8BBB01548B42B8D0D47A2915D3274640624653201A844A211AEBA3BC6F3",
+ "988B14EA6D3F89E2A53C2B553F020BC4C2AB5265B456AF637228841286CBCF9A",
+ "93F322493206F875A8DEF842D01B9E07552FF4433DE08CD2C46E32EA02BBBF3C",
+ "0B4CFA5EFBD19DDB3BF988147411147A106D5B666B1864E180C4DDEF18F0E66C",
+ "DD5DB39249F6E10AFFF3B2B192C9193618CAAE8A50D0C72ED1077C33E67A5925",
+ "FD02E8210E04B6FEEBC6CB4FDEF5BCC5D6ABF88863D1E42DC59453F487E02AC5",
+ "D1722D7D870EBB783B908002A9E9CFC47AC754EAB85D61EC085C54FEA4400B53",
+ "1B4C36F97E27E78580668DBC4125DC1C441E6B3D7FD289D0565B6D5DE088E48D",
+ "80A76EBB439F3F03FB590FC132106ABCDDADC3940FD001CCE367BCAEEBD49CBC",
+ "57E6938F3A4D9821B5C7322403BACC60A78CAE26FA098BC1F52012F92CCA2E85",
+ "D5CF1FD3CB2CECD7C645F3E24079E15C45AF216A04814F80B25BAC12D0254326",
+ "33C436D3331E4D8FBA8D1FC95608890E53BC69655402BAAD8E88507D2CE982BA",
+ "2C24CE8A7A01B97EC86E52ADFFD35DE000B1F9977B3B123D49677F340AB462DE",
+ "D0BCD7C8D5CD4BA4E112F3139971E0677F2C2D88D5F8622B52871D320B9E3451",
+ "8C3E7C060B8461F1211762B56844C0D348ABACE0FDC8716315D9AB730DF074F4",
+ "2447C41537159FB79061E74902C4E61BFEF401440CFF106CD2971BC74DDA112D",
+ "2A8E6A59722B47549893EF243A8211EDF7237DF8D45F56113E46B0AC603ADC96",
+ "4CAC9B484F577111D4FAF3C31A274613AD058328CABC7F321687E225E36537C7",
+ "2ECF4C43391D2B8F17BFA585D410DCD6D4E84C585BE2D2C2B3551A58BB0B10A8",
+ "1B8972AF9FBAD462224F6FED35B0F57806319951FFEE953FE2184CCF54731CD6",
+ "606144EC572A76F62CE419179936AE6B24E0C3B9244FF1BC0F534EC0EB2D5275",
+ "D87E9347DF1E8432519C83D254170F7B21F7B9E0BE588EB574D1BBB9F4CD0473",
+ "E7AFEE4A550D69F520F0D1E9CC5866B43EC9E27B1C9F9D4A37B54122DF8C2CE2",
+ "2862A38932EA8E732AC1642585D2563601A4293EAB25AB35303A2CA6F850CC81",
+ "5FA24A5B80DA3548455AB886B258F12FC52830BEDC453C3E8391B69F6E00DF82",
+ "7559B157FC734FB54BC8AC451CA23633CC4976B3357793C35B8C14C8A1490FBD",
+ "AD0D6D7D2BCCF71085E9274BCE1622879F82F574EDC1BD5A88CAABBB5E15FD44",
+ "E3EB69B79EAE8648AAB84B9AE531D5C696AEF9BB35A026D0B9512516718B3109",
+ "0C850BC4C041F1D01465164747DD814BC45272DE42799DCF2F835E6D0EB976A5",
+ "B9B31E07D63461BD3C675FBE5F7465BEC51173C943CB98D698B21795CC5FB41A",
+ "47854CBBA11640491F44C1A696A0AD80FD35E36572A6FF65AAEC73BF545AF00C",
+ "FAC06E1A78BEB28D003FDBF9207C5B592DCF2919193A791FEDE7E751390047DD",
+ "54238EDC19052708381F696C087C1FA7D2E06448F3FF878E86D99CFA0467D96D",
+ "F999BB090D82BE3F395C0970EC9A23DACA7A2FE18EE9850B408AD5C5314A38FA",
+ "D60192B4F07B511A043B4220F2E3B9A1F74B497DE545438F8437B48314036029",
+ "E2C6661D8653511C21B3E962382A34173700B99854F2310CCFB2646DE3C7DD4F",
+ "B322B888D79C5CFDBCDB68B89DE05A3260EC18BBA7FECADF417C874409E5846A",
+ "DE168023A8165AA8A948F3857AA715041A6FBEBDBF40A439CF55E70093154F5A",
+ "F3BA90D8A2563B61761F60E8B5654C84D20FA04EB95BA34AAFBF0AE9EEB0E50E",
+ "E7694C03098EC568584EBD7798B9DB8EE7E5D3F9A2A6E8B1742EBC126E0C9E8C",
+ "55FCC4C017C60EBB908D5F0F9B92A837C20FBB20AF9030576F9EDB97A57549AB",
+ "6623FAEC8BF75A85069AE33C92EE2C9119A4CF364E8F2DAC4468B203E6607117",
+ "6A23DD98DCB5237672CA50C8A9ED0898450405041B1383421C909C92D548673A",
+ "3A94E9DAB2AB08575975FD2297D1ECA68286DA2B09E95D03F06D17D14012ACE1",
+ "852C9664B0AA99F64BC55018A7237704D17EC9455842D3659896152045133C67",
+ "F9A12F46E3B05D69C206D5571808EA0444D95D8427B282859292DB31AF512BDB",
+ "F1A15DC6A05D02A7F2A0D51E04E4BC9CABFF499D4DC2BC397F807726D9FFD40D",
+ "9E36E3193AA8E65827A626D43D5CA27F8DAF41DAA6A9E4CD9495D43A120E1EB9",
+ "B78168B190157187335B7EE425632A03FFF33FE55A1F4F5D96353AC4A6E63708",
+ "1F690E649E8BF1FE69547292495C8D6352083BAB6F8DDBBB50B48E31AB2BEB12",
+ "F11215716823CEEC1406816C3705CE4EE32930DDDDD5127B591046E27FA7FFCE",
+ "DE0DD5F16CF8ECF50127B0BE0CA98A0AF8F28E99E8A6974B13A9D69240D682C1",
+ "0E6965A71550320DD26FB5E898F4C06B44412FDE481912C14973C9B1FB868E4B",
+ "D8DD81E9215DE5B2C84EBE93844CBDA786E821E8FBE69C25C64282FC2528D45E",
+ "9B724EF11E6D194713D39D1900BCB0E9BBB5510D2441081E3881A8CDCC30182B",
+ "865494ED6040CC8187BF3B20E4148F61702EB447B1535798904343C5611BA28F",
+ "898ACA1949B28ABF5458744683EF3EB1AA18C4B764CA98B73D0AEF7122F341B8",
+ "F9E9A304A3D819A4C49F049216C6AB965CBD407D3A534AECB8B7705A43BD7E41",
+ "8488E4C1C19A142F386BF5322918780CDF39A2711D6C9FF6BD899D287470A2B8",
+ "7AA7C2437B4B7F8D186B54145EC21F873D4B1BEF7FF14F498B178132B3BFB743",
+ "35FED1B975C8219F2FE0065B3696F2E3A168E219B448918F312A46444EE6FD46",
+ "2DC08DB22EC1BED4ED5EA93FBF8A681955E51D1B8039B9391194E67C70036CD0",
+ "68071AD868BB5B45F10912CD6D25949FDC7C51CBD656CEB590F2C54E67226DD0",
+ "F19B7B14453B787C8799DE89D0F941E47CB7BF7F100FEA8B5D187C3E44452971",
+ "E1F33C60132A726E171263EFADD47FE84A894913F71AF59BE6B73B6078D5CEAF",
+ "C0F3D72DCB10CC0C2BF54845DCAC4EFD9767E2B431287FAD4C05F60918600084",
+ "312713E10B2B321226B955BC3AE74B43AEF3EA37F43DB39525DB9C1739EDF7D2",
+ "5D3EEB71153E95FACCEC05C247E33664C7AA8B104FAD1B4BA2F6D3236FB07E4F",
+ "EBC6F636203C5E9ECDAEC157201310B1BF51D2976217EE528613630A2C1C56E4",
+ "F827B8CF47E5CD91AAE8A1CC47843D08A5AFC1644998062F6C3AAA1B9092D97E",
+ "701D52B53C5F77F2B9AF0A76C93A593727CD6A2851FB9D1065964C6EF0B5009D",
+ "D08B11815EBCA4516F1888F063FB0912037EB8D9FC4886A6445BE0873662FF74",
+ "C59E137841DBE0A2173C828CA9DF76E6F6C5B630F10924F0AF7E4AFD9853C760",
+ "43E1A0C55C4DDA0163CD06B051F83455F30EF5DA9BCF0BA71C4F4A4D71B8CA48",
+ "5792A228B687D34BC2C80C102B8083CC805FB03CE6319E8C627023B5A0DB6A63",
+ "84BBCC6AC5B7BA398287E512411B67E72E9C6CE6EBCC47A28A54395E4860727A",
+ "D0C79C95777613A2DAF1928E4B95A8F9E9FAAD9DF1321033BE432783CBC2078F",
+ "89997213AB237D36676C1B37617ABF888A598CAC6BEC05422BB463EDFA5E1198",
+ "0B0EBAB802CD03156DF98271059E7BDB02D3A3EF6F75EEEA351BFB253366B708",
+ "2F7AE932EC46112E01943A7809DCE78A92DDD559678B1D5701FA861C49219594",
+ "FF4B7C63AF3D658B1ADF4D659059ACA3AC0DFF1E0DA318209E725EF806DFF5E2",
+ "D47FC76CAFA6BD1A97645F0CA52EE5284106B6D1C8B2246198C0A7932BAFD403",
+ "A188D2D39D3B0054BC086F6D7BE59B8042D3B872243C8B477D2A910C8932AC87",
+ "5664BF1F148966BDC4E2AC635A1A5E59DB8BF2B8E2ECC85D7B1F7880BF3B078D",
+ "31F38EDE7A722B8C480B6A545A39562923B41E62D5650149D60B0C20B6BCC2E9",
+ "A9F406450C1A3C90E95F9CAC58638D40E6A4377D3D47C5070C91A0D64F100D81",
+ "BC33B1AA5A6EB9EECF9B0144FAB645447E819FBB5F4939083A9E645CACA8713D",
+ "78F45063D65F72BA855D19C447E4072098ED86F488BDF4DEC0A8DC30E5AD5B21",
+ "A7F9883E14FB6BF17E2FE5029330BD9DFE3A3D56C9D2FE34D4C78FCC8B958CE6",
+ "33C991FDBA0E06A2B6C4E69CAB13620E7F5504CCDC233360D5894CB8AEF84013",
+ "DE33ACED887ACFA18717F8845591C34D3744F7162B667C321E16A6281DA03C0D",
+ "E36B0BEC4F7B9636924617FABA609608DBE48AC0BC832DC1CB969E3E361DAA5B",
+ "A62A80624BED309BD04F04F46C5738A741ADE15A69751F425B1AAED1CD5F5235",
+ "A1DC3353F1C9D5DFA400682D1B04C958D2383BF2C80CB45F0995AD23A1923B4A",
+ "617C13A04FE97E881F960DF582C39C0F4EB2C02602A7FF2EBB047372B6988E5E",
+ "BA8F41B9E1F1608BD2C71A84EE0B25D25962BE1BF87DC82398B0B18ED800062E",
+ "6B45D0D4C4CCEC520FD94DCEB2F399C3AD660A0725BF85AA56DAC7AADE17FAD7",
+ "A934AC7289CAFCF64A43ACCF8A0A47CCF444FB1E830B24612D6F508592B9F07E",
+ "283B704ED442075870458649A2D61482D8AFC9B5F43618A2F4F9DFB13B127DFA",
+ "1585EDF934C4F4BF51A125091762BD34450C347B3B9CB88B3CE0EA90EE6CE998",
+ "165217D2DB6D6976935FFB4A35D0EE99B8B962442BD351A320D71C58D0C1A047",
+ "D80C3163852E5FE3A16CE0D7E6A1EC067089B2D0D03EB3D9F4813EDA1B1B9FEF",
+ "CC8011EEB70940D682EC62B723FF26A04DE6A516E7775B71C9A3C563C3BF4EE6",
+ "71D0EEAACDF187668BC86E55911DC7BE8425E7CB9A895D5B9FB90C7C14821866",
+ "7456817E567486104F3CB1E421461113602E38E953F8B7ACA8354E85495595C0",
+ "F30ACD4F924CFE0DA12F045F3810DBEEC977D49EA63B7FE2F93167B4A6E4CEA1",
+ "00423BD27005F76D0AA5DCC47869E59C16353CD84D9D8D02A655F1B488396D11",
+ "D115B271D5B97E7E016565A36DDA1DD0282E6EEC10121EDF5448CA1DD9F2933C",
+ "FF7E356597C2CBE16449B629753B149AF53D88D997684EE98CF80821E8DB271E",
+ "01DC15E7AD4550BC78C86D3325A3E0CED5F5A9458CEE87BC16C916521EAA41ED",
+ "91D777B050539F5348A9847BA7791691945732D716E8FFFD8621DBC710D4C39C",
+ "FB5E18C07B19F48EC6814A197877ADA88E633A727AA35A7930B5A6DF71556D05",
+ "7D823A07DD309BCA55493B8807D8F4C76311BECEF5D77B623858CC32FD04E12B",
+ "FA5D004554D43A19EDE6BDAD4E006D67202EC2B583F23152376A73B4D52583D6",
+ "AC9367577F3ACA9B924A306488D119D1808CA4656EA10D4D42B17E0BC15A057F",
+ "89E582929DE1F7367A237BC7EA95FE8C8CD2AC8A06435A311494BC370A43E225",
+ "D620AC1F48A931D33A5785C9795E65BBB98CA66019572F315CA8336CC38CD979",
+ "D180D89CE8A4CC5DDA7A3C3F5C6F6CE063BE9939E2B732735520DE754AF80C08",
+ "7DC94FD6253300B89E22D09FD10F11143B598030428DAE88C9343645030D8AFF",
+ "A5DE6751236D6646589F076715F457A1D15B2F0EE1E521761A6D23971065170E",
+ "7A2E5140C76C23C762ED78423CE29379D98C5222C90ABFFF328CEC87C4324F52",
+ "C4687772E68435A64A0292FC2E7CE785F838831FFDAEA085CEC705C560E23F25",
+ "B6FB9DB6EBED371A9F1CB457AEA3F9C60BF102EB619C609C41F3CBF2B081D968",
+ "20DF6D8F12C043BD40932BF9DE476B2EE1748FFED74FBB6BB8326CEF4CD52584",
+ "02E145163AC998C77726B8ED31755FA19846A09C26143574AC668E9942184ECC",
+ "8322C4249694117089E2AC0D072425361A4BDA9BC11BB5EACCAE2638B0FDAB6B",
+ "4AEA9507C37BF3CE4C8697C621597601FFB94540B67292DBE25F79CDCB5972EB",
+ "5E8B03D77E90D5C9DD7761DE25F45B4EA9DEECB28BA0251A1A719ED84CE5B718",
+ "14354FF1E3E054262B71E6EE6C2B60D967D1A9830265C646CB0B337511BE220B",
+ "B17317446601588BB0524D53A2CCF43A94FF8F4C9806ECBB7823787F46715A6D",
+ "9E112F27AD921A757C26051DEEDB6CC4F1D5963D180E963FFA6F36836C0FD66B",
+ "1FA60EC5D70DCB3ED642F429191C3B1658ED2D7073EC47B21B308667EC93231D",
+ "5FCEBF63479289BD8E08CD21C4C66012172C7054E86FC2EB5265828CDADA449E",
+ "72087BB4DCB2C405235592E5DD7C887090857D2327110E3771DB4543A8A486FC",
+ "9BCEC1F50F78335D4B1A04D32621E9495721ACB4A5195EC6EF10753B14265C09",
+ "0A5D64567A643130897FACF00E0FA475899BFE626BEF8E774979890CBB171FE9",
+ "7816599534D5C2C7B96A1B41F1A59A0DFE1518C54623976F413E08382835605F",
+ "A4DF9518B225165C66BB61CC7E46C42256534F015F26FE787497E7260BBDB17A",
+ "8D083731E65B464A5A0B3F16995ED0528F4A7616DF2C44B0E6B7E90A92F9A14C",
+ "A69BC849DB7B521ADDB970FCDF8984CE098E2C652AC96CB59C71578E85EC2B0A",
+ "DD87F320BF2A83E77C038F74279396F17005B601B9CF4286CC69D0B00819B924",
+ "9434A6ACA5F3F6945E3D0A9D3E62AECFD4397B3F057A3972517B8636C626A38F",
+ "386BA8A0DD685E2860B66A0B3DFE5BDD87B0B9E898ECF1F24290B1E2BD874117",
+ "33F44E6047190D02666F5D7D75BDE78795F686450E79F165E3CB5566CA9D1769",
+ "3B27FF1A1ABDBA23E738BF958A856E2E165B012E69B0BD3E22A71923652E5084",
+ "F578CE7FAC7B8BC46F41002A12510587C0DE7D7E53632A832587D44112FF1FA6",
+ "6331D5085F1BE7F54E51932EADE6F765F4D7FF16F1CF67E6993B90132713AAD3",
+ "9C379BFEC0F3CE1127EE761EDD918F4FC6D6CC183E5F70AFB3C3F3C02D53D421",
+ "3B41C82CD692D68948A1CFC1657F06271A488F4880ADD0B4EE4BFEBBA0D4050E",
+ "5B4FACE27EC3765D7B9BBA2082D7781230A458AB4FC52C59D2B8DE84692A29A4",
+ "98DD7F438FEBAEA30F0A80A0B0CF547DA77AF39F28AE909ED2139F1221133DB8",
+ "8BE9C6B16DE70460AEEFFC6D35229777C7067B792E6FEEF48750B4A9DCA2D61A",
+ "92A25061E3B3EDA05BC3BD42BE7C13BF212B0E3AA1874D89A85BC500518B766A",
+ "9A8EDCE718985195772449D6970CF847F4A8DC01775D12B9F9C8B40C47363FDC",
+ "0D8F68BA45E6919BA5421D36A8CCD1769E78308693D27BFC7F723DFD6D268EE5",
+ "FE334C0C929CBE1355C5C297095E77D8996E704AAD3BAB62588652B4A8768FE1",
+ "050447FC10D71F5A3DB24F824BDBA467AFDFF81732CF78328C6AA22E214F1484",
+ "B2DC246963894CD35E912D5FB5E51E74969B86AFFA9D043C1830B4EE0A4C072D",
+ "A401DF440DA4890548AA981C19765EA4667D65AA8A707B170E8A1BE3A7131366",
+ "FBEE56D123852FD358A0BC43FB5C50E22C2B6F59FC68FB72A2C649247FAF0F64",
+ "FB742031B2A4FFB2E693628ACF301F154A178E9E22BC836BECF61510FD366A75",
+ "4CDEAAD91C645A418775F4036DFD66F904FBBC935B531D42477D0C976F7C6838",
+ "05896BC83C69EC553276820393EE06FC1A944C924F8C931A4CBBFCB25DCF0707",
+ "B3DF6CFE1129F3E4CDEDB00D97AEF08AEB689AC30F97B418148E036AC1F626BB",
+ "4A71F01BE5BF68FB270CAF57320D1A0B7C14EEF27026774F2586868ECB6EACC7",
+ "25F63C66007EC7A7FDBED5C979B8994AA7BA32381C50FBE058282569AC648399",
+ "6F2069AAAB017B712EE248BD17621812BAF6AE41B39B490918841C7E0386CE88",
+ "2528C98BF5E5C331048E0000000000000000000000000000000000000000000000000000000000000000",
+ "0000000000000000000000000000000000000000000000000000000000000000",
+ "0000000000000000000000000000000000000000000000000000000000000000",
+ "0000000000000000000000000000000000000000000000000000000000000000",
+ "0000000000000000000000000000000000000000000000000000000000000000",
+ "0000000000000000000000000000000000000000000000000000000000000000",
+ "0000000000000000000000000000000000000000000000000000000000000000",
+ "0000000000000000000000000000000000000000000000000000000000000000",
+ "cleartomark",
+ NULL
};
-#endif /* _ISOKEYS_H_ */
+#endif /* _ISOKEYS_H_ */
diff --git a/psgeom.c b/psgeom.c
index 38c432e..563cf15 100644
--- a/psgeom.c
+++ b/psgeom.c
@@ -7,19 +7,19 @@
fee is hereby granted, provided that the above copyright
notice appear in all copies and that both that copyright
notice and this permission notice appear in supporting
- documentation, and that the name of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
+ documentation, and that the name of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
+ Silicon Graphics makes no representation about the suitability
of this software for any purpose. It is provided "as is"
without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
- DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
@@ -60,20 +60,20 @@
#define FONT_MOUSECAPS 4
typedef struct {
- Display * dpy;
- XkbDescPtr xkb;
- XkbGeometryPtr geom;
- int totalKB;
- int kbPerPage;
- int black;
- int white;
- int color;
- int font;
- int fontSize;
- int nPages;
- int x1,y1;
- int x2,y2;
- XKBPrintArgs * args;
+ Display * dpy;
+ XkbDescPtr xkb;
+ XkbGeometryPtr geom;
+ int totalKB;
+ int kbPerPage;
+ int black;
+ int white;
+ int color;
+ int font;
+ int fontSize;
+ int nPages;
+ int x1, y1;
+ int x2, y2;
+ XKBPrintArgs * args;
} PSState;
#define G1L1 0
@@ -106,11 +106,11 @@ typedef struct {
#define SZ_XLARGE 5
typedef struct {
- unsigned present;
- Bool alpha[2];
- char label[NLABELS][LABEL_LEN];
- int font[NLABELS];
- int size[NLABELS];
+ unsigned present;
+ Bool alpha[2];
+ char label[NLABELS][LABEL_LEN];
+ int font[NLABELS];
+ int size[NLABELS];
} KeyTop;
#define DFLT_LABEL_FONT "Helvetica-Narrow-Bold"
@@ -124,56 +124,57 @@ typedef struct _PSFontDef {
} PSFontDef;
static PSFontDef internalFonts[] = {
- { "IsoKeyCaps", IsoKeyCaps }
+ { "IsoKeyCaps", IsoKeyCaps }
};
-static int nInternalFonts = (sizeof(internalFonts)/sizeof(PSFontDef));
+static int nInternalFonts = (sizeof(internalFonts) / sizeof(PSFontDef));
static void
ListInternalFonts(FILE *out, int first, int indent)
{
-register int i,n,nThisLine;
+ register int i, n, nThisLine;
- for (n=0;n<first;n++) {
- putc(' ',out);
+ for (n = 0; n < first; n++) {
+ putc(' ', out);
}
- for (nThisLine=i=0;i<nInternalFonts;i++) {
- if (nThisLine==4) {
- fprintf(out,",\n");
- for (n=0;n<indent;n++) {
- putc(' ',out);
- }
- nThisLine= 0;
- }
- if (nThisLine==0)
- fprintf(out,"%s",internalFonts[i].name);
- else fprintf(out,", %s",internalFonts[i].name);
- nThisLine++;
+ for (nThisLine = i = 0; i < nInternalFonts; i++) {
+ if (nThisLine == 4) {
+ fprintf(out, ",\n");
+ for (n = 0; n < indent; n++) {
+ putc(' ', out);
+ }
+ nThisLine = 0;
+ }
+ if (nThisLine == 0)
+ fprintf(out, "%s", internalFonts[i].name);
+ else
+ fprintf(out, ", %s", internalFonts[i].name);
+ nThisLine++;
}
- if (nThisLine!=0)
- fprintf(out,"\n");
+ if (nThisLine != 0)
+ fprintf(out, "\n");
return;
}
static Bool
PSIncludeFont(FILE *out, char *font)
{
-char ** pstr;
-register int i;
+ char **pstr;
+ register int i;
- pstr= NULL;
- for (i=0;(i<nInternalFonts)&&(pstr==NULL);i++) {
- if (uStringEqual(internalFonts[i].name,font))
- pstr= internalFonts[i].def;
+ pstr = NULL;
+ for (i = 0; (i < nInternalFonts) && (pstr == NULL); i++) {
+ if (uStringEqual(internalFonts[i].name, font))
+ pstr = internalFonts[i].def;
}
- if (pstr!=NULL) {
- fprintf(out,"%%%%BeginFont: %s\n",font);
- while (*pstr!=NULL) {
- fprintf(out,"%s\n",*pstr);
- pstr++;
- }
- fprintf(out,"%%%%EndFont\n");
- return True;
+ if (pstr != NULL) {
+ fprintf(out, "%%%%BeginFont: %s\n", font);
+ while (*pstr != NULL) {
+ fprintf(out, "%s\n", *pstr);
+ pstr++;
+ }
+ fprintf(out, "%%%%EndFont\n");
+ return True;
}
return False;
}
@@ -181,14 +182,14 @@ register int i;
Bool
DumpInternalFont(FILE *out, char *fontName)
{
- if (strcmp(fontName,"IsoKeyCaps")!=0) {
- uError("No internal font named \"%s\"\n",fontName);
- uAction("No font dumped\n");
- fprintf(stderr,"Current internal fonts are: ");
- ListInternalFonts(stderr,0,8);
- return False;
+ if (strcmp(fontName, "IsoKeyCaps") != 0) {
+ uError("No internal font named \"%s\"\n", fontName);
+ uAction("No font dumped\n");
+ fprintf(stderr, "Current internal fonts are: ");
+ ListInternalFonts(stderr, 0, 8);
+ return False;
}
- PSIncludeFont(out,fontName);
+ PSIncludeFont(out, fontName);
return True;
}
@@ -197,48 +198,49 @@ DumpInternalFont(FILE *out, char *fontName)
static void
PSColorDef(FILE *out, PSState *state, XkbColorPtr color)
{
-int tmp;
+ int tmp;
- fprintf(out,"/C%03d ",color->pixel);
- if (uStrCaseEqual(color->spec,"black")) {
- state->black= color->pixel;
- fprintf(out,"{ 0 setgray } def %% %s\n",color->spec);
+ fprintf(out, "/C%03d ", color->pixel);
+ if (uStrCaseEqual(color->spec, "black")) {
+ state->black = color->pixel;
+ fprintf(out, "{ 0 setgray } def %% %s\n", color->spec);
}
- else if (uStrCaseEqual(color->spec,"white")) {
- state->white= color->pixel;
- fprintf(out,"{ 1 setgray } def %% %s\n",color->spec);
+ else if (uStrCaseEqual(color->spec, "white")) {
+ state->white = color->pixel;
+ fprintf(out, "{ 1 setgray } def %% %s\n", color->spec);
}
- else if ((sscanf(color->spec,"grey%d",&tmp)==1)||
- (sscanf(color->spec,"gray%d",&tmp)==1)||
- (sscanf(color->spec,"Grey%d",&tmp)==1)||
- (sscanf(color->spec,"Gray%d",&tmp)==1)) {
- fprintf(out,"{ %f setgray } def %% %s\n",1.0-(((float)tmp)/100.0),
- color->spec);
+ else if ((sscanf(color->spec, "grey%d", &tmp) == 1) ||
+ (sscanf(color->spec, "gray%d", &tmp) == 1) ||
+ (sscanf(color->spec, "Grey%d", &tmp) == 1) ||
+ (sscanf(color->spec, "Gray%d", &tmp) == 1)) {
+ fprintf(out, "{ %f setgray } def %% %s\n",
+ 1.0 - (((float) tmp) / 100.0), color->spec);
}
- else if ((tmp=(uStrCaseEqual(color->spec,"red")*100))||
- (sscanf(color->spec,"red%d",&tmp)==1)) {
- fprintf(out,"{ %f 0 0 setrgbcolor } def %% %s\n",(((float)tmp)/100.0),
- color->spec);
+ else if ((tmp = (uStrCaseEqual(color->spec, "red") * 100)) ||
+ (sscanf(color->spec, "red%d", &tmp) == 1)) {
+ fprintf(out, "{ %f 0 0 setrgbcolor } def %% %s\n",
+ (((float) tmp) / 100.0), color->spec);
}
- else if ((tmp=(uStrCaseEqual(color->spec,"green")*100))||
- (sscanf(color->spec,"green%d",&tmp)==1)) {
- fprintf(out,"{ 0 %f 0 setrgbcolor } def %% %s\n",(((float)tmp)/100.0),
- color->spec);
+ else if ((tmp = (uStrCaseEqual(color->spec, "green") * 100)) ||
+ (sscanf(color->spec, "green%d", &tmp) == 1)) {
+ fprintf(out, "{ 0 %f 0 setrgbcolor } def %% %s\n",
+ (((float) tmp) / 100.0), color->spec);
}
- else if ((tmp=(uStrCaseEqual(color->spec,"blue")*100))||
- (sscanf(color->spec,"blue%d",&tmp)==1)) {
- fprintf(out,"{ 0 0 %f setrgbcolor } def %% %s\n",(((float)tmp)/100.0),
- color->spec);
+ else if ((tmp = (uStrCaseEqual(color->spec, "blue") * 100)) ||
+ (sscanf(color->spec, "blue%d", &tmp) == 1)) {
+ fprintf(out, "{ 0 0 %f setrgbcolor } def %% %s\n",
+ (((float) tmp) / 100.0), color->spec);
}
- else fprintf(out,"{ 0.9 setgray } def %% BOGUS! %s\n",color->spec);
+ else
+ fprintf(out, "{ 0.9 setgray } def %% BOGUS! %s\n", color->spec);
}
static void
-PSSetColor(FILE *out,PSState *state,int color)
+PSSetColor(FILE *out, PSState *state, int color)
{
- if ((state->args->wantColor)&&(state->color!=color)) {
- fprintf(out,"C%03d %% set color\n",color);
- state->color= color;
+ if ((state->args->wantColor) && (state->color != color)) {
+ fprintf(out, "C%03d %% set color\n", color);
+ state->color = color;
}
return;
}
@@ -246,229 +248,264 @@ PSSetColor(FILE *out,PSState *state,int color)
static void
PSGSave(FILE *out, PSState *state)
{
- fprintf(out,"gsave\n");
+ fprintf(out, "gsave\n");
return;
}
static void
PSGRestore(FILE *out, PSState *state)
{
- fprintf(out,"grestore\n");
- state->color= -1;
- state->font= FONT_NONE;
- state->fontSize= -1;
+ fprintf(out, "grestore\n");
+ state->color = -1;
+ state->font = FONT_NONE;
+ state->fontSize = -1;
return;
}
static void
PSShapeDef(FILE *out, PSState *state, XkbShapePtr shape)
{
-int o,p;
-XkbOutlinePtr ol;
-
- fprintf(out,"/%s {\n",XkbAtomGetString(state->dpy,shape->name));
- fprintf(out," gsave translate rotate /SOLID exch def\n");
- for (o=0,ol=shape->outlines;o<shape->num_outlines;o++,ol++) {
- XkbPointPtr pt;
- if ((shape->num_outlines>1)&&(ol==shape->approx))
- continue;
- pt=ol->points;
- fprintf(out,"%% Outline %d\n",o+1);
- if (ol->num_points==1) {
- if (ol->corner_radius<1) {
- fprintf(out," 0 0 moveto\n");
- fprintf(out," %3d 0 lineto\n",pt->x);
- fprintf(out," %3d %3d lineto\n",pt->x,pt->y);
- fprintf(out," 0 %3d lineto\n",pt->y);
- fprintf(out," 0 0 lineto\n");
- fprintf(out," SOLID { fill } { stroke } ifelse\n");
- }
- else {
- fprintf(out," mark\n");
- fprintf(out," %3d 0 moveto\n",ol->corner_radius);
- fprintf(out," %3d 0 %3d %3d %3d arcto\n",pt->x,pt->x,pt->y,
- ol->corner_radius);
- fprintf(out," %3d %3d 0 %3d %3d arcto\n",pt->x,pt->y,pt->y,
- ol->corner_radius);
- fprintf(out," 0 %3d 0 0 %3d arcto\n",pt->y,
- ol->corner_radius);
- fprintf(out," 0 0 %3d 0 %3d arcto\n",pt->x,
- ol->corner_radius);
- fprintf(out," SOLID { fill } { stroke } ifelse\n");
- fprintf(out," cleartomark\n");
- }
- }
- else if (ol->num_points==2) {
- if (ol->corner_radius<1) {
- fprintf(out," %3d %3d moveto\n",pt[0].x,pt[0].y);
- fprintf(out," %3d %3d lineto\n",pt[1].x,pt[0].y);
- fprintf(out," %3d %3d lineto\n",pt[1].x,pt[1].y);
- fprintf(out," %3d %3d lineto\n",pt[0].x,pt[1].y);
- fprintf(out," %3d %3d lineto\n",pt[0].x,pt[0].y);
- fprintf(out," SOLID { fill } { stroke } ifelse\n");
- }
- else {
- fprintf(out," mark\n");
- fprintf(out," %3d %3d moveto\n",pt[0].x + ol->corner_radius,pt[0].y);
- fprintf(out," %3d %3d %3d %3d %3d arcto\n",pt[1].x,pt[0].y,
- pt[1].x,pt[1].y,
- ol->corner_radius);
- fprintf(out," %3d %3d %3d %3d %3d arcto\n",pt[1].x,pt[1].y,
- pt[0].x,pt[1].y,
- ol->corner_radius);
- fprintf(out," %3d %3d %3d %3d %3d arcto\n",pt[0].x,pt[1].y,
- pt[0].x,pt[0].y,
- ol->corner_radius);
- fprintf(out," %3d %3d %3d %3d %3d arcto\n",pt[0].x,pt[0].y,
- pt[1].x,pt[0].y,
- ol->corner_radius);
- fprintf(out," SOLID { fill } { stroke } ifelse\n");
- fprintf(out," cleartomark\n");
- }
- }
- else {
- if (ol->corner_radius<1) {
- fprintf(out," %3d %3d moveto\n",pt->x,pt->y);
- pt++;
- for (p=1;p<ol->num_points;p++,pt++) {
- fprintf(out," %3d %3d lineto\n",pt->x,pt->y);
- }
- if ((pt->x!=ol->points[0].x)||(pt->y!=ol->points[0].y))
- fprintf(out," closepath\n");
- fprintf(out," SOLID { fill } { stroke } ifelse\n");
- }
- else {
- XkbPointPtr last;
- last= &pt[ol->num_points-1];
- if ((last->x==pt->x)&&(last->y==pt->y))
- last--;
- fprintf(out," mark\n");
- fprintf(out," %% Determine tangent point of first corner\n");
- fprintf(out," %3d %3d moveto %d %d %d %d %d arcto\n",
- last->x,last->y,
- pt[0].x,pt[0].y,pt[1].x,pt[1].y,
- ol->corner_radius);
- fprintf(out," /TY exch def /TX exch def pop pop newpath\n");
- fprintf(out," %% Now draw the shape\n");
- fprintf(out," TX TY moveto\n");
- for (p=1;p<ol->num_points;p++) {
- if (p<(ol->num_points-1)) last= &pt[p+1];
- else last= &pt[0];
- fprintf(out," %3d %3d %3d %3d %3d arcto\n",
- pt[p].x,pt[p].y,
- last->x,last->y,
- ol->corner_radius);
- }
- last= &pt[ol->num_points-1];
- if ((last->x!=pt->x)||(last->y!=pt->y)) {
- fprintf(out," %3d %3d %3d %3d %3d arcto\n",
- pt[0].x,pt[0].y,
- pt[1].x,pt[1].y,
- ol->corner_radius);
- }
- fprintf(out," SOLID { fill } { stroke } ifelse\n");
- fprintf(out," cleartomark\n");
- }
- }
+ int o, p;
+ XkbOutlinePtr ol;
+
+ fprintf(out, "/%s {\n", XkbAtomGetString(state->dpy, shape->name));
+ fprintf(out, " gsave translate rotate /SOLID exch def\n");
+ for (o = 0, ol = shape->outlines; o < shape->num_outlines; o++, ol++) {
+ XkbPointPtr pt;
+
+ if ((shape->num_outlines > 1) && (ol == shape->approx))
+ continue;
+ pt = ol->points;
+ fprintf(out, "%% Outline %d\n", o + 1);
+ if (ol->num_points == 1) {
+ if (ol->corner_radius < 1) {
+ fprintf(out, " 0 0 moveto\n");
+ fprintf(out, " %3d 0 lineto\n", pt->x);
+ fprintf(out, " %3d %3d lineto\n", pt->x, pt->y);
+ fprintf(out, " 0 %3d lineto\n", pt->y);
+ fprintf(out, " 0 0 lineto\n");
+ fprintf(out, " SOLID { fill } { stroke } ifelse\n");
+ }
+ else {
+ fprintf(out, " mark\n");
+ fprintf(out, " %3d 0 moveto\n", ol->corner_radius);
+ fprintf(out, " %3d 0 %3d %3d %3d arcto\n", pt->x, pt->x,
+ pt->y, ol->corner_radius);
+ fprintf(out, " %3d %3d 0 %3d %3d arcto\n", pt->x, pt->y,
+ pt->y, ol->corner_radius);
+ fprintf(out, " 0 %3d 0 0 %3d arcto\n", pt->y,
+ ol->corner_radius);
+ fprintf(out, " 0 0 %3d 0 %3d arcto\n", pt->x,
+ ol->corner_radius);
+ fprintf(out, " SOLID { fill } { stroke } ifelse\n");
+ fprintf(out, " cleartomark\n");
+ }
+ }
+ else if (ol->num_points == 2) {
+ if (ol->corner_radius < 1) {
+ fprintf(out, " %3d %3d moveto\n", pt[0].x, pt[0].y);
+ fprintf(out, " %3d %3d lineto\n", pt[1].x, pt[0].y);
+ fprintf(out, " %3d %3d lineto\n", pt[1].x, pt[1].y);
+ fprintf(out, " %3d %3d lineto\n", pt[0].x, pt[1].y);
+ fprintf(out, " %3d %3d lineto\n", pt[0].x, pt[0].y);
+ fprintf(out, " SOLID { fill } { stroke } ifelse\n");
+ }
+ else {
+ fprintf(out, " mark\n");
+ fprintf(out, " %3d %3d moveto\n", pt[0].x + ol->corner_radius,
+ pt[0].y);
+ fprintf(out, " %3d %3d %3d %3d %3d arcto\n", pt[1].x, pt[0].y,
+ pt[1].x, pt[1].y, ol->corner_radius);
+ fprintf(out, " %3d %3d %3d %3d %3d arcto\n", pt[1].x, pt[1].y,
+ pt[0].x, pt[1].y, ol->corner_radius);
+ fprintf(out, " %3d %3d %3d %3d %3d arcto\n", pt[0].x, pt[1].y,
+ pt[0].x, pt[0].y, ol->corner_radius);
+ fprintf(out, " %3d %3d %3d %3d %3d arcto\n", pt[0].x, pt[0].y,
+ pt[1].x, pt[0].y, ol->corner_radius);
+ fprintf(out, " SOLID { fill } { stroke } ifelse\n");
+ fprintf(out, " cleartomark\n");
+ }
+ }
+ else {
+ if (ol->corner_radius < 1) {
+ fprintf(out, " %3d %3d moveto\n", pt->x, pt->y);
+ pt++;
+ for (p = 1; p < ol->num_points; p++, pt++) {
+ fprintf(out, " %3d %3d lineto\n", pt->x, pt->y);
+ }
+ if ((pt->x != ol->points[0].x) || (pt->y != ol->points[0].y))
+ fprintf(out, " closepath\n");
+ fprintf(out, " SOLID { fill } { stroke } ifelse\n");
+ }
+ else {
+ XkbPointPtr last;
+
+ last = &pt[ol->num_points - 1];
+ if ((last->x == pt->x) && (last->y == pt->y))
+ last--;
+ fprintf(out, " mark\n");
+ fprintf(out, " %% Determine tangent point of first corner\n");
+ fprintf(out, " %3d %3d moveto %d %d %d %d %d arcto\n",
+ last->x, last->y,
+ pt[0].x, pt[0].y, pt[1].x, pt[1].y, ol->corner_radius);
+ fprintf(out, " /TY exch def /TX exch def pop pop newpath\n");
+ fprintf(out, " %% Now draw the shape\n");
+ fprintf(out, " TX TY moveto\n");
+ for (p = 1; p < ol->num_points; p++) {
+ if (p < (ol->num_points - 1))
+ last = &pt[p + 1];
+ else
+ last = &pt[0];
+ fprintf(out, " %3d %3d %3d %3d %3d arcto\n",
+ pt[p].x, pt[p].y,
+ last->x, last->y, ol->corner_radius);
+ }
+ last = &pt[ol->num_points - 1];
+ if ((last->x != pt->x) || (last->y != pt->y)) {
+ fprintf(out, " %3d %3d %3d %3d %3d arcto\n",
+ pt[0].x, pt[0].y,
+ pt[1].x, pt[1].y, ol->corner_radius);
+ }
+ fprintf(out, " SOLID { fill } { stroke } ifelse\n");
+ fprintf(out, " cleartomark\n");
+ }
+ }
}
- fprintf(out," grestore\n");
- fprintf(out,"} def\n");
+ fprintf(out, " grestore\n");
+ fprintf(out, "} def\n");
return;
}
/***====================================================================***/
-typedef struct {
- char * foundry;
- char * face;
- char * weight;
- char * slant;
- char * setWidth;
- char * variant;
- int pixelSize;
- int ptSize;
- int resX;
- int resY;
- char * spacing;
- int avgWidth;
- char * encoding;
+typedef struct {
+ char * foundry;
+ char * face;
+ char * weight;
+ char * slant;
+ char * setWidth;
+ char * variant;
+ int pixelSize;
+ int ptSize;
+ int resX;
+ int resY;
+ char * spacing;
+ int avgWidth;
+ char * encoding;
} FontStuff;
static void
ClearFontStuff(FontStuff *stuff)
{
if (stuff && stuff->foundry)
- uFree(stuff->foundry);
- bzero(stuff,sizeof(FontStuff));
+ uFree(stuff->foundry);
+ bzero(stuff, sizeof(FontStuff));
return;
}
static Bool
CrackXLFDName(char *name, FontStuff *stuff)
{
-char *tmp;
- if ((name==NULL)||(stuff==NULL))
- return False;
- if (name[0]=='-') tmp= uStringDup(&name[1]);
- else tmp= uStringDup(name);
- if (tmp==NULL)
- return False;
- stuff->foundry= tmp;
-
- if ((tmp= index(tmp,'-'))==NULL) goto BAILOUT;
- else *tmp++= '\0';
- stuff->face= tmp;
-
- if ((tmp= index(tmp,'-'))==NULL) goto BAILOUT;
- else *tmp++= '\0';
- stuff->weight= tmp;
-
- if ((tmp= index(tmp,'-'))==NULL) goto BAILOUT;
- else *tmp++= '\0';
- stuff->slant= tmp;
-
- if ((tmp= index(tmp,'-'))==NULL) goto BAILOUT;
- else *tmp++= '\0';
- stuff->setWidth= tmp;
-
- if ((tmp= index(tmp,'-'))==NULL) goto BAILOUT;
- else *tmp++= '\0';
- stuff->variant= tmp;
-
- if ((tmp= index(tmp,'-'))==NULL) goto BAILOUT;
- else *tmp++= '\0';
- if (*tmp=='*') stuff->pixelSize= 0;
- else if (sscanf(tmp,"%i",&stuff->pixelSize)!=1) goto BAILOUT;
-
- if ((tmp= index(tmp,'-'))==NULL) goto BAILOUT;
- else *tmp++= '\0';
- if (*tmp=='*') stuff->ptSize= 0;
- else if (sscanf(tmp,"%i",&stuff->ptSize)!=1) goto BAILOUT;
-
- if ((tmp= index(tmp,'-'))==NULL) goto BAILOUT;
- else *tmp++= '\0';
- if (*tmp=='*') stuff->resX= 0;
- else if (sscanf(tmp,"%i",&stuff->resX)!=1) goto BAILOUT;
-
- if ((tmp= index(tmp,'-'))==NULL) goto BAILOUT;
- else *tmp++= '\0';
- if (*tmp=='*') stuff->resY= 0;
- else if (sscanf(tmp,"%i",&stuff->resY)!=1) goto BAILOUT;
-
- if ((tmp= index(tmp,'-'))==NULL) goto BAILOUT;
- else *tmp++= '\0';
- stuff->spacing= tmp;
-
- if ((tmp= index(tmp,'-'))==NULL) goto BAILOUT;
- else *tmp++= '\0';
- if (*tmp=='*') stuff->avgWidth= 0;
- else if (sscanf(tmp,"%i",&stuff->avgWidth)!=1) goto BAILOUT;
-
- if ((tmp= index(tmp,'-'))==NULL) goto BAILOUT;
- else *tmp++= '\0';
- stuff->encoding= tmp;
+ char *tmp;
+
+ if ((name == NULL) || (stuff == NULL))
+ return False;
+ if (name[0] == '-')
+ tmp = uStringDup(&name[1]);
+ else
+ tmp = uStringDup(name);
+ if (tmp == NULL)
+ return False;
+ stuff->foundry = tmp;
+
+ if ((tmp = index(tmp, '-')) == NULL)
+ goto BAILOUT;
+ else
+ *tmp++ = '\0';
+ stuff->face = tmp;
+
+ if ((tmp = index(tmp, '-')) == NULL)
+ goto BAILOUT;
+ else
+ *tmp++ = '\0';
+ stuff->weight = tmp;
+
+ if ((tmp = index(tmp, '-')) == NULL)
+ goto BAILOUT;
+ else
+ *tmp++ = '\0';
+ stuff->slant = tmp;
+
+ if ((tmp = index(tmp, '-')) == NULL)
+ goto BAILOUT;
+ else
+ *tmp++ = '\0';
+ stuff->setWidth = tmp;
+
+ if ((tmp = index(tmp, '-')) == NULL)
+ goto BAILOUT;
+ else
+ *tmp++ = '\0';
+ stuff->variant = tmp;
+
+ if ((tmp = index(tmp, '-')) == NULL)
+ goto BAILOUT;
+ else
+ *tmp++ = '\0';
+ if (*tmp == '*')
+ stuff->pixelSize = 0;
+ else if (sscanf(tmp, "%i", &stuff->pixelSize) != 1)
+ goto BAILOUT;
+
+ if ((tmp = index(tmp, '-')) == NULL)
+ goto BAILOUT;
+ else
+ *tmp++ = '\0';
+ if (*tmp == '*')
+ stuff->ptSize = 0;
+ else if (sscanf(tmp, "%i", &stuff->ptSize) != 1)
+ goto BAILOUT;
+
+ if ((tmp = index(tmp, '-')) == NULL)
+ goto BAILOUT;
+ else
+ *tmp++ = '\0';
+ if (*tmp == '*')
+ stuff->resX = 0;
+ else if (sscanf(tmp, "%i", &stuff->resX) != 1)
+ goto BAILOUT;
+
+ if ((tmp = index(tmp, '-')) == NULL)
+ goto BAILOUT;
+ else
+ *tmp++ = '\0';
+ if (*tmp == '*')
+ stuff->resY = 0;
+ else if (sscanf(tmp, "%i", &stuff->resY) != 1)
+ goto BAILOUT;
+
+ if ((tmp = index(tmp, '-')) == NULL)
+ goto BAILOUT;
+ else
+ *tmp++ = '\0';
+ stuff->spacing = tmp;
+
+ if ((tmp = index(tmp, '-')) == NULL)
+ goto BAILOUT;
+ else
+ *tmp++ = '\0';
+ if (*tmp == '*')
+ stuff->avgWidth = 0;
+ else if (sscanf(tmp, "%i", &stuff->avgWidth) != 1)
+ goto BAILOUT;
+
+ if ((tmp = index(tmp, '-')) == NULL)
+ goto BAILOUT;
+ else
+ *tmp++ = '\0';
+ stuff->encoding = tmp;
return True;
-BAILOUT:
+ BAILOUT:
ClearFontStuff(stuff);
return False;
}
@@ -476,219 +513,223 @@ BAILOUT:
static void
PSSetUpForLatin1(FILE *out, PSState *state)
{
- fprintf(out,"save\n");
- fprintf(out,"/ISOLatin1Encoding where {pop save true}{false} ifelse\n");
- fprintf(out,"/ISOLatin1Encoding [\n");
- fprintf(out," /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef\n");
- fprintf(out," /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef\n");
- fprintf(out," /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef\n");
- fprintf(out," /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef\n");
- fprintf(out," /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef\n");
- fprintf(out," /.notdef /.notdef /space /exclam /quotedbl /numbersign\n");
- fprintf(out," /dollar /percent /ampersand /quoteright /parenleft\n");
- fprintf(out," /parenright /asterisk /plus /comma /minus /period\n");
- fprintf(out," /slash /zero /one /two /three /four /five /six /seven\n");
- fprintf(out," /eight /nine /colon /semicolon /less /equal /greater\n");
- fprintf(out," /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M\n");
- fprintf(out," /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft\n");
- fprintf(out," /backslash /bracketright /asciicircum /underscore\n");
- fprintf(out," /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m\n");
- fprintf(out," /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft\n");
- fprintf(out," /bar /braceright /asciitilde /guilsinglright /fraction\n");
- fprintf(out," /florin /quotesingle /quotedblleft /guilsinglleft /fi\n");
- fprintf(out," /fl /endash /dagger /daggerdbl /bullet /quotesinglbase\n");
- fprintf(out," /quotedblbase /quotedblright /ellipsis /trademark\n");
- fprintf(out," /perthousand /grave /scaron /circumflex /Scaron /tilde\n");
- fprintf(out," /breve /zcaron /dotaccent /dotlessi /Zcaron /ring\n");
- fprintf(out," /hungarumlaut /ogonek /caron /emdash /space /exclamdown\n");
- fprintf(out," /cent /sterling /currency /yen /brokenbar /section\n");
- fprintf(out," /dieresis /copyright /ordfeminine /guillemotleft\n");
- fprintf(out," /logicalnot /hyphen /registered /macron /degree\n");
- fprintf(out," /plusminus /twosuperior /threesuperior /acute /mu\n");
- fprintf(out," /paragraph /periodcentered /cedilla /onesuperior\n");
- fprintf(out," /ordmasculine /guillemotright /onequarter /onehalf\n");
- fprintf(out," /threequarters /questiondown /Agrave /Aacute\n");
- fprintf(out," /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla\n");
- fprintf(out," /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute\n");
- fprintf(out," /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute\n");
- fprintf(out," /Ocircumflex /Otilde /Odieresis /multiply /Oslash\n");
- fprintf(out," /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn\n");
- fprintf(out," /germandbls /agrave /aacute /acircumflex /atilde\n");
- fprintf(out," /adieresis /aring /ae /ccedilla /egrave /eacute\n");
- fprintf(out," /ecircumflex /edieresis /igrave /iacute /icircumflex\n");
- fprintf(out," /idieresis /eth /ntilde /ograve /oacute /ocircumflex\n");
- fprintf(out," /otilde /odieresis /divide /oslash /ugrave /uacute\n");
- fprintf(out," /ucircumflex /udieresis /yacute /thorn /ydieresis\n");
- fprintf(out,"] def {restore} if\n");
- fprintf(out,"/reencodeISO-1 {\n");
- fprintf(out," dup length dict begin\n");
- fprintf(out," {1 index /FID ne {def}{pop pop} ifelse} forall\n");
- fprintf(out," /Encoding ISOLatin1Encoding def\n");
- fprintf(out," currentdict\n");
- fprintf(out," end\n");
- fprintf(out,"} def\n");
+ fprintf(out, "save\n");
+ fprintf(out, "/ISOLatin1Encoding where {pop save true}{false} ifelse\n");
+ fprintf(out, "/ISOLatin1Encoding [\n");
+ fprintf(out, " /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef\n");
+ fprintf(out, " /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef\n");
+ fprintf(out, " /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef\n");
+ fprintf(out, " /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef\n");
+ fprintf(out, " /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef\n");
+ fprintf(out, " /.notdef /.notdef /space /exclam /quotedbl /numbersign\n");
+ fprintf(out, " /dollar /percent /ampersand /quoteright /parenleft\n");
+ fprintf(out, " /parenright /asterisk /plus /comma /minus /period\n");
+ fprintf(out, " /slash /zero /one /two /three /four /five /six /seven\n");
+ fprintf(out, " /eight /nine /colon /semicolon /less /equal /greater\n");
+ fprintf(out, " /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M\n");
+ fprintf(out, " /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft\n");
+ fprintf(out, " /backslash /bracketright /asciicircum /underscore\n");
+ fprintf(out, " /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m\n");
+ fprintf(out, " /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft\n");
+ fprintf(out, " /bar /braceright /asciitilde /guilsinglright /fraction\n");
+ fprintf(out, " /florin /quotesingle /quotedblleft /guilsinglleft /fi\n");
+ fprintf(out, " /fl /endash /dagger /daggerdbl /bullet /quotesinglbase\n");
+ fprintf(out, " /quotedblbase /quotedblright /ellipsis /trademark\n");
+ fprintf(out, " /perthousand /grave /scaron /circumflex /Scaron /tilde\n");
+ fprintf(out, " /breve /zcaron /dotaccent /dotlessi /Zcaron /ring\n");
+ fprintf(out,
+ " /hungarumlaut /ogonek /caron /emdash /space /exclamdown\n");
+ fprintf(out, " /cent /sterling /currency /yen /brokenbar /section\n");
+ fprintf(out, " /dieresis /copyright /ordfeminine /guillemotleft\n");
+ fprintf(out, " /logicalnot /hyphen /registered /macron /degree\n");
+ fprintf(out, " /plusminus /twosuperior /threesuperior /acute /mu\n");
+ fprintf(out, " /paragraph /periodcentered /cedilla /onesuperior\n");
+ fprintf(out, " /ordmasculine /guillemotright /onequarter /onehalf\n");
+ fprintf(out, " /threequarters /questiondown /Agrave /Aacute\n");
+ fprintf(out, " /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla\n");
+ fprintf(out,
+ " /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute\n");
+ fprintf(out, " /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute\n");
+ fprintf(out, " /Ocircumflex /Otilde /Odieresis /multiply /Oslash\n");
+ fprintf(out, " /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn\n");
+ fprintf(out, " /germandbls /agrave /aacute /acircumflex /atilde\n");
+ fprintf(out, " /adieresis /aring /ae /ccedilla /egrave /eacute\n");
+ fprintf(out, " /ecircumflex /edieresis /igrave /iacute /icircumflex\n");
+ fprintf(out, " /idieresis /eth /ntilde /ograve /oacute /ocircumflex\n");
+ fprintf(out, " /otilde /odieresis /divide /oslash /ugrave /uacute\n");
+ fprintf(out, " /ucircumflex /udieresis /yacute /thorn /ydieresis\n");
+ fprintf(out, "] def {restore} if\n");
+ fprintf(out, "/reencodeISO-1 {\n");
+ fprintf(out, " dup length dict begin\n");
+ fprintf(out, " {1 index /FID ne {def}{pop pop} ifelse} forall\n");
+ fprintf(out, " /Encoding ISOLatin1Encoding def\n");
+ fprintf(out, " currentdict\n");
+ fprintf(out, " end\n");
+ fprintf(out, "} def\n");
}
static void
PSReencodeLatin1Font(FILE *out, char *font)
{
- fprintf(out,"/%s findfont reencodeISO-1\n",font);
- fprintf(out," /%s-8859-1 exch definefont pop\n",font);
+ fprintf(out, "/%s findfont reencodeISO-1\n", font);
+ fprintf(out, " /%s-8859-1 exch definefont pop\n", font);
return;
}
static void
PSSetUpFonts(FILE *out, char *textFont, int size)
{
- fprintf(out,"/F%d { /%s findfont exch scalefont setfont } def\n",
- FONT_TEXT,textFont);
- fprintf(out,"/F%d { /%s-8859-1 findfont exch scalefont setfont } def\n",
- FONT_LATIN1,textFont);
- fprintf(out,"/F%d { /%s findfont exch scalefont setfont } def\n",
- FONT_SYMBOL,"Symbol");
- fprintf(out,"/F%d { /%s findfont exch scalefont setfont } def\n",
- FONT_ISOCAPS,"IsoKeyCaps");
+ fprintf(out, "/F%d { /%s findfont exch scalefont setfont } def\n",
+ FONT_TEXT, textFont);
+ fprintf(out, "/F%d { /%s-8859-1 findfont exch scalefont setfont } def\n",
+ FONT_LATIN1, textFont);
+ fprintf(out, "/F%d { /%s findfont exch scalefont setfont } def\n",
+ FONT_SYMBOL, "Symbol");
+ fprintf(out, "/F%d { /%s findfont exch scalefont setfont } def\n",
+ FONT_ISOCAPS, "IsoKeyCaps");
return;
}
static void
PSSetFont(FILE *out, PSState *state, int font, int size, int pts)
{
- if ((state->font!=font)||(state->fontSize!=size)) {
- fprintf(out,"%d %sF%d\n",size,(pts?"pts ":""),font);
- state->font= font;
- state->fontSize= size;
+ if ((state->font != font) || (state->fontSize != size)) {
+ fprintf(out, "%d %sF%d\n", size, (pts ? "pts " : ""), font);
+ state->font = font;
+ state->fontSize = size;
}
return;
}
-
static void
PSProlog(FILE *out, PSState *state)
{
-register int i;
+ register int i;
if (!state->args->wantEPS) {
- fprintf(out,"%%!PS-Adobe-2.0\n");
- fprintf(out,"%%%%Creator: xkbprint\n");
- if (state->geom->name!=None)
- fprintf(out,"%%%%Title: %s\n",
- XkbAtomGetString(state->dpy,state->geom->name));
- fprintf(out,"%%%%BoundingBox: (atend)\n");
- fprintf(out,"%%%%Pages: 1\n");
- fprintf(out,"%%%%PageOrder: Ascend\n");
- fprintf(out,"%%%%DocumentFonts: (atend)\n");
- fprintf(out,"%%%%DocumentData: Clean7Bit\n");
- fprintf(out,"%%%%Orientation: Landscape\n");
- fprintf(out,"%%%%EndComments\n");
- fprintf(out,"%%%%BeginProlog\n");
- fprintf(out,"%% Resolution is 1/10mm -- need pt sizes for fonts\n");
- fprintf(out,"clippath pathbbox\n");
- fprintf(out," /ury exch def /urx exch def\n");
- fprintf(out," /llx exch def /lly exch def\n");
- fprintf(out," newpath\n");
- fprintf(out,"/devwidth urx llx sub def\n");
- fprintf(out,"/devheight ury lly sub def\n");
+ fprintf(out, "%%!PS-Adobe-2.0\n");
+ fprintf(out, "%%%%Creator: xkbprint\n");
+ if (state->geom->name != None)
+ fprintf(out, "%%%%Title: %s\n",
+ XkbAtomGetString(state->dpy, state->geom->name));
+ fprintf(out, "%%%%BoundingBox: (atend)\n");
+ fprintf(out, "%%%%Pages: 1\n");
+ fprintf(out, "%%%%PageOrder: Ascend\n");
+ fprintf(out, "%%%%DocumentFonts: (atend)\n");
+ fprintf(out, "%%%%DocumentData: Clean7Bit\n");
+ fprintf(out, "%%%%Orientation: Landscape\n");
+ fprintf(out, "%%%%EndComments\n");
+ fprintf(out, "%%%%BeginProlog\n");
+ fprintf(out, "%% Resolution is 1/10mm -- need pt sizes for fonts\n");
+ fprintf(out, "clippath pathbbox\n");
+ fprintf(out, " /ury exch def /urx exch def\n");
+ fprintf(out, " /llx exch def /lly exch def\n");
+ fprintf(out, " newpath\n");
+ fprintf(out, "/devwidth urx llx sub def\n");
+ fprintf(out, "/devheight ury lly sub def\n");
}
else {
- int w,h;
- int pw,ph;
-
- w= (((state->geom->width_mm*72)/254)*11)/10;
- h= (((state->geom->height_mm*72)/254)*11)/10;
- if (state->kbPerPage>1)
- h*= (state->kbPerPage+1);
-
- if (w<=h) {
- pw= 7.5*72;
- ph= 10*72;
- }
- else {
- pw= 10*72;
- ph= 7.5*72;
- }
- while ((w>pw)||(h>ph)) {
- w= (w*9)/10;
- h= (h*9)/10;
- }
-
- fprintf(out,"%%!PS-Adobe-2.0 EPSF-2.0\n");
- fprintf(out,"%%%%BoundingBox: 0 0 %d %d\n",w,h);
- fprintf(out,"%%%%Creator: xkbprint\n");
- if (state->geom->name!=None)
- fprintf(out,"%%%%Title: %s\n",
- XkbAtomGetString(state->dpy,state->geom->name));
- fprintf(out,"%%%%Pages: 1\n");
- fprintf(out,"%%%%EndComments\n");
- fprintf(out,"%%%%BeginProlog\n");
- fprintf(out,"/ury 0 def /urx 0 def\n");
- fprintf(out,"/llx %d def /lly %d def\n",w,h);
- fprintf(out,"/devwidth %d def /devheight %d def\n",w,h);
+ int w, h;
+ int pw, ph;
+
+ w = (((state->geom->width_mm * 72) / 254) * 11) / 10;
+ h = (((state->geom->height_mm * 72) / 254) * 11) / 10;
+ if (state->kbPerPage > 1)
+ h *= (state->kbPerPage + 1);
+
+ if (w <= h) {
+ pw = 7.5 * 72;
+ ph = 10 * 72;
+ }
+ else {
+ pw = 10 * 72;
+ ph = 7.5 * 72;
+ }
+ while ((w > pw) || (h > ph)) {
+ w = (w * 9) / 10;
+ h = (h * 9) / 10;
+ }
+
+ fprintf(out, "%%!PS-Adobe-2.0 EPSF-2.0\n");
+ fprintf(out, "%%%%BoundingBox: 0 0 %d %d\n", w, h);
+ fprintf(out, "%%%%Creator: xkbprint\n");
+ if (state->geom->name != None)
+ fprintf(out, "%%%%Title: %s\n",
+ XkbAtomGetString(state->dpy, state->geom->name));
+ fprintf(out, "%%%%Pages: 1\n");
+ fprintf(out, "%%%%EndComments\n");
+ fprintf(out, "%%%%BeginProlog\n");
+ fprintf(out, "/ury 0 def /urx 0 def\n");
+ fprintf(out, "/llx %d def /lly %d def\n", w, h);
+ fprintf(out, "/devwidth %d def /devheight %d def\n", w, h);
}
- fprintf(out,"/kbdwidth %d def\n",state->geom->width_mm);
- fprintf(out,"/kbdheight %d def\n",state->geom->height_mm);
- fprintf(out,"/pts { 254 mul 72 div } def\n");
- fprintf(out,"/mm10 { 72 mul 254 div } def\n");
- fprintf(out,"/landscape? {\n");
- fprintf(out," devheight devwidth gt {\n");
- fprintf(out," /pwidth devheight def /pheight devwidth def\n");
- fprintf(out," 0 devheight translate\n");
- fprintf(out," -90 rotate\n");
- fprintf(out," } {\n");
- fprintf(out," /pwidth devwidth def /pheight devheight def\n");
- fprintf(out," } ifelse\n");
- fprintf(out," 0 pheight translate\n");
- fprintf(out," 1 -1 scale\n");
- fprintf(out,"} def\n");
- fprintf(out,"/centeroffset {\n");
- fprintf(out," /S exch def\n");
- fprintf(out," /HEIGHT exch def\n");
- fprintf(out," /WIDTH exch def\n");
- fprintf(out," S stringwidth /SH exch def /SW exch def\n");
- fprintf(out," WIDTH SW sub 2 div\n");
- fprintf(out," HEIGHT SH sub 2 div\n");
- fprintf(out,"} def\n");
- PSSetUpForLatin1(out,state);
- PSReencodeLatin1Font(out,DFLT_LABEL_FONT);
+ fprintf(out, "/kbdwidth %d def\n", state->geom->width_mm);
+ fprintf(out, "/kbdheight %d def\n", state->geom->height_mm);
+ fprintf(out, "/pts { 254 mul 72 div } def\n");
+ fprintf(out, "/mm10 { 72 mul 254 div } def\n");
+ fprintf(out, "/landscape? {\n");
+ fprintf(out, " devheight devwidth gt {\n");
+ fprintf(out, " /pwidth devheight def /pheight devwidth def\n");
+ fprintf(out, " 0 devheight translate\n");
+ fprintf(out, " -90 rotate\n");
+ fprintf(out, " } {\n");
+ fprintf(out, " /pwidth devwidth def /pheight devheight def\n");
+ fprintf(out, " } ifelse\n");
+ fprintf(out, " 0 pheight translate\n");
+ fprintf(out, " 1 -1 scale\n");
+ fprintf(out, "} def\n");
+ fprintf(out, "/centeroffset {\n");
+ fprintf(out, " /S exch def\n");
+ fprintf(out, " /HEIGHT exch def\n");
+ fprintf(out, " /WIDTH exch def\n");
+ fprintf(out, " S stringwidth /SH exch def /SW exch def\n");
+ fprintf(out, " WIDTH SW sub 2 div\n");
+ fprintf(out, " HEIGHT SH sub 2 div\n");
+ fprintf(out, "} def\n");
+ PSSetUpForLatin1(out, state);
+ PSReencodeLatin1Font(out, DFLT_LABEL_FONT);
if (state->args->wantColor) {
- XkbGeometryPtr geom= state->geom;
- for (i=0;i<geom->num_colors;i++) {
- PSColorDef(out,state,&geom->colors[i]);
- }
- if (state->black<0) {
- XkbColorPtr color;
- if (!(color= XkbAddGeomColor(geom,"black",geom->num_colors)))
- uFatalError("Couldn't allocate black color!\n");
- PSColorDef(out,state,color);
- }
- if (state->white<0) {
- XkbColorPtr color;
- if (!(color= XkbAddGeomColor(geom,"white",geom->num_colors)))
- uFatalError("Couldn't allocate white color!\n");
- PSColorDef(out,state,color);
- }
+ XkbGeometryPtr geom = state->geom;
+
+ for (i = 0; i < geom->num_colors; i++) {
+ PSColorDef(out, state, &geom->colors[i]);
+ }
+ if (state->black < 0) {
+ XkbColorPtr color;
+
+ if (!(color = XkbAddGeomColor(geom, "black", geom->num_colors)))
+ uFatalError("Couldn't allocate black color!\n");
+ PSColorDef(out, state, color);
+ }
+ if (state->white < 0) {
+ XkbColorPtr color;
+
+ if (!(color = XkbAddGeomColor(geom, "white", geom->num_colors)))
+ uFatalError("Couldn't allocate white color!\n");
+ PSColorDef(out, state, color);
+ }
}
- for (i=0;i<state->geom->num_shapes;i++) {
- PSShapeDef(out,state,&state->geom->shapes[i]);
+ for (i = 0; i < state->geom->num_shapes; i++) {
+ PSShapeDef(out, state, &state->geom->shapes[i]);
}
- if (state->args->label==LABEL_SYMBOLS) {
- PSIncludeFont(out,"IsoKeyCaps");
+ if (state->args->label == LABEL_SYMBOLS) {
+ PSIncludeFont(out, "IsoKeyCaps");
}
- PSSetUpFonts(out,DFLT_LABEL_FONT, DFLT_LABEL_FONT_SIZE);
- fprintf(out,"%%%%EndProlog\n");
+ PSSetUpFonts(out, DFLT_LABEL_FONT, DFLT_LABEL_FONT_SIZE);
+ fprintf(out, "%%%%EndProlog\n");
return;
}
static void
PSFileTrailer(FILE *out, PSState *state)
{
- fprintf(out,"restore\n");
+ fprintf(out, "restore\n");
if (!state->args->wantEPS)
- fprintf(out,"%%%%Trailer\n");
- fprintf(out,"%%%%EOF\n");
+ fprintf(out, "%%%%Trailer\n");
+ fprintf(out, "%%%%EOF\n");
#ifdef NOTYET
- fprintf(out,"%%%%BoundingBox %d %d\n");
- fprintf(out,"%%%%DocumentFonts: \n");
+ fprintf(out, "%%%%BoundingBox %d %d\n");
+ fprintf(out, "%%%%DocumentFonts: \n");
#endif
return;
}
@@ -696,314 +737,330 @@ PSFileTrailer(FILE *out, PSState *state)
static void
PSPageSetup(FILE *out, PSState *state, Bool drawBorder)
{
-XkbGeometryPtr geom;
+ XkbGeometryPtr geom;
- geom= state->geom;
- if (state->kbPerPage==1) {
- fprintf(out,"%%%%Page: %d %d\n",state->nPages+1,state->nPages+1);
- fprintf(out,"%%%%BeginPageSetup\n");
+ geom = state->geom;
+ if (state->kbPerPage == 1) {
+ fprintf(out, "%%%%Page: %d %d\n", state->nPages + 1, state->nPages + 1);
+ fprintf(out, "%%%%BeginPageSetup\n");
}
- else if ((state->nPages&1)==0) { /* even page */
- int realPage;
- realPage= state->nPages/2+1;
- fprintf(out,"%%%%Page: %d %d\n",realPage,realPage);
- fprintf(out,"%%%%BeginPageSetup\n");
- fprintf(out,"%% Keyboard %d\n",state->nPages+1);
- if (state->nPages==0) {
- fprintf(out,"/realwidth devwidth def\n");
- fprintf(out,"/realheight devheight def\n");
- fprintf(out,"/devheight realheight 3 div def\n");
- }
- fprintf(out,"0 devheight dup 2 div add translate\n");
+ else if ((state->nPages & 1) == 0) { /* even page */
+ int realPage;
+
+ realPage = state->nPages / 2 + 1;
+ fprintf(out, "%%%%Page: %d %d\n", realPage, realPage);
+ fprintf(out, "%%%%BeginPageSetup\n");
+ fprintf(out, "%% Keyboard %d\n", state->nPages + 1);
+ if (state->nPages == 0) {
+ fprintf(out, "/realwidth devwidth def\n");
+ fprintf(out, "/realheight devheight def\n");
+ fprintf(out, "/devheight realheight 3 div def\n");
+ }
+ fprintf(out, "0 devheight dup 2 div add translate\n");
}
- else {
- fprintf(out,"%% Keyboard %d\n",state->nPages+1);
+ else {
+ fprintf(out, "%% Keyboard %d\n", state->nPages + 1);
}
- fprintf(out,"save\n");
- fprintf(out,"landscape?\n");
+ fprintf(out, "save\n");
+ fprintf(out, "landscape?\n");
if (state->args->scaleToFit) {
- fprintf(out,"%% Scale keyboard to fit on the page\n");
- fprintf(out,"/kbdscale pwidth 72 sub kbdwidth div def\n");
- fprintf(out,"/kbdscalewidth kbdwidth kbdscale mul def\n");
- fprintf(out,"/kbdscaleheight kbdheight kbdscale mul def\n");
- fprintf(out,"/kbx 36 def\n");
- fprintf(out,"/kby pheight kbdscaleheight sub 2 div def\n");
- PSGSave(out,state);
- fprintf(out,"kbx kby translate\n");
- fprintf(out,"kbdscale kbdscale scale\n");
+ fprintf(out, "%% Scale keyboard to fit on the page\n");
+ fprintf(out, "/kbdscale pwidth 72 sub kbdwidth div def\n");
+ fprintf(out, "/kbdscalewidth kbdwidth kbdscale mul def\n");
+ fprintf(out, "/kbdscaleheight kbdheight kbdscale mul def\n");
+ fprintf(out, "/kbx 36 def\n");
+ fprintf(out, "/kby pheight kbdscaleheight sub 2 div def\n");
+ PSGSave(out, state);
+ fprintf(out, "kbx kby translate\n");
+ fprintf(out, "kbdscale kbdscale scale\n");
}
else {
- fprintf(out,"%% Draw keyboard full size\n");
- fprintf(out,"/kbdscale 1 def\n");
- fprintf(out,"/kbdscalewidth kbdwidth mm10 def\n");
- fprintf(out,"/kbdscaleheight kbdheight mm10 def\n");
- fprintf(out,"/kbx pwidth kbdscalewidth sub 2 div def\n");
- fprintf(out,"/kby pheight kbdscaleheight sub 2 div def\n");
- PSGSave(out,state);
- fprintf(out,"kbx kby translate\n");
- fprintf(out,"72 254 div dup scale\n");
+ fprintf(out, "%% Draw keyboard full size\n");
+ fprintf(out, "/kbdscale 1 def\n");
+ fprintf(out, "/kbdscalewidth kbdwidth mm10 def\n");
+ fprintf(out, "/kbdscaleheight kbdheight mm10 def\n");
+ fprintf(out, "/kbx pwidth kbdscalewidth sub 2 div def\n");
+ fprintf(out, "/kby pheight kbdscaleheight sub 2 div def\n");
+ PSGSave(out, state);
+ fprintf(out, "kbx kby translate\n");
+ fprintf(out, "72 254 div dup scale\n");
}
if (drawBorder) {
- if (state->args->wantColor) {
- PSSetColor(out,state,geom->base_color->pixel);
- fprintf(out," 0 0 moveto\n");
- fprintf(out,"%3d 0 lineto\n",geom->width_mm);
- fprintf(out,"%3d %3d lineto\n",geom->width_mm,geom->height_mm);
- fprintf(out," 0 %3d lineto\n",geom->height_mm);
- fprintf(out,"closepath fill\n");
- }
- PSSetColor(out,state,state->black);
- fprintf(out," 0 0 moveto\n");
- fprintf(out,"%3d 0 lineto\n",geom->width_mm);
- fprintf(out,"%3d %3d lineto\n",geom->width_mm,geom->height_mm);
- fprintf(out," 0 %3d lineto\n",geom->height_mm);
- fprintf(out,"closepath stroke\n");
+ if (state->args->wantColor) {
+ PSSetColor(out, state, geom->base_color->pixel);
+ fprintf(out, " 0 0 moveto\n");
+ fprintf(out, "%3d 0 lineto\n", geom->width_mm);
+ fprintf(out, "%3d %3d lineto\n", geom->width_mm, geom->height_mm);
+ fprintf(out, " 0 %3d lineto\n", geom->height_mm);
+ fprintf(out, "closepath fill\n");
+ }
+ PSSetColor(out, state, state->black);
+ fprintf(out, " 0 0 moveto\n");
+ fprintf(out, "%3d 0 lineto\n", geom->width_mm);
+ fprintf(out, "%3d %3d lineto\n", geom->width_mm, geom->height_mm);
+ fprintf(out, " 0 %3d lineto\n", geom->height_mm);
+ fprintf(out, "closepath stroke\n");
}
- fprintf(out,"%%%%EndPageSetup\n");
+ fprintf(out, "%%%%EndPageSetup\n");
return;
}
static void
PSPageTrailer(FILE *out, PSState *state)
{
-char * name;
-XkbDescPtr xkb;
-XkbGeometryPtr geom;
-XkbPropertyPtr prop;
-int p,baseline;
-
- xkb= state->xkb;
- geom= state->geom;
- if (state->args->grid>0) {
- fprintf(out,"%% Draw a %dmm grid\n",state->args->grid);
- fprintf(out,"0 setlinewidth\n");
- fprintf(out,"0.25 setgray\n");
- fprintf(out," 0 %d %d {\n",state->args->grid*10,geom->width_mm);
- fprintf(out," /GX exch def\n");
- fprintf(out," GX 0 moveto GX %d lineto stroke\n",geom->height_mm);
- fprintf(out,"} for\n");
- fprintf(out," 0 %d %d {\n",state->args->grid*10,geom->height_mm);
- fprintf(out," /GY exch def\n");
- fprintf(out," 0 GY moveto %d GY lineto stroke\n",geom->width_mm);
- fprintf(out,"} for\n");
+ char *name;
+ XkbDescPtr xkb;
+ XkbGeometryPtr geom;
+ XkbPropertyPtr prop;
+ int p, baseline;
+
+ xkb = state->xkb;
+ geom = state->geom;
+ if (state->args->grid > 0) {
+ fprintf(out, "%% Draw a %dmm grid\n", state->args->grid);
+ fprintf(out, "0 setlinewidth\n");
+ fprintf(out, "0.25 setgray\n");
+ fprintf(out, " 0 %d %d {\n", state->args->grid * 10, geom->width_mm);
+ fprintf(out, " /GX exch def\n");
+ fprintf(out, " GX 0 moveto GX %d lineto stroke\n", geom->height_mm);
+ fprintf(out, "} for\n");
+ fprintf(out, " 0 %d %d {\n", state->args->grid * 10, geom->height_mm);
+ fprintf(out, " /GY exch def\n");
+ fprintf(out, " 0 GY moveto %d GY lineto stroke\n", geom->width_mm);
+ fprintf(out, "} for\n");
}
- PSGRestore(out,state);
- name= NULL;
- for (p=0,prop=geom->properties;p<geom->num_properties;p++,prop++) {
- if ((prop->value!=NULL)&&(uStrCaseEqual(prop->name,"description"))) {
- name= prop->value;
- break;
- }
+ PSGRestore(out, state);
+ name = NULL;
+ for (p = 0, prop = geom->properties; p < geom->num_properties; p++, prop++) {
+ if ((prop->value != NULL) && (uStrCaseEqual(prop->name, "description"))) {
+ name = prop->value;
+ break;
+ }
}
- if ((!state->args->wantEPS)&&
- ((state->kbPerPage==1)||((state->nPages&1)==1)||
- (state->nPages==state->totalKB))) {
- if ((name==NULL)&&(geom->name!=None))
- name= XkbAtomGetString(state->dpy,geom->name);
-
- baseline= 16;
- if ((name!=NULL)||(state->args->label==LABEL_SYMBOLS)) {
- PSSetColor(out,state,state->black);
- PSSetFont(out,state,FONT_LATIN1,14,False);
- }
- if (state->args->label==LABEL_SYMBOLS) {
- char buf[40],*sName= NULL, *lbuf;
- Atom sAtom;
-
- if (state->args->nLabelGroups==1)
- sprintf(buf,"Group %d",state->args->baseLabelGroup+1);
- else sprintf(buf,"Groups %d-%d",state->args->baseLabelGroup+1,
- state->args->baseLabelGroup+state->args->nLabelGroups);
- fprintf(out,"kbx kbdscalewidth 0 (%s) centeroffset pop add\n",buf);
- fprintf(out," kby kbdscaleheight add %d add\n",baseline);
- fprintf(out," moveto\n");
- fprintf(out,"1 -1 scale (%s) show 1 -1 scale\n",buf);
- baseline+= 16;
-
- if (xkb->names!=NULL) sAtom= xkb->names->symbols;
- else sAtom= None;
- if (sAtom!=None)
- sName= XkbAtomGetString(state->dpy,sAtom);
- if (sName==NULL)
- sName= "(unknown)";
-
- lbuf = uAlloc(10+strlen(sName));
- if (!lbuf) {
- uFatalError("Can't allocate memory for string\n");
- }
- sprintf(lbuf,"Layout: %s",sName);
- fprintf(out,"kbx kbdscalewidth 0 (%s) centeroffset pop add\n",lbuf);
- fprintf(out," kby kbdscaleheight add %d add\n",baseline);
- fprintf(out," moveto\n");
- fprintf(out,"1 -1 scale (%s) show 1 -1 scale\n",lbuf);
- baseline+= 16;
- free(lbuf);
- }
- if (name!=NULL) {
- fprintf(out,"kbx kbdscalewidth 0 (%s) centeroffset pop add\n",name);
- fprintf(out," kby kbdscaleheight add %d add\n",baseline);
- fprintf(out," moveto\n");
- fprintf(out,"1 -1 scale (%s) show 1 -1 scale\n",name);
- baseline+= 16;
- }
- if (state->args->label==LABEL_KEYCODE) {
- char *sName= NULL, *lbuf;
- Atom sAtom;
-
- if (xkb->names!=NULL) sAtom= xkb->names->keycodes;
- else sAtom= None;
- if (sAtom!=None)
- sName= XkbAtomGetString(state->dpy,sAtom);
- if (sName==NULL)
- sName= "(unknown)";
-
- lbuf = uAlloc(12+strlen(sName));
- if (!lbuf) {
- uFatalError("Can't allocate memory for string\n");
- }
- sprintf(lbuf,"Keycodes: %s",sName);
- fprintf(out,"kbx kbdscalewidth 0 (%s) centeroffset pop add\n",lbuf);
- fprintf(out," kby kbdscaleheight add %d add\n",baseline);
- fprintf(out," moveto\n");
- fprintf(out,"1 -1 scale (%s) show 1 -1 scale\n",lbuf);
- baseline+= 16;
- free(lbuf);
- }
- if (state->args->copies>1) {
- for (p=1;p<state->args->copies;p++)
- fprintf(out,"copypage\n");
- }
- fprintf(out,"showpage\n");
- fprintf(out,"restore\n");
- fprintf(out,"%% Done with keyboard/page %d\n",state->nPages+1);
+ if ((!state->args->wantEPS) &&
+ ((state->kbPerPage == 1) || ((state->nPages & 1) == 1) ||
+ (state->nPages == state->totalKB))) {
+ if ((name == NULL) && (geom->name != None))
+ name = XkbAtomGetString(state->dpy, geom->name);
+
+ baseline = 16;
+ if ((name != NULL) || (state->args->label == LABEL_SYMBOLS)) {
+ PSSetColor(out, state, state->black);
+ PSSetFont(out, state, FONT_LATIN1, 14, False);
+ }
+ if (state->args->label == LABEL_SYMBOLS) {
+ char buf[40], *sName = NULL, *lbuf;
+ Atom sAtom;
+
+ if (state->args->nLabelGroups == 1)
+ sprintf(buf, "Group %d", state->args->baseLabelGroup + 1);
+ else
+ sprintf(buf, "Groups %d-%d", state->args->baseLabelGroup + 1,
+ state->args->baseLabelGroup +
+ state->args->nLabelGroups);
+ fprintf(out, "kbx kbdscalewidth 0 (%s) centeroffset pop add\n",
+ buf);
+ fprintf(out, " kby kbdscaleheight add %d add\n", baseline);
+ fprintf(out, " moveto\n");
+ fprintf(out, "1 -1 scale (%s) show 1 -1 scale\n", buf);
+ baseline += 16;
+
+ if (xkb->names != NULL)
+ sAtom = xkb->names->symbols;
+ else
+ sAtom = None;
+ if (sAtom != None)
+ sName = XkbAtomGetString(state->dpy, sAtom);
+ if (sName == NULL)
+ sName = "(unknown)";
+
+ lbuf = uAlloc(10 + strlen(sName));
+ if (!lbuf) {
+ uFatalError("Can't allocate memory for string\n");
+ }
+ sprintf(lbuf, "Layout: %s", sName);
+ fprintf(out, "kbx kbdscalewidth 0 (%s) centeroffset pop add\n",
+ lbuf);
+ fprintf(out, " kby kbdscaleheight add %d add\n", baseline);
+ fprintf(out, " moveto\n");
+ fprintf(out, "1 -1 scale (%s) show 1 -1 scale\n", lbuf);
+ baseline += 16;
+ free(lbuf);
+ }
+ if (name != NULL) {
+ fprintf(out, "kbx kbdscalewidth 0 (%s) centeroffset pop add\n",
+ name);
+ fprintf(out, " kby kbdscaleheight add %d add\n", baseline);
+ fprintf(out, " moveto\n");
+ fprintf(out, "1 -1 scale (%s) show 1 -1 scale\n", name);
+ baseline += 16;
+ }
+ if (state->args->label == LABEL_KEYCODE) {
+ char *sName = NULL, *lbuf;
+ Atom sAtom;
+
+ if (xkb->names != NULL)
+ sAtom = xkb->names->keycodes;
+ else
+ sAtom = None;
+ if (sAtom != None)
+ sName = XkbAtomGetString(state->dpy, sAtom);
+ if (sName == NULL)
+ sName = "(unknown)";
+
+ lbuf = uAlloc(12 + strlen(sName));
+ if (!lbuf) {
+ uFatalError("Can't allocate memory for string\n");
+ }
+ sprintf(lbuf, "Keycodes: %s", sName);
+ fprintf(out, "kbx kbdscalewidth 0 (%s) centeroffset pop add\n",
+ lbuf);
+ fprintf(out, " kby kbdscaleheight add %d add\n", baseline);
+ fprintf(out, " moveto\n");
+ fprintf(out, "1 -1 scale (%s) show 1 -1 scale\n", lbuf);
+ baseline += 16;
+ free(lbuf);
+ }
+ if (state->args->copies > 1) {
+ for (p = 1; p < state->args->copies; p++)
+ fprintf(out, "copypage\n");
+ }
+ fprintf(out, "showpage\n");
+ fprintf(out, "restore\n");
+ fprintf(out, "%% Done with keyboard/page %d\n", state->nPages + 1);
}
else {
- if ((!state->args->wantEPS)&&(state->args->label==LABEL_SYMBOLS)) {
- char buf[40];
- baseline= 16;
- PSSetColor(out,state,state->black);
- PSSetFont(out,state,FONT_LATIN1,14,False);
- if (state->args->nLabelGroups==1)
- sprintf(buf,"Group %d",state->args->baseLabelGroup+1);
- else sprintf(buf,"Groups %d-%d",state->args->baseLabelGroup+1,
- state->args->baseLabelGroup+state->args->nLabelGroups+1);
- fprintf(out,"kbx kbdscalewidth 0 (%s) centeroffset pop add\n",buf);
- fprintf(out," kby kbdscaleheight add %d add\n",baseline);
- fprintf(out," moveto\n");
- fprintf(out,"1 -1 scale (%s) show 1 -1 scale\n",buf);
- baseline+= 16;
- }
- fprintf(out,"restore\n");
- fprintf(out,"%% Done with keyboard %d\n",state->nPages+1);
- fprintf(out,"0 devheight -1 mul translate %% next keyboard\n");
+ if ((!state->args->wantEPS) && (state->args->label == LABEL_SYMBOLS)) {
+ char buf[40];
+
+ baseline = 16;
+ PSSetColor(out, state, state->black);
+ PSSetFont(out, state, FONT_LATIN1, 14, False);
+ if (state->args->nLabelGroups == 1)
+ sprintf(buf, "Group %d", state->args->baseLabelGroup + 1);
+ else
+ sprintf(buf, "Groups %d-%d", state->args->baseLabelGroup + 1,
+ state->args->baseLabelGroup +
+ state->args->nLabelGroups + 1);
+ fprintf(out, "kbx kbdscalewidth 0 (%s) centeroffset pop add\n",
+ buf);
+ fprintf(out, " kby kbdscaleheight add %d add\n", baseline);
+ fprintf(out, " moveto\n");
+ fprintf(out, "1 -1 scale (%s) show 1 -1 scale\n", buf);
+ baseline += 16;
+ }
+ fprintf(out, "restore\n");
+ fprintf(out, "%% Done with keyboard %d\n", state->nPages + 1);
+ fprintf(out, "0 devheight -1 mul translate %% next keyboard\n");
}
state->nPages++;
- state->color= state->black;
- state->font= -1;
+ state->color = state->black;
+ state->font = -1;
return;
}
static void
PSDoodad(FILE *out, PSState *state, XkbDoodadPtr doodad)
{
-XkbDescPtr xkb;
-char *name,*dname;
-int sz,leading;
-
- xkb= state->xkb;
- if (doodad->any.name!=None)
- dname= XkbAtomGetString(xkb->dpy,doodad->any.name);
- else dname= "NoName";
+ XkbDescPtr xkb;
+ char *name, *dname;
+ int sz, leading;
+
+ xkb = state->xkb;
+ if (doodad->any.name != None)
+ dname = XkbAtomGetString(xkb->dpy, doodad->any.name);
+ else
+ dname = "NoName";
switch (doodad->any.type) {
- case XkbOutlineDoodad:
- case XkbSolidDoodad:
- name= XkbAtomGetString(xkb->dpy,
- XkbShapeDoodadShape(xkb->geom,&doodad->shape)->name);
- if (state->args->wantColor) {
- PSSetColor(out,state,doodad->shape.color_ndx);
- if (doodad->any.type!=XkbOutlineDoodad) {
- fprintf(out,"true %d %d %d %s %% Doodad %s\n",
- doodad->shape.angle,
- doodad->shape.left,doodad->shape.top,
- name,dname);
- PSSetColor(out,state,state->black);
- }
- fprintf(out,"false %d %d %d %s %% Doodad %s\n",
- doodad->shape.angle,
- doodad->shape.left,doodad->shape.top,
- name,dname);
- }
- else {
- fprintf(out,"false %d %d %d %s %% Doodad %s\n",
- doodad->shape.angle,
- doodad->shape.left,doodad->shape.top,
- name,dname);
- }
- break;
- case XkbTextDoodad:
- fprintf(out,"%% Doodad %s\n",dname);
- PSSetColor(out,state,doodad->text.color_ndx);
- PSGSave(out,state);
- fprintf(out,"%d %d translate\n",doodad->text.left,doodad->text.top);
- if (doodad->text.angle!=0)
- fprintf(out,"%s rotate\n",
- XkbGeomFPText(doodad->text.angle,XkbMessage));
- sz= 14;
- if (doodad->text.font) {
- FontStuff stuff;
- if (CrackXLFDName(doodad->text.font,&stuff)) {
- if (stuff.ptSize>0)
- sz= stuff.ptSize/10;
- ClearFontStuff(&stuff);
- }
- }
- PSSetFont(out,state,FONT_LATIN1,sz,True);
- leading= (sz*12)/10;
- if (strchr(doodad->text.text,'\n')==NULL) {
- fprintf(out,"0 %d pts moveto 1 -1 scale\n",(leading*8)/10);
- fprintf(out,"(%s) show\n",doodad->text.text);
- }
- else {
- char *tmp,*buf,*end;
- int offset= (leading*8/10);
- tmp= buf= uStringDup(doodad->text.text);
- while (tmp!=NULL) {
- end= strchr(tmp,'\n');
- if (end!=NULL)
- *end++= '\0';
- fprintf(out,"0 %d pts moveto 1 -1 scale\n",offset);
- fprintf(out,"(%s) show 1 -1 scale\n",tmp);
- offset+= leading;
- tmp= end;
- }
- free(buf);
- }
- PSGRestore(out,state);
- break;
- case XkbIndicatorDoodad:
- name= XkbAtomGetString(xkb->dpy,
- XkbIndicatorDoodadShape(xkb->geom,&doodad->indicator)->name);
- if (state->args->wantColor) {
- PSSetColor(out,state,doodad->indicator.off_color_ndx);
- fprintf(out,"true 0 %d %d %s %% Doodad %s\n",
- doodad->indicator.left,doodad->indicator.top,
- name,dname);
- PSSetColor(out,state,state->black);
- }
- fprintf(out,"false 0 %d %d %s %% Doodad %s\n",
- doodad->indicator.left,doodad->indicator.top,
- name,dname);
- break;
- case XkbLogoDoodad:
- name= XkbAtomGetString(xkb->dpy,
- XkbLogoDoodadShape(xkb->geom,&doodad->logo)->name);
- if (state->args->wantColor)
- PSSetColor(out,state,doodad->shape.color_ndx);
- fprintf(out,"false %d %d %d %s %% Doodad %s\n",
- doodad->shape.angle,
- doodad->shape.left,doodad->shape.top,
- name,dname);
- break;
+ case XkbOutlineDoodad:
+ case XkbSolidDoodad:
+ name = XkbAtomGetString(xkb->dpy,
+ XkbShapeDoodadShape(xkb->geom,
+ &doodad->shape)->name);
+ if (state->args->wantColor) {
+ PSSetColor(out, state, doodad->shape.color_ndx);
+ if (doodad->any.type != XkbOutlineDoodad) {
+ fprintf(out, "true %d %d %d %s %% Doodad %s\n",
+ doodad->shape.angle,
+ doodad->shape.left, doodad->shape.top, name, dname);
+ PSSetColor(out, state, state->black);
+ }
+ fprintf(out, "false %d %d %d %s %% Doodad %s\n",
+ doodad->shape.angle,
+ doodad->shape.left, doodad->shape.top, name, dname);
+ }
+ else {
+ fprintf(out, "false %d %d %d %s %% Doodad %s\n",
+ doodad->shape.angle,
+ doodad->shape.left, doodad->shape.top, name, dname);
+ }
+ break;
+ case XkbTextDoodad:
+ fprintf(out, "%% Doodad %s\n", dname);
+ PSSetColor(out, state, doodad->text.color_ndx);
+ PSGSave(out, state);
+ fprintf(out, "%d %d translate\n", doodad->text.left, doodad->text.top);
+ if (doodad->text.angle != 0)
+ fprintf(out, "%s rotate\n",
+ XkbGeomFPText(doodad->text.angle, XkbMessage));
+ sz = 14;
+ if (doodad->text.font) {
+ FontStuff stuff;
+
+ if (CrackXLFDName(doodad->text.font, &stuff)) {
+ if (stuff.ptSize > 0)
+ sz = stuff.ptSize / 10;
+ ClearFontStuff(&stuff);
+ }
+ }
+ PSSetFont(out, state, FONT_LATIN1, sz, True);
+ leading = (sz * 12) / 10;
+ if (strchr(doodad->text.text, '\n') == NULL) {
+ fprintf(out, "0 %d pts moveto 1 -1 scale\n", (leading * 8) / 10);
+ fprintf(out, "(%s) show\n", doodad->text.text);
+ }
+ else {
+ char *tmp, *buf, *end;
+ int offset = (leading * 8 / 10);
+
+ tmp = buf = uStringDup(doodad->text.text);
+ while (tmp != NULL) {
+ end = strchr(tmp, '\n');
+ if (end != NULL)
+ *end++ = '\0';
+ fprintf(out, "0 %d pts moveto 1 -1 scale\n", offset);
+ fprintf(out, "(%s) show 1 -1 scale\n", tmp);
+ offset += leading;
+ tmp = end;
+ }
+ free(buf);
+ }
+ PSGRestore(out, state);
+ break;
+ case XkbIndicatorDoodad:
+ name = XkbAtomGetString(xkb->dpy,
+ XkbIndicatorDoodadShape(xkb->geom,
+ &doodad->indicator)->
+ name);
+ if (state->args->wantColor) {
+ PSSetColor(out, state, doodad->indicator.off_color_ndx);
+ fprintf(out, "true 0 %d %d %s %% Doodad %s\n",
+ doodad->indicator.left, doodad->indicator.top, name, dname);
+ PSSetColor(out, state, state->black);
+ }
+ fprintf(out, "false 0 %d %d %s %% Doodad %s\n",
+ doodad->indicator.left, doodad->indicator.top, name, dname);
+ break;
+ case XkbLogoDoodad:
+ name = XkbAtomGetString(xkb->dpy,
+ XkbLogoDoodadShape(xkb->geom,
+ &doodad->logo)->name);
+ if (state->args->wantColor)
+ PSSetColor(out, state, doodad->shape.color_ndx);
+ fprintf(out, "false %d %d %d %s %% Doodad %s\n",
+ doodad->shape.angle,
+ doodad->shape.left, doodad->shape.top, name, dname);
+ break;
}
return;
}
@@ -1011,159 +1068,233 @@ int sz,leading;
/***====================================================================***/
static Bool
-PSKeycapsSymbol(KeySym sym, unsigned char *buf,
- int *font_rtrn, int *sz_rtrn, PSState *state)
+PSKeycapsSymbol(KeySym sym, unsigned char *buf,
+ int *font_rtrn, int *sz_rtrn, PSState *state)
{
- if (state->args->wantSymbols==NO_SYMBOLS)
- return False;
-
- if (font_rtrn!=NULL)
- *font_rtrn= FONT_ISOCAPS;
- if (sz_rtrn!=NULL)
- *sz_rtrn= SZ_LARGE;
- buf[1]= '\0';
+ if (state->args->wantSymbols == NO_SYMBOLS)
+ return False;
+
+ if (font_rtrn != NULL)
+ *font_rtrn = FONT_ISOCAPS;
+ if (sz_rtrn != NULL)
+ *sz_rtrn = SZ_LARGE;
+ buf[1] = '\0';
switch (sym) {
- case XK_Shift_L: case XK_Shift_R:
- buf[0]= XKC_ISO_Shift; return True;
- case XK_Shift_Lock:
- buf[0]= XKC_ISO_Shift_Lock; return True;
- case XK_ISO_Lock:
- buf[0]= XKC_ISO_Caps_Lock; return True;
- case XK_BackSpace:
- buf[0]= XKC_ISO_Backspace; return True;
- case XK_Return:
- buf[0]= XKC_ISO_Return; return True;
- case XK_Up: case XK_KP_Up:
- buf[0]= XKC_ISO_Up; return True;
- case XK_Down: case XK_KP_Down:
- buf[0]= XKC_ISO_Down; return True;
- case XK_Left: case XK_KP_Left:
- buf[0]= XKC_ISO_Left; return True;
- case XK_Right: case XK_KP_Right:
- buf[0]= XKC_ISO_Right; return True;
- case XK_Tab:
- buf[0]= XKC_ISO_Tab; return True;
- case XK_ISO_Left_Tab:
- buf[0]= XKC_ISO_Left_Tab; return True;
+ case XK_Shift_L:
+ case XK_Shift_R:
+ buf[0] = XKC_ISO_Shift;
+ return True;
+ case XK_Shift_Lock:
+ buf[0] = XKC_ISO_Shift_Lock;
+ return True;
+ case XK_ISO_Lock:
+ buf[0] = XKC_ISO_Caps_Lock;
+ return True;
+ case XK_BackSpace:
+ buf[0] = XKC_ISO_Backspace;
+ return True;
+ case XK_Return:
+ buf[0] = XKC_ISO_Return;
+ return True;
+ case XK_Up:
+ case XK_KP_Up:
+ buf[0] = XKC_ISO_Up;
+ return True;
+ case XK_Down:
+ case XK_KP_Down:
+ buf[0] = XKC_ISO_Down;
+ return True;
+ case XK_Left:
+ case XK_KP_Left:
+ buf[0] = XKC_ISO_Left;
+ return True;
+ case XK_Right:
+ case XK_KP_Right:
+ buf[0] = XKC_ISO_Right;
+ return True;
+ case XK_Tab:
+ buf[0] = XKC_ISO_Tab;
+ return True;
+ case XK_ISO_Left_Tab:
+ buf[0] = XKC_ISO_Left_Tab;
+ return True;
}
- if (state->args->wantSymbols!=ALL_SYMBOLS)
- return False;
+ if (state->args->wantSymbols != ALL_SYMBOLS)
+ return False;
switch (sym) {
- case XK_Caps_Lock:
- buf[0]= XKC_ISO_Caps_Lock; return True;
- case XK_Num_Lock:
- buf[0]= XKC_ISO_Num_Lock; return True;
- case XK_ISO_Level3_Shift:
- buf[0]= XKC_ISO_Level3_Shift; return True;
- case XK_ISO_Level3_Lock:
- buf[0]= XKC_ISO_Level3_Lock; return True;
- case XK_ISO_Next_Group: case XK_ISO_Group_Shift:
- buf[0]= XKC_ISO_Next_Group; return True;
- case XK_ISO_Next_Group_Lock:
- buf[0]= XKC_ISO_Next_Group_Lock;return True;
- case XK_space:
- buf[0]= XKC_ISO_Space; return True;
- case XK_nobreakspace:
- buf[0]= XKC_ISO_No_Break_Space; return True;
- case XK_Insert:
- buf[0]= XKC_ISO_Insert; return True;
- case XK_ISO_Continuous_Underline:
- buf[0]= XKC_ISO_Continuous_Underline;return True;
- case XK_ISO_Discontinuous_Underline:
- buf[0]= XKC_ISO_Discontinuous_Underline;return True;
- case XK_ISO_Emphasize:
- buf[0]= XKC_ISO_Emphasize; return True;
- case XK_Multi_key:
- buf[0]= XKC_ISO_Compose; return True;
- case XK_ISO_Center_Object:
- buf[0]= XKC_ISO_Center_Object; return True;
- case XK_Delete:
- buf[0]= XKC_ISO_Delete; return True;
- case XK_Clear:
- buf[0]= XKC_ISO_Clear_Screen; return True;
- case XK_Scroll_Lock:
- buf[0]= XKC_ISO_Scroll_Lock; return True;
- case XK_Help:
- buf[0]= XKC_ISO_Help; return True;
- case XK_Print:
- buf[0]= XKC_ISO_Print_Screen; return True;
- case XK_ISO_Enter:
- buf[0]= XKC_ISO_Enter; return True;
- case XK_Alt_L: case XK_Alt_R:
- buf[0]= XKC_ISO_Alt; return True;
- case XK_Control_L: case XK_Control_R:
- buf[0]= XKC_ISO_Control; return True;
- case XK_Pause:
- buf[0]= XKC_ISO_Pause; return True;
- case XK_Break:
- buf[0]= XKC_ISO_Break; return True;
- case XK_Escape:
- buf[0]= XKC_ISO_Escape; return True;
- case XK_Undo:
- buf[0]= XKC_ISO_Undo; return True;
- case XK_ISO_Fast_Cursor_Up:
- buf[0]= XKC_ISO_Fast_Cursor_Up; return True;
- case XK_ISO_Fast_Cursor_Down:
- buf[0]= XKC_ISO_Fast_Cursor_Down;return True;
- case XK_ISO_Fast_Cursor_Left:
- buf[0]= XKC_ISO_Fast_Cursor_Left;return True;
- case XK_ISO_Fast_Cursor_Right:
- buf[0]= XKC_ISO_Fast_Cursor_Right;return True;
- case XK_Home:
- buf[0]= XKC_ISO_Home; return True;
- case XK_End:
- buf[0]= XKC_ISO_End; return True;
- case XK_Page_Up:
- buf[0]= XKC_ISO_Page_Up; return True;
- case XK_Page_Down:
- buf[0]= XKC_ISO_Page_Down; return True;
- case XK_ISO_Move_Line_Up:
- buf[0]= XKC_ISO_Move_Line_Up; return True;
- case XK_ISO_Move_Line_Down:
- buf[0]= XKC_ISO_Move_Line_Down; return True;
- case XK_ISO_Partial_Line_Up:
- buf[0]= XKC_ISO_Partial_Line_Up;return True;
- case XK_ISO_Partial_Line_Down:
- buf[0]= XKC_ISO_Partial_Line_Down;return True;
- case XK_ISO_Partial_Space_Left:
- buf[0]= XKC_ISO_Partial_Space_Left;return True;
- case XK_ISO_Partial_Space_Right:
- buf[0]= XKC_ISO_Partial_Space_Right;return True;
- case XK_ISO_Set_Margin_Left:
- buf[0]= XKC_ISO_Set_Margin_Left;return True;
- case XK_ISO_Set_Margin_Right:
- buf[0]= XKC_ISO_Set_Margin_Right;return True;
- case XK_ISO_Release_Margin_Left:
- buf[0]= XKC_ISO_Release_Margin_Left;return True;
- case XK_ISO_Release_Margin_Right:
- buf[0]= XKC_ISO_Release_Margin_Right;return True;
- case XK_ISO_Release_Both_Margins:
- buf[0]= XKC_ISO_Release_Both_Margins;return True;
- case XK_ISO_Prev_Group:
- buf[0]= XKC_ISO_Prev_Group; return True;
- case XK_ISO_Prev_Group_Lock:
- buf[0]= XKC_ISO_Prev_Group_Lock; return True;
+ case XK_Caps_Lock:
+ buf[0] = XKC_ISO_Caps_Lock;
+ return True;
+ case XK_Num_Lock:
+ buf[0] = XKC_ISO_Num_Lock;
+ return True;
+ case XK_ISO_Level3_Shift:
+ buf[0] = XKC_ISO_Level3_Shift;
+ return True;
+ case XK_ISO_Level3_Lock:
+ buf[0] = XKC_ISO_Level3_Lock;
+ return True;
+ case XK_ISO_Next_Group:
+ case XK_ISO_Group_Shift:
+ buf[0] = XKC_ISO_Next_Group;
+ return True;
+ case XK_ISO_Next_Group_Lock:
+ buf[0] = XKC_ISO_Next_Group_Lock;
+ return True;
+ case XK_space:
+ buf[0] = XKC_ISO_Space;
+ return True;
+ case XK_nobreakspace:
+ buf[0] = XKC_ISO_No_Break_Space;
+ return True;
+ case XK_Insert:
+ buf[0] = XKC_ISO_Insert;
+ return True;
+ case XK_ISO_Continuous_Underline:
+ buf[0] = XKC_ISO_Continuous_Underline;
+ return True;
+ case XK_ISO_Discontinuous_Underline:
+ buf[0] = XKC_ISO_Discontinuous_Underline;
+ return True;
+ case XK_ISO_Emphasize:
+ buf[0] = XKC_ISO_Emphasize;
+ return True;
+ case XK_Multi_key:
+ buf[0] = XKC_ISO_Compose;
+ return True;
+ case XK_ISO_Center_Object:
+ buf[0] = XKC_ISO_Center_Object;
+ return True;
+ case XK_Delete:
+ buf[0] = XKC_ISO_Delete;
+ return True;
+ case XK_Clear:
+ buf[0] = XKC_ISO_Clear_Screen;
+ return True;
+ case XK_Scroll_Lock:
+ buf[0] = XKC_ISO_Scroll_Lock;
+ return True;
+ case XK_Help:
+ buf[0] = XKC_ISO_Help;
+ return True;
+ case XK_Print:
+ buf[0] = XKC_ISO_Print_Screen;
+ return True;
+ case XK_ISO_Enter:
+ buf[0] = XKC_ISO_Enter;
+ return True;
+ case XK_Alt_L:
+ case XK_Alt_R:
+ buf[0] = XKC_ISO_Alt;
+ return True;
+ case XK_Control_L:
+ case XK_Control_R:
+ buf[0] = XKC_ISO_Control;
+ return True;
+ case XK_Pause:
+ buf[0] = XKC_ISO_Pause;
+ return True;
+ case XK_Break:
+ buf[0] = XKC_ISO_Break;
+ return True;
+ case XK_Escape:
+ buf[0] = XKC_ISO_Escape;
+ return True;
+ case XK_Undo:
+ buf[0] = XKC_ISO_Undo;
+ return True;
+ case XK_ISO_Fast_Cursor_Up:
+ buf[0] = XKC_ISO_Fast_Cursor_Up;
+ return True;
+ case XK_ISO_Fast_Cursor_Down:
+ buf[0] = XKC_ISO_Fast_Cursor_Down;
+ return True;
+ case XK_ISO_Fast_Cursor_Left:
+ buf[0] = XKC_ISO_Fast_Cursor_Left;
+ return True;
+ case XK_ISO_Fast_Cursor_Right:
+ buf[0] = XKC_ISO_Fast_Cursor_Right;
+ return True;
+ case XK_Home:
+ buf[0] = XKC_ISO_Home;
+ return True;
+ case XK_End:
+ buf[0] = XKC_ISO_End;
+ return True;
+ case XK_Page_Up:
+ buf[0] = XKC_ISO_Page_Up;
+ return True;
+ case XK_Page_Down:
+ buf[0] = XKC_ISO_Page_Down;
+ return True;
+ case XK_ISO_Move_Line_Up:
+ buf[0] = XKC_ISO_Move_Line_Up;
+ return True;
+ case XK_ISO_Move_Line_Down:
+ buf[0] = XKC_ISO_Move_Line_Down;
+ return True;
+ case XK_ISO_Partial_Line_Up:
+ buf[0] = XKC_ISO_Partial_Line_Up;
+ return True;
+ case XK_ISO_Partial_Line_Down:
+ buf[0] = XKC_ISO_Partial_Line_Down;
+ return True;
+ case XK_ISO_Partial_Space_Left:
+ buf[0] = XKC_ISO_Partial_Space_Left;
+ return True;
+ case XK_ISO_Partial_Space_Right:
+ buf[0] = XKC_ISO_Partial_Space_Right;
+ return True;
+ case XK_ISO_Set_Margin_Left:
+ buf[0] = XKC_ISO_Set_Margin_Left;
+ return True;
+ case XK_ISO_Set_Margin_Right:
+ buf[0] = XKC_ISO_Set_Margin_Right;
+ return True;
+ case XK_ISO_Release_Margin_Left:
+ buf[0] = XKC_ISO_Release_Margin_Left;
+ return True;
+ case XK_ISO_Release_Margin_Right:
+ buf[0] = XKC_ISO_Release_Margin_Right;
+ return True;
+ case XK_ISO_Release_Both_Margins:
+ buf[0] = XKC_ISO_Release_Both_Margins;
+ return True;
+ case XK_ISO_Prev_Group:
+ buf[0] = XKC_ISO_Prev_Group;
+ return True;
+ case XK_ISO_Prev_Group_Lock:
+ buf[0] = XKC_ISO_Prev_Group_Lock;
+ return True;
}
#ifdef NOTYET
- if (font_rtrn!=NULL)
- font_rtrn= FONT_MOUSECAPS;
+ if (font_rtrn != NULL)
+ font_rtrn = FONT_MOUSECAPS;
switch (sym) {
- case XK_Pointer_Up:
- buf[0]= XKC_Mouse_Pointer_Up; return True;
- case XK_Pointer_Down:
- buf[0]= XKC_Mouse_Pointer_Down; return True;
- case XK_Pointer_Left:
- buf[0]= XKC_Mouse_Pointer_Left; return True;
- case XK_Pointer_Right:
- buf[0]= XKC_Mouse_Pointer_Right;return True;
- case XK_Pointer_Button1:
- buf[0]= XKC_Mouse_Pointer_Button1;return True;
- case XK_Pointer_Button2:
- buf[0]= XKC_Mouse_Pointer_Button2;return True;
- case XK_Pointer_Button3:
- buf[0]= XKC_Mouse_Pointer_Button3;return True;
- case XK_Pointer_Button4:
- buf[0]= XKC_Mouse_Pointer_Button4;return True;
+ case XK_Pointer_Up:
+ buf[0] = XKC_Mouse_Pointer_Up;
+ return True;
+ case XK_Pointer_Down:
+ buf[0] = XKC_Mouse_Pointer_Down;
+ return True;
+ case XK_Pointer_Left:
+ buf[0] = XKC_Mouse_Pointer_Left;
+ return True;
+ case XK_Pointer_Right:
+ buf[0] = XKC_Mouse_Pointer_Right;
+ return True;
+ case XK_Pointer_Button1:
+ buf[0] = XKC_Mouse_Pointer_Button1;
+ return True;
+ case XK_Pointer_Button2:
+ buf[0] = XKC_Mouse_Pointer_Button2;
+ return True;
+ case XK_Pointer_Button3:
+ buf[0] = XKC_Mouse_Pointer_Button3;
+ return True;
+ case XK_Pointer_Button4:
+ buf[0] = XKC_Mouse_Pointer_Button4;
+ return True;
}
#endif
return False;
@@ -1171,91 +1302,215 @@ PSKeycapsSymbol(KeySym sym, unsigned char *buf,
static Bool
PSNonLatin1Symbol(KeySym sym, unsigned char *buf,
- int *font_rtrn, int *sz_rtrn, PSState *state)
+ int *font_rtrn, int *sz_rtrn, PSState *state)
{
- if (state->args->wantSymbols==NO_SYMBOLS)
- return False;
-
- if (font_rtrn!=NULL)
- *font_rtrn= FONT_TEXT;
- if (sz_rtrn!=NULL)
- *sz_rtrn= SZ_LARGE;
- buf[1]= '\0';
+ if (state->args->wantSymbols == NO_SYMBOLS)
+ return False;
+
+ if (font_rtrn != NULL)
+ *font_rtrn = FONT_TEXT;
+ if (sz_rtrn != NULL)
+ *sz_rtrn = SZ_LARGE;
+ buf[1] = '\0';
switch (sym) {
- case XK_breve: buf[0]= 0xC6; return True;
- case XK_abovedot: buf[0]= 0xC7; return True;
- case XK_doubleacute: buf[0]= 0xCD; return True;
- case XK_ogonek: buf[0]= 0xCE; return True;
- case XK_caron: buf[0]= 0xCF; return True;
- case XK_Lstroke: buf[0]= 0xE8; return True;
- case XK_idotless: buf[0]= 0xF5; return True;
- case XK_lstroke: buf[0]= 0xF8; return True;
+ case XK_breve:
+ buf[0] = 0xC6;
+ return True;
+ case XK_abovedot:
+ buf[0] = 0xC7;
+ return True;
+ case XK_doubleacute:
+ buf[0] = 0xCD;
+ return True;
+ case XK_ogonek:
+ buf[0] = 0xCE;
+ return True;
+ case XK_caron:
+ buf[0] = 0xCF;
+ return True;
+ case XK_Lstroke:
+ buf[0] = 0xE8;
+ return True;
+ case XK_idotless:
+ buf[0] = 0xF5;
+ return True;
+ case XK_lstroke:
+ buf[0] = 0xF8;
+ return True;
}
- if (font_rtrn!=NULL)
- *font_rtrn= FONT_SYMBOL;
- if (sz_rtrn!=NULL)
- *sz_rtrn= SZ_MEDIUM;
- if ((sym&(~0xff))==0x700) {
- switch (sym) {
- /* Greek symbol */
- case XK_Greek_ALPHA: buf[0]= 0x41; return True;
- case XK_Greek_BETA: buf[0]= 0x42; return True;
- case XK_Greek_CHI: buf[0]= 0x43; return True;
- case XK_Greek_DELTA: buf[0]= 0x44; return True;
- case XK_Greek_EPSILON: buf[0]= 0x45; return True;
- case XK_Greek_PHI: buf[0]= 0x46; return True;
- case XK_Greek_GAMMA: buf[0]= 0x47; return True;
- case XK_Greek_ETA: buf[0]= 0x48; return True;
- case XK_Greek_IOTA: buf[0]= 0x49; return True;
- case XK_Greek_KAPPA: buf[0]= 0x4B; return True;
- case XK_Greek_LAMDA: buf[0]= 0x4C; return True;
- case XK_Greek_MU: buf[0]= 0x4D; return True;
- case XK_Greek_NU: buf[0]= 0x4E; return True;
- case XK_Greek_OMICRON: buf[0]= 0x4F; return True;
- case XK_Greek_PI: buf[0]= 0x50; return True;
- case XK_Greek_THETA: buf[0]= 0x51; return True;
- case XK_Greek_RHO: buf[0]= 0x52; return True;
- case XK_Greek_SIGMA: buf[0]= 0x53; return True;
- case XK_Greek_TAU: buf[0]= 0x54; return True;
- case XK_Greek_UPSILON: buf[0]= 0x55; return True;
- case XK_Greek_OMEGA: buf[0]= 0x57; return True;
- case XK_Greek_XI: buf[0]= 0x58; return True;
- case XK_Greek_PSI: buf[0]= 0x59; return True;
- case XK_Greek_ZETA: buf[0]= 0x5A; return True;
-
- case XK_Greek_alpha: buf[0]= 0x61; return True;
- case XK_Greek_beta: buf[0]= 0x62; return True;
- case XK_Greek_chi: buf[0]= 0x63; return True;
- case XK_Greek_delta: buf[0]= 0x64; return True;
- case XK_Greek_epsilon: buf[0]= 0x65; return True;
- case XK_Greek_phi: buf[0]= 0x66; return True;
- case XK_Greek_gamma: buf[0]= 0x67; return True;
- case XK_Greek_eta: buf[0]= 0x68; return True;
- case XK_Greek_iota: buf[0]= 0x69; return True;
- case XK_Greek_kappa: buf[0]= 0x6B; return True;
- case XK_Greek_lamda: buf[0]= 0x6C; return True;
- case XK_Greek_mu: buf[0]= 0x6D; return True;
- case XK_Greek_nu: buf[0]= 0x6E; return True;
- case XK_Greek_omicron: buf[0]= 0x6F; return True;
- case XK_Greek_pi: buf[0]= 0x70; return True;
- case XK_Greek_theta: buf[0]= 0x71; return True;
- case XK_Greek_rho: buf[0]= 0x72; return True;
- case XK_Greek_sigma: buf[0]= 0x73; return True;
- case XK_Greek_tau: buf[0]= 0x74; return True;
- case XK_Greek_upsilon: buf[0]= 0x75; return True;
- case XK_Greek_omega: buf[0]= 0x77; return True;
- case XK_Greek_xi: buf[0]= 0x78; return True;
- case XK_Greek_psi: buf[0]= 0x79; return True;
- case XK_Greek_zeta: buf[0]= 0x7A; return True;
- }
+ if (font_rtrn != NULL)
+ *font_rtrn = FONT_SYMBOL;
+ if (sz_rtrn != NULL)
+ *sz_rtrn = SZ_MEDIUM;
+ if ((sym & (~0xff)) == 0x700) {
+ switch (sym) {
+ /* Greek symbol */
+ case XK_Greek_ALPHA:
+ buf[0] = 0x41;
+ return True;
+ case XK_Greek_BETA:
+ buf[0] = 0x42;
+ return True;
+ case XK_Greek_CHI:
+ buf[0] = 0x43;
+ return True;
+ case XK_Greek_DELTA:
+ buf[0] = 0x44;
+ return True;
+ case XK_Greek_EPSILON:
+ buf[0] = 0x45;
+ return True;
+ case XK_Greek_PHI:
+ buf[0] = 0x46;
+ return True;
+ case XK_Greek_GAMMA:
+ buf[0] = 0x47;
+ return True;
+ case XK_Greek_ETA:
+ buf[0] = 0x48;
+ return True;
+ case XK_Greek_IOTA:
+ buf[0] = 0x49;
+ return True;
+ case XK_Greek_KAPPA:
+ buf[0] = 0x4B;
+ return True;
+ case XK_Greek_LAMDA:
+ buf[0] = 0x4C;
+ return True;
+ case XK_Greek_MU:
+ buf[0] = 0x4D;
+ return True;
+ case XK_Greek_NU:
+ buf[0] = 0x4E;
+ return True;
+ case XK_Greek_OMICRON:
+ buf[0] = 0x4F;
+ return True;
+ case XK_Greek_PI:
+ buf[0] = 0x50;
+ return True;
+ case XK_Greek_THETA:
+ buf[0] = 0x51;
+ return True;
+ case XK_Greek_RHO:
+ buf[0] = 0x52;
+ return True;
+ case XK_Greek_SIGMA:
+ buf[0] = 0x53;
+ return True;
+ case XK_Greek_TAU:
+ buf[0] = 0x54;
+ return True;
+ case XK_Greek_UPSILON:
+ buf[0] = 0x55;
+ return True;
+ case XK_Greek_OMEGA:
+ buf[0] = 0x57;
+ return True;
+ case XK_Greek_XI:
+ buf[0] = 0x58;
+ return True;
+ case XK_Greek_PSI:
+ buf[0] = 0x59;
+ return True;
+ case XK_Greek_ZETA:
+ buf[0] = 0x5A;
+ return True;
+
+ case XK_Greek_alpha:
+ buf[0] = 0x61;
+ return True;
+ case XK_Greek_beta:
+ buf[0] = 0x62;
+ return True;
+ case XK_Greek_chi:
+ buf[0] = 0x63;
+ return True;
+ case XK_Greek_delta:
+ buf[0] = 0x64;
+ return True;
+ case XK_Greek_epsilon:
+ buf[0] = 0x65;
+ return True;
+ case XK_Greek_phi:
+ buf[0] = 0x66;
+ return True;
+ case XK_Greek_gamma:
+ buf[0] = 0x67;
+ return True;
+ case XK_Greek_eta:
+ buf[0] = 0x68;
+ return True;
+ case XK_Greek_iota:
+ buf[0] = 0x69;
+ return True;
+ case XK_Greek_kappa:
+ buf[0] = 0x6B;
+ return True;
+ case XK_Greek_lamda:
+ buf[0] = 0x6C;
+ return True;
+ case XK_Greek_mu:
+ buf[0] = 0x6D;
+ return True;
+ case XK_Greek_nu:
+ buf[0] = 0x6E;
+ return True;
+ case XK_Greek_omicron:
+ buf[0] = 0x6F;
+ return True;
+ case XK_Greek_pi:
+ buf[0] = 0x70;
+ return True;
+ case XK_Greek_theta:
+ buf[0] = 0x71;
+ return True;
+ case XK_Greek_rho:
+ buf[0] = 0x72;
+ return True;
+ case XK_Greek_sigma:
+ buf[0] = 0x73;
+ return True;
+ case XK_Greek_tau:
+ buf[0] = 0x74;
+ return True;
+ case XK_Greek_upsilon:
+ buf[0] = 0x75;
+ return True;
+ case XK_Greek_omega:
+ buf[0] = 0x77;
+ return True;
+ case XK_Greek_xi:
+ buf[0] = 0x78;
+ return True;
+ case XK_Greek_psi:
+ buf[0] = 0x79;
+ return True;
+ case XK_Greek_zeta:
+ buf[0] = 0x7A;
+ return True;
+ }
}
switch (sym) {
- case XK_leftarrow: buf[0]= 0xAC; return True;
- case XK_uparrow: buf[0]= 0xAD; return True;
- case XK_rightarrow: buf[0]= 0xAE; return True;
- case XK_downarrow: buf[0]= 0xAF; return True;
- case XK_horizconnector: buf[0]= 0xBE; return True;
- case XK_trademark: buf[0]= 0xE4; return True;
+ case XK_leftarrow:
+ buf[0] = 0xAC;
+ return True;
+ case XK_uparrow:
+ buf[0] = 0xAD;
+ return True;
+ case XK_rightarrow:
+ buf[0] = 0xAE;
+ return True;
+ case XK_downarrow:
+ buf[0] = 0xAF;
+ return True;
+ case XK_horizconnector:
+ buf[0] = 0xBE;
+ return True;
+ case XK_trademark:
+ buf[0] = 0xE4;
+ return True;
}
return False;
}
@@ -1264,57 +1519,109 @@ static KeySym
CheckSymbolAlias(KeySym sym, PSState *state)
{
if (XkbKSIsKeypad(sym)) {
- if ((sym>=XK_KP_0)&&(sym<=XK_KP_9))
- sym= (sym-XK_KP_0)+XK_0;
- else switch (sym) {
- case XK_KP_Space: return XK_space;
- case XK_KP_Tab: return XK_Tab;
- case XK_KP_Enter: return XK_Return;
- case XK_KP_F1: return XK_F1;
- case XK_KP_F2: return XK_F2;
- case XK_KP_F3: return XK_F3;
- case XK_KP_F4: return XK_F4;
- case XK_KP_Home: return XK_Home;
- case XK_KP_Left: return XK_Left;
- case XK_KP_Up: return XK_Up;
- case XK_KP_Right: return XK_Right;
- case XK_KP_Down: return XK_Down;
- case XK_KP_Page_Up: return XK_Page_Up;
- case XK_KP_Page_Down: return XK_Page_Down;
- case XK_KP_End: return XK_End;
- case XK_KP_Begin: return XK_Begin;
- case XK_KP_Insert: return XK_Insert;
- case XK_KP_Delete: return XK_Delete;
- case XK_KP_Equal: return XK_equal;
- case XK_KP_Multiply: return XK_asterisk;
- case XK_KP_Add: return XK_plus;
- case XK_KP_Subtract: return XK_minus;
- case XK_KP_Divide: return XK_slash;
- }
+ if ((sym >= XK_KP_0) && (sym <= XK_KP_9))
+ sym = (sym - XK_KP_0) + XK_0;
+ else
+ switch (sym) {
+ case XK_KP_Space:
+ return XK_space;
+ case XK_KP_Tab:
+ return XK_Tab;
+ case XK_KP_Enter:
+ return XK_Return;
+ case XK_KP_F1:
+ return XK_F1;
+ case XK_KP_F2:
+ return XK_F2;
+ case XK_KP_F3:
+ return XK_F3;
+ case XK_KP_F4:
+ return XK_F4;
+ case XK_KP_Home:
+ return XK_Home;
+ case XK_KP_Left:
+ return XK_Left;
+ case XK_KP_Up:
+ return XK_Up;
+ case XK_KP_Right:
+ return XK_Right;
+ case XK_KP_Down:
+ return XK_Down;
+ case XK_KP_Page_Up:
+ return XK_Page_Up;
+ case XK_KP_Page_Down:
+ return XK_Page_Down;
+ case XK_KP_End:
+ return XK_End;
+ case XK_KP_Begin:
+ return XK_Begin;
+ case XK_KP_Insert:
+ return XK_Insert;
+ case XK_KP_Delete:
+ return XK_Delete;
+ case XK_KP_Equal:
+ return XK_equal;
+ case XK_KP_Multiply:
+ return XK_asterisk;
+ case XK_KP_Add:
+ return XK_plus;
+ case XK_KP_Subtract:
+ return XK_minus;
+ case XK_KP_Divide:
+ return XK_slash;
+ }
}
else if (XkbKSIsDeadKey(sym)) {
- switch (sym) {
- case XK_dead_grave: sym= XK_grave; break;
- case XK_dead_acute: sym= XK_acute; break;
- case XK_dead_circumflex: sym= XK_asciicircum; break;
- case XK_dead_tilde: sym= XK_asciitilde; break;
- case XK_dead_macron: sym= XK_macron; break;
- case XK_dead_breve: sym= XK_breve; break;
- case XK_dead_abovedot: sym= XK_abovedot; break;
- case XK_dead_diaeresis: sym= XK_diaeresis; break;
- case XK_dead_abovering: sym= XK_degree; break;
- case XK_dead_doubleacute: sym= XK_doubleacute; break;
- case XK_dead_caron: sym= XK_caron; break;
- case XK_dead_cedilla: sym= XK_cedilla; break;
- case XK_dead_ogonek: sym= XK_ogonek; break;
- case XK_dead_iota: sym= XK_Greek_iota; break;
- case XK_dead_voiced_sound:
- sym= XK_voicedsound;
- break;
- case XK_dead_semivoiced_sound:
- sym= XK_semivoicedsound;
- break;
- }
+ switch (sym) {
+ case XK_dead_grave:
+ sym = XK_grave;
+ break;
+ case XK_dead_acute:
+ sym = XK_acute;
+ break;
+ case XK_dead_circumflex:
+ sym = XK_asciicircum;
+ break;
+ case XK_dead_tilde:
+ sym = XK_asciitilde;
+ break;
+ case XK_dead_macron:
+ sym = XK_macron;
+ break;
+ case XK_dead_breve:
+ sym = XK_breve;
+ break;
+ case XK_dead_abovedot:
+ sym = XK_abovedot;
+ break;
+ case XK_dead_diaeresis:
+ sym = XK_diaeresis;
+ break;
+ case XK_dead_abovering:
+ sym = XK_degree;
+ break;
+ case XK_dead_doubleacute:
+ sym = XK_doubleacute;
+ break;
+ case XK_dead_caron:
+ sym = XK_caron;
+ break;
+ case XK_dead_cedilla:
+ sym = XK_cedilla;
+ break;
+ case XK_dead_ogonek:
+ sym = XK_ogonek;
+ break;
+ case XK_dead_iota:
+ sym = XK_Greek_iota;
+ break;
+ case XK_dead_voiced_sound:
+ sym = XK_voicedsound;
+ break;
+ case XK_dead_semivoiced_sound:
+ sym = XK_semivoicedsound;
+ break;
+ }
}
return sym;
}
@@ -1322,107 +1629,134 @@ CheckSymbolAlias(KeySym sym, PSState *state)
static Bool
FindKeysymsByName(XkbDescPtr xkb, char *name, PSState *state, KeyTop *top)
{
-static unsigned char buf[30];
-int kc;
-KeySym sym,*syms,topSyms[NLABELS];
-int level,group;
-int eG,nG,gI,l,g;
-
- bzero(top,sizeof(KeyTop));
- kc= XkbFindKeycodeByName(xkb,name,True);
- if (state->args!=NULL) {
- level= state->args->labelLevel;
- group= state->args->baseLabelGroup;
+ static unsigned char buf[30];
+ int kc;
+ KeySym sym, *syms, topSyms[NLABELS];
+ int level, group;
+ int eG, nG, gI, l, g;
+
+ bzero(top, sizeof(KeyTop));
+ kc = XkbFindKeycodeByName(xkb, name, True);
+ if (state->args != NULL) {
+ level = state->args->labelLevel;
+ group = state->args->baseLabelGroup;
}
- else level= group= 0;
- syms= XkbKeySymsPtr(xkb,kc);
- eG= group;
- nG= XkbKeyNumGroups(xkb,kc);
- gI= XkbKeyGroupInfo(xkb,kc);
- if ((state->args->wantDiffs)&&(eG>=XkbKeyNumGroups(xkb,kc)))
- return False; /* XXX was a return with no value */
- if (nG==0) {
- return False;
+ else
+ level = group = 0;
+ syms = XkbKeySymsPtr(xkb, kc);
+ eG = group;
+ nG = XkbKeyNumGroups(xkb, kc);
+ gI = XkbKeyGroupInfo(xkb, kc);
+ if ((state->args->wantDiffs) && (eG >= XkbKeyNumGroups(xkb, kc)))
+ return False; /* XXX was a return with no value */
+ if (nG == 0) {
+ return False;
}
- else if (nG==1) {
- eG= 0;
+ else if (nG == 1) {
+ eG = 0;
}
- else if (eG>=XkbKeyNumGroups(xkb,kc)) {
- switch (XkbOutOfRangeGroupAction(gI)) {
- default:
- eG%= nG;
- break;
- case XkbClampIntoRange:
- eG= nG-1;
- break;
- case XkbRedirectIntoRange:
- eG= XkbOutOfRangeGroupNumber(gI);
- if (eG>=nG)
- eG= 0;
- break;
- }
+ else if (eG >= XkbKeyNumGroups(xkb, kc)) {
+ switch (XkbOutOfRangeGroupAction(gI)) {
+ default:
+ eG %= nG;
+ break;
+ case XkbClampIntoRange:
+ eG = nG - 1;
+ break;
+ case XkbRedirectIntoRange:
+ eG = XkbOutOfRangeGroupNumber(gI);
+ if (eG >= nG)
+ eG = 0;
+ break;
+ }
}
- for (g=0;g<state->args->nLabelGroups;g++) {
- if ((eG+g)>=nG)
- continue;
- for (l=0;l<2;l++) {
- int font,sz;
- if (level+l>=XkbKeyGroupWidth(xkb,kc,(eG+g)))
- continue;
- sym= syms[((eG+g)*XkbKeyGroupsWidth(xkb,kc))+(level+l)];
-
- if (state->args->wantSymbols!=NO_SYMBOLS)
- sym= CheckSymbolAlias(sym,state);
- topSyms[(g*2)+l]= sym;
-
- if (PSKeycapsSymbol(sym,buf,&font,&sz,state)) {
- top->font[(g*2)+l]= font;
- top->size[(g*2)+l]= sz;
- }
- else if (((sym&(~0xff))==0)&&isprint(sym)&&(!isspace(sym))) {
- if (sym=='(') sprintf((char *)buf,"\\(");
- else if (sym==')') sprintf((char *)buf,"\\)");
- else if (sym=='\\') sprintf((char *)buf,"\\\\");
- else sprintf((char *)buf,"%c",(char)sym);
- top->font[(g*2)+l]= FONT_LATIN1;
- top->size[(g*2)+l]= SZ_MEDIUM;
- switch (buf[0]) {
- case '.': case ':': case ',': case ';':
- case '\'': case '"': case '`': case '~':
- case '^': case 0250: case 0270: case 0267:
- case 0260: case 0252: case 0272: case 0271:
- case 0262: case 0263: case 0264: case 0255:
- case 0254: case 0257:
- top->size[(g*2)+l]= SZ_LARGE;
- break;
- }
- }
- else if (PSNonLatin1Symbol(sym,buf,&font,&sz,state)) {
- top->font[(g*2)+l]= font;
- top->size[(g*2)+l]= sz;
- }
- else {
- char *tmp;
- tmp= XKeysymToString(sym);
- if (tmp!=NULL) strcpy((char *)buf,tmp);
- else sprintf((char *)buf,"(%ld)",sym);
- top->font[(g*2)+l]= FONT_LATIN1;
- if (strlen((char *)buf)<9)
- top->size[(g*2)+l]= SZ_SMALL;
- else top->size[(g*2)+l]= SZ_TINY;
- }
- top->present|= (1<<((g*2)+l));
- strncpy(top->label[(g*2)+l],(char *)buf,LABEL_LEN-1);
- top->label[(g*2)+l][LABEL_LEN-1]= '\0';
- }
- if (((g==0)&&(top->present&G1LX_MASK)==G1LX_MASK)||
- ((g==1)&&(top->present&G2LX_MASK)==G2LX_MASK)) {
- KeySym lower,upper;
- XConvertCase(topSyms[(g*2)],&lower,&upper);
- if ((topSyms[(g*2)]==lower)&&(topSyms[(g*2)+1]==upper)) {
- top->alpha[g]= True;
- }
- }
+ for (g = 0; g < state->args->nLabelGroups; g++) {
+ if ((eG + g) >= nG)
+ continue;
+ for (l = 0; l < 2; l++) {
+ int font, sz;
+
+ if (level + l >= XkbKeyGroupWidth(xkb, kc, (eG + g)))
+ continue;
+ sym = syms[((eG + g) * XkbKeyGroupsWidth(xkb, kc)) + (level + l)];
+
+ if (state->args->wantSymbols != NO_SYMBOLS)
+ sym = CheckSymbolAlias(sym, state);
+ topSyms[(g * 2) + l] = sym;
+
+ if (PSKeycapsSymbol(sym, buf, &font, &sz, state)) {
+ top->font[(g * 2) + l] = font;
+ top->size[(g * 2) + l] = sz;
+ }
+ else if (((sym & (~0xff)) == 0) && isprint(sym) && (!isspace(sym))) {
+ if (sym == '(')
+ sprintf((char *) buf, "\\(");
+ else if (sym == ')')
+ sprintf((char *) buf, "\\)");
+ else if (sym == '\\')
+ sprintf((char *) buf, "\\\\");
+ else
+ sprintf((char *) buf, "%c", (char) sym);
+ top->font[(g * 2) + l] = FONT_LATIN1;
+ top->size[(g * 2) + l] = SZ_MEDIUM;
+ switch (buf[0]) {
+ case '.':
+ case ':':
+ case ',':
+ case ';':
+ case '\'':
+ case '"':
+ case '`':
+ case '~':
+ case '^':
+ case 0250:
+ case 0270:
+ case 0267:
+ case 0260:
+ case 0252:
+ case 0272:
+ case 0271:
+ case 0262:
+ case 0263:
+ case 0264:
+ case 0255:
+ case 0254:
+ case 0257:
+ top->size[(g * 2) + l] = SZ_LARGE;
+ break;
+ }
+ }
+ else if (PSNonLatin1Symbol(sym, buf, &font, &sz, state)) {
+ top->font[(g * 2) + l] = font;
+ top->size[(g * 2) + l] = sz;
+ }
+ else {
+ char *tmp;
+
+ tmp = XKeysymToString(sym);
+ if (tmp != NULL)
+ strcpy((char *) buf, tmp);
+ else
+ sprintf((char *) buf, "(%ld)", sym);
+ top->font[(g * 2) + l] = FONT_LATIN1;
+ if (strlen((char *) buf) < 9)
+ top->size[(g * 2) + l] = SZ_SMALL;
+ else
+ top->size[(g * 2) + l] = SZ_TINY;
+ }
+ top->present |= (1 << ((g * 2) + l));
+ strncpy(top->label[(g * 2) + l], (char *) buf, LABEL_LEN - 1);
+ top->label[(g * 2) + l][LABEL_LEN - 1] = '\0';
+ }
+ if (((g == 0) && (top->present & G1LX_MASK) == G1LX_MASK) ||
+ ((g == 1) && (top->present & G2LX_MASK) == G2LX_MASK)) {
+ KeySym lower, upper;
+
+ XConvertCase(topSyms[(g * 2)], &lower, &upper);
+ if ((topSyms[(g * 2)] == lower) && (topSyms[(g * 2) + 1] == upper)) {
+ top->alpha[g] = True;
+ }
+ }
}
return True;
}
@@ -1430,10 +1764,10 @@ int eG,nG,gI,l,g;
static void
PSDrawLabel(FILE *out, char *label, int x, int y, int w, int h)
{
- fprintf(out,"%d %d (%s) centeroffset\n",w,h,label);
- fprintf(out,"%d add exch\n",y);
- fprintf(out,"%d add exch moveto\n",x);
- fprintf(out,"1 -1 scale (%s) show 1 -1 scale\n",label);
+ fprintf(out, "%d %d (%s) centeroffset\n", w, h, label);
+ fprintf(out, "%d add exch\n", y);
+ fprintf(out, "%d add exch moveto\n", x);
+ fprintf(out, "1 -1 scale (%s) show 1 -1 scale\n", label);
return;
}
@@ -1447,131 +1781,140 @@ PSDrawLabel(FILE *out, char *label, int x, int y, int w, int h)
static void
PSLabelKey(FILE *out, PSState *state, KeyTop *top, int x, int y,
- XkbBoundsPtr bounds, int kc, int btm)
+ XkbBoundsPtr bounds, int kc, int btm)
{
-char keycode[10];
-int w,h,i;
-int row_y[3];
-int col_x[3];
-int row_h[3];
-int col_w[3];
-Bool present[NLABELS];
-int sym_row[NLABELS];
-int sym_col[NLABELS];
-
- w= XkbBoundsWidth(bounds);
- h= XkbBoundsHeight(bounds);
- row_y[TOP_ROW]= y+bounds->y1+(h/10);
- row_y[BOTTOM_ROW]= y+bounds->y1+(h/2)+(h/10);
- row_y[CENTER_ROW]= y+bounds->y1+(h/10);
- row_h[TOP_ROW]= h/2;
- row_h[BOTTOM_ROW]= h/2;
- row_h[CENTER_ROW]= h;
-
- col_x[LEFT_COL]= x+bounds->x1;
- col_x[RIGHT_COL]= x+bounds->x1+w/2;
- col_x[CENTER_COL]= x+bounds->x1;
- col_w[LEFT_COL]= w/2;
- col_w[RIGHT_COL]= w/2;
- col_w[CENTER_COL]= w;
-
- present[G1L1]= False;
- sym_row[G1L1]= BOTTOM_ROW;
- sym_col[G1L1]= LEFT_COL;
-
- present[G1L2]= False;
- sym_row[G1L2]= TOP_ROW;
- sym_col[G1L2]= LEFT_COL;
-
- present[G2L1]= False;
- sym_row[G2L1]= BOTTOM_ROW;
- sym_col[G2L1]= RIGHT_COL;
-
- present[G2L2]= False;
- sym_row[G2L2]= TOP_ROW;
- sym_col[G2L2]= RIGHT_COL;
-
- present[CENTER]= False;
- sym_row[CENTER]= CENTER_ROW;
- sym_col[CENTER]= CENTER_COL;
-
- if (top->present&CENTER_MASK) {
- present[CENTER]= True;
- }
- else switch (top->present&GXLX_MASK) {
- case G1L1_MASK:
- present[G1L1]= True;
- sym_row[G1L1]= CENTER_ROW;
- sym_col[G1L1]= CENTER_COL;
- break;
- case G1LX_MASK:
- present[G1L2]= True;
- if (!top->alpha[0]) {
- present[G1L1]= True;
- if ((strlen(top->label[G1L1])>1)&&(top->label[G1L1][0]!='\\'))
- sym_col[G1L1]= CENTER_COL;
- if ((strlen(top->label[G1L2])>1)&&(top->label[G1L1][0]!='\\'))
- sym_col[G1L2]= CENTER_COL;
- }
- break;
- default:
- if ((top->present&G1LX_MASK)==G1LX_MASK) {
- present[G1L2]= True;
- if (!top->alpha[0])
- present[G1L1]= True;
- }
- else if ((top->present&G1LX_MASK)==G1L1_MASK) {
- present[G1L1]= True;
- }
- else if ((top->present&G1LX_MASK)==G1L2_MASK) {
- present[G1L2]= True;
- }
- if ((top->present&G2LX_MASK)==G2LX_MASK) {
- present[G2L2]= True;
- if (!top->alpha[1])
- present[G2L1]= True;
- }
- else if ((top->present&G2LX_MASK)==G2L1_MASK) {
- present[G2L1]= True;
- }
- else if ((top->present&G2LX_MASK)==G2L2_MASK) {
- present[G2L2]= True;
- }
- break;
- case 0:
- return;
+ char keycode[10];
+ int w, h, i;
+ int row_y[3];
+ int col_x[3];
+ int row_h[3];
+ int col_w[3];
+ Bool present[NLABELS];
+ int sym_row[NLABELS];
+ int sym_col[NLABELS];
+
+ w = XkbBoundsWidth(bounds);
+ h = XkbBoundsHeight(bounds);
+ row_y[TOP_ROW] = y + bounds->y1 + (h / 10);
+ row_y[BOTTOM_ROW] = y + bounds->y1 + (h / 2) + (h / 10);
+ row_y[CENTER_ROW] = y + bounds->y1 + (h / 10);
+ row_h[TOP_ROW] = h / 2;
+ row_h[BOTTOM_ROW] = h / 2;
+ row_h[CENTER_ROW] = h;
+
+ col_x[LEFT_COL] = x + bounds->x1;
+ col_x[RIGHT_COL] = x + bounds->x1 + w / 2;
+ col_x[CENTER_COL] = x + bounds->x1;
+ col_w[LEFT_COL] = w / 2;
+ col_w[RIGHT_COL] = w / 2;
+ col_w[CENTER_COL] = w;
+
+ present[G1L1] = False;
+ sym_row[G1L1] = BOTTOM_ROW;
+ sym_col[G1L1] = LEFT_COL;
+
+ present[G1L2] = False;
+ sym_row[G1L2] = TOP_ROW;
+ sym_col[G1L2] = LEFT_COL;
+
+ present[G2L1] = False;
+ sym_row[G2L1] = BOTTOM_ROW;
+ sym_col[G2L1] = RIGHT_COL;
+
+ present[G2L2] = False;
+ sym_row[G2L2] = TOP_ROW;
+ sym_col[G2L2] = RIGHT_COL;
+
+ present[CENTER] = False;
+ sym_row[CENTER] = CENTER_ROW;
+ sym_col[CENTER] = CENTER_COL;
+
+ if (top->present & CENTER_MASK) {
+ present[CENTER] = True;
}
- for (i=0;i<NLABELS;i++) {
- if (present[i]) {
- int len,size;
- if (top->size[i]==SZ_AUTO) {
- len= strlen(top->label[i]);
- if (len==1) {
- if (top->font[i]==FONT_ISOCAPS)
- size= 18;
- else size= 14;
- }
- else if (len<10) size= 12;
- else size= 10;
- }
- else if (top->size[i]==SZ_TINY)
- size= 10;
- else if (top->size[i]==SZ_SMALL)
- size= 12;
- else if (top->size[i]==SZ_LARGE)
- size= 18;
- else if (top->size[i]==SZ_XLARGE)
- size= 24;
- else size= 14;
- PSSetFont(out,state,top->font[i],size,True);
- PSDrawLabel(out,top->label[i],col_x[sym_col[i]],row_y[sym_row[i]],
- col_w[sym_col[i]],row_h[sym_row[i]]);
- }
+ else
+ switch (top->present & GXLX_MASK) {
+ case G1L1_MASK:
+ present[G1L1] = True;
+ sym_row[G1L1] = CENTER_ROW;
+ sym_col[G1L1] = CENTER_COL;
+ break;
+ case G1LX_MASK:
+ present[G1L2] = True;
+ if (!top->alpha[0]) {
+ present[G1L1] = True;
+ if ((strlen(top->label[G1L1]) > 1) &&
+ (top->label[G1L1][0] != '\\'))
+ sym_col[G1L1] = CENTER_COL;
+ if ((strlen(top->label[G1L2]) > 1) &&
+ (top->label[G1L1][0] != '\\'))
+ sym_col[G1L2] = CENTER_COL;
+ }
+ break;
+ default:
+ if ((top->present & G1LX_MASK) == G1LX_MASK) {
+ present[G1L2] = True;
+ if (!top->alpha[0])
+ present[G1L1] = True;
+ }
+ else if ((top->present & G1LX_MASK) == G1L1_MASK) {
+ present[G1L1] = True;
+ }
+ else if ((top->present & G1LX_MASK) == G1L2_MASK) {
+ present[G1L2] = True;
+ }
+ if ((top->present & G2LX_MASK) == G2LX_MASK) {
+ present[G2L2] = True;
+ if (!top->alpha[1])
+ present[G2L1] = True;
+ }
+ else if ((top->present & G2LX_MASK) == G2L1_MASK) {
+ present[G2L1] = True;
+ }
+ else if ((top->present & G2LX_MASK) == G2L2_MASK) {
+ present[G2L2] = True;
+ }
+ break;
+ case 0:
+ return;
+ }
+ for (i = 0; i < NLABELS; i++) {
+ if (present[i]) {
+ int len, size;
+
+ if (top->size[i] == SZ_AUTO) {
+ len = strlen(top->label[i]);
+ if (len == 1) {
+ if (top->font[i] == FONT_ISOCAPS)
+ size = 18;
+ else
+ size = 14;
+ }
+ else if (len < 10)
+ size = 12;
+ else
+ size = 10;
+ }
+ else if (top->size[i] == SZ_TINY)
+ size = 10;
+ else if (top->size[i] == SZ_SMALL)
+ size = 12;
+ else if (top->size[i] == SZ_LARGE)
+ size = 18;
+ else if (top->size[i] == SZ_XLARGE)
+ size = 24;
+ else
+ size = 14;
+ PSSetFont(out, state, top->font[i], size, True);
+ PSDrawLabel(out, top->label[i], col_x[sym_col[i]],
+ row_y[sym_row[i]], col_w[sym_col[i]],
+ row_h[sym_row[i]]);
+ }
}
if (state->args->wantKeycodes) {
- sprintf(keycode,"%d",kc);
- PSSetFont(out,state,FONT_LATIN1,8,True);
- PSDrawLabel(out,keycode,x+bounds->x1,y+btm-5,w,0);
+ sprintf(keycode, "%d", kc);
+ PSSetFont(out, state, FONT_LATIN1, 8, True);
+ PSDrawLabel(out, keycode, x + bounds->x1, y + btm - 5, w, 0);
}
return;
}
@@ -1579,223 +1922,237 @@ int sym_col[NLABELS];
static void
PSSection(FILE *out, PSState *state, XkbSectionPtr section)
{
-int r,offset;
-XkbRowPtr row;
-Display * dpy;
-XkbDescPtr xkb;
-
- xkb= state->xkb;
- dpy= xkb->dpy;
- fprintf(out,"%% Begin Section '%s'\n",(section->name!=None?
- XkbAtomGetString(dpy,section->name):
- "NoName"));
- PSGSave(out,state);
- fprintf(out,"%d %d translate\n",section->left,section->top);
- if (section->angle!=0)
- fprintf(out,"%s rotate\n",XkbGeomFPText(section->angle,XkbMessage));
+ int r, offset;
+ XkbRowPtr row;
+ Display *dpy;
+ XkbDescPtr xkb;
+
+ xkb = state->xkb;
+ dpy = xkb->dpy;
+ fprintf(out, "%% Begin Section '%s'\n", (section->name != None ?
+ XkbAtomGetString(dpy, section-> name) : "NoName"));
+ PSGSave(out, state);
+ fprintf(out, "%d %d translate\n", section->left, section->top);
+ if (section->angle != 0)
+ fprintf(out, "%s rotate\n", XkbGeomFPText(section->angle, XkbMessage));
if (section->doodads) {
- XkbDrawablePtr first,draw;
- first= draw= XkbGetOrderedDrawables(NULL,section);
- while (draw) {
- if (draw->type==XkbDW_Section)
- PSSection(out,state,draw->u.section);
- else PSDoodad(out,state,draw->u.doodad);
- draw= draw->next;
- }
- XkbFreeOrderedDrawables(first);
+ XkbDrawablePtr first, draw;
+
+ first = draw = XkbGetOrderedDrawables(NULL, section);
+ while (draw) {
+ if (draw->type == XkbDW_Section)
+ PSSection(out, state, draw->u.section);
+ else
+ PSDoodad(out, state, draw->u.doodad);
+ draw = draw->next;
+ }
+ XkbFreeOrderedDrawables(first);
}
- for (r=0,row=section->rows;r<section->num_rows;r++,row++) {
- int k;
- XkbKeyPtr key;
- XkbShapePtr shape;
- if (row->vertical) offset= row->top;
- else offset= row->left;
- fprintf(out,"%% Begin %s %d\n",row->vertical?"column":"row",r+1);
- for (k=0,key=row->keys;k<row->num_keys;k++,key++) {
- shape= XkbKeyShape(xkb->geom,key);
- offset+= key->gap;
- if (row->vertical) {
- if (state->args->wantColor) {
- if (key->color_ndx!=state->white) {
- PSSetColor(out,state,key->color_ndx);
- fprintf(out,"true 0 %d %d %s %% %s\n",
- row->left,offset,
- XkbAtomGetString(dpy,shape->name),
- XkbKeyNameText(key->name.name,XkbMessage));
- }
- PSSetColor(out,state,state->black);
- }
- fprintf(out,"false 0 %d %d %s %% %s\n",row->left,offset,
- XkbAtomGetString(dpy,shape->name),
- XkbKeyNameText(key->name.name,XkbMessage));
- offset+= shape->bounds.y2;
- }
- else {
- if (state->args->wantColor) {
- if (key->color_ndx!=state->white) {
- PSSetColor(out,state,key->color_ndx);
- fprintf(out,"true 0 %d %d %s %% %s\n",offset,row->top,
- XkbAtomGetString(dpy,shape->name),
- XkbKeyNameText(key->name.name,XkbMessage));
- }
- PSSetColor(out,state,state->black);
- }
- fprintf(out,"false 0 %d %d %s %% %s\n",offset,row->top,
- XkbAtomGetString(dpy,shape->name),
- XkbKeyNameText(key->name.name,XkbMessage));
- offset+= shape->bounds.x2;
- }
- }
+ for (r = 0, row = section->rows; r < section->num_rows; r++, row++) {
+ int k;
+ XkbKeyPtr key;
+ XkbShapePtr shape;
+
+ if (row->vertical)
+ offset = row->top;
+ else
+ offset = row->left;
+ fprintf(out, "%% Begin %s %d\n", row->vertical ? "column" : "row",
+ r + 1);
+ for (k = 0, key = row->keys; k < row->num_keys; k++, key++) {
+ shape = XkbKeyShape(xkb->geom, key);
+ offset += key->gap;
+ if (row->vertical) {
+ if (state->args->wantColor) {
+ if (key->color_ndx != state->white) {
+ PSSetColor(out, state, key->color_ndx);
+ fprintf(out, "true 0 %d %d %s %% %s\n",
+ row->left, offset,
+ XkbAtomGetString(dpy, shape->name),
+ XkbKeyNameText(key->name.name, XkbMessage));
+ }
+ PSSetColor(out, state, state->black);
+ }
+ fprintf(out, "false 0 %d %d %s %% %s\n", row->left, offset,
+ XkbAtomGetString(dpy, shape->name),
+ XkbKeyNameText(key->name.name, XkbMessage));
+ offset += shape->bounds.y2;
+ }
+ else {
+ if (state->args->wantColor) {
+ if (key->color_ndx != state->white) {
+ PSSetColor(out, state, key->color_ndx);
+ fprintf(out, "true 0 %d %d %s %% %s\n", offset,
+ row->top, XkbAtomGetString(dpy, shape->name),
+ XkbKeyNameText(key->name.name, XkbMessage));
+ }
+ PSSetColor(out, state, state->black);
+ }
+ fprintf(out, "false 0 %d %d %s %% %s\n", offset, row->top,
+ XkbAtomGetString(dpy, shape->name),
+ XkbKeyNameText(key->name.name, XkbMessage));
+ offset += shape->bounds.x2;
+ }
+ }
}
- for (r=0,row=section->rows;r<section->num_rows;r++,row++) {
- int k,kc=0;
- XkbKeyPtr key;
- XkbShapePtr shape;
- XkbBoundsRec bounds;
- if (state->args->label==LABEL_NONE)
- break;
- if (row->vertical) offset= row->top;
- else offset= row->left;
- fprintf(out,"%% Begin %s %d labels\n",row->vertical?"column":"row",r+1);
- PSSetColor(out,state,xkb->geom->label_color->pixel);
- PSSetFont(out,state,FONT_LATIN1,12,True);
- for (k=0,key=row->keys;k<row->num_keys;k++,key++) {
- char * name,*name2,buf[30],buf2[30];
- int x,y;
- KeyTop top;
-
- shape= XkbKeyShape(xkb->geom,key);
- XkbComputeShapeTop(shape,&bounds);
- offset+= key->gap;
- name= name2= NULL;
- if (state->args->label==LABEL_SYMBOLS) {
- if (!FindKeysymsByName(xkb,key->name.name,state,&top)) {
- fprintf(out,"%% No label for %s\n",
- XkbKeyNameText(key->name.name,XkbMessage));
- }
- }
- else {
- char *olKey;
-
- if (section->num_overlays>0)
- olKey= XkbFindOverlayForKey(xkb->geom,section,
- key->name.name);
- else olKey= NULL;
-
- if (state->args->label==LABEL_KEYNAME) {
- name= XkbKeyNameText(key->name.name,XkbMessage);
- if (olKey)
- name2= XkbKeyNameText(olKey,XkbMessage);
- }
- else if (state->args->label==LABEL_KEYCODE) {
- name= buf;
- sprintf(name,"%d",XkbFindKeycodeByName(xkb,key->name.name,
- True));
- if (olKey) {
- name2= buf2;
- sprintf(name,"%d",XkbFindKeycodeByName(xkb,olKey,True));
- }
- }
- bzero(&top,sizeof(KeyTop));
- if (name2!=NULL) {
- top.present|= G1LX_MASK;
- strncpy(top.label[G1L1],name,LABEL_LEN-1);
- top.label[G1L1][LABEL_LEN-1]= '\0';
- strncpy(top.label[G1L2],name2,LABEL_LEN-1);
- top.label[G1L2][LABEL_LEN-1]= '\0';
- }
- else if (name!=NULL) {
- top.present|= CENTER_MASK;
- strncpy(top.label[CENTER],name,LABEL_LEN-1);
- top.label[CENTER][LABEL_LEN-1]= '\0';
- }
- else {
- fprintf(out,"%% No label for %s\n",
- XkbKeyNameText(key->name.name,XkbMessage));
- }
- }
- if (row->vertical) {
- x= row->left;
- y= offset;
- offset+= shape->bounds.y2;
- }
- else {
- x= offset;
- y= row->top;
- offset+= shape->bounds.x2;
- }
- name= key->name.name;
- fprintf(out,"%% %s\n",XkbKeyNameText(name,XkbMessage));
- if (state->args->wantKeycodes)
- kc= XkbFindKeycodeByName(xkb,key->name.name,True);
- PSLabelKey(out,state,&top,x,y,&bounds,kc,shape->bounds.y2);
- }
+ for (r = 0, row = section->rows; r < section->num_rows; r++, row++) {
+ int k, kc = 0;
+ XkbKeyPtr key;
+ XkbShapePtr shape;
+ XkbBoundsRec bounds;
+
+ if (state->args->label == LABEL_NONE)
+ break;
+ if (row->vertical)
+ offset = row->top;
+ else
+ offset = row->left;
+ fprintf(out, "%% Begin %s %d labels\n",
+ row->vertical ? "column" : "row", r + 1);
+ PSSetColor(out, state, xkb->geom->label_color->pixel);
+ PSSetFont(out, state, FONT_LATIN1, 12, True);
+ for (k = 0, key = row->keys; k < row->num_keys; k++, key++) {
+ char *name, *name2, buf[30], buf2[30];
+ int x, y;
+ KeyTop top;
+
+ shape = XkbKeyShape(xkb->geom, key);
+ XkbComputeShapeTop(shape, &bounds);
+ offset += key->gap;
+ name = name2 = NULL;
+ if (state->args->label == LABEL_SYMBOLS) {
+ if (!FindKeysymsByName(xkb, key->name.name, state, &top)) {
+ fprintf(out, "%% No label for %s\n",
+ XkbKeyNameText(key->name.name, XkbMessage));
+ }
+ }
+ else {
+ char *olKey;
+
+ if (section->num_overlays > 0)
+ olKey = XkbFindOverlayForKey(xkb->geom, section,
+ key->name.name);
+ else
+ olKey = NULL;
+
+ if (state->args->label == LABEL_KEYNAME) {
+ name = XkbKeyNameText(key->name.name, XkbMessage);
+ if (olKey)
+ name2 = XkbKeyNameText(olKey, XkbMessage);
+ }
+ else if (state->args->label == LABEL_KEYCODE) {
+ name = buf;
+ sprintf(name, "%d",
+ XkbFindKeycodeByName(xkb, key->name.name, True));
+ if (olKey) {
+ name2 = buf2;
+ sprintf(name, "%d",
+ XkbFindKeycodeByName(xkb, olKey, True));
+ }
+ }
+ bzero(&top, sizeof(KeyTop));
+ if (name2 != NULL) {
+ top.present |= G1LX_MASK;
+ strncpy(top.label[G1L1], name, LABEL_LEN - 1);
+ top.label[G1L1][LABEL_LEN - 1] = '\0';
+ strncpy(top.label[G1L2], name2, LABEL_LEN - 1);
+ top.label[G1L2][LABEL_LEN - 1] = '\0';
+ }
+ else if (name != NULL) {
+ top.present |= CENTER_MASK;
+ strncpy(top.label[CENTER], name, LABEL_LEN - 1);
+ top.label[CENTER][LABEL_LEN - 1] = '\0';
+ }
+ else {
+ fprintf(out, "%% No label for %s\n",
+ XkbKeyNameText(key->name.name, XkbMessage));
+ }
+ }
+ if (row->vertical) {
+ x = row->left;
+ y = offset;
+ offset += shape->bounds.y2;
+ }
+ else {
+ x = offset;
+ y = row->top;
+ offset += shape->bounds.x2;
+ }
+ name = key->name.name;
+ fprintf(out, "%% %s\n", XkbKeyNameText(name, XkbMessage));
+ if (state->args->wantKeycodes)
+ kc = XkbFindKeycodeByName(xkb, key->name.name, True);
+ PSLabelKey(out, state, &top, x, y, &bounds, kc, shape->bounds.y2);
+ }
}
- PSGRestore(out,state);
+ PSGRestore(out, state);
return;
}
Bool
GeometryToPostScript(FILE *out, XkbFileInfo *pResult, XKBPrintArgs *args)
{
-XkbDrawablePtr first,draw;
-PSState state;
-Bool dfltBorder;
-int i;
-
- if ((!pResult)||(!pResult->xkb)||(!pResult->xkb->geom))
- return False;
- state.xkb= pResult->xkb;
- state.dpy= pResult->xkb->dpy;
- state.geom= pResult->xkb->geom;
- state.color= state.black= state.white= -1;
- state.font= -1;
- state.nPages= 0;
- state.totalKB= 1;
- state.kbPerPage= 1;
- state.x1= state.y1= state.x2= state.y2= 0;
- state.args= args;
-
- if ((args->label==LABEL_SYMBOLS)&&(pResult->xkb->ctrls)) {
- if (args->nTotalGroups==0)
- state.totalKB= pResult->xkb->ctrls->num_groups/args->nLabelGroups;
- else state.totalKB= args->nTotalGroups;
- if (state.totalKB<1)
- state.totalKB= 1;
- else if (state.totalKB>1)
- state.kbPerPage= 2;
+ XkbDrawablePtr first, draw;
+ PSState state;
+ Bool dfltBorder;
+ int i;
+
+ if ((!pResult) || (!pResult->xkb) || (!pResult->xkb->geom))
+ return False;
+ state.xkb = pResult->xkb;
+ state.dpy = pResult->xkb->dpy;
+ state.geom = pResult->xkb->geom;
+ state.color = state.black = state.white = -1;
+ state.font = -1;
+ state.nPages = 0;
+ state.totalKB = 1;
+ state.kbPerPage = 1;
+ state.x1 = state.y1 = state.x2 = state.y2 = 0;
+ state.args = args;
+
+ if ((args->label == LABEL_SYMBOLS) && (pResult->xkb->ctrls)) {
+ if (args->nTotalGroups == 0)
+ state.totalKB =
+ pResult->xkb->ctrls->num_groups / args->nLabelGroups;
+ else
+ state.totalKB = args->nTotalGroups;
+ if (state.totalKB < 1)
+ state.totalKB = 1;
+ else if (state.totalKB > 1)
+ state.kbPerPage = 2;
}
- if (args->nKBPerPage!=0)
- state.kbPerPage= args->nKBPerPage;
-
- PSProlog(out,&state);
- first= XkbGetOrderedDrawables(state.geom,NULL);
-
- for (draw=first,dfltBorder=True;draw!=NULL;draw=draw->next) {
- if ((draw->type!=XkbDW_Section)&&
- ((draw->u.doodad->any.type==XkbOutlineDoodad)||
- (draw->u.doodad->any.type==XkbSolidDoodad))) {
- char *name;
- name= XkbAtomGetString(state.dpy,draw->u.doodad->any.name);
- if ((name!=NULL)&&(uStrCaseEqual(name,"edges"))) {
- dfltBorder= False;
- break;
- }
- }
+ if (args->nKBPerPage != 0)
+ state.kbPerPage = args->nKBPerPage;
+
+ PSProlog(out, &state);
+ first = XkbGetOrderedDrawables(state.geom, NULL);
+
+ for (draw = first, dfltBorder = True; draw != NULL; draw = draw->next) {
+ if ((draw->type != XkbDW_Section) &&
+ ((draw->u.doodad->any.type == XkbOutlineDoodad) ||
+ (draw->u.doodad->any.type == XkbSolidDoodad))) {
+ char *name;
+
+ name = XkbAtomGetString(state.dpy, draw->u.doodad->any.name);
+ if ((name != NULL) && (uStrCaseEqual(name, "edges"))) {
+ dfltBorder = False;
+ break;
+ }
+ }
}
- for (i=0;i<state.totalKB;i++) {
- PSPageSetup(out,&state,dfltBorder);
- for (draw=first;draw!=NULL;draw=draw->next) {
- if (draw->type==XkbDW_Section)
- PSSection(out,&state,draw->u.section);
- else {
- PSDoodad(out,&state,draw->u.doodad);
- }
- }
- PSPageTrailer(out,&state);
- state.args->baseLabelGroup+= state.args->nLabelGroups;
+ for (i = 0; i < state.totalKB; i++) {
+ PSPageSetup(out, &state, dfltBorder);
+ for (draw = first; draw != NULL; draw = draw->next) {
+ if (draw->type == XkbDW_Section)
+ PSSection(out, &state, draw->u.section);
+ else {
+ PSDoodad(out, &state, draw->u.doodad);
+ }
+ }
+ PSPageTrailer(out, &state);
+ state.args->baseLabelGroup += state.args->nLabelGroups;
}
XkbFreeOrderedDrawables(first);
- PSFileTrailer(out,&state);
+ PSFileTrailer(out, &state);
return True;
}
diff --git a/utils.c b/utils.c
index e729af4..7038110 100644
--- a/utils.c
+++ b/utils.c
@@ -2,15 +2,15 @@
/*\
* $Xorg: utils.c,v 1.5 2000/08/17 19:54:50 cpqbld Exp $
*
- * COPYRIGHT 1990
- * DIGITAL EQUIPMENT CORPORATION
- * MAYNARD, MASSACHUSETTS
- * ALL RIGHTS RESERVED.
+ * COPYRIGHT 1990
+ * DIGITAL EQUIPMENT CORPORATION
+ * MAYNARD, MASSACHUSETTS
+ * ALL RIGHTS RESERVED.
*
* THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND
* SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION.
- * DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE
- * FOR ANY PURPOSE. IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED
+ * DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE
+ * FOR ANY PURPOSE. IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED
* WARRANTY.
*
* IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT
@@ -22,7 +22,7 @@
* that the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation, and that the name of Digital Equipment Corporation not be
- * used in advertising or publicity pertaining to distribution of the
+ * used in advertising or publicity pertaining to distribution of the
* software without specific, written prior permission.
\*/
/* $XFree86: xc/programs/xkbprint/utils.c,v 3.4 2001/01/17 23:46:11 dawes Exp $ */
@@ -39,7 +39,7 @@ unsigned int debugFlags;
Opaque
uAlloc(unsigned size)
{
- return((Opaque)malloc(size));
+ return ((Opaque) malloc(size));
}
/***====================================================================***/
@@ -47,7 +47,7 @@ uAlloc(unsigned size)
Opaque
uCalloc(unsigned n, unsigned size)
{
- return((Opaque)calloc(n,size));
+ return ((Opaque) calloc(n, size));
}
/***====================================================================***/
@@ -55,9 +55,10 @@ uCalloc(unsigned n, unsigned size)
Opaque
uRealloc(Opaque old, unsigned newSize)
{
- if (old==NULL)
- return((Opaque)malloc(newSize));
- else return((Opaque)realloc((char *)old,newSize));
+ if (old == NULL)
+ return ((Opaque) malloc(newSize));
+ else
+ return ((Opaque) realloc((char *) old, newSize));
}
/***====================================================================***/
@@ -65,17 +66,17 @@ uRealloc(Opaque old, unsigned newSize)
Opaque
uRecalloc(Opaque old, unsigned nOld, unsigned nNew, unsigned itemSize)
{
-char *rtrn;
+ char *rtrn;
- if (old==NULL)
- rtrn= (char *)calloc(nNew,itemSize);
+ if (old == NULL)
+ rtrn = (char *) calloc(nNew, itemSize);
else {
- rtrn= (char *)realloc((char *)old,nNew*itemSize);
- if ((rtrn)&&(nNew>nOld)) {
- bzero(&rtrn[nOld*itemSize],(nNew-nOld)*itemSize);
- }
+ rtrn = (char *) realloc((char *) old, nNew * itemSize);
+ if ((rtrn) && (nNew > nOld)) {
+ bzero(&rtrn[nOld * itemSize], (nNew - nOld) * itemSize);
+ }
}
- return (Opaque)rtrn;
+ return (Opaque) rtrn;
}
/***====================================================================***/
@@ -83,8 +84,8 @@ char *rtrn;
void
uFree(Opaque ptr)
{
- if (ptr!=(Opaque)NULL)
- free((char *)ptr);
+ if (ptr != (Opaque) NULL)
+ free((char *) ptr);
return;
}
@@ -92,37 +93,39 @@ uFree(Opaque ptr)
/*** FUNCTION ENTRY TRACKING ***/
/***====================================================================***/
-static FILE *entryFile= NULL;
-static int uEntryLevel;
+static FILE * entryFile = NULL;
+static int uEntryLevel;
Boolean
uSetEntryFile(char *name)
{
- if ((entryFile!=NULL)&&(entryFile!=stderr)) {
- fprintf(entryFile,"switching to %s\n",name?name:"stderr");
- fclose(entryFile);
+ if ((entryFile != NULL) && (entryFile != stderr)) {
+ fprintf(entryFile, "switching to %s\n", name ? name : "stderr");
+ fclose(entryFile);
}
- if (name!=NullString) entryFile= fopen(name,"w");
- else entryFile= stderr;
- if (entryFile==NULL) {
- entryFile= stderr;
- return(False);
+ if (name != NullString)
+ entryFile = fopen(name, "w");
+ else
+ entryFile = stderr;
+ if (entryFile == NULL) {
+ entryFile = stderr;
+ return (False);
}
- return(True);
+ return (True);
}
void
-uEntry(int l, char *s,...)
+uEntry(int l, char *s, ...)
{
-int i;
-va_list ap;
+ int i;
+ va_list ap;
va_start(ap, s);
- for (i=0;i<uEntryLevel;i++) {
- putc(' ',entryFile);
+ for (i = 0; i < uEntryLevel; i++) {
+ putc(' ', entryFile);
}
- vfprintf(entryFile,s,ap);
- uEntryLevel+= l;
+ vfprintf(entryFile, s, ap);
+ uEntryLevel += l;
va_end(ap);
return;
}
@@ -130,14 +133,15 @@ va_list ap;
void
uExit(int l, char *rtVal)
{
-int i;
+ int i;
- uEntryLevel-= l;
- if (uEntryLevel<0) uEntryLevel= 0;
- for (i=0;i<uEntryLevel;i++) {
- putc(' ',entryFile);
+ uEntryLevel -= l;
+ if (uEntryLevel < 0)
+ uEntryLevel = 0;
+ for (i = 0; i < uEntryLevel; i++) {
+ putc(' ', entryFile);
}
- fprintf(entryFile,"---> 0x%p\n",rtVal);
+ fprintf(entryFile, "---> 0x%p\n", rtVal);
return;
}
@@ -145,49 +149,51 @@ int i;
/*** PRINT FUNCTIONS ***/
/***====================================================================***/
- FILE *uDebugFile= NULL;
- int uDebugIndentLevel= 0;
- int uDebugIndentSize= 4;
+FILE *uDebugFile = NULL;
+int uDebugIndentLevel = 0;
+int uDebugIndentSize = 4;
Boolean
uSetDebugFile(char *name)
{
- if ((uDebugFile!=NULL)&&(uDebugFile!=stderr)) {
- fprintf(uDebugFile,"switching to %s\n",name?name:"stderr");
- fclose(uDebugFile);
+ if ((uDebugFile != NULL) && (uDebugFile != stderr)) {
+ fprintf(uDebugFile, "switching to %s\n", name ? name : "stderr");
+ fclose(uDebugFile);
}
- if (name!=NullString) uDebugFile= fopen(name,"w");
- else uDebugFile= stderr;
- if (uDebugFile==NULL) {
- uDebugFile= stderr;
- return(False);
+ if (name != NullString)
+ uDebugFile = fopen(name, "w");
+ else
+ uDebugFile = stderr;
+ if (uDebugFile == NULL) {
+ uDebugFile = stderr;
+ return (False);
}
- return(True);
+ return (True);
}
void
-uDebug(char *s,...)
+uDebug(char *s, ...)
{
-int i;
-va_list ap;
+ int i;
+ va_list ap;
va_start(ap, s);
- for (i=(uDebugIndentLevel*uDebugIndentSize);i>0;i--) {
- putc(' ',uDebugFile);
+ for (i = (uDebugIndentLevel * uDebugIndentSize); i > 0; i--) {
+ putc(' ', uDebugFile);
}
- vfprintf(uDebugFile,s,ap);
+ vfprintf(uDebugFile, s, ap);
fflush(uDebugFile);
va_end(ap);
return;
}
void
-uDebugNOI(char *s,...)
+uDebugNOI(char *s, ...)
{
-va_list ap;
+ va_list ap;
va_start(ap, s);
- vfprintf(uDebugFile,s,ap);
+ vfprintf(uDebugFile, s, ap);
fflush(uDebugFile);
va_end(ap);
return;
@@ -195,31 +201,33 @@ va_list ap;
/***====================================================================***/
-static FILE *errorFile= NULL;
+static FILE *errorFile = NULL;
Boolean
uSetErrorFile(char *name)
{
- if ((errorFile!=NULL)&&(errorFile!=stderr)) {
- fprintf(errorFile,"switching to %s\n",name?name:"stderr");
- fclose(errorFile);
+ if ((errorFile != NULL) && (errorFile != stderr)) {
+ fprintf(errorFile, "switching to %s\n", name ? name : "stderr");
+ fclose(errorFile);
}
- if (name!=NullString) errorFile= fopen(name,"w");
- else errorFile= stderr;
- if (errorFile==NULL) {
- errorFile= stderr;
- return(False);
+ if (name != NullString)
+ errorFile = fopen(name, "w");
+ else
+ errorFile = stderr;
+ if (errorFile == NULL) {
+ errorFile = stderr;
+ return (False);
}
- return(True);
+ return (True);
}
void
-uInformation(char *s,...)
+uInformation(char *s, ...)
{
va_list ap;
va_start(ap, s);
- vfprintf(errorFile,s,ap);
+ vfprintf(errorFile, s, ap);
fflush(errorFile);
va_end(ap);
return;
@@ -228,13 +236,13 @@ uInformation(char *s,...)
/***====================================================================***/
void
-uAction(char *s,...)
+uAction(char *s, ...)
{
va_list ap;
va_start(ap, s);
- fprintf(errorFile," ");
- vfprintf(errorFile,s,ap);
+ fprintf(errorFile, " ");
+ vfprintf(errorFile, s, ap);
fflush(errorFile);
va_end(ap);
return;
@@ -243,13 +251,13 @@ uAction(char *s,...)
/***====================================================================***/
void
-uWarning(char *s,...)
+uWarning(char *s, ...)
{
va_list ap;
va_start(ap, s);
- fprintf(errorFile,"Warning: ");
- vfprintf(errorFile,s,ap);
+ fprintf(errorFile, "Warning: ");
+ vfprintf(errorFile, s, ap);
fflush(errorFile);
va_end(ap);
return;
@@ -258,13 +266,13 @@ uWarning(char *s,...)
/***====================================================================***/
void
-uError(char *s,...)
+uError(char *s, ...)
{
va_list ap;
va_start(ap, s);
- fprintf(errorFile,"Error: ");
- vfprintf(errorFile,s,ap);
+ fprintf(errorFile, "Error: ");
+ vfprintf(errorFile, s, ap);
fflush(errorFile);
va_end(ap);
return;
@@ -273,14 +281,14 @@ uError(char *s,...)
/***====================================================================***/
void
-uFatalError(char *s,...)
+uFatalError(char *s, ...)
{
va_list ap;
va_start(ap, s);
- fprintf(errorFile,"Fatal Error: ");
- vfprintf(errorFile,s,ap);
- fprintf(errorFile," Exiting\n");
+ fprintf(errorFile, "Fatal Error: ");
+ vfprintf(errorFile, s, ap);
+ fprintf(errorFile, " Exiting\n");
fflush(errorFile);
va_end(ap);
exit(1);
@@ -290,13 +298,13 @@ uFatalError(char *s,...)
/***====================================================================***/
void
-uInternalError(char *s,...)
+uInternalError(char *s, ...)
{
va_list ap;
va_start(ap, s);
- fprintf(errorFile,"Internal error: ");
- vfprintf(errorFile,s,ap);
+ fprintf(errorFile, "Internal error: ");
+ vfprintf(errorFile, s, ap);
fflush(errorFile);
va_end(ap);
return;
@@ -308,12 +316,12 @@ uInternalError(char *s,...)
char *
uStringDup(char *str)
{
-char *rtrn;
+ char *rtrn;
- if (str==NULL)
- return NULL;
- rtrn= (char *)uAlloc(strlen(str)+1);
- strcpy(rtrn,str);
+ if (str == NULL)
+ return NULL;
+ rtrn = (char *) uAlloc(strlen(str) + 1);
+ strcpy(rtrn, str);
return rtrn;
}
#endif
@@ -322,24 +330,25 @@ char *rtrn;
int
uStrCaseCmp(char *str1, char *str2)
{
- char buf1[512],buf2[512];
+ char buf1[512], buf2[512];
char c, *s;
+
register int n;
- for (n=0, s = buf1; (c = *str1++); n++) {
- if (isupper(c))
- c = tolower(c);
- if (n>510)
- break;
- *s++ = c;
+ for (n = 0, s = buf1; (c = *str1++); n++) {
+ if (isupper(c))
+ c = tolower(c);
+ if (n > 510)
+ break;
+ *s++ = c;
}
*s = '\0';
- for (n=0, s = buf2; (c = *str2++); n++) {
- if (isupper(c))
- c = tolower(c);
- if (n>510)
- break;
- *s++ = c;
+ for (n = 0, s = buf2; (c = *str2++); n++) {
+ if (isupper(c))
+ c = tolower(c);
+ if (n > 510)
+ break;
+ *s++ = c;
}
*s = '\0';
return (strcmp(buf1, buf2));
@@ -350,15 +359,19 @@ uStrCasePrefix(char *prefix, char *str)
{
char c1;
char c2;
- while (((c1=*prefix)!='\0')&&((c2=*str)!='\0')) {
- if (isupper(c1)) c1= tolower(c1);
- if (isupper(c2)) c2= tolower(c2);
- if (c1!=c2)
- return 0;
- prefix++; str++;
+
+ while (((c1 = *prefix) != '\0') && ((c2 = *str) != '\0')) {
+ if (isupper(c1))
+ c1 = tolower(c1);
+ if (isupper(c2))
+ c2 = tolower(c2);
+ if (c1 != c2)
+ return 0;
+ prefix++;
+ str++;
}
- if (c1!='\0')
- return 0;
+ if (c1 != '\0')
+ return 0;
return 1;
}
diff --git a/utils.h b/utils.h
index b76a93b..9676cc8 100644
--- a/utils.h
+++ b/utils.h
@@ -4,15 +4,15 @@
/*\
* $Xorg: utils.h,v 1.3 2000/08/17 19:54:50 cpqbld Exp $
*
- * COPYRIGHT 1990
- * DIGITAL EQUIPMENT CORPORATION
- * MAYNARD, MASSACHUSETTS
- * ALL RIGHTS RESERVED.
+ * COPYRIGHT 1990
+ * DIGITAL EQUIPMENT CORPORATION
+ * MAYNARD, MASSACHUSETTS
+ * ALL RIGHTS RESERVED.
*
* THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND
* SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION.
- * DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE
- * FOR ANY PURPOSE. IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED
+ * DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE
+ * FOR ANY PURPOSE. IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED
* WARRANTY.
*
* IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT
@@ -24,7 +24,7 @@
* that the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation, and that the name of Digital Equipment Corporation not be
- * used in advertising or publicity pertaining to distribution of the
+ * used in advertising or publicity pertaining to distribution of the
* software without specific, written prior permission.
\*/
/* $XFree86: xc/programs/xkbprint/utils.h,v 1.5 2001/07/25 15:05:25 dawes Exp $ */
@@ -40,7 +40,6 @@
_XFUNCPROTOBEGIN
-
#ifndef NUL
#define NUL '\0'
#endif
@@ -48,14 +47,14 @@ _XFUNCPROTOBEGIN
/***====================================================================***/
#ifndef OPAQUE_DEFINED
-typedef void *Opaque;
+typedef void *Opaque;
#endif
#ifndef NullOpaque
#define NullOpaque ((Opaque)NULL)
#endif
#ifndef BOOLEAN_DEFINED
-typedef char Boolean;
+typedef char Boolean;
#endif
#ifndef True
@@ -65,7 +64,7 @@ typedef char Boolean;
#define booleanText(b) ((b)?"True":"False")
#ifndef COMPARISON_DEFINED
-typedef int Comparison;
+typedef int Comparison;
#define Greater ((Comparison)1)
#define Equal ((Comparison)0)
@@ -76,35 +75,25 @@ typedef int Comparison;
#ifdef notyet
typedef union {
- int i;
- unsigned u;
- void *p;
- void *(*fp)();
+ int i;
+ unsigned u;
+ void *p;
+ void *(*fp) ();
} Union;
#endif
/***====================================================================***/
-extern Opaque uAlloc(
- unsigned /* size */
-);
-extern Opaque uCalloc(
- unsigned /* n */,
- unsigned /* size */
-);
-extern Opaque uRealloc(
- Opaque /* old */,
- unsigned /* newSize */
-);
-extern Opaque uRecalloc(
- Opaque /* old */,
- unsigned /* nOld */,
- unsigned /* nNew */,
- unsigned /* newSize */
-);
-extern void uFree(
- Opaque /* ptr */
-);
+extern Opaque uAlloc(unsigned /* size */);
+extern Opaque uCalloc(unsigned /* n */ ,
+ unsigned /* size */);
+extern Opaque uRealloc(Opaque /* old */ ,
+ unsigned /* newSize */);
+extern Opaque uRecalloc(Opaque /* old */ ,
+ unsigned /* nOld */ ,
+ unsigned /* nNew */ ,
+ unsigned /* newSize */);
+extern void uFree(Opaque /* ptr */);
#define uTypedAlloc(t) ((t *)uAlloc((unsigned)sizeof(t)))
#define uTypedCalloc(n,t) ((t *)uCalloc((unsigned)n,(unsigned)sizeof(t)))
@@ -120,13 +109,13 @@ extern void uFree(
/***====================================================================***/
-extern Boolean uSetErrorFile ( char *name );
-extern void uInformation ( char *s, ...);
-extern void uAction ( char *s, ... );
-extern void uWarning ( char *s, ... );
-extern void uError ( char *s, ... );
-extern void uFatalError(char *s,...);
-extern void uInternalError ( char *s, ... );
+extern Boolean uSetErrorFile(char *name);
+extern void uInformation(char *s, ...);
+extern void uAction(char *s, ...);
+extern void uWarning(char *s, ...);
+extern void uError(char *s, ...);
+extern void uFatalError(char *s, ...);
+extern void uInternalError(char *s, ...);
/***====================================================================***/
@@ -141,21 +130,16 @@ extern void uInternalError ( char *s, ... );
#define uStrCaseCmp(s1,s2) (strcasecmp(s1,s2))
#define uStrCasePrefix(p,s) (strncasecmp(p,s,strlen(p))==0)
#else
-extern int uStrCaseCmp(
- char * /* s1 */,
- char * /* s2 */
-);
-extern int uStrCasePrefix(
- char * /* p */,
- char * /* str */
-);
+extern int uStrCaseCmp(char * /* s1 */ ,
+ char * /* s2 */);
+
+extern int uStrCasePrefix(char * /* p */ ,
+ char * /* str */);
#endif
#ifdef HAVE_STRDUP
#define uStringDup(s1) (strdup(s1))
#else
-extern char *uStringDup(
- char * /* s1 */
-);
+extern char *uStringDup(char * /* s1 */);
#endif
/***====================================================================***/
@@ -174,16 +158,15 @@ extern char *uStringDup(
#endif
extern
-unsigned int DEBUG_VAR;
-
-extern void uDebug( char *s, ... );
-extern void uDebugNOI( char *s, ... ); /* no indent */
-extern Boolean uSetDebugFile(
- char *name
-);
-extern FILE *uDebugFile;
-extern int uDebugIndentLevel;
-extern int uDebugIndentSize;
+unsigned int DEBUG_VAR;
+
+extern void uDebug(char *s, ...);
+extern void uDebugNOI(char *s, ...); /* no indent */
+extern Boolean uSetDebugFile(char *name);
+extern FILE *uDebugFile;
+extern int uDebugIndentLevel;
+extern int uDebugIndentSize;
+
#define uDebugIndent(l) (uDebugIndentLevel+=(l))
#define uDebugOutdent(l) (uDebugIndentLevel-=(l))
#ifdef DEBUG_ON
@@ -214,20 +197,17 @@ extern int uDebugIndentSize;
#define uDEBUG_NOI5(f,s,a,b,c,d,e)
#endif
-extern Boolean uSetEntryFile(
- char *name
-);
-extern void uEntry(int l, char *s, ... );
-extern void uExit(
- int l,char *rtVal
-);
+extern Boolean uSetEntryFile(char *name);
+extern void uEntry(int l, char *s, ...);
+extern void uExit(int l, char *rtVal);
+
#ifdef ENTRY_TRACKING_ON
#define ENTRY_BIT 0x10
#define LOW_ENTRY_BIT 0x1000
#define ENTER (DEBUG_VAR&ENTRY_BIT)
#define FLAG(fLag) (DEBUG_VAR&(fLag))
-extern int uEntryLevel;
+extern int uEntryLevel;
#define uENTRY(s) { if (ENTER) uEntry(1,s);}
#define uENTRY1(s,a) { if (ENTER) uEntry(1,s,a);}
@@ -272,10 +252,8 @@ extern int uEntryLevel;
#define uFLAG_ENTRY7(f,s,a,b,c,d,e,g,h)
#define uFLAG_RETURN(v) { return(v);}
#define uFLAG_VOIDRETURN { return; }
-#endif
+#endif
_XFUNCPROTOEND
-#endif /* UTILS_H */
-
-
+#endif /* UTILS_H */
diff --git a/xkbprint.c b/xkbprint.c
index 69f107d..4a87ef1 100644
--- a/xkbprint.c
+++ b/xkbprint.c
@@ -7,19 +7,19 @@
fee is hereby granted, provided that the above copyright
notice appear in all copies and that both that copyright
notice and this permission notice appear in supporting
- documentation, and that the name of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
+ documentation, and that the name of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
+ Silicon Graphics makes no representation about the suitability
of this software for any purpose. It is provided "as is"
without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
- DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
@@ -61,75 +61,81 @@
#ifdef notyet
static char *fileTypeExt[] = {
- "XXX",
- "xkm",
- "xkb"
+ "XXX",
+ "xkm",
+ "xkb"
};
#endif
-static unsigned outputFormat= WANT_DEFAULT;
-static char * wantLocale= "C";
-static char * rootDir;
-static char * inputFile;
-static char * outputFile;
-static char * outputFont= NULL;
-static char * inDpyName,*outDpyName;
-static Display * inDpy;
-static Display * outDpy;
+static unsigned outputFormat = WANT_DEFAULT;
+static char * wantLocale = "C";
+static char * rootDir;
+static char * inputFile;
+static char * outputFile;
+static char * outputFont = NULL;
+static char * inDpyName;
+static char * outDpyName;
+static Display * inDpy;
+static Display * outDpy;
#ifdef NOTYET
-static Bool computeDflts= False;
+static Bool computeDflts = False;
#endif
-static XKBPrintArgs args;
-static unsigned warningLevel= 5;
-static Bool synch;
+static XKBPrintArgs args;
+static unsigned warningLevel = 5;
+static Bool synch;
/***====================================================================***/
static void
Usage(int argc, char *argv[])
{
- fprintf(stderr,"Usage: %s [options] input-file [ output-file ]\n",argv[0]);
- fprintf(stderr,"Legal options:\n");
- fprintf(stderr,"-?,-help Print this message\n");
- fprintf(stderr,"-color Use colors from geometry\n");
+ fprintf(stderr, "Usage: %s [options] input-file [ output-file ]\n",
+ argv[0]);
+ fprintf(stderr, "Legal options:\n");
+ fprintf(stderr, "-?,-help Print this message\n");
+ fprintf(stderr, "-color Use colors from geometry\n");
#ifdef DEBUG
- fprintf(stderr,"-d [flags] Report debugging information\n");
+ fprintf(stderr, "-d [flags] Report debugging information\n");
#endif
- fprintf(stderr,"-dflts Compute defaults for missing components\n");
- fprintf(stderr,"-diffs Only show explicit key definitions\n");
- fprintf(stderr,"-eps Generate an EPS file\n");
- fprintf(stderr,"-fit Fit keyboard image on page (default)\n");
- fprintf(stderr,"-full Print keyboard image full sized\n");
- fprintf(stderr,"-grid <n> Print a grid with <n> mm resolution\n");
- fprintf(stderr,"-if <name> Specifies the name of an internal font to dump\n");
+ fprintf(stderr, "-dflts Compute defaults for missing components\n");
+ fprintf(stderr, "-diffs Only show explicit key definitions\n");
+ fprintf(stderr, "-eps Generate an EPS file\n");
+ fprintf(stderr, "-fit Fit keyboard image on page (default)\n");
+ fprintf(stderr, "-full Print keyboard image full sized\n");
+ fprintf(stderr, "-grid <n> Print a grid with <n> mm resolution\n");
+ fprintf(stderr,
+ "-if <name> Specifies the name of an internal font to dump\n");
#ifdef DEBUG
- fprintf(stderr,"-I[<dir>] Specifies a top level directory\n");
- fprintf(stderr," for include directives. You can\n");
- fprintf(stderr," specify multiple directories.\n");
+ fprintf(stderr, "-I[<dir>] Specifies a top level directory\n");
+ fprintf(stderr, " for include directives. You can\n");
+ fprintf(stderr, " specify multiple directories.\n");
#endif
- fprintf(stderr,"-kc Also print keycodes, if possible\n");
- fprintf(stderr,"-label <what> Specifies the label to be drawn on keys\n");
- fprintf(stderr," Legal values for <what> are:\n");
- fprintf(stderr," none,name,code,symbols\n");
- fprintf(stderr,"-lc <locale> Use <locale> for fonts and symbols\n");
- fprintf(stderr,"-level1 Use level 1 PostScript (default)\n");
- fprintf(stderr,"-level2 Use level 2 PostScript\n");
- fprintf(stderr,"-lg <num> Use keyboard group <num> to print labels\n");
- fprintf(stderr,"-ll <num> Use shift level <num> to print labels\n");
- fprintf(stderr,"-mono Ignore colors from geometry (default)\n");
- fprintf(stderr,"-n <num> Print <num> copies (default 1)\n");
- fprintf(stderr,"-nkg <num> Number of groups to print on each key\n");
- fprintf(stderr,"-nokc Don't print keycodes, even if possible\n");
- fprintf(stderr,"-npk <num> Number of keyboards to print on each page\n");
- fprintf(stderr,"-ntg <num> Total number of groups to print\n");
- fprintf(stderr,"-o <file> Specifies output file name\n");
- fprintf(stderr,"-R[<DIR>] Specifies the root directory for relative\n");
- fprintf(stderr," path names\n");
- fprintf(stderr,"-pict <what> Specifies use of pictographs instead of\n");
- fprintf(stderr," keysym names where available, <what> can\n");
-fprintf(stderr," be \"all\", \"none\" or \"common\" (default)\n");
- fprintf(stderr,"-synch Force synchronization\n");
- fprintf(stderr,"-w <lvl> Set warning level (0=none, 10=all)\n");
+ fprintf(stderr, "-kc Also print keycodes, if possible\n");
+ fprintf(stderr, "-label <what> Specifies the label to be drawn on keys\n");
+ fprintf(stderr, " Legal values for <what> are:\n");
+ fprintf(stderr, " none,name,code,symbols\n");
+ fprintf(stderr, "-lc <locale> Use <locale> for fonts and symbols\n");
+ fprintf(stderr, "-level1 Use level 1 PostScript (default)\n");
+ fprintf(stderr, "-level2 Use level 2 PostScript\n");
+ fprintf(stderr, "-lg <num> Use keyboard group <num> to print labels\n");
+ fprintf(stderr, "-ll <num> Use shift level <num> to print labels\n");
+ fprintf(stderr, "-mono Ignore colors from geometry (default)\n");
+ fprintf(stderr, "-n <num> Print <num> copies (default 1)\n");
+ fprintf(stderr, "-nkg <num> Number of groups to print on each key\n");
+ fprintf(stderr, "-nokc Don't print keycodes, even if possible\n");
+ fprintf(stderr,
+ "-npk <num> Number of keyboards to print on each page\n");
+ fprintf(stderr, "-ntg <num> Total number of groups to print\n");
+ fprintf(stderr, "-o <file> Specifies output file name\n");
+ fprintf(stderr,
+ "-R[<DIR>] Specifies the root directory for relative\n");
+ fprintf(stderr, " path names\n");
+ fprintf(stderr, "-pict <what> Specifies use of pictographs instead of\n");
+ fprintf(stderr, " keysym names where available, <what> can\n");
+ fprintf(stderr,
+ " be \"all\", \"none\" or \"common\" (default)\n");
+ fprintf(stderr, "-synch Force synchronization\n");
+ fprintf(stderr, "-w <lvl> Set warning level (0=none, 10=all)\n");
}
/***====================================================================***/
@@ -137,408 +143,455 @@ fprintf(stderr," be \"all\", \"none\" or \"common\" (default)\n");
static Bool
parseArgs(int argc, char *argv[])
{
-register int i;
-
- args.copies= 1;
- args.grid= 0;
- args.level1= True;
- args.scaleToFit= True;
- args.wantColor= False;
- args.wantSymbols= COMMON_SYMBOLS;
- args.wantKeycodes= True;
- args.wantDiffs= False;
- args.wantEPS= False;
- args.label= LABEL_AUTO;
- args.baseLabelGroup=0;
- args.nLabelGroups= 1;
- args.nTotalGroups= 0;
- args.nKBPerPage= 0;
- args.labelLevel= 0;
- for (i=1;i<argc;i++) {
- if ((argv[i][0]!='-')||(uStringEqual(argv[i],"-"))) {
- if (inputFile==NULL) {
- inputFile= argv[i];
- }
- else if (outputFile==NULL) {
- outputFile= argv[i];
- }
- else {
- uWarning("Too many file names on command line\n");
- uAction("Compiling %s, writing to %s, ignoring %s\n",
- inputFile,outputFile,argv[i]);
- }
- }
- else if ((strcmp(argv[i],"-?")==0)||(strcmp(argv[i],"-help")==0)) {
- Usage(argc,argv);
- exit(0);
- }
- else if (strcmp(argv[i],"-color")==0) {
- args.wantColor= True;
- }
+ register int i;
+
+ args.copies = 1;
+ args.grid = 0;
+ args.level1 = True;
+ args.scaleToFit = True;
+ args.wantColor = False;
+ args.wantSymbols = COMMON_SYMBOLS;
+ args.wantKeycodes = True;
+ args.wantDiffs = False;
+ args.wantEPS = False;
+ args.label = LABEL_AUTO;
+ args.baseLabelGroup = 0;
+ args.nLabelGroups = 1;
+ args.nTotalGroups = 0;
+ args.nKBPerPage = 0;
+ args.labelLevel = 0;
+ for (i = 1; i < argc; i++) {
+ if ((argv[i][0] != '-') || (uStringEqual(argv[i], "-"))) {
+ if (inputFile == NULL) {
+ inputFile = argv[i];
+ }
+ else if (outputFile == NULL) {
+ outputFile = argv[i];
+ }
+ else {
+ uWarning("Too many file names on command line\n");
+ uAction("Compiling %s, writing to %s, ignoring %s\n",
+ inputFile, outputFile, argv[i]);
+ }
+ }
+ else if ((strcmp(argv[i], "-?") == 0) ||
+ (strcmp(argv[i], "-help") == 0)) {
+ Usage(argc, argv);
+ exit(0);
+ }
+ else if (strcmp(argv[i], "-color") == 0) {
+ args.wantColor = True;
+ }
#ifdef DEBUG
- else if (strcmp(argv[i],"-d")==0) {
- if ((i>=(argc-1))||(!isdigit(argv[i+1][0]))) {
- debugFlags= 1;
- }
- else {
- sscanf(argv[++i],"%i",&debugFlags);
- }
- uInformation("Setting debug flags to %d\n",debugFlags);
- }
+ else if (strcmp(argv[i], "-d") == 0) {
+ if ((i >= (argc - 1)) || (!isdigit(argv[i + 1][0]))) {
+ debugFlags = 1;
+ }
+ else {
+ sscanf(argv[++i], "%i", &debugFlags);
+ }
+ uInformation("Setting debug flags to %d\n", debugFlags);
+ }
#endif
- else if (strcmp(argv[i],"-dflts")==0) {
+ else if (strcmp(argv[i], "-dflts") == 0) {
#ifdef NOTYET
- computeDflts= True;
+ computeDflts = True;
#endif
- uWarning("Compute defaults not implemented yet\n");
- }
- else if (strcmp(argv[i],"-diffs")==0) {
- args.wantDiffs= True;
- }
- else if (strcmp(argv[i],"-eps")==0) {
- args.wantEPS= True;
- }
- else if (strcmp(argv[i],"-fit")==0) {
- args.scaleToFit= True;
- }
- else if (strcmp(argv[i],"-full")==0) {
- args.scaleToFit= False;
- }
- else if (strcmp(argv[i],"-grid")==0) {
- int tmp;
- if (++i>=argc) {
- uWarning("Grid frequency not specified\n");
- uAction("Trailing \"-grid\" option ignored\n");
- }
- else if ((sscanf(argv[i],"%i",&tmp)!=1)||(tmp<1)) {
- uWarning("Grid frequency must be an integer > zero\n");
- uAction("Illegal frequency %d ignored\n",tmp);
- }
- else args.grid= tmp;
- }
+ uWarning("Compute defaults not implemented yet\n");
+ }
+ else if (strcmp(argv[i], "-diffs") == 0) {
+ args.wantDiffs = True;
+ }
+ else if (strcmp(argv[i], "-eps") == 0) {
+ args.wantEPS = True;
+ }
+ else if (strcmp(argv[i], "-fit") == 0) {
+ args.scaleToFit = True;
+ }
+ else if (strcmp(argv[i], "-full") == 0) {
+ args.scaleToFit = False;
+ }
+ else if (strcmp(argv[i], "-grid") == 0) {
+ int tmp;
+
+ if (++i >= argc) {
+ uWarning("Grid frequency not specified\n");
+ uAction("Trailing \"-grid\" option ignored\n");
+ }
+ else if ((sscanf(argv[i], "%i", &tmp) != 1) || (tmp < 1)) {
+ uWarning("Grid frequency must be an integer > zero\n");
+ uAction("Illegal frequency %d ignored\n", tmp);
+ }
+ else
+ args.grid = tmp;
+ }
#ifdef NOTYET
- else if (strncmp(argv[i],"-I",2)==0) {
- if (!XkbAddDirectoryToPath(&argv[i][2])) {
- uAction("Exiting\n");
- exit(1);
- }
- uInternalError("Includes not implemented yet\n");
- }
+ else if (strncmp(argv[i], "-I", 2) == 0) {
+ if (!XkbAddDirectoryToPath(&argv[i][2])) {
+ uAction("Exiting\n");
+ exit(1);
+ }
+ uInternalError("Includes not implemented yet\n");
+ }
#endif
- else if (strcmp(argv[i],"-if")==0) {
- if (++i>=argc) {
- uWarning("Internal Font name not specified\n");
- uAction("Trailing \"-if\" option ignored\n");
- }
- else outputFont= argv[i];
- }
- else if (strcmp(argv[i],"-kc")==0) {
- args.wantKeycodes= True;
- }
- else if (strcmp(argv[i],"-label")==0) {
- if (++i>=argc) {
- uWarning("Label type not specified\n");
- uAction("Trailing \"-label\" option ignored\n");
- }
- else if (uStrCaseEqual(argv[i],"none"))
- args.label= LABEL_NONE;
- else if (uStrCaseEqual(argv[i],"name"))
- args.label= LABEL_KEYNAME;
- else if (uStrCaseEqual(argv[i],"code"))
- args.label= LABEL_KEYCODE;
- else if (uStrCaseEqual(argv[i],"symbols"))
- args.label= LABEL_SYMBOLS;
- else {
- uWarning("Unknown label type \"%s\" specified\n",argv[i]);
- uAction("Ignored\n");
- }
- }
- else if (strcmp(argv[i],"-lc")==0) {
- if (++i>=argc) {
- uWarning("Locale not specified\n");
- uAction("Trailing \"-lc\" option ignored\n");
- }
- else wantLocale= argv[i];
- }
- else if (strcmp(argv[i],"-lg")==0) {
- int tmp;
- if (++i>=argc) {
- uWarning("Label group not specified\n");
- uAction("Trailing \"-lg\" option ignored\n");
- }
- else if ((sscanf(argv[i],"%i",&tmp)!=1)||(tmp<1)||(tmp>4)) {
- uWarning("Label group must be an integer in the range 1..4\n");
- uAction("Illegal group %d ignored\n",tmp);
- }
- else args.baseLabelGroup= tmp-1;
- }
- else if (strcmp(argv[i],"-ll")==0) {
- int tmp;
- if (++i>=argc) {
- uWarning("Label level not specified\n");
- uAction("Trailing \"-ll\" option ignored\n");
- }
- else if ((sscanf(argv[i],"%i",&tmp)!=1)||(tmp<1)||(tmp>255)) {
- uWarning("Label level must be in the range 1..255\n");
- uAction("Illegal level %d ignored\n",tmp);
- }
- else args.labelLevel= tmp-1;
- }
- else if (strcmp(argv[i],"-level1")==0)
- args.level1= True;
- else if (strcmp(argv[i],"-level2")==0)
- args.level1= False;
- else if (strcmp(argv[i],"-mono")==0) {
- args.wantColor= False;
- }
- else if (strcmp(argv[i],"-n")==0) {
- int tmp;
- if (++i>=argc) {
- uWarning("Number of copies not specified\n");
- uAction("Trailing \"-n\" option ignored\n");
- }
- else if ((sscanf(argv[i],"%i",&tmp)!=1)||(tmp<1)) {
- uWarning("Number of copies must be an integer > zero\n");
- uAction("Illegal count %d ignored\n",tmp);
- }
- else args.copies= tmp;
- }
- else if (strcmp(argv[i],"-nokc")==0) {
- args.wantKeycodes= False;
- }
- else if (strcmp(argv[i],"-nkg")==0) {
- int tmp;
- if (++i>=argc) {
- uWarning("Number of groups per key not specified\n");
- uAction("Trailing \"-nkg\" option ignored\n");
- }
- else if ((sscanf(argv[i],"%i",&tmp)!=1)||(tmp<1)||(tmp>2)) {
- uWarning("Groups per key must be in the range 1..2\n");
- uAction("Illegal number of groups %d ignored\n",tmp);
- }
- else args.nLabelGroups= tmp;
- }
- else if (strcmp(argv[i],"-npk")==0) {
- int tmp;
- if (++i>=argc) {
- uWarning("Number of keyboards per page not specified\n");
- uAction("Trailing \"-npk\" option ignored\n");
- }
- else if ((sscanf(argv[i],"%i",&tmp)!=1)||(tmp<1)||(tmp>2)) {
- uWarning("Keyboards per page must be in the range 1..2\n");
- uAction("Illegal number of keyboards %d ignored\n",tmp);
- }
- else args.nKBPerPage= tmp;
- }
- else if (strcmp(argv[i],"-ntg")==0) {
- int tmp;
- if (++i>=argc) {
- uWarning("Total number of groups not specified\n");
- uAction("Trailing \"-ntg\" option ignored\n");
- }
- else if ((sscanf(argv[i],"%i",&tmp)!=1)||(tmp<1)||(tmp>4)) {
- uWarning("Total number of groups must be in the range 1..4\n");
- uAction("Illegal number of groups %d ignored\n",tmp);
- }
- else args.nTotalGroups= tmp;
- }
- else if (strcmp(argv[i],"-o")==0) {
- if (++i>=argc) {
- uWarning("No output file specified\n");
- uAction("Trailing \"-o\" option ignored\n");
- }
- else if (outputFile!=NULL) {
- uWarning("Multiple output files specified\n");
- uAction("Compiling %s, ignoring %s\n",outputFile,argv[i]);
- }
- else outputFile= argv[i];
- }
- else if (strncmp(argv[i],"-R",2)==0) {
- if (argv[i][2]=='\0') {
- uWarning("No root directory specified\n");
- uAction("Ignoring -R option\n");
- }
- else if (rootDir!=NULL) {
- uWarning("Multiple root directories specified\n");
- uAction("Using %s, ignoring %s\n",rootDir,argv[i]);
- }
- else rootDir= &argv[i][2];
- }
- else if (strcmp(argv[i],"-pict")==0) {
- if (++i>=argc) {
- uWarning("No level of pictographs specified\n");
- uAction("Trailing \"-pict\" option ignored\n");
- }
- else if (strcmp(argv[i],"none")==0)
- args.wantSymbols= NO_SYMBOLS;
- else if (strcmp(argv[i],"common")==0)
- args.wantSymbols= COMMON_SYMBOLS;
- else if (strcmp(argv[i],"all")==0)
- args.wantSymbols= ALL_SYMBOLS;
- else if (outputFile!=NULL) {
- uWarning("Unknown pictograph level specified\n");
- uAction("Ignoring illegal value %s\n",argv[i]);
- }
- }
- else if ((strcmp(argv[i],"-synch")==0)||(strcmp(argv[i],"-s")==0)) {
- synch= True;
- }
- else if (strcmp(argv[i],"-w")==0) {
- if ((i>=(argc-1))||(!isdigit(argv[i+1][0]))) {
- warningLevel= 0;
- }
- else {
- int itmp;
- if (sscanf(argv[++i],"%i",&itmp))
- warningLevel = itmp;
- }
- }
- else {
- uError("Unknown flag \"%s\" on command line\n",argv[i]);
- Usage(argc,argv);
- return False;
- }
+ else if (strcmp(argv[i], "-if") == 0) {
+ if (++i >= argc) {
+ uWarning("Internal Font name not specified\n");
+ uAction("Trailing \"-if\" option ignored\n");
+ }
+ else
+ outputFont = argv[i];
+ }
+ else if (strcmp(argv[i], "-kc") == 0) {
+ args.wantKeycodes = True;
+ }
+ else if (strcmp(argv[i], "-label") == 0) {
+ if (++i >= argc) {
+ uWarning("Label type not specified\n");
+ uAction("Trailing \"-label\" option ignored\n");
+ }
+ else if (uStrCaseEqual(argv[i], "none"))
+ args.label = LABEL_NONE;
+ else if (uStrCaseEqual(argv[i], "name"))
+ args.label = LABEL_KEYNAME;
+ else if (uStrCaseEqual(argv[i], "code"))
+ args.label = LABEL_KEYCODE;
+ else if (uStrCaseEqual(argv[i], "symbols"))
+ args.label = LABEL_SYMBOLS;
+ else {
+ uWarning("Unknown label type \"%s\" specified\n", argv[i]);
+ uAction("Ignored\n");
+ }
+ }
+ else if (strcmp(argv[i], "-lc") == 0) {
+ if (++i >= argc) {
+ uWarning("Locale not specified\n");
+ uAction("Trailing \"-lc\" option ignored\n");
+ }
+ else
+ wantLocale = argv[i];
+ }
+ else if (strcmp(argv[i], "-lg") == 0) {
+ int tmp;
+
+ if (++i >= argc) {
+ uWarning("Label group not specified\n");
+ uAction("Trailing \"-lg\" option ignored\n");
+ }
+ else if ((sscanf(argv[i], "%i", &tmp) != 1) || (tmp < 1) ||
+ (tmp > 4)) {
+ uWarning("Label group must be an integer in the range 1..4\n");
+ uAction("Illegal group %d ignored\n", tmp);
+ }
+ else
+ args.baseLabelGroup = tmp - 1;
+ }
+ else if (strcmp(argv[i], "-ll") == 0) {
+ int tmp;
+
+ if (++i >= argc) {
+ uWarning("Label level not specified\n");
+ uAction("Trailing \"-ll\" option ignored\n");
+ }
+ else if ((sscanf(argv[i], "%i", &tmp) != 1) || (tmp < 1) ||
+ (tmp > 255)) {
+ uWarning("Label level must be in the range 1..255\n");
+ uAction("Illegal level %d ignored\n", tmp);
+ }
+ else
+ args.labelLevel = tmp - 1;
+ }
+ else if (strcmp(argv[i], "-level1") == 0)
+ args.level1 = True;
+ else if (strcmp(argv[i], "-level2") == 0)
+ args.level1 = False;
+ else if (strcmp(argv[i], "-mono") == 0) {
+ args.wantColor = False;
+ }
+ else if (strcmp(argv[i], "-n") == 0) {
+ int tmp;
+
+ if (++i >= argc) {
+ uWarning("Number of copies not specified\n");
+ uAction("Trailing \"-n\" option ignored\n");
+ }
+ else if ((sscanf(argv[i], "%i", &tmp) != 1) || (tmp < 1)) {
+ uWarning("Number of copies must be an integer > zero\n");
+ uAction("Illegal count %d ignored\n", tmp);
+ }
+ else
+ args.copies = tmp;
+ }
+ else if (strcmp(argv[i], "-nokc") == 0) {
+ args.wantKeycodes = False;
+ }
+ else if (strcmp(argv[i], "-nkg") == 0) {
+ int tmp;
+
+ if (++i >= argc) {
+ uWarning("Number of groups per key not specified\n");
+ uAction("Trailing \"-nkg\" option ignored\n");
+ }
+ else if ((sscanf(argv[i], "%i", &tmp) != 1) || (tmp < 1) ||
+ (tmp > 2)) {
+ uWarning("Groups per key must be in the range 1..2\n");
+ uAction("Illegal number of groups %d ignored\n", tmp);
+ }
+ else
+ args.nLabelGroups = tmp;
+ }
+ else if (strcmp(argv[i], "-npk") == 0) {
+ int tmp;
+
+ if (++i >= argc) {
+ uWarning("Number of keyboards per page not specified\n");
+ uAction("Trailing \"-npk\" option ignored\n");
+ }
+ else if ((sscanf(argv[i], "%i", &tmp) != 1) || (tmp < 1) ||
+ (tmp > 2)) {
+ uWarning("Keyboards per page must be in the range 1..2\n");
+ uAction("Illegal number of keyboards %d ignored\n", tmp);
+ }
+ else
+ args.nKBPerPage = tmp;
+ }
+ else if (strcmp(argv[i], "-ntg") == 0) {
+ int tmp;
+
+ if (++i >= argc) {
+ uWarning("Total number of groups not specified\n");
+ uAction("Trailing \"-ntg\" option ignored\n");
+ }
+ else if ((sscanf(argv[i], "%i", &tmp) != 1) || (tmp < 1) ||
+ (tmp > 4)) {
+ uWarning("Total number of groups must be in the range 1..4\n");
+ uAction("Illegal number of groups %d ignored\n", tmp);
+ }
+ else
+ args.nTotalGroups = tmp;
+ }
+ else if (strcmp(argv[i], "-o") == 0) {
+ if (++i >= argc) {
+ uWarning("No output file specified\n");
+ uAction("Trailing \"-o\" option ignored\n");
+ }
+ else if (outputFile != NULL) {
+ uWarning("Multiple output files specified\n");
+ uAction("Compiling %s, ignoring %s\n", outputFile, argv[i]);
+ }
+ else
+ outputFile = argv[i];
+ }
+ else if (strncmp(argv[i], "-R", 2) == 0) {
+ if (argv[i][2] == '\0') {
+ uWarning("No root directory specified\n");
+ uAction("Ignoring -R option\n");
+ }
+ else if (rootDir != NULL) {
+ uWarning("Multiple root directories specified\n");
+ uAction("Using %s, ignoring %s\n", rootDir, argv[i]);
+ }
+ else
+ rootDir = &argv[i][2];
+ }
+ else if (strcmp(argv[i], "-pict") == 0) {
+ if (++i >= argc) {
+ uWarning("No level of pictographs specified\n");
+ uAction("Trailing \"-pict\" option ignored\n");
+ }
+ else if (strcmp(argv[i], "none") == 0)
+ args.wantSymbols = NO_SYMBOLS;
+ else if (strcmp(argv[i], "common") == 0)
+ args.wantSymbols = COMMON_SYMBOLS;
+ else if (strcmp(argv[i], "all") == 0)
+ args.wantSymbols = ALL_SYMBOLS;
+ else if (outputFile != NULL) {
+ uWarning("Unknown pictograph level specified\n");
+ uAction("Ignoring illegal value %s\n", argv[i]);
+ }
+ }
+ else if ((strcmp(argv[i], "-synch") == 0) ||
+ (strcmp(argv[i], "-s") == 0)) {
+ synch = True;
+ }
+ else if (strcmp(argv[i], "-w") == 0) {
+ if ((i >= (argc - 1)) || (!isdigit(argv[i + 1][0]))) {
+ warningLevel = 0;
+ }
+ else {
+ int itmp;
+
+ if (sscanf(argv[++i], "%i", &itmp))
+ warningLevel = itmp;
+ }
+ }
+ else {
+ uError("Unknown flag \"%s\" on command line\n", argv[i]);
+ Usage(argc, argv);
+ return False;
+ }
}
if (rootDir) {
- if (warningLevel>8) {
- uWarning("Changing root directory to \"%s\"\n",rootDir);
- }
- if ((chdir(rootDir)<0) && (warningLevel>0)) {
- uWarning("Couldn't change root directory to \"%s\"\n",rootDir);
- uAction("Root directory (-R) option ignored\n");
- }
+ if (warningLevel > 8) {
+ uWarning("Changing root directory to \"%s\"\n", rootDir);
+ }
+ if ((chdir(rootDir) < 0) && (warningLevel > 0)) {
+ uWarning("Couldn't change root directory to \"%s\"\n", rootDir);
+ uAction("Root directory (-R) option ignored\n");
+ }
}
- if (outputFont!=NULL) {
- Bool ok;
- FILE *file= NULL;
-
- if (outputFile==NULL) {
- outputFile= uAlloc(strlen(outputFont)+5);
- sprintf(outputFile,"%s.pfa",outputFont);
- }
- else if (uStringEqual(outputFile,"-"))
- file= stdout;
-
- if (file==NULL)
- file= fopen(outputFile,"w");
-
- if (!file) {
- uError("Couldn't open \"%s\" to dump internal font \"%s\"\n",
- outputFile,outputFont);
- uAction("Exiting\n");
- exit(1);
- }
- ok= DumpInternalFont(file,outputFont);
- if (file!=stdout)
- fclose(file);
- if (!ok) {
- uWarning("No internal font to dump\n");
- if (file!=stdout) {
- uAction("Removing \"%s\"\n",outputFile);
- unlink(outputFile);
- }
- }
- exit((ok!=0));
+ if (outputFont != NULL) {
+ Bool ok;
+ FILE *file = NULL;
+
+ if (outputFile == NULL) {
+ outputFile = uAlloc(strlen(outputFont) + 5);
+ sprintf(outputFile, "%s.pfa", outputFont);
+ }
+ else if (uStringEqual(outputFile, "-"))
+ file = stdout;
+
+ if (file == NULL)
+ file = fopen(outputFile, "w");
+
+ if (!file) {
+ uError("Couldn't open \"%s\" to dump internal font \"%s\"\n",
+ outputFile, outputFont);
+ uAction("Exiting\n");
+ exit(1);
+ }
+ ok = DumpInternalFont(file, outputFont);
+ if (file != stdout)
+ fclose(file);
+ if (!ok) {
+ uWarning("No internal font to dump\n");
+ if (file != stdout) {
+ uAction("Removing \"%s\"\n", outputFile);
+ unlink(outputFile);
+ }
+ }
+ exit((ok != 0));
}
- if (inputFile==NULL) {
- uError("No input file specified\n");
- Usage(argc,argv);
- return False;
+ if (inputFile == NULL) {
+ uError("No input file specified\n");
+ Usage(argc, argv);
+ return False;
}
- else if (uStringEqual(inputFile,"-")) {
- /* Nothing */
+ else if (uStringEqual(inputFile, "-")) {
+ /* Nothing */
}
- else if (strchr(inputFile,':')==NULL) {
- int len= strlen(inputFile);
- if ((len>4)&&(strcmp(&inputFile[len-4],".xkm")==0)) {
- /* Nothing */
- }
- else {
- FILE *file;
- file= fopen(inputFile,"r");
- if (file) {
- fclose(file);
- }
- else {
- fprintf(stderr,"Cannot open \"%s\" for reading\n",inputFile);
- return False;
- }
- }
+ else if (strchr(inputFile, ':') == NULL) {
+ int len = strlen(inputFile);
+
+ if ((len > 4) && (strcmp(&inputFile[len - 4], ".xkm") == 0)) {
+ /* Nothing */
+ }
+ else {
+ FILE *file;
+
+ file = fopen(inputFile, "r");
+ if (file) {
+ fclose(file);
+ }
+ else {
+ fprintf(stderr, "Cannot open \"%s\" for reading\n", inputFile);
+ return False;
+ }
+ }
}
else {
- inDpyName= inputFile;
- inputFile= NULL;
+ inDpyName = inputFile;
+ inputFile = NULL;
}
- if (outputFormat==WANT_DEFAULT)
- outputFormat= WANT_PS_FILE;
- if ((outputFile==NULL)&&(inputFile!=NULL)&&uStringEqual(inputFile,"-")) {
- int len;
- len= strlen("stdin.eps")+2;
- outputFile= uTypedCalloc(len,char);
- if (outputFile==NULL) {
- uInternalError("Cannot allocate space for output file name\n");
- uAction("Exiting\n");
- exit(1);
- }
- if (args.wantEPS) sprintf(outputFile,"stdin.eps");
- else sprintf(outputFile,"stdin.ps");
+ if (outputFormat == WANT_DEFAULT)
+ outputFormat = WANT_PS_FILE;
+ if ((outputFile == NULL) && (inputFile != NULL) &&
+ uStringEqual(inputFile, "-")) {
+ int len;
+
+ len = strlen("stdin.eps") + 2;
+ outputFile = uTypedCalloc(len, char);
+
+ if (outputFile == NULL) {
+ uInternalError("Cannot allocate space for output file name\n");
+ uAction("Exiting\n");
+ exit(1);
+ }
+ if (args.wantEPS)
+ sprintf(outputFile, "stdin.eps");
+ else
+ sprintf(outputFile, "stdin.ps");
}
- else if ((outputFile==NULL)&&(inputFile!=NULL)) {
- int len;
- char *base,*ext;
-
- base= strrchr(inputFile,'/');
- if (base==NULL) base= inputFile;
- else base++;
-
- len= strlen(base)+strlen("eps")+2;
- outputFile= uTypedCalloc(len,char);
- if (outputFile==NULL) {
- uInternalError("Cannot allocate space for output file name\n");
- uAction("Exiting\n");
- exit(1);
- }
- ext= strrchr(base,'.');
- if (ext==NULL) {
- if (args.wantEPS) sprintf(outputFile,"%s.eps",base);
- else sprintf(outputFile,"%s.ps",base);
- }
- else {
- strcpy(outputFile,base);
- if (args.wantEPS) strcpy(&outputFile[ext-base+1],"eps");
- else strcpy(&outputFile[ext-base+1],"ps");
- }
+ else if ((outputFile == NULL) && (inputFile != NULL)) {
+ int len;
+ char *base, *ext;
+
+ base = strrchr(inputFile, '/');
+ if (base == NULL)
+ base = inputFile;
+ else
+ base++;
+
+ len = strlen(base) + strlen("eps") + 2;
+ outputFile = uTypedCalloc(len, char);
+
+ if (outputFile == NULL) {
+ uInternalError("Cannot allocate space for output file name\n");
+ uAction("Exiting\n");
+ exit(1);
+ }
+ ext = strrchr(base, '.');
+ if (ext == NULL) {
+ if (args.wantEPS)
+ sprintf(outputFile, "%s.eps", base);
+ else
+ sprintf(outputFile, "%s.ps", base);
+ }
+ else {
+ strcpy(outputFile, base);
+ if (args.wantEPS)
+ strcpy(&outputFile[ext - base + 1], "eps");
+ else
+ strcpy(&outputFile[ext - base + 1], "ps");
+ }
}
- else if (outputFile==NULL) {
- int len;
- char *ch,*name,buf[128];
- if (inDpyName[0]==':')
- sprintf(name=buf,"server%s",inDpyName);
- else name= inDpyName;
-
- len= strlen(name)+strlen("eps")+2;
- outputFile= uTypedCalloc(len,char);
- if (outputFile==NULL) {
- uInternalError("Cannot allocate space for output file name\n");
- uAction("Exiting\n");
- exit(1);
- }
- strcpy(outputFile,name);
- for (ch=outputFile;(*ch)!='\0';ch++) {
- if (*ch==':') *ch= '-';
- else if (*ch=='.') *ch= '_';
- }
- *ch++= '.';
- if (args.wantEPS) strcpy(ch,"eps");
- else strcpy(ch,"ps");
+ else if (outputFile == NULL) {
+ int len;
+ char *ch, *name, buf[128];
+
+ if (inDpyName[0] == ':')
+ sprintf(name = buf, "server%s", inDpyName);
+ else
+ name = inDpyName;
+
+ len = strlen(name) + strlen("eps") + 2;
+ outputFile = uTypedCalloc(len, char);
+
+ if (outputFile == NULL) {
+ uInternalError("Cannot allocate space for output file name\n");
+ uAction("Exiting\n");
+ exit(1);
+ }
+ strcpy(outputFile, name);
+ for (ch = outputFile; (*ch) != '\0'; ch++) {
+ if (*ch == ':')
+ *ch = '-';
+ else if (*ch == '.')
+ *ch = '_';
+ }
+ *ch++ = '.';
+ if (args.wantEPS)
+ strcpy(ch, "eps");
+ else
+ strcpy(ch, "ps");
}
- else if (strchr(outputFile,':')!=NULL) {
- outDpyName= outputFile;
- outputFile= NULL;
- outputFormat= WANT_X_SERVER;
- uInternalError("Output to an X server not implemented yet\n");
- return False;
+ else if (strchr(outputFile, ':') != NULL) {
+ outDpyName = outputFile;
+ outputFile = NULL;
+ outputFormat = WANT_X_SERVER;
+ uInternalError("Output to an X server not implemented yet\n");
+ return False;
}
return True;
}
@@ -546,38 +599,38 @@ register int i;
static Display *
GetDisplay(char *program, char *dpyName)
{
-int mjr,mnr,error;
-Display *dpy;
-
- mjr= XkbMajorVersion;
- mnr= XkbMinorVersion;
- dpy= XkbOpenDisplay(dpyName,NULL,NULL,&mjr,&mnr,&error);
- if (dpy==NULL) {
- switch (error) {
- case XkbOD_BadLibraryVersion:
- uInformation("%s was compiled with XKB version %d.%02d\n",
- program,XkbMajorVersion,XkbMinorVersion);
- uError("X library supports incompatible version %d.%02d\n",
- mjr,mnr);
- break;
- case XkbOD_ConnectionRefused:
- uError("Cannot open display \"%s\"\n",dpyName);
- break;
- case XkbOD_NonXkbServer:
- uError("XKB extension not present on %s\n",dpyName);
- break;
- case XkbOD_BadServerVersion:
- uInformation("%s was compiled with XKB version %d.%02d\n",
- program,XkbMajorVersion,XkbMinorVersion);
- uError("Server %s uses incompatible version %d.%02d\n",
- dpyName,mjr,mnr);
- break;
- default:
- uInternalError("Unknown error %d from XkbOpenDisplay\n",error);
- }
+ int mjr, mnr, error;
+ Display *dpy;
+
+ mjr = XkbMajorVersion;
+ mnr = XkbMinorVersion;
+ dpy = XkbOpenDisplay(dpyName, NULL, NULL, &mjr, &mnr, &error);
+ if (dpy == NULL) {
+ switch (error) {
+ case XkbOD_BadLibraryVersion:
+ uInformation("%s was compiled with XKB version %d.%02d\n",
+ program, XkbMajorVersion, XkbMinorVersion);
+ uError("X library supports incompatible version %d.%02d\n",
+ mjr, mnr);
+ break;
+ case XkbOD_ConnectionRefused:
+ uError("Cannot open display \"%s\"\n", dpyName);
+ break;
+ case XkbOD_NonXkbServer:
+ uError("XKB extension not present on %s\n", dpyName);
+ break;
+ case XkbOD_BadServerVersion:
+ uInformation("%s was compiled with XKB version %d.%02d\n",
+ program, XkbMajorVersion, XkbMinorVersion);
+ uError("Server %s uses incompatible version %d.%02d\n",
+ dpyName, mjr, mnr);
+ break;
+ default:
+ uInternalError("Unknown error %d from XkbOpenDisplay\n", error);
+ }
}
else if (synch)
- XSynchronize(dpy,True);
+ XSynchronize(dpy, True);
return dpy;
}
@@ -585,179 +638,187 @@ Display *dpy;
#ifdef notyet
#define MAX_INCLUDE_OPTS 10
-static char *includeOpt[MAX_INCLUDE_OPTS];
-static int numIncludeOpts = 0;
+static char *includeOpt[MAX_INCLUDE_OPTS];
+static int numIncludeOpts = 0;
#endif
int
main(int argc, char *argv[])
{
-FILE * file;
-int ok;
-XkbFileInfo result;
+ FILE *file;
+ int ok;
+ XkbFileInfo result;
uSetEntryFile(NullString);
uSetDebugFile(NullString);
uSetErrorFile(NullString);
- if (!parseArgs(argc,argv))
- exit(1);
+ if (!parseArgs(argc, argv))
+ exit(1);
#ifdef DEBUG
#ifdef sgi
- if (debugFlags&0x4)
- mallopt(M_DEBUG,1);
+ if (debugFlags & 0x4)
+ mallopt(M_DEBUG, 1);
#endif
#endif
- file= NULL;
+ file = NULL;
XkbInitAtoms(NULL);
/* XkbInitIncludePath(); */
- if (inputFile!=NULL) {
- if (uStringEqual(inputFile,"-")) {
- static char *in= "stdin";
- file= stdin;
- inputFile= in;
- }
- else {
- file= fopen(inputFile,"r");
- }
+ if (inputFile != NULL) {
+ if (uStringEqual(inputFile, "-")) {
+ static char *in = "stdin";
+
+ file = stdin;
+ inputFile = in;
+ }
+ else {
+ file = fopen(inputFile, "r");
+ }
}
- else if (inDpyName!=NULL) {
- inDpy= GetDisplay(argv[0],inDpyName);
- if (!inDpy) {
- uAction("Exiting\n");
- exit(1);
- }
+ else if (inDpyName != NULL) {
+ inDpy = GetDisplay(argv[0], inDpyName);
+ if (!inDpy) {
+ uAction("Exiting\n");
+ exit(1);
+ }
}
- if (outDpyName!=NULL) {
- uInternalError("Output to an X server not implemented yet\n");
- outDpy= GetDisplay(argv[0],outDpyName);
- if (!outDpy) {
- uAction("Exiting\n");
- exit(1);
- }
+ if (outDpyName != NULL) {
+ uInternalError("Output to an X server not implemented yet\n");
+ outDpy = GetDisplay(argv[0], outDpyName);
+ if (!outDpy) {
+ uAction("Exiting\n");
+ exit(1);
+ }
}
- if ((inDpy==NULL) && (outDpy==NULL)) {
- int mjr,mnr;
- mjr= XkbMajorVersion;
- mnr= XkbMinorVersion;
- if (!XkbLibraryVersion(&mjr,&mnr)) {
- uInformation("%s was compiled with XKB version %d.%02d\n",
- argv[0],XkbMajorVersion,XkbMinorVersion);
- uError("X library supports incompatible version %d.%02d\n",
- mjr,mnr);
- uAction("Exiting\n");
- exit(1);
- }
+ if ((inDpy == NULL) && (outDpy == NULL)) {
+ int mjr, mnr;
+
+ mjr = XkbMajorVersion;
+ mnr = XkbMinorVersion;
+ if (!XkbLibraryVersion(&mjr, &mnr)) {
+ uInformation("%s was compiled with XKB version %d.%02d\n",
+ argv[0], XkbMajorVersion, XkbMinorVersion);
+ uError("X library supports incompatible version %d.%02d\n",
+ mjr, mnr);
+ uAction("Exiting\n");
+ exit(1);
+ }
}
- ok= True;
+ ok = True;
if (file) {
- unsigned tmp;
- bzero((char *)&result,sizeof(result));
- if ((result.xkb= XkbAllocKeyboard())==NULL) {
- uFatalError("Cannot allocate keyboard description\n");
- /* NOTREACHED */
- }
- tmp= XkmReadFile(file,XkmGeometryMask,XkmKeymapLegal,&result);
- if ((tmp&XkmGeometryMask)!=0) {
- uError("Couldn't read geometry from XKM file \"%s\"\n",inputFile);
- uAction("Exiting\n");
- ok= False;
- }
- if ((tmp&XkmKeyNamesMask)!=0)
- args.wantKeycodes= False;
- if (args.label==LABEL_AUTO) {
- if (result.defined&XkmSymbolsMask)
- args.label= LABEL_SYMBOLS;
- else if (result.defined&XkmKeyNamesMask)
- args.label= LABEL_KEYCODE;
- else args.label= LABEL_KEYNAME;
- }
- else if ((args.label==LABEL_KEYCODE)&&((tmp&XkmKeyNamesMask)!=0)) {
- uError("XKM file \"%s\" doesn't have keycodes\n",inputFile);
- uAction("Cannot label keys as requested. Exiting\n");
- ok= False;
- }
- else if ((args.label==LABEL_SYMBOLS)&&((tmp&XkmSymbolsMask)!=0)) {
- uError("XKM file \"%s\" doesn't have symbols\n",inputFile);
- uAction("Cannot label keys as requested. Exiting\n");
- ok= False;
- }
+ unsigned tmp;
+
+ bzero((char *) &result, sizeof(result));
+ if ((result.xkb = XkbAllocKeyboard()) == NULL) {
+ uFatalError("Cannot allocate keyboard description\n");
+ /* NOTREACHED */
+ }
+ tmp = XkmReadFile(file, XkmGeometryMask, XkmKeymapLegal, &result);
+ if ((tmp & XkmGeometryMask) != 0) {
+ uError("Couldn't read geometry from XKM file \"%s\"\n", inputFile);
+ uAction("Exiting\n");
+ ok = False;
+ }
+ if ((tmp & XkmKeyNamesMask) != 0)
+ args.wantKeycodes = False;
+ if (args.label == LABEL_AUTO) {
+ if (result.defined & XkmSymbolsMask)
+ args.label = LABEL_SYMBOLS;
+ else if (result.defined & XkmKeyNamesMask)
+ args.label = LABEL_KEYCODE;
+ else
+ args.label = LABEL_KEYNAME;
+ }
+ else if ((args.label == LABEL_KEYCODE) &&
+ ((tmp & XkmKeyNamesMask) != 0)) {
+ uError("XKM file \"%s\" doesn't have keycodes\n", inputFile);
+ uAction("Cannot label keys as requested. Exiting\n");
+ ok = False;
+ }
+ else if ((args.label == LABEL_SYMBOLS) && ((tmp & XkmSymbolsMask) != 0)) {
+ uError("XKM file \"%s\" doesn't have symbols\n", inputFile);
+ uAction("Cannot label keys as requested. Exiting\n");
+ ok = False;
+ }
}
- else if (inDpy!=NULL) {
- bzero((char *)&result,sizeof(result));
- result.type= XkmKeymapFile;
- result.xkb= XkbGetMap(inDpy,XkbAllMapComponentsMask,XkbUseCoreKbd);
- if (result.xkb==NULL)
- uWarning("Cannot load keyboard description\n");
- if (XkbGetNames(inDpy,XkbAllNamesMask,result.xkb)!=Success)
- uWarning("Cannot load names\n");
- if (XkbGetGeometry(inDpy,result.xkb)!=Success) {
- uFatalError("Cannot load geometry for %s\n",inDpyName);
- }
+ else if (inDpy != NULL) {
+ bzero((char *) &result, sizeof(result));
+ result.type = XkmKeymapFile;
+ result.xkb = XkbGetMap(inDpy, XkbAllMapComponentsMask, XkbUseCoreKbd);
+ if (result.xkb == NULL)
+ uWarning("Cannot load keyboard description\n");
+ if (XkbGetNames(inDpy, XkbAllNamesMask, result.xkb) != Success)
+ uWarning("Cannot load names\n");
+ if (XkbGetGeometry(inDpy, result.xkb) != Success) {
+ uFatalError("Cannot load geometry for %s\n", inDpyName);
+ }
#ifdef NOTYET
- if (computeDflts)
- ok= (ComputeKbdDefaults(result.xkb)==Success);
- else ok= True;
+ if (computeDflts)
+ ok = (ComputeKbdDefaults(result.xkb) == Success);
+ else
+ ok = True;
#endif
- if (args.label==LABEL_AUTO)
- args.label= LABEL_SYMBOLS;
+ if (args.label == LABEL_AUTO)
+ args.label = LABEL_SYMBOLS;
}
else {
- fprintf(stderr,"Cannot open \"%s\" to read geometry\n",inputFile);
- ok= 0;
+ fprintf(stderr, "Cannot open \"%s\" to read geometry\n", inputFile);
+ ok = 0;
}
if (ok) {
- FILE *out = NULL;
- if (setlocale(LC_ALL,(wantLocale))==NULL) {
- if (wantLocale!=NULL) {
- uWarning("Couldn't change to locale %s\n",wantLocale);
- uAction("Using \"C\" locale, instead\n");
- }
- }
- /* need C numerics so decimal point doesn't get screwed up */
- setlocale(LC_NUMERIC,"C");
- if ((inDpy!=outDpy)&&
- (XkbChangeKbdDisplay(outDpy,&result)!=Success)) {
- uInternalError("Error converting keyboard display from %s to %s\n",
- inDpyName,outDpyName);
- exit(1);
- }
- if (outputFile!=NULL) {
- if (uStringEqual(outputFile,"-")) {
- static char *of= "stdout";
- out= stdout;
- outputFile= of;
- }
- else {
- out= fopen(outputFile,"w");
- if (out==NULL) {
- uError("Cannot open \"%s\" to write keyboard description\n",
- outputFile);
- uAction("Exiting\n");
- exit(1);
- }
- }
- }
- switch (outputFormat) {
- case WANT_PS_FILE:
- ok= GeometryToPostScript(out,&result,&args);
- break;
- case WANT_X_SERVER:
- uInternalError("Output to X server not implemented yet\n");
- break;
- default:
- uInternalError("Unknown output format %d\n",outputFormat);
- uAction("No output file created\n");
- ok= False;
- break;
- }
- if (!ok) {
- uError("Error creating output file\n");
- }
+ FILE *out = NULL;
+
+ if (setlocale(LC_ALL, (wantLocale)) == NULL) {
+ if (wantLocale != NULL) {
+ uWarning("Couldn't change to locale %s\n", wantLocale);
+ uAction("Using \"C\" locale, instead\n");
+ }
+ }
+ /* need C numerics so decimal point doesn't get screwed up */
+ setlocale(LC_NUMERIC, "C");
+ if ((inDpy != outDpy) &&
+ (XkbChangeKbdDisplay(outDpy, &result) != Success)) {
+ uInternalError("Error converting keyboard display from %s to %s\n",
+ inDpyName, outDpyName);
+ exit(1);
+ }
+ if (outputFile != NULL) {
+ if (uStringEqual(outputFile, "-")) {
+ static char *of = "stdout";
+
+ out = stdout;
+ outputFile = of;
+ }
+ else {
+ out = fopen(outputFile, "w");
+ if (out == NULL) {
+ uError("Cannot open \"%s\" to write keyboard description\n",
+ outputFile);
+ uAction("Exiting\n");
+ exit(1);
+ }
+ }
+ }
+ switch (outputFormat) {
+ case WANT_PS_FILE:
+ ok = GeometryToPostScript(out, &result, &args);
+ break;
+ case WANT_X_SERVER:
+ uInternalError("Output to X server not implemented yet\n");
+ break;
+ default:
+ uInternalError("Unknown output format %d\n", outputFormat);
+ uAction("No output file created\n");
+ ok = False;
+ break;
+ }
+ if (!ok) {
+ uError("Error creating output file\n");
+ }
}
- if (inDpy)
- XCloseDisplay(inDpy);
- inDpy= NULL;
+ if (inDpy)
+ XCloseDisplay(inDpy);
+ inDpy = NULL;
if (outDpy)
- XCloseDisplay(outDpy);
- return (ok==0);
+ XCloseDisplay(outDpy);
+ return (ok == 0);
}
diff --git a/xkbprint.h b/xkbprint.h
index c565570..7017526 100644
--- a/xkbprint.h
+++ b/xkbprint.h
@@ -1,5 +1,5 @@
#ifndef _XKBPRINT_H_
-#define _XKBPRINT_H_ 1
+#define _XKBPRINT_H_ 1
/* $Xorg: xkbprint.h,v 1.3 2000/08/17 19:54:50 cpqbld Exp $ */
/************************************************************
@@ -10,64 +10,64 @@
fee is hereby granted, provided that the above copyright
notice appear in all copies and that both that copyright
notice and this permission notice appear in supporting
- documentation, and that the name of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
+ documentation, and that the name of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
+ Silicon Graphics makes no representation about the suitability
of this software for any purpose. It is provided "as is"
without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
- DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
/* $XFree86$ */
-#define LABEL_AUTO -1
-#define LABEL_NONE 0
-#define LABEL_KEYNAME 1
-#define LABEL_KEYCODE 2
-#define LABEL_SYMBOLS 3
+#define LABEL_AUTO -1
+#define LABEL_NONE 0
+#define LABEL_KEYNAME 1
+#define LABEL_KEYCODE 2
+#define LABEL_SYMBOLS 3
-#define NO_SYMBOLS 0
-#define COMMON_SYMBOLS 1
-#define ALL_SYMBOLS 2
+#define NO_SYMBOLS 0
+#define COMMON_SYMBOLS 1
+#define ALL_SYMBOLS 2
typedef struct _XKBPrintArgs {
- int copies;
- int grid;
- int label;
- int baseLabelGroup;
- int nLabelGroups;
- int nTotalGroups;
- int nKBPerPage;
- int labelLevel;
- int wantSymbols;
- Bool wantKeycodes;
- Bool wantDiffs;
- Bool scaleToFit;
- Bool wantColor;
- Bool level1;
- Bool wantEPS;
+ int copies;
+ int grid;
+ int label;
+ int baseLabelGroup;
+ int nLabelGroups;
+ int nTotalGroups;
+ int nKBPerPage;
+ int labelLevel;
+ int wantSymbols;
+ Bool wantKeycodes;
+ Bool wantDiffs;
+ Bool scaleToFit;
+ Bool wantColor;
+ Bool level1;
+ Bool wantEPS;
} XKBPrintArgs;
extern Bool
DumpInternalFont(
- FILE * /* out */,
- char * /* fontName */
+ FILE * /* out */ ,
+ char * /* fontName */
);
extern Bool
GeometryToPostScript(
- FILE * /* out */,
- XkbFileInfo * /* result */,
- XKBPrintArgs * /* args */
+ FILE * /* out */ ,
+ XkbFileInfo * /* result */ ,
+ XKBPrintArgs * /* args */
);
-#endif /* _XKBPRINT_H_ */
+#endif /* _XKBPRINT_H_ */