1// Copyright 2016 Google Inc.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//      http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14//
15////////////////////////////////////////////////////////////////////////////////
16// Produced by stringify.cc on 2007-09-28 09:13 from file i18n/encodings/compact_enc_det/tools/detail_head.ps
17  "%!PS-Adobe-2.0\n\n/inch {72 mul} def\n/cshow {dup stringwidth pop -2 div"
18  " 0 rmoveto show} def\n\n/lmargin 0.5 inch def\n/rmargin 8.5 inch def\n/t"
19  "margin 10.5 inch def\n/bmargin 0.5 inch def\n\n\n% set to N>=0 to track "
20  "ranked encoding N\n/track-me -1 def\n/track-me2 -1 def\n\n/columns 2 def"
21  "\n\n/lpi 18 def                 % lines per inch\n/lpc lpi 10 mul def   "
22  "      % lines per column\n/lpp lpc columns mul def    % lines per page\n"
23  "/probw 3.0 inch def         % probability width\n/probr 50 def          "
24  "     % probability range\n/widowlines lpi 2 idiv def  % 1/2 inch widow a"
25  "t bottom\n/widowlines lpi def         % 1 inch widow at bottom\n\n/lpg l"
26  "pi 2 idiv def         % 1/2 inch spacing between groups\n\n/delc 4 inch "
27  "def\n/dell -1 inch lpi div def\n\n/next-line 0 def      % 24 lines per i"
28  "nch, 240 per column\n\n/Cfont /Courier findfont 6 scalefont def\n/Hfont "
29  "/Helvetica findfont 6 scalefont def\nHfont setfont\n\n\n% simple string "
30  "hash -- sum the characters\n/strhash {\n  /hstr exch def\n  /h 0 def\n  "
31  "0 1 hstr length 1 sub {/i exch def  /h h hstr i get add def} for\n  h\n}"
32  " def\n\n% convert pro at 30 per 2x to 0-2.5 inches spanning -50 to 0\n/p"
33  "rob2x {\n  30 idiv probr div probw mul neg probw add\n}def\n\n\n/cliptoc"
34  "olumn {\n  % ====== MUST MATCH ME ======\n  gsave\n  lmargin tmargin mov"
35  "eto\n  next-line lpc idiv delc mul 0 rmoveto\n  -1 18 rmoveto 0 -10.5 in"
36  "ch rlineto  delc 2 add 0 rlineto  0 10.5 inch rlineto closepath\n  clip\n"
37  "  newpath\n} def\n\n/endcliptocolumn {\n  grestore\n  % ====== MUST MATC"
38  "H ME ======\n} def\n\n\n\n/column-box {\n  lmargin tmargin moveto\n  nex"
39  "t-line 1 sub lpc idiv delc mul  next-line 1 sub lpc mod 1 add dell mul r"
40  "moveto\n  % box\n  gsave -1.5 0 rmoveto 0 detail-count dell mul neg rmov"
41  "eto  probw 3 add 0 rlineto 0.25 setlinewidth stroke grestore\n  gsave -1"
42  ".5 0 rmoveto 0 detail-count dell mul neg rlineto 0.25 setlinewidth strok"
43  "e grestore\n  gsave probw .8 mul 0 rmoveto 0 detail-count dell mul neg r"
44  "lineto 0.25 setlinewidth 0.8 setgray stroke grestore\n  gsave probw .6 m"
45  "ul 0 rmoveto 0 detail-count dell mul neg rlineto 0.25 setlinewidth 0.8 s"
46  "etgray stroke grestore\n  gsave probw .4 mul 0 rmoveto 0 detail-count de"
47  "ll mul neg rlineto 0.25 setlinewidth 0.8 setgray stroke grestore\n  gsav"
48  "e probw .2 mul 0 rmoveto 0 detail-count dell mul neg rlineto 0.25 setlin"
49  "ewidth 0.8 setgray stroke grestore\n  gsave probw 1.5 add 0 rmoveto 0 de"
50  "tail-count dell mul neg rlineto 0.25 setlinewidth stroke grestore\n} def"
51  "\n\n\n/IncrementLine {\n  /incr exch def\n  /next-line next-line incr ad"
52  "d def\n  next-line lpc ge   next-line incr sub lpc lt   and {\n    % We "
53  "just went to the top of column 2; redo clip\n    endcliptocolumn     % M"
54  "UST match\n    column-box\n    /next-line lpc def\n    cliptocolumn     "
55  "   % MUST match\n  } if\n  next-line lpp ge {\n    % We just went to the"
56  " top of column 3; start new page column 1\n    endcliptocolumn     % MUS"
57  "T match\n    column-box\n    showpage\n    Hfont setfont\n    /next-line"
58  " 0 def\n    show-pageno\n    cliptocolumn        % MUST match\n  } if\n}"
59  " def\n\n/IncrementLineOutside {\n  /incr exch def\n  /next-line next-lin"
60  "e incr add def\n  next-line lpc ge   next-line incr sub lpc lt   and {\n"
61  "    % We just went to the top of column 2\n    /next-line lpc def\n  } i"
62  "f\n  next-line lpp ge {\n    % We just went to the top of column 3; star"
63  "t new page column 1\n    showpage\n    Hfont setfont\n    /next-line 0 d"
64  "ef\n    show-pageno\n  } if\n} def\n\n/NextColumn {\n  lpc 1 sub Increme"
65  "ntLine\n} def\n\n/NextPage {\n    lpp 1 sub IncrementLine\n} def\n\n% Up"
66  "on entry, we are OUTSIDE the clip\n/start-detail {\n  /d-title exch def\n"
67  "\n  % align >= 1 inch at bottom of column, and/or start new column\n  lp"
68  "c next-line lpc mod sub widowlines lt {\n    % Start at top of a column\n"
69  "    next-line lpc ge {\n      % Start new page\n      showpage\n      Hf"
70  "ont setfont\n      /next-line 0 def\n      show-pageno\n    } {\n      %"
71  " Start new column\n      /next-line lpc def\n    } ifelse\n  } if\n\n  l"
72  "margin tmargin moveto\n  next-line lpc idiv delc mul  next-line lpc mod "
73  "dell mul rmoveto\n  gsave d-title show grestore\n  0 dell rmoveto\n  1 1"
74  " 4 {/j exch def gsave probw j mul 5 div -2 rmoveto 50 j 10 mul sub 20 st"
75  "ring cvs cshow grestore} for\n  2 IncrementLineOutside\n  /detail-count "
76  "1 def\n  cliptocolumn            % MUST match\n  /d-array [] def\n} def\n"
77  "\n/size-detail {\n  /d-names exch def\n  /d-size exch def\n  % zero sums"
78  "\n  /sums d-size array def\n  0 1 d-size 1 sub {/i exch def  sums i 0 pu"
79  "t} for\n  /old-d-max 0 def\n  /colors d-size array def\n  0 1 d-size 1 s"
80  "ub {/i exch def  colors i i 3 mul 17 mod 17 div put} for\n  %0 1 d-size "
81  "1 sub {/i exch def  colors i d-names i get strhash 3 mul 17 mod 17 div p"
82  "ut} for\n  %0 1 d-size 1 sub {/i exch def  ( ) show colors i get 20 stri"
83  "ng cvs show} for\n} def\n\n/count-detail {\n  /detail-total-count exch d"
84  "ef\n  % if total-count >= one column, start at top of a column\n  detail"
85  "-total-count lpp ge {\n    % Start new page\n    NextPage\n  } {\n    de"
86  "tail-total-count lpc ge {\n      % Start new column\n      NextColumn\n "
87  "   } if\n  } ifelse\n} def\n\n% highlight next entry with underbar\n/do-"
88  "flag {\ngsave\n  setrgbcolor\n  lmargin tmargin moveto\n  next-line lpc "
89  "idiv delc mul  next-line lpc mod dell mul rmoveto\n  0 -2 rmoveto\n  pro"
90  "bw 0 rlineto\n  0 dell neg rlineto\n  probw neg 0 rlineto\n  closepath\n"
91  "  fill\ngrestore\n} def\n\n/do-detail-e {\n  /d-array exch def\n  /d-enc"
92  " exch def\n  /d-label exch def\n  /d-max -999999 def\n\n  lmargin tmargi"
93  "n moveto\n  next-line lpc idiv delc mul  next-line lpc mod dell mul rmov"
94  "eto\n  0.25 setlinewidth\n\n  % show label, using encoding color\n  gsav"
95  "e\n    probw 2 add -2 rmoveto\n    detail-count 1 sub 2 mod 0.25 inch mu"
96  "l 0 rmoveto\n    % ([) show detail-count 20 string cvs show (] ) show\n "
97  "   d-enc 0 lt {\n      0 setgray\n    }{\n      colors d-enc get 1 .8 se"
98  "thsbcolor\n    } ifelse\n    d-label show\n  grestore\n  % For -prune- d"
99  "raw horizontal line\n  d-label length 8 gt {d-label 4 get (p) 0 get eq d"
100  "-label 5 get (r) 0 get eq and {\n    /prune-val d-label cvi def\n    /ne"
101  "wx prune-val 30 mul prob2x def\n    gsave newx 6 rmoveto 0 -12 rlineto 1"
102  ".5 setlinewidth 0.8 setgray stroke grestore\n    gsave probw 0 add 0 rli"
103  "neto 0.25 setlinewidth 0.8 setgray stroke grestore\n  } if } if\n\n  % t"
104  "rack max per new row\n  0 1 d-array length 1 sub {\n    /i exch def\n   "
105  " /sum sums i get d-array i get add def\n    d-max sum lt {/d-max sum def"
106  "} if\n  } for\n\n  % draw line increments\n  0 1 d-array length 1 sub {\n"
107  "    /i exch def\n    detail-count 1 gt {\n      /oldx old-d-max sums i g"
108  "et sub prob2x def\n    } {\n      /oldx 600 prob2x def\n    } ifelse\n  "
109  "  /oldy dell neg def\n    /newx d-max  sums i get d-array i get add  sub"
110  " prob2x def\n    /newy 0 def\n    gsave\n    oldx oldy rmoveto\n    newx"
111  " oldx sub  newy oldy sub rlineto\n    % if encoding is being tracked, ma"
112  "ke bold line\n    i track-me eq\n      {2 setlinewidth}\n      {i track-"
113  "me2 eq {1.25 setlinewidth} {0.25 setlinewidth} ifelse}\n      ifelse\n  "
114  "  colors i get 1 .8 sethsbcolor stroke\n    grestore\n  } for\n  /detail"
115  "-count detail-count 1 add def\n\n  % increment running total in sums, tr"
116  "ack max per row\n  0 1 d-array length 1 sub {\n    /i exch def\n    sums"
117  " i  sums i get d-array i get add  put\n  } for\n  /old-d-max d-max def\n"
118  "\n  1 IncrementLine\n} def\n\n\n/do-detail {\n  /d-array exch def\n  /d-"
119  "label exch def\n  d-label -1 d-array do-detail-e\n} def\n\n% Upon exit, "
120  "we are outside the clip\n/end-detail {\n  pop\n  endcliptocolumn        "
121  " % MUST match\n  column-box\n\n  % text labels\n  0 1 d-array length 1 s"
122  "ub {\n    /i exch def\n    gsave\n    /newx old-d-max sums i get sub pro"
123  "b2x def\n    newx 0 ge {\n      newx 0 rmoveto\n      currentpoint trans"
124  "late\n      colors i get 1 .8 sethsbcolor\n      gsave 0 dell neg  rline"
125  "to 0.25 setlinewidth stroke grestore\n      -60 rotate\n      0 -2 movet"
126  "o d-names i get show\n    } if\n    grestore\n  } for\n  d-array length "
127  "0 gt {\n    lpg IncrementLineOutside\n  } {\n    lpg 4 idiv IncrementLin"
128  "eOutside\n  } ifelse\n} def\n\n/do-src {\n/src exch def\n  lmargin tmarg"
129  "in moveto\n  next-line lpc idiv delc mul  next-line lpc mod dell mul rmo"
130  "veto\n  Cfont setfont\n  src show\n  Hfont setfont\n  1 IncrementLine\n}"
131  " def\n\n% Underline trigram in source text\n/do-highlight1 {\n  /hl-colo"
132  "r exch def\n  /hl-offset exch def\n  /hl-line exch 1 sub 2 mul def\n  gs"
133  "ave\n  lmargin tmargin moveto\n  next-line hl-line sub lpc idiv delc mul"
134  "\n  next-line hl-line sub lpc mod dell mul rmoveto\n  % Assume text is 6"
135  " chars in and 3.6 pts per char, but 2 chars per offset\n  hl-offset 2 mu"
136  "l 6 add 3.6 mul  4 rmoveto\n\n  0 setgray 0.5 setlinewidth\n  hl-color 1"
137  " eq {0 0 1 setrgbcolor} if  % Latin1 blue\n  hl-color 2 eq {1 0 1 setrgb"
138  "color} if  % Latin2 magenta\n  hl-color 3 eq {1 0.67 0 setrgbcolor} if  "
139  "% Latin7 orange\n  18 -2 rlineto stroke\n  grestore\n} def\n\n% Box trig"
140  "ram in source text\n/do-highlight2 {\n  /hl-color exch def\n  /hl-offset"
141  " exch def\n  /hl-line exch 1 sub 2 mul def\n  gsave\n  lmargin tmargin m"
142  "oveto\n  next-line hl-line sub lpc idiv delc mul\n  next-line hl-line su"
143  "b lpc mod dell mul rmoveto\n  % Assume text is 6 chars in and 3.6 pts pe"
144  "r char, but 2 chars per offset\n  hl-offset 2 mul 6 add 3.6 mul  4 rmove"
145  "to\n\n  0 setgray 0.25 setlinewidth\n  hl-color 1 eq {0 0 1 setrgbcolor}"
146  " if  % Latin1 blue\n  hl-color 2 eq {1 0 1 setrgbcolor} if  % Latin2 mag"
147  "enta\n  hl-color 3 eq {1 0.67 0 setrgbcolor} if  % Latin7 orange\n  -0.5"
148  " -0.5 rmoveto\n  22 0 rlineto\n  0 4 rlineto\n  -11 2 rlineto\n  -11 -2 "
149  "rlineto\n  closepath\n  stroke\n  grestore\n} def\n\n/show-pageno {\ngsa"
150  "ve\nlmargin bmargin moveto 0 -12 rmoveto\n(Page ) show pageno 20 string "
151  "cvs show\ngrestore\n/pageno pageno 1 add def\n} def\n\n/pageno 1 def\nsh"
152  "ow-pageno\n%=============================\n\n\n"
153