Amélioration des procédures PlaceXXX, application au placement des noms des îles...
[carto.git] / cartes / 32U / postscript / carte1.ps
1 %!PS
2
3 << /PageSize [750 900] >> setpagedevice
4 % ------------------------------------------------------------------------------
5 % Utilisation de l'encodage latin1 (utf8 ne peut être utilisé directement).
6 /ISOEncode {
7     dup length dict begin
8                 {1 index /FID ne {def} {pop pop} ifelse} forall
9                 /Encoding ISOLatin1Encoding def
10                 currentdict
11     end
12     /Temporary exch definefont
13 } bind def
14 % ------------------------------------------------------------------------------
15 (svgnames.ps) run                                %% Utilisation des couleurs SVG                           
16 0 450 translate                                  %% Déplacement du point origine
17 gsave                                                         %% Couleur du fond
18   0 0 moveto 750 0 rlineto 0 900 rlineto -750 0 rlineto
19   closepath DeepSkyBlue fill
20 grestore
21 % ------------------------------------------------------------------------------
22
23 (pays.ps)         run
24 (lander.ps)       run
25 (fleuves.ps)      run
26 (lacs.ps)         run
27 (villes.ps)       run
28 (noms-iles.ps)    run
29 (noms-fleuves.ps) run
30
31 % ------------------------------------------------------------------------------
32 /Pas 1 def
33 % ------------------------------------------------------------------------------
34 /Construction {
35         /region exch def
36         newpath
37         /nbr region length def
38         region 0 get aload pop
39         /Y exch def /X exch def
40         X Y moveto
41         /ncount 0 def
42         0 1 nbr 1 sub {
43                 /ncount ncount 1 add def
44                 region exch get aload pop
45                 ncount Pas mod 0 eq nbr ncount sub 0 lt or {
46                         /Y exch def /X exch def
47                         X  Y lineto
48                 }{ pop pop } ifelse
49         } for
50 } def
51
52 /concatstrings {
53         exch dup length    
54     2 index length add string    
55     dup dup 4 2 roll copy length
56         4 -1 roll putinterval
57 } bind def
58
59 %% PlacePoint et PlaceNom ------------------------------------------------------
60 %% [e n (nom) angle] PlacePoint ensuite PlaceNom récupère ce qu'il lui faut dans
61 %% dictionnaire placedict
62 %%
63 %% Usage : [e n (nom) pos (proc)] PlacePoint .... PlaceNom
64 %% Le cinquième argument est facultatif....
65
66 /placedict 10 dict def
67 placedict /mtrx matrix put
68
69 /PlacePoint {
70         placedict begin
71                 /argv exch def /argn argv length def
72                 argv aload pop
73                 /proc (Place_Defaut) def
74                 argn 4 gt { (Place_) exch concatstrings /proc exch def } if
75                 /pos exch def /nom exch def
76                 /Y exch def /X exch def
77                 newpath
78                 /savematrix mtrx currentmatrix def
79                 X Y translate RayonDisque dup scale
80                 0 0 1 0 360 arc
81                 savematrix setmatrix
82         end
83 } def
84
85 /PlaceNom {
86         placedict begin
87                 pos -1 gt {
88                         /savematrix mtrx currentmatrix def                      
89                         X Y translate
90                         %% Dimension (largeur) du nom -------------------------                 
91                         nom stringwidth pop /wx exch def
92                         %% ----------------------------------------------------
93                         proc cvx exec
94                         %% ----------------------------------------------------
95                         savematrix setmatrix
96                 } if
97         end
98 } def
99
100 /Place_Defaut_Position {
101         pos cos LabelOffset mul /X exch def
102         pos sin LabelOffset mul /Y exch def
103         X 0 gt {
104                 %% Nom Ã  droite
105                 X Y HauteurCaractere 2 div sub moveto
106         } {
107                 X 0 lt {
108                         %% Nom Ã  gauche
109                         X wx sub Y HauteurCaractere 2 div sub moveto
110                 } {
111                         Y 0 gt {
112                                 %% Nom au dessus
113                                 X wx 2 div sub Y moveto
114                         } {
115                                 %% Nom en dessous
116                                 X wx 2 div sub Y HauteurCaractere sub moveto
117                         } ifelse
118                 } ifelse                
119         } ifelse
120 } def
121
122 /Place_Defaut {
123         Place_Defaut_Position
124         %% Présentation du nom --------------------------------                        
125         0.7 setgray nom show
126         CouleurNom wx neg 0.65 sub 0.65 rmoveto nom show        
127 } def
128
129 /Place_Centering {
130         wx 2 div neg wx 2 div neg rmoveto
131         %% Présentation du nom --------------------------------                        
132         0.7 setgray nom show
133         CouleurNom wx neg 0.65 sub 0.65 rmoveto nom show
134 } def
135
136 /Place_Rotate {
137         pos cos 0 ge {
138                 pos rotate 
139                 LabelOffset HauteurCaractere 2 div neg moveto
140         } {
141                 pos 180 sub rotate
142                 LabelOffset wx add neg HauteurCaractere 2 div neg moveto
143         } ifelse
144         %% Présentation du nom --------------------------------                        
145         0.7 setgray nom show
146         CouleurNom wx neg 0.65 sub 0.65 rmoveto nom show
147 } def
148
149 /Place_RotateCentering {
150         pos rotate wx 2 div neg HauteurCaractere 2 div neg moveto
151         %% Présentation du nom --------------------------------                        
152         0.7 setgray nom show
153         CouleurNom wx neg 0.65 sub 0.65 rmoveto nom show
154 } def
155
156
157 % ------------------------------------------------------------------------------
158
159 1 setlinejoin
160
161 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Pays (fond) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
162 allemagne { Construction closepath gsave LightGoldenrod fill grestore} forall
163 [hollande france italie suisse tchequie pologne belgique autriche
164   luxembourg liechtenstein danemark] {
165         { Construction closepath gsave MediumSeaGreen fill grestore} forall 
166 } forall
167
168 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Lacs (fond) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
169 [leman constance] {
170         { Construction closepath gsave DarkBlue fill grestore} forall
171 } forall
172
173 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Pays (frontières) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
174 [allemagne hollande france suisse tchequie pologne belgique autriche
175   luxembourg liechtenstein danemark] {
176         { Construction closepath DarkGray stroke } forall 
177 } forall
178
179 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Länder (frontières) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
180 lander { Construction closepath WhiteSmoke 0.5 setlinewidth stroke} forall
181
182 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Fleuves et rivières %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
183 [rhin saone elbe neckar rhone doubs danube oder saale mosel weser ems main] {
184         { Construction DarkBlue 0.25 setlinewidth stroke} forall
185 } forall
186
187 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Villes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
188 /Helvetica-Bold   findfont 8 scalefont ISOEncode setfont
189 /HauteurCaractere 6 def
190 /CouleurNom       {DarkRed} def
191 /RayonDisque      2 def
192 /LabelOffset      5 def
193 [V_allemagne V_hollande V_belgique V_luxembourg V_france V_suisse V_autriche
194 V_tchequie V_pologne] {
195         { PlacePoint gsave DarkRed fill grestore PlaceNom} forall
196 } forall
197
198 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Capitales %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
199 /Helvetica-Bold   findfont 14 scalefont ISOEncode setfont
200 /HauteurCaractere 10 def
201 /CouleurNom       {Orange} def
202 /RayonDisque      3 def         % Des points un peu plus gros pour les capitales
203 /LabelOffset      6 def
204 V_allemagne_capitales_lander {
205         PlacePoint gsave YellowGreen fill grestore PlaceNom
206 } forall
207
208 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Iles (Noms) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
209 /Helvetica-Bold   findfont 6 scalefont ISOEncode setfont
210 /HauteurCaractere 5 def
211 /CouleurNom       {DarkBlue} def
212 /RayonDisque      3 def         
213 /LabelOffset      5 def
214 I_allemagne {
215         PlacePoint PlaceNom
216 } forall
217
218 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Rivières (Noms) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
219 /Helvetica-Bold   findfont 6 scalefont ISOEncode setfont
220 /HauteurCaractere 5 def
221 /CouleurNom       {DarkBlue} def       
222 R_allemagne {
223         PlacePoint PlaceNom
224 } forall
225
226 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Autres annotations %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
227 /mo /moveto load def
228 /Helvetica-Bold findfont 20 scalefont setfont 
229 /shm { gsave DarkBlue show grestore } def
230 90.412 368.266 mo (Nordsee)shm
231 630.412 418.266 mo (Ostsee)shm
232
233
234 showpage

Licence Creative Commons Les fichiers de Syracuse sont mis à disposition (sauf mention contraire) selon les termes de la
Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International.