summaryrefslogtreecommitdiff
path: root/tex/context/base/spec-tr.tex
blob: 7d6708765387ef46e4ee77fd1765bf60ac8a76cf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
%D \module
%D   [       file=spec-tr,
%D        version=1996.01.25,
%D          title=\CONTEXT\ Special Macros,
%D       subtitle=Thomas Rokicki's \DVIPS,
%D         author=Hans Hagen,
%D           date=\currentdate,
%D      copyright={PRAGMA / Hans Hagen \& Ton Otten}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See licen-en.pdf for 
%C details. 

%D Especially the rotation proved to be incompatible with 
%D the default \POSTSCRIPT\ special driver. Many thanks to 
%D Gilbert van den Dobbelsteen for testing and hacking the 
%D \DVIPS\ source and pinpointing the problem.   

%D \macros
%D   {doinsertfile}
%D
%D We overrule the figure||insertion special. Things should 
%D be more accurate, but maybe someday \onbekend

\startspecials[rokicki] 

\def\@@insertpostscriptliteral {ps: }
\def\@@insertpostscriptretain  {" }  

%\definefileinsertion{tr}{eps}#1#2#3#4#5#6#7#8#9%
%  {\ScaledPointsToBigPoints{#5}\width 
%   \ScaledPointsToBigPoints{#6}\height 
%   \special 
%     {psfile=#1
%      hscale=#3\space
%      vscale=#4\space
%      hoffset=\width\space
%      voffset=\height}}

%D Ugly but useful:

\definefileinsertion{tr}{eps}#1#2#3#4#5#6#7#8#9%
  {\ScaledPointsToWholeBigPoints{#7}\width
   \ScaledPointsToWholeBigPoints{#8}\height
   \special
     {PSfile="#1"\space
      llx=\EPSllx\space
      lly=\EPSlly\space
      urx=\EPSurx\space
      ury=\EPSury\space
      rwi=\width0\space
      rhi=\height0}}

\definefileinsertion{tr}{mps}#1#2#3#4#5#6#7#8#9%  
  {\hbox
     {\includeMPfonts{#1}%
      \convertMPcolors{#1}%
      \dofileinsertion{tr}{eps}{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}{#9}}}

\definespecial\doinsertfile#1#2#3#4#5#6#7#8#9%
  {\bgroup
   \dodoinsertfile{tr}{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}{#9}%
   \egroup}

%D \macros
%D   {dostartrotation}
%D
%D Because \DVIPS\ uses a reverse rotation scheme, we have 
%D to add an extra \type{neg} to the default \POSTSCRIPT\ 
%D rotation definition:

\definespecial\dostartrotation#1% straight from the YandY manual / 1st neg added
  {\special
     {\@@insertpostscriptliteral  
        gsave currentpoint currentpoint translate
        #1 neg rotate neg exch neg exch translate}} 

\definespecial\dostoprotation%
  {\special
     {\@@insertpostscriptliteral  
        currentfont currentpoint grestore moveto setfont}}

%D Drawing ovals in \DVIPS\ is complicated by the fact that
%D the colors get reset. Therefore we need a more literal
%D approach and therefore scale to local units. By redefining
%D the retain constant into a macro, we can use the already
%D present \POSTSCRIPT\ definition (see \type{spec-ps}). 

\definespecial\doovalbox#1#2#3#4#5#6#7%
  {\bgroup
   \edef\@@insertpostscriptretain gsave%
     {\@@insertpostscriptliteral
        gsave
          Resolution 72 div
          VResolution 72 div neg scale currentpoint translate}%
   \dosomeovalbox{#1}{#2}{#3}{#4}{#5}{#6}{#7}%
   \egroup}

\stopspecials

\endinput