Amélioration des procédures PlaceXXX, application au placement des noms des îles...
[carto.git] / cartes / 32U / postscript / carte1.ps
index 7fedf9d..bbdc7df 100644 (file)
@@ -1,4 +1,4 @@
-%! PS
+%!PS
 
 << /PageSize [750 900] >> setpagedevice
 % ------------------------------------------------------------------------------
 
 << /PageSize [750 900] >> setpagedevice
 % ------------------------------------------------------------------------------
@@ -20,12 +20,13 @@ gsave                                                         %% Couleur du fond
 grestore
 % ------------------------------------------------------------------------------
 
 grestore
 % ------------------------------------------------------------------------------
 
-(pays.ps)    run
-(lander.ps)  run
-(fleuves.ps) run
-(lacs.ps)    run
-(villes.ps)  run
-(iles.ps)    run
+(pays.ps)         run
+(lander.ps)       run
+(fleuves.ps)      run
+(lacs.ps)         run
+(villes.ps)       run
+(noms-iles.ps)    run
+(noms-fleuves.ps) run
 
 % ------------------------------------------------------------------------------
 /Pas 1 def
 
 % ------------------------------------------------------------------------------
 /Pas 1 def
@@ -48,21 +49,32 @@ grestore
        } for
 } def
 
        } for
 } def
 
+/concatstrings {
+       exch dup length    
+    2 index length add string    
+    dup dup 4 2 roll copy length
+       4 -1 roll putinterval
+} bind def
+
 %% PlacePoint et PlaceNom ------------------------------------------------------
 %% PlacePoint et PlaceNom ------------------------------------------------------
-%% [e n (nom) angle] PlacePoint ensuite PlaceNom récupére ce qu'il lui faut dans
-%% dictionnaire disquedict
-/disquedict 10 dict def
-disquedict /mtrx matrix put
-
-/Nom (Ville) def
-/Position -1 def
-/PlacePoint {  
-       aload pop
-       /Position exch def
-       /Nom exch def
-       newpath
-       disquedict begin
+%% [e n (nom) angle] PlacePoint ensuite PlaceNom récupère ce qu'il lui faut dans
+%% dictionnaire placedict
+%%
+%% Usage : [e n (nom) pos (proc)] PlacePoint .... PlaceNom
+%% Le cinquième argument est facultatif....
+
+/placedict 10 dict def
+placedict /mtrx matrix put
+
+/PlacePoint {
+       placedict begin
+               /argv exch def /argn argv length def
+               argv aload pop
+               /proc (Place_Defaut) def
+               argn 4 gt { (Place_) exch concatstrings /proc exch def } if
+               /pos exch def /nom exch def
                /Y exch def /X exch def
                /Y exch def /X exch def
+               newpath
                /savematrix mtrx currentmatrix def
                X Y translate RayonDisque dup scale
                0 0 1 0 360 arc
                /savematrix mtrx currentmatrix def
                X Y translate RayonDisque dup scale
                0 0 1 0 360 arc
@@ -71,40 +83,77 @@ disquedict /mtrx matrix put
 } def
 
 /PlaceNom {
 } def
 
 /PlaceNom {
-       Position -1 gt {
-               disquedict begin
+       placedict begin
+               pos -1 gt {
                        /savematrix mtrx currentmatrix def                      
                        X Y translate
                        %% Dimension (largeur) du nom -------------------------                 
                        /savematrix mtrx currentmatrix def                      
                        X Y translate
                        %% Dimension (largeur) du nom -------------------------                 
-                       Nom stringwidth pop /WX exch def
+                       nom stringwidth pop /wx exch def
                        %% ----------------------------------------------------
                        %% ----------------------------------------------------
-                       Position cos LabelOffset mul /X exch def
-                       Position sin LabelOffset mul /Y exch def
-                       X 0 gt {
-                               %% Nom à droite
-                               X Y HauteurCaractere 2 sub moveto
-                       } {
-                               X 0 lt {
-                                       %% Nom à gauche
-                                       X WX sub Y HauteurCaractere 2 div  sub moveto
-                               } {
-                                       Y 0 gt {
-                                               %% Nom au dessus
-                                               X WX 2 div sub Y moveto
-                                       } {
-                                               %% Nom en dessous
-                                               X WX 2 div sub Y HauteurCaractere sub moveto
-                                       } ifelse
-                               } ifelse                
-                       } ifelse
-                       %% Présentation du nom --------------------------------                        
-                       0.7 setgray Nom show
-                       CouleurNom WX neg 0.65 sub 0.65 rmoveto Nom show
+                       proc cvx exec
                        %% ----------------------------------------------------
                        savematrix setmatrix
                        %% ----------------------------------------------------
                        savematrix setmatrix
-               end
-       } if
+               } if
+       end
+} def
+
+/Place_Defaut_Position {
+       pos cos LabelOffset mul /X exch def
+       pos sin LabelOffset mul /Y exch def
+       X 0 gt {
+               %% Nom Ã  droite
+               X Y HauteurCaractere 2 div sub moveto
+       } {
+               X 0 lt {
+                       %% Nom Ã  gauche
+                       X wx sub Y HauteurCaractere 2 div sub moveto
+               } {
+                       Y 0 gt {
+                               %% Nom au dessus
+                               X wx 2 div sub Y moveto
+                       } {
+                               %% Nom en dessous
+                               X wx 2 div sub Y HauteurCaractere sub moveto
+                       } ifelse
+               } ifelse                
+       } ifelse
+} def
+
+/Place_Defaut {
+       Place_Defaut_Position
+       %% Présentation du nom --------------------------------                        
+       0.7 setgray nom show
+       CouleurNom wx neg 0.65 sub 0.65 rmoveto nom show        
+} def
+
+/Place_Centering {
+       wx 2 div neg wx 2 div neg rmoveto
+       %% Présentation du nom --------------------------------                        
+       0.7 setgray nom show
+       CouleurNom wx neg 0.65 sub 0.65 rmoveto nom show
 } def
 } def
+
+/Place_Rotate {
+       pos cos 0 ge {
+               pos rotate 
+               LabelOffset HauteurCaractere 2 div neg moveto
+       } {
+               pos 180 sub rotate
+               LabelOffset wx add neg HauteurCaractere 2 div neg moveto
+       } ifelse
+       %% Présentation du nom --------------------------------                        
+       0.7 setgray nom show
+       CouleurNom wx neg 0.65 sub 0.65 rmoveto nom show
+} def
+
+/Place_RotateCentering {
+       pos rotate wx 2 div neg HauteurCaractere 2 div neg moveto
+       %% Présentation du nom --------------------------------                        
+       0.7 setgray nom show
+       CouleurNom wx neg 0.65 sub 0.65 rmoveto nom show
+} def
+
+
 % ------------------------------------------------------------------------------
 
 1 setlinejoin
 % ------------------------------------------------------------------------------
 
 1 setlinejoin
@@ -130,7 +179,7 @@ allemagne { Construction closepath gsave LightGoldenrod fill grestore} forall
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Länder (frontières) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 lander { Construction closepath WhiteSmoke 0.5 setlinewidth stroke} forall
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Länder (frontières) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 lander { Construction closepath WhiteSmoke 0.5 setlinewidth stroke} forall
 
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Fleuves et rivières %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Fleuves et riviÃ\83¨res %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 [rhin saone elbe neckar rhone doubs danube oder saale mosel weser ems main] {
        { Construction DarkBlue 0.25 setlinewidth stroke} forall
 } forall
 [rhin saone elbe neckar rhone doubs danube oder saale mosel weser ems main] {
        { Construction DarkBlue 0.25 setlinewidth stroke} forall
 } forall
@@ -141,7 +190,10 @@ lander { Construction closepath WhiteSmoke 0.5 setlinewidth stroke} forall
 /CouleurNom       {DarkRed} def
 /RayonDisque      2 def
 /LabelOffset      5 def
 /CouleurNom       {DarkRed} def
 /RayonDisque      2 def
 /LabelOffset      5 def
-V_allemagne { PlacePoint gsave DarkRed fill grestore} forall
+[V_allemagne V_hollande V_belgique V_luxembourg V_france V_suisse V_autriche
+V_tchequie V_pologne] {
+       { PlacePoint gsave DarkRed fill grestore PlaceNom} forall
+} forall
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Capitales %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 /Helvetica-Bold   findfont 14 scalefont ISOEncode setfont
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Capitales %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 /Helvetica-Bold   findfont 14 scalefont ISOEncode setfont
@@ -153,14 +205,30 @@ V_allemagne_capitales_lander {
        PlacePoint gsave YellowGreen fill grestore PlaceNom
 } forall
 
        PlacePoint gsave YellowGreen fill grestore PlaceNom
 } forall
 
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Iles %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Iles (Noms) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 /Helvetica-Bold   findfont 6 scalefont ISOEncode setfont
 /HauteurCaractere 5 def
 /CouleurNom       {DarkBlue} def
 /RayonDisque      3 def         
 /LabelOffset      5 def
 I_allemagne {
 /Helvetica-Bold   findfont 6 scalefont ISOEncode setfont
 /HauteurCaractere 5 def
 /CouleurNom       {DarkBlue} def
 /RayonDisque      3 def         
 /LabelOffset      5 def
 I_allemagne {
-       PlacePoint pop PlaceNom
+       PlacePoint PlaceNom
 } forall
 
 } forall
 
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Rivières (Noms) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+/Helvetica-Bold   findfont 6 scalefont ISOEncode setfont
+/HauteurCaractere 5 def
+/CouleurNom       {DarkBlue} def       
+R_allemagne {
+       PlacePoint PlaceNom
+} forall
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Autres annotations %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+/mo /moveto load def
+/Helvetica-Bold findfont 20 scalefont setfont 
+/shm { gsave DarkBlue show grestore } def
+90.412 368.266 mo (Nordsee)shm
+630.412 418.266 mo (Ostsee)shm
+
+
 showpage
 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.