%% ATTENTION, ces routines supposent que le dessin transmis aux
%% routines 'picture' trace a partir du point courant
%%% les parametres
%% switch et ses commandes pour le calcul des 16 pts de ref de picture
/pictpointsOn {
/pictpoints true def
} def
/pictpointsOff {
/pictpoints false def
} def
/currentpictpoints {
pictpoints
} def
pictpointsOn
%% switch et ses commandes pour l'inclusion du dictionnaire de node
%% dans le dictionnaire courant apres l'utilisation de picture
/loadnodedictOn {
/loadnodedict true def
} def
/loadnodedictOff {
/loadnodedict false def
} def
/currentloadnodedict {
loadnodedict
} def
loadnodedictOn
/secondPictdic 50 dict def
/Pictdic1 50 dict def
/Pictdic2 50 dict def
/Pictdic3 50 dict def
/tmpPictdict 50 dict def
/dsave1 {
Pictdic Pictdic1 copy pop
} def
/drestore1 {
Pictdic1 Pictdic copy pop
Pictdic1 {pop Pictdic1 exch undef} forall
} def
/dsave2 {
Pictdic Pictdic2 copy pop
} def
/drestore2 {
Pictdic2 Pictdic copy pop
Pictdic2 {pop Pictdic2 exch undef} forall
} def
/dsave3 {
Pictdic Pictdic3 copy pop
} def
/drestore3 {
Pictdic3 Pictdic copy pop
Pictdic3 {pop Pictdic3 exch undef} forall
} def
/savePictdic {
Pictdic secondPictdic copy pop
} def
/restorePictdic {
secondPictdic Pictdic copy pop
secondPictdic {pop secondPictdic exch undef} forall
} def
/clearPictdic {
Pictdic {pop Pictdic exch undef} forall
} def
/cleartmpPictdict {
tmpPictdict {pop tmpPictdict exch undef} forall
} def
/hadjust 3.75 def
/vadjust 3.75 def
/dx_boxit 3 def
/dy_boxit 3 def
/diax_boxit 0 def
/diay_boxit 0 def
/decalage_pictlabel {} def
%% pour charger un nom en provenance de Pictdic
/pictget {
Pictdic exch get exec
} def
%% en interne, on utilise les parametres suivant
%% angle_rot %%
%% vect_transl %% les options lues par recup_opt
%% vect_scale %%
%% with_decal %% switch indiquant si oui ou non on
%% decale par rapport au point jps d'appel
%% decalage_pictlabel %% le vecteur de decalage (en points ps),
%% llx, lly, wx, wy %% coordonnées postscript de la boite par
%% rapport à sa propre origine, calculees
%% par boxpictdim, et stockees par recup_dim_pict
%% pict_ht, pict_wd %% dimensions de la boite, calculees et
%% stockees par recup_dim_pict
%% un booleen pour le cas ou l'utilisateur voudrait recuperer les
%% dimensions utilisees en interne dans son dictionnaire courant
%% a priori pas de transmission
/transmet_dim false def
%% depose sur la pile diverses dimensions concernant la boite a afficher
/depose_dim {
pict_wd vect_scale pop mul
pict_ht vect_scale exch pop mul
llx vect_scale pop mul
lly vect_scale exch pop mul
wx vect_scale pop mul
wy vect_scale exch pop mul
} def
%% recupere sur la pile diverses dimensions concernant la boite a afficher
/charge_dim {
/wy exch def
/wx exch def
/lly exch def
/llx exch def
/pict_ht exch def
/pict_wd exch def
} def
%% les switchs pour encadrement rectangulaire
/boxit {
/with_box true def
} def
/boxit_all {
/with_box true def
/remove_boxit {} def
} def
/boxit_none {
/with_box false def
/remove_boxit {
/with_box false store
} def
} def
boxit_none
%% les switchs pour encadrement circulaire
/circleit {
/with_circbox true def
} def
/circleit_all {
/with_circbox true def
/remove_circleit {} def
} def
/circleit_none {
/with_circbox false def
/remove_circleit {
/with_circbox false store
} def
} def
circleit_none
%% les switchs pour encadrement Circulaire (cercle de rayon constant)
/Circleit {
/with_Circbox true def
} def
/Circleit_all {
/with_Circbox true def
/remove_Circleit {} def
} def
/Circleit_none {
/with_Circbox false def
/remove_Circleit {
/with_Circbox false store
} def
} def
Circleit_none
%% les switchs pour encadrement losange (diamond)
/diaboxit {
/with_diabox true def
} def
/diaboxit_all {
/with_diabox true def
/remove_diaboxit {} def
} def
/diaboxit_none {
/with_diabox false def
/remove_diaboxit {
/with_diabox false store
} def
} def
diaboxit_none
%% les switchs pour encadrement losange (diamond)
/ovalit {
/with_oval true def
} def
/ovalit_all {
/with_oval true def
/remove_ovalit {} def
} def
/ovalit_none {
/with_oval false def
/remove_ovalit {
/with_oval false store
} def
} def
ovalit_none
%% attention, ne peut etre appele que de l'interieur de p@cturee, utilise
%% un dictionnaire local a cette fonction
%% trace le cercle entourant la boite a afficher
/circl@it_l@bel {
gsave
2 dict begin
%% point extremal 1
llx lly ptojpoint pict_transform /circlept1 defpoint
%% point extremal 2
wx wy ptojpoint pict_transform /circlept2 defpoint
drawpicture {
circlept1 circlept2 milieu %% centre
dupp circlept1 distance %% rayon
cercle*
} if
%% sauvegarde des donnees en cas de declaration de cnode
cn@deencours {
n@dedict
/noderayon
circlept1 circlept2 milieu
circlept1 distance
put
} if
end
grestore
} def
/Circleradius .5 def
%% attention, ne peut etre appele que de l'interieur de p@cturee, utilise
%% un dictionnaire local a cette fonction
%% trace le cercle entourant la boite a afficher
/Circl@it_l@bel {
gsave
2 dict begin
%% point extremal 1
llx lly ptojpoint pict_transform /Circlept1 defpoint
%% point extremal 2
wx wy ptojpoint pict_transform /Circlept2 defpoint
drawpicture {
Circlept1 Circlept2 milieu %% centre
Circleradius %% rayon
cercle*
} if
%% sauvegarde des donnees en cas de declaration de cnode
Cn@deencours {
n@dedict /noderayon Circleradius put
} if
end
grestore
} def
%% attention, ne peut etre appele que de l'interieur de p@cturee, utilise
%% un dictionnaire local a cette fonction
%% trace le rectangle encadrant la boite a afficher
/diab@xit_l@bel {
gsave
2 dict begin
wx llx add 2 div lly wy add 2 div ptojpoint pict_transform %% cc
wx lly wy add 2 div ptojpoint pict_transform %% cr
vecteur /u defpoint
wx llx add 2 div lly wy add 2 div ptojpoint pict_transform %% cc
wx llx add 2 div wy ptojpoint pict_transform %% uc
vecteur /v defpoint
wx lly wy add 2 div ptojpoint pict_transform %% cr
u addv /rdia defpoint
llx lly wy add 2 div ptojpoint pict_transform %% cl
u subv /ldia defpoint
wx llx add 2 div wy ptojpoint pict_transform %% uc
v addv /udia defpoint
wx llx add 2 div lly ptojpoint pict_transform %% dc
v subv /ddia defpoint
[udia ldia ddia rdia]
%% Pictdic /rdia [ rdia ] cvx put
%% Pictdic /ldia [ ldia ] cvx put
%% Pictdic /udia [ udia ] cvx put
%% Pictdic /ddia [ ddia ] cvx put
drawpicture {
with_oval {
pol2ell ellipse*
% remove_ovalit
} {
polygone*
% remove_diaboxit
} ifelse
} if
end
grestore
} def
%% meme manip que pour p@cture, mais avec un "stranslate" et pas un "smoveto"
/manip_deplacement_picture {
M stranslate
angle_rot rotate
with_decal {ajustement_p@ct translate} if
vect_transl translate
vect_scale scale
decalage_pictlabel translate
} def
%% attention, ne peut etre appele que de l'interieur de p@cturee, utilise
%% un dictionnaire local a cette fonction
%% trace le rectangle encadrant la boite a afficher
/b@xit_l@bel {
drawpicture {
Rn@deencours not {
[
llx lly ptojpoint pict_transform
wx lly ptojpoint pict_transform
wx wy ptojpoint pict_transform
llx wy ptojpoint pict_transform
] polygone*
} {
gsave
newpath
[
llx lly ptojpoint pict_transform
wx lly ptojpoint pict_transform
wx wy ptojpoint pict_transform
llx wy ptojpoint pict_transform
] polygone_
fillstyle
closepath
grestore
/Rn@deencours false store
} ifelse
} if
} def
%% recupere le nom de l'objet, initialise les methodes 'picture'
%% et 'picture_dim', puis charge les defs des points speciaux de
%% l'objet dans le dictionnaire Pictdic
/recup_pict_name {
13 dict begin %% le dictionnaire sera ferme par la procedure p@cture
/picture_name exch def
/picture picture_name cvx def
/picture_dim picture_name (_dim) append cvx def
%% y a-t-il des points definis pour l'objet ?
/objdic_name picture_name (_dic) append cvn def
%% 30/04/05 %% %% on copie le dictionnaire des points ds Pictdic
%% 30/04/05 %% objdic_name where
%% 30/04/05 %% {pop objdic_name load Pictdic copy pop}
%% 30/04/05 %% if
} def
%% recupere les 3 arguments optionnels passes a une commande de pict
%% et initialise les parametres internes angle_rot, vect_transl et
%% vect_scale
/recup_opt {
/angle_rot 0 def
/vect_transl {0 0} def
/vect_scale {1 1} def
/with_decal true def
/options_picture where {
pop options_picture
/options_picture where pop /options_picture undef
} if
dup xcheck %% y a-t-il un angle specifie ?
{/angle_rot exch store} %% oui, on le stocke
if
dup isarray %% y a-t-il une scaling specifie
{/vect_scale exch cvx def} %% oui, on le stocke
if
dup isstring
{
dup length 0 eq
{
/with_decal false def
pop
}
{
/vect_transl exch cvx def
}
ifelse
}
if
} def
%% syntaxe : pict x y boxpictdim --> pict x y llx lly wx wy, en tenant compte
%% de l'encadrement
%% attention, doit laisser la pile intacte
/boxpictdim {
%% la commande livree avec l'objet passe a 'picture' indiquant la
%% BB en picas de cet objet
picture_dim
%% il faut maintenant tenir compte de l'encadrement
with_box with_circbox or
{
dx_boxit dy_boxit addv
exchp
dx_boxit dy_boxit subv
exchp
}
if
with_oval with_diabox or
{
diax_boxit diay_boxit addv
exchp
diax_boxit diay_boxit subv
exchp
}
if
%% ici on calcule en cas d'oval ou diabox
} def
%% syntaxe : pict x y recup_dim_pict --> stocke width et height de la
%% boite contenant pict dans les variables pict_wd et pict_ht, et stocke
%% les coordonees llx, lly, wx et wy
/recup_dim_pict {
boxpictdim
/wy exch def
/wx exch def
/lly exch def
/llx exch def
llx lly wx wy
vecteur
/pict_ht exch def
/pict_wd exch def
} def
%% preliminaire a un nouvel affichage par p@cture :
%% - nettoyage du dictionnaire Pictdic
%% - restoration du dictionnaire sauvegarde secondPictdic
%% - lecture des différents arguments sur la pile (nom de l'objet, options
%% - d'angle, de deplacement, de scaling)
%% - initialisation de differentes variables (dimension de l'objet,...)
/init_pict {
cleartmpPictdict
clearPictdic
restorePictdic
recup_pict_name
recup_opt
recup_dim_pict
} def
%% syntaxe : x y pict_transform
%% --> X Y, transforme du point (x, y) ds le repere jps
/pict_transform {
12 dict begin
jtoppoint
/y exch def
/x exch def
%% le scale
/sx vect_scale pop def
/sy vect_scale exch pop def
%% le decalage
/xd decalage_pictlabel pop def
/yd decalage_pictlabel exch pop def
%% l'ajustement_p@ct
with_decal {
/xa ajustement_p@ct pop def
/ya ajustement_p@ct exch pop def
} {
/xa 0 def
/ya 0 def
} ifelse
%% la translation
/xt vect_transl pop def
/yt vect_transl exch pop def
/a sx xd mul xa add xt add def
/b sy yd mul ya add yt add def
sx angle_rot cos mul x mul
sy angle_rot sin mul y mul sub
sx angle_rot sin mul x mul
sy angle_rot cos mul y mul add
a angle_rot cos mul b angle_rot sin mul sub
a angle_rot sin mul b angle_rot cos mul add
addv
ptojpoint
M addv
end
} def
%% 03/02/05 %% %% syntaxe : pict M dir_x dir_y p@cture ou M dans le repere jps, dx,
%% 03/02/05 %% %% dy dans le repere ps --> ecrit le picte dont le coin inferieur
%% 03/02/05 %% %% gauche de la BB est au point M, avec le decalage (dx, dy). Apres le
%% 03/02/05 %% %% decalage, applique translation, scale puis rotate definis par les
%% 03/02/05 %% %% options
%% 03/02/05 %% /p@cture {
%% 03/02/05 %% %%gsave
%% 03/02/05 %% %% ouverture du dictionnaire par recup_opt
%% 03/02/05 %% /M defpoint
%% 03/02/05 %%
%% 03/02/05 %% Pictdic /dl {0 0 jtoppoint llx lly addv ptojpoint} bind put
%% 03/02/05 %% Pictdic /bl {0 0 jtoppoint llx 0 addv ptojpoint} bind put
%% 03/02/05 %% Pictdic /cl {0 0 jtoppoint llx lly wy add 2 div addv ptojpoint} bind put
%% 03/02/05 %% Pictdic /ul {0 0 jtoppoint llx wy addv ptojpoint} bind put
%% 03/02/05 %%
%% 03/02/05 %% Pictdic /dr {0 0 jtoppoint wx lly addv ptojpoint} bind put
%% 03/02/05 %% Pictdic /br {0 0 jtoppoint wx 0 addv ptojpoint} bind put
%% 03/02/05 %% Pictdic /cr {0 0 jtoppoint wx lly wy add 2 div addv ptojpoint} bind put
%% 03/02/05 %% Pictdic /ur {0 0 jtoppoint wx wy addv ptojpoint} bind put
%% 03/02/05 %%
%% 03/02/05 %% Pictdic /dc {0 0 jtoppoint wx llx add 2 div lly addv ptojpoint} bind put
%% 03/02/05 %% Pictdic /bc {0 0 jtoppoint wx llx add 2 div 0 addv ptojpoint} bind put
%% 03/02/05 %% Pictdic /cc {0 0 jtoppoint wx llx add 2 div lly wy add 2 div addv ptojpoint} bind put
%% 03/02/05 %% Pictdic /uc {0 0 jtoppoint wx llx add 2 div wy addv ptojpoint} bind put
%% 03/02/05 %%
%% 03/02/05 %% Pictdic /db {0 0 jtoppoint 0 lly addv ptojpoint} bind put
%% 03/02/05 %% Pictdic /bb {0 0 jtoppoint} bind put
%% 03/02/05 %% Pictdic /cb {0 0 jtoppoint 0 wy lly add 2 div addv ptojpoint} bind put
%% 03/02/05 %% Pictdic /ub {0 0 jtoppoint 0 wy addv ptojpoint} bind put
%% 03/02/05 %%
%% 03/02/05 %% %% on extrait tous les point de Pictdic
%% 03/02/05 %% Pictdic {} forall
%% 03/02/05 %% %% et on leur applique la meme transformation qu'a l'objet
%% 03/02/05 %% %% global puis on les restocke dans Pictdict
%% 03/02/05 %% Pictdic length {
%% 03/02/05 %% exec pict_transform [ 3 1 roll ] cvx store
%% 03/02/05 %% } repeat
%% 03/02/05 %%
%% 03/02/05 %% %% on pratique les encadrements si necessaire
%% 03/02/05 %% with_circbox {circl@it_l@bel remove_circleit} if
%% 03/02/05 %% with_Circbox {Circl@it_l@bel remove_Circleit} if
%% 03/02/05 %% with_box {b@xit_l@bel remove_boxit} if
%% 03/02/05 %% with_diabox with_oval or {diab@xit_l@bel} if
%% 03/02/05 %%
%% 03/02/05 %% gsave
%% 03/02/05 %% %% ici on met un "smoveto" pour conserver le point courant a la
%% 03/02/05 %% %% fin du dessin
%% 03/02/05 %% M smoveto
%% 03/02/05 %% angle_rot rotate
%% 03/02/05 %% with_decal {ajustement_p@ct rmoveto} if
%% 03/02/05 %% vect_transl rmoveto
%% 03/02/05 %% vect_scale scale
%% 03/02/05 %% decalage_pictlabel rmoveto
%% 03/02/05 %% picture
%% 03/02/05 %% currentpoint /save_current_point defpoint
%% 03/02/05 %% grestore
%% 03/02/05 %%
%% 03/02/05 %% save_current_point moveto
%% 03/02/05 %%
%% 03/02/05 %% n@deencours dian@deencours or
%% 03/02/05 %% ovaln@deencours or cn@deencours or Cn@deencours or {
%% 03/02/05 %% %% on extrait tous les point de Pictdic
%% 03/02/05 %% Pictdic {} forall
%% 03/02/05 %% %% et on les stocke dans n@dedict
%% 03/02/05 %% Pictdic length {
%% 03/02/05 %% n@dedict 3 1 roll put
%% 03/02/05 %% } repeat
%% 03/02/05 %% ovaln@deencours {n@dedict /nodetype /oval put } if
%% 03/02/05 %% /n@deencours false store
%% 03/02/05 %% /dian@deencours false store
%% 03/02/05 %% /ovaln@deencours false store
%% 03/02/05 %% } if
%% 03/02/05 %%
%% 03/02/05 %% transmet_dim {depose_dim} if
%% 03/02/05 %% end
%% 03/02/05 %% transmet_dim {charge_dim} if
%% 03/02/05 %% } def
%% syntaxe : x y str_pict brpict
%% avec eventuellement les arguments optionnels
%% <{angle_rot} (vect_transl) [vect_scale]>
/brpict {
init_pict
/ajustement_p@ct {hadjust 0} def
/decalage_pictlabel {llx neg 0} def
p@cture
} def
/bbpict {
init_pict
/ajustement_p@ct {0 0} def
/decalage_pictlabel {0 0} def
p@cture
} def
/blpict {
init_pict
/ajustement_p@ct {hadjust neg 0} def
/decalage_pictlabel {wx neg 0} def
p@cture
} def
/bcpict {
init_pict
/ajustement_p@ct {0 0} def
/decalage_pictlabel {wx llx add -.5 mul 0} def
p@cture
} def
/ubpict {
init_pict
/ajustement_p@ct {0 vadjust} def
/decalage_pictlabel {0 lly neg} def
p@cture
} def
/urpict {
init_pict
/ajustement_p@ct {hadjust vadjust} def
/decalage_pictlabel {llx neg lly neg} def
p@cture
} def
/ulpict {
init_pict
/ajustement_p@ct {hadjust neg vadjust} def
/decalage_pictlabel {wx neg lly neg} def
p@cture
} def
/ucpict {
init_pict
/ajustement_p@ct {0 vadjust} def
/decalage_pictlabel {llx wx add -.5 mul lly neg} def
p@cture
} def
/drpict {
init_pict
/ajustement_p@ct {hadjust vadjust neg} def
/decalage_pictlabel {llx neg wy neg} def
p@cture
} def
/dbpict {
init_pict
/ajustement_p@ct {0 vadjust neg} def
/decalage_pictlabel {0 wy neg} def
p@cture
} def
/dlpict {
init_pict
/ajustement_p@ct {hadjust neg vadjust neg} def
/decalage_pictlabel {wx neg wy neg} def
p@cture
} def
/dcpict {
init_pict
/ajustement_p@ct {0 vadjust neg} def
/decalage_pictlabel {llx wx add -2 div wy neg} def
p@cture
} def
/crpict {
init_pict
/ajustement_p@ct {hadjust 0} def
/decalage_pictlabel {llx neg lly wy add -2 div} def
p@cture
} def
/cbpict {
init_pict
/ajustement_p@ct {0 0} def
/decalage_pictlabel {0 lly wy add -2 div} def
p@cture
} def
/clpict {
init_pict
/ajustement_p@ct {hadjust neg 0} def
/decalage_pictlabel {wx neg lly wy add -2 div} def
p@cture
} def
/ccpict {
init_pict
/ajustement_p@ct {0 0} def
/decalage_pictlabel {llx wx add lly wy add -.5 mulv} def
p@cture
} def
/spict {
%% le 1er arg est-il un litteral
dup type (nametype) cvn eq
{
2 copy pop
(_dic) append cvlit load exch
get exec
}
if
jtoppoint
/le_y exch def
/le_x exch def
init_pict
/ajustement_p@ct {0 0} def
/decalage_pictlabel {
le_x le_y -1 mulv
} def
p@cture
} def
%% =======================================================
/drawpicture true def
%% syntaxe : pict M dir_x dir_y p@cture ou M dans le repere jps, dx,
%% dy dans le repere ps --> ecrit le picte dont le coin inferieur
%% gauche de la BB est au point M, avec le decalage (dx, dy). Apres le
%% decalage, applique translation, scale puis rotate definis par les
%% options
/p@cture {
%%gsave
%% ouverture du dictionnaire par recup_opt
/M defpoint
%% currentpictpoints {
%% Pictdic /dl {0 0 jtoppoint llx lly addv ptojpoint} bind put
%% Pictdic /bl {0 0 jtoppoint llx 0 addv ptojpoint} bind put
%% Pictdic /cl {0 0 jtoppoint llx lly wy add 2 div addv ptojpoint} bind put
%% Pictdic /ul {0 0 jtoppoint llx wy addv ptojpoint} bind put
%%
%% Pictdic /dr {0 0 jtoppoint wx lly addv ptojpoint} bind put
%% Pictdic /br {0 0 jtoppoint wx 0 addv ptojpoint} bind put
%% Pictdic /cr {0 0 jtoppoint wx lly wy add 2 div addv ptojpoint} bind put
%% Pictdic /ur {0 0 jtoppoint wx wy addv ptojpoint} bind put
%%
%% Pictdic /dc {0 0 jtoppoint wx llx add 2 div lly addv ptojpoint} bind put
%% Pictdic /bc {0 0 jtoppoint wx llx add 2 div 0 addv ptojpoint} bind put
%% Pictdic /cc {0 0 jtoppoint wx llx add 2 div lly wy add 2 div addv ptojpoint} bind put
%% Pictdic /uc {0 0 jtoppoint wx llx add 2 div wy addv ptojpoint} bind put
%%
%% Pictdic /db {0 0 jtoppoint 0 lly addv ptojpoint} bind put
%% Pictdic /bb {0 0 jtoppoint } bind put
%% Pictdic /cb {0 0 jtoppoint 0 wy lly add 2 div addv ptojpoint} bind put
%% Pictdic /ub {0 0 jtoppoint 0 wy addv ptojpoint} bind put
%% } if
currentpictpoints {
Pictdic /dl {llx lly ptojpoint} bind put
Pictdic /bl {llx 0 ptojpoint} bind put
Pictdic /cl {llx lly wy add 2 div ptojpoint} bind put
Pictdic /ul {llx wy ptojpoint} bind put
Pictdic /dr {wx lly ptojpoint} bind put
Pictdic /br {wx 0 ptojpoint} bind put
Pictdic /cr {wx lly wy add 2 div ptojpoint} bind put
Pictdic /ur {wx wy ptojpoint} bind put
Pictdic /dc {wx llx add 2 div lly ptojpoint} bind put
Pictdic /bc {wx llx add 2 div 0 ptojpoint} bind put
Pictdic /cc {wx llx add 2 div lly wy add 2 div ptojpoint} bind put
Pictdic /uc {wx llx add 2 div wy ptojpoint} bind put
Pictdic /db {0 lly ptojpoint} bind put
Pictdic /bb {0 0 ptojpoint} bind put
Pictdic /cb {0 wy lly add 2 div ptojpoint} bind put
Pictdic /ub {0 wy ptojpoint} bind put
} if
with_circbox {circl@it_l@bel remove_circleit} if
with_Circbox {Circl@it_l@bel remove_Circleit} if
with_box {b@xit_l@bel remove_boxit} if
with_diabox with_oval or {diab@xit_l@bel} if
drawpicture {
gsave
%% ici on met un "smoveto" pour conserver le point courant a la
%% fin du dessin
M smoveto
angle_rot rotate
with_decal {ajustement_p@ct rmoveto} if
vect_transl rmoveto
vect_scale scale
decalage_pictlabel rmoveto
picture
currentpoint /save_current_point defpoint
grestore
save_current_point moveto
} {
% %% il ne faut faire le pop que si on n'a pas de texlabel
% picture_name length 8 ne {pop} if
%% il ne faut faire le pop que si l'on a du texte
picture_name (show) eqstring {pop} if
}ifelse
%% si on etait en dianode, on rajoute les diapoint ds Pictdict
with_diabox with_oval or {
2 dict begin
wx llx add 2 div lly wy add 2 div ptojpoint %% cc
wx lly wy add 2 div ptojpoint %% cr
vecteur /u defpoint
wx llx add 2 div lly wy add 2 div ptojpoint %% cc
wx llx add 2 div wy ptojpoint %% uc
vecteur /v defpoint
wx lly wy add 2 div ptojpoint %% cr
u addv /rdia defpoint
llx lly wy add 2 div ptojpoint %% cl
u subv /ldia defpoint
wx llx add 2 div wy ptojpoint %% uc
v addv /udia defpoint
wx llx add 2 div lly ptojpoint %% dc
v subv /ddia defpoint
Pictdic /rdia [ rdia ] cvx put
Pictdic /ldia [ ldia ] cvx put
Pictdic /udia [ udia ] cvx put
Pictdic /ddia [ ddia ] cvx put
remove_ovalit
remove_diaboxit
end
} if
%% on extrait tous les point de Pictdic
Pictdic {} forall
%% et on leur applique la meme transformation qu'a l'objet
%% global puis on les restocke dans Pictdict
Pictdic length {
exec pict_transform [ 3 1 roll ] cvx store
} repeat
%% si l'objet a un dictionnaire associe ds l'environnement pict
objdic_name where {
pop
%% on extrait tous les point de objdic
objdic_name load {} forall
%% et on leur applique la meme transformation qu'a l'objet
%% global puis on les restocke dans Pictdict
objdic_name load length {
exec pict_transform [ 3 1 roll ] cvx
Pictdic 3 1 roll put
} repeat
} if
n@deencours dian@deencours or
ovaln@deencours or cn@deencours or Cn@deencours or {
%% on extrait tous les point de Pictdic
Pictdic {} forall
%% et on les stocke dans n@dedict
Pictdic length {
n@dedict 3 1 roll put
} repeat
ovaln@deencours {n@dedict /nodetype /oval put } if
/n@deencours false store
/cn@deencours false store
/Cn@deencours false store
/dian@deencours false store
/ovaln@deencours false store
loadnodedict {
%% on extrait tous les point de Pictdic
Pictdic {} forall
%% et on les stocke dans tmpPictdict
Pictdic length {
exch chaine cvs n@den@mesuffix exch append exch
tmpPictdict 3 1 roll put
} repeat
} if
} if
transmet_dim {depose_dim} if
end
%% on extrait tous les point de tmpPictdic
tmpPictdict {} forall
%% et on les stocke dans currentdict
tmpPictdict length {
currentdict 3 1 roll put
} repeat
transmet_dim {charge_dim} if
} def
/showpictpoints {
gsave
Pictdic {} forall
%% et on les stocke dans currentdict
Pictdic length {
exec dotstyle pop
} repeat
grestore
} def
%% 07/03/06 %% %% ATTENTION, ces routines supposent que le dessin transmis aux
%% 07/03/06 %% %% routines 'picture' trace a partir du point courant
%% 07/03/06 %% %%% les parametres
%% 07/03/06 %%
%% 07/03/06 %% %% switch et ses commandes pour le calcul des 16 pts de ref de picture
%% 07/03/06 %% /pictpointsOn {
%% 07/03/06 %% /pictpoints true def
%% 07/03/06 %% } def
%% 07/03/06 %% /pictpointsOff {
%% 07/03/06 %% /pictpoints false def
%% 07/03/06 %% } def
%% 07/03/06 %% /currentpictpoints {
%% 07/03/06 %% pictpoints
%% 07/03/06 %% } def
%% 07/03/06 %% pictpointsOn
%% 07/03/06 %%
%% 07/03/06 %% %% switch et ses commandes pour l'inclusion du dictionnaire de node
%% 07/03/06 %% %% dans le dictionnaire courant apres l'utilisation de picture
%% 07/03/06 %% /loadnodedictOn {
%% 07/03/06 %% /loadnodedict true def
%% 07/03/06 %% } def
%% 07/03/06 %% /loadnodedictOff {
%% 07/03/06 %% /loadnodedict false def
%% 07/03/06 %% } def
%% 07/03/06 %% /currentloadnodedict {
%% 07/03/06 %% loadnodedict
%% 07/03/06 %% } def
%% 07/03/06 %% loadnodedictOn
%% 07/03/06 %%
%% 07/03/06 %% /secondPictdic 50 dict def
%% 07/03/06 %% /Pictdic1 50 dict def
%% 07/03/06 %% /Pictdic2 50 dict def
%% 07/03/06 %% /Pictdic3 50 dict def
%% 07/03/06 %% /tmpPictdict 50 dict def
%% 07/03/06 %% /dsave1 {
%% 07/03/06 %% Pictdic Pictdic1 copy pop
%% 07/03/06 %% } def
%% 07/03/06 %% /drestore1 {
%% 07/03/06 %% Pictdic1 Pictdic copy pop
%% 07/03/06 %% Pictdic1 {pop Pictdic1 exch undef} forall
%% 07/03/06 %% } def
%% 07/03/06 %% /dsave2 {
%% 07/03/06 %% Pictdic Pictdic2 copy pop
%% 07/03/06 %% } def
%% 07/03/06 %% /drestore2 {
%% 07/03/06 %% Pictdic2 Pictdic copy pop
%% 07/03/06 %% Pictdic2 {pop Pictdic2 exch undef} forall
%% 07/03/06 %% } def
%% 07/03/06 %% /dsave3 {
%% 07/03/06 %% Pictdic Pictdic3 copy pop
%% 07/03/06 %% } def
%% 07/03/06 %% /drestore3 {
%% 07/03/06 %% Pictdic3 Pictdic copy pop
%% 07/03/06 %% Pictdic3 {pop Pictdic3 exch undef} forall
%% 07/03/06 %% } def
%% 07/03/06 %%
%% 07/03/06 %% /savePictdic {
%% 07/03/06 %% Pictdic secondPictdic copy pop
%% 07/03/06 %% } def
%% 07/03/06 %% /restorePictdic {
%% 07/03/06 %% secondPictdic Pictdic copy pop
%% 07/03/06 %% secondPictdic {pop secondPictdic exch undef} forall
%% 07/03/06 %% } def
%% 07/03/06 %% /clearPictdic {
%% 07/03/06 %% Pictdic {pop Pictdic exch undef} forall
%% 07/03/06 %% } def
%% 07/03/06 %% /cleartmpPictdict {
%% 07/03/06 %% tmpPictdict {pop tmpPictdict exch undef} forall
%% 07/03/06 %% } def
%% 07/03/06 %%
%% 07/03/06 %% /hadjust 3.75 def
%% 07/03/06 %% /vadjust 3.75 def
%% 07/03/06 %% /dx_boxit 3 def
%% 07/03/06 %% /dy_boxit 3 def
%% 07/03/06 %% /diax_boxit 0 def
%% 07/03/06 %% /diay_boxit 0 def
%% 07/03/06 %%
%% 07/03/06 %% /decalage_pictlabel {} def
%% 07/03/06 %% %% pour charger un nom en provenance de Pictdic
%% 07/03/06 %% /pictget {
%% 07/03/06 %% Pictdic exch get exec
%% 07/03/06 %% } def
%% 07/03/06 %%
%% 07/03/06 %% %% en interne, on utilise les parametres suivant
%% 07/03/06 %%
%% 07/03/06 %% %% angle_rot %%
%% 07/03/06 %% %% vect_transl %% les options lues par recup_opt
%% 07/03/06 %% %% vect_scale %%
%% 07/03/06 %%
%% 07/03/06 %% %% with_decal %% switch indiquant si oui ou non on
%% 07/03/06 %% %% decale par rapport au point jps d'appel
%% 07/03/06 %% %% decalage_pictlabel %% le vecteur de decalage (en points ps),
%% 07/03/06 %% %% llx, lly, wx, wy %% coordonnées postscript de la boite par
%% 07/03/06 %% %% rapport à sa propre origine, calculees
%% 07/03/06 %% %% par boxpictdim, et stockees par recup_dim_pict
%% 07/03/06 %% %% pict_ht, pict_wd %% dimensions de la boite, calculees et
%% 07/03/06 %% %% stockees par recup_dim_pict
%% 07/03/06 %%
%% 07/03/06 %% %% un booleen pour le cas ou l'utilisateur voudrait recuperer les
%% 07/03/06 %% %% dimensions utilisees en interne dans son dictionnaire courant
%% 07/03/06 %% %% a priori pas de transmission
%% 07/03/06 %% /transmet_dim false def
%% 07/03/06 %%
%% 07/03/06 %% %% depose sur la pile diverses dimensions concernant la boite a afficher
%% 07/03/06 %% /depose_dim {
%% 07/03/06 %% pict_wd vect_scale pop mul
%% 07/03/06 %% pict_ht vect_scale exch pop mul
%% 07/03/06 %% llx vect_scale pop mul
%% 07/03/06 %% lly vect_scale exch pop mul
%% 07/03/06 %% wx vect_scale pop mul
%% 07/03/06 %% wy vect_scale exch pop mul
%% 07/03/06 %% } def
%% 07/03/06 %%
%% 07/03/06 %% %% recupere sur la pile diverses dimensions concernant la boite a afficher
%% 07/03/06 %% /charge_dim {
%% 07/03/06 %% /wy exch def
%% 07/03/06 %% /wx exch def
%% 07/03/06 %% /lly exch def
%% 07/03/06 %% /llx exch def
%% 07/03/06 %% /pict_ht exch def
%% 07/03/06 %% /pict_wd exch def
%% 07/03/06 %% } def
%% 07/03/06 %%
%% 07/03/06 %% %% les switchs pour encadrement rectangulaire
%% 07/03/06 %% /boxit {
%% 07/03/06 %% /with_box true def
%% 07/03/06 %% } def
%% 07/03/06 %% /boxit_all {
%% 07/03/06 %% /with_box true def
%% 07/03/06 %% /remove_boxit {} def
%% 07/03/06 %% } def
%% 07/03/06 %% /boxit_none {
%% 07/03/06 %% /with_box false def
%% 07/03/06 %% /remove_boxit {
%% 07/03/06 %% /with_box false store
%% 07/03/06 %% } def
%% 07/03/06 %% } def
%% 07/03/06 %% boxit_none
%% 07/03/06 %%
%% 07/03/06 %% %% les switchs pour encadrement circulaire
%% 07/03/06 %% /circleit {
%% 07/03/06 %% /with_circbox true def
%% 07/03/06 %% } def
%% 07/03/06 %% /circleit_all {
%% 07/03/06 %% /with_circbox true def
%% 07/03/06 %% /remove_circleit {} def
%% 07/03/06 %% } def
%% 07/03/06 %% /circleit_none {
%% 07/03/06 %% /with_circbox false def
%% 07/03/06 %% /remove_circleit {
%% 07/03/06 %% /with_circbox false store
%% 07/03/06 %% } def
%% 07/03/06 %% } def
%% 07/03/06 %% circleit_none
%% 07/03/06 %%
%% 07/03/06 %% %% les switchs pour encadrement Circulaire (cercle de rayon constant)
%% 07/03/06 %% /Circleit {
%% 07/03/06 %% /with_Circbox true def
%% 07/03/06 %% } def
%% 07/03/06 %% /Circleit_all {
%% 07/03/06 %% /with_Circbox true def
%% 07/03/06 %% /remove_Circleit {} def
%% 07/03/06 %% } def
%% 07/03/06 %% /Circleit_none {
%% 07/03/06 %% /with_Circbox false def
%% 07/03/06 %% /remove_Circleit {
%% 07/03/06 %% /with_Circbox false store
%% 07/03/06 %% } def
%% 07/03/06 %% } def
%% 07/03/06 %% Circleit_none
%% 07/03/06 %%
%% 07/03/06 %% %% les switchs pour encadrement losange (diamond)
%% 07/03/06 %% /diaboxit {
%% 07/03/06 %% /with_diabox true def
%% 07/03/06 %% } def
%% 07/03/06 %% /diaboxit_all {
%% 07/03/06 %% /with_diabox true def
%% 07/03/06 %% /remove_diaboxit {} def
%% 07/03/06 %% } def
%% 07/03/06 %% /diaboxit_none {
%% 07/03/06 %% /with_diabox false def
%% 07/03/06 %% /remove_diaboxit {
%% 07/03/06 %% /with_diabox false store
%% 07/03/06 %% } def
%% 07/03/06 %% } def
%% 07/03/06 %% diaboxit_none
%% 07/03/06 %%
%% 07/03/06 %% %% les switchs pour encadrement losange (diamond)
%% 07/03/06 %% /ovalit {
%% 07/03/06 %% /with_oval true def
%% 07/03/06 %% } def
%% 07/03/06 %% /ovalit_all {
%% 07/03/06 %% /with_oval true def
%% 07/03/06 %% /remove_ovalit {} def
%% 07/03/06 %% } def
%% 07/03/06 %% /ovalit_none {
%% 07/03/06 %% /with_oval false def
%% 07/03/06 %% /remove_ovalit {
%% 07/03/06 %% /with_oval false store
%% 07/03/06 %% } def
%% 07/03/06 %% } def
%% 07/03/06 %% ovalit_none
%% 07/03/06 %%
%% 07/03/06 %% %% attention, ne peut etre appele que de l'interieur de p@cturee, utilise
%% 07/03/06 %% %% un dictionnaire local a cette fonction
%% 07/03/06 %% %% trace le cercle entourant la boite a afficher
%% 07/03/06 %% /circl@it_l@bel {
%% 07/03/06 %% gsave
%% 07/03/06 %% 2 dict begin
%% 07/03/06 %% %% point extremal 1
%% 07/03/06 %% llx lly ptojpoint pict_transform /circlept1 defpoint
%% 07/03/06 %% %% point extremal 2
%% 07/03/06 %% wx wy ptojpoint pict_transform /circlept2 defpoint
%% 07/03/06 %%
%% 07/03/06 %% drawpicture {
%% 07/03/06 %% circlept1 circlept2 milieu %% centre
%% 07/03/06 %% dupp circlept1 distance %% rayon
%% 07/03/06 %% cercle*
%% 07/03/06 %% } if
%% 07/03/06 %% %% sauvegarde des donnees en cas de declaration de cnode
%% 07/03/06 %% cn@deencours {
%% 07/03/06 %% n@dedict
%% 07/03/06 %% /noderayon
%% 07/03/06 %% circlept1 circlept2 milieu
%% 07/03/06 %% circlept1 distance
%% 07/03/06 %% put
%% 07/03/06 %% } if
%% 07/03/06 %% end
%% 07/03/06 %% grestore
%% 07/03/06 %% } def
%% 07/03/06 %%
%% 07/03/06 %% /Circleradius .5 def
%% 07/03/06 %% %% attention, ne peut etre appele que de l'interieur de p@cturee, utilise
%% 07/03/06 %% %% un dictionnaire local a cette fonction
%% 07/03/06 %% %% trace le cercle entourant la boite a afficher
%% 07/03/06 %% /Circl@it_l@bel {
%% 07/03/06 %% gsave
%% 07/03/06 %% 2 dict begin
%% 07/03/06 %% %% point extremal 1
%% 07/03/06 %% llx lly ptojpoint pict_transform /Circlept1 defpoint
%% 07/03/06 %% %% point extremal 2
%% 07/03/06 %% wx wy ptojpoint pict_transform /Circlept2 defpoint
%% 07/03/06 %%
%% 07/03/06 %% drawpicture {
%% 07/03/06 %% Circlept1 Circlept2 milieu %% centre
%% 07/03/06 %% Circleradius %% rayon
%% 07/03/06 %% cercle*
%% 07/03/06 %% } if
%% 07/03/06 %% %% sauvegarde des donnees en cas de declaration de cnode
%% 07/03/06 %% Cn@deencours {
%% 07/03/06 %% n@dedict /noderayon Circleradius put
%% 07/03/06 %% } if
%% 07/03/06 %% end
%% 07/03/06 %% grestore
%% 07/03/06 %% } def
%% 07/03/06 %%
%% 07/03/06 %% %% attention, ne peut etre appele que de l'interieur de p@cturee, utilise
%% 07/03/06 %% %% un dictionnaire local a cette fonction
%% 07/03/06 %% %% trace le rectangle encadrant la boite a afficher
%% 07/03/06 %% /diab@xit_l@bel {
%% 07/03/06 %% gsave
%% 07/03/06 %% 2 dict begin
%% 07/03/06 %% wx llx add 2 div lly wy add 2 div ptojpoint pict_transform %% cc
%% 07/03/06 %% wx lly wy add 2 div ptojpoint pict_transform %% cr
%% 07/03/06 %% vecteur /u defpoint
%% 07/03/06 %% wx llx add 2 div lly wy add 2 div ptojpoint pict_transform %% cc
%% 07/03/06 %% wx llx add 2 div wy ptojpoint pict_transform %% uc
%% 07/03/06 %% vecteur /v defpoint
%% 07/03/06 %% wx lly wy add 2 div ptojpoint pict_transform %% cr
%% 07/03/06 %% u addv /rdia defpoint
%% 07/03/06 %% llx lly wy add 2 div ptojpoint pict_transform %% cl
%% 07/03/06 %% u subv /ldia defpoint
%% 07/03/06 %% wx llx add 2 div wy ptojpoint pict_transform %% uc
%% 07/03/06 %% v addv /udia defpoint
%% 07/03/06 %% wx llx add 2 div lly ptojpoint pict_transform %% dc
%% 07/03/06 %% v subv /ddia defpoint
%% 07/03/06 %% [udia ldia ddia rdia]
%% 07/03/06 %% %% Pictdic /rdia [ rdia ] cvx put
%% 07/03/06 %% %% Pictdic /ldia [ ldia ] cvx put
%% 07/03/06 %% %% Pictdic /udia [ udia ] cvx put
%% 07/03/06 %% %% Pictdic /ddia [ ddia ] cvx put
%% 07/03/06 %% drawpicture {
%% 07/03/06 %% with_oval {
%% 07/03/06 %% pol2ell ellipse*
%% 07/03/06 %% % remove_ovalit
%% 07/03/06 %% } {
%% 07/03/06 %% polygone*
%% 07/03/06 %% % remove_diaboxit
%% 07/03/06 %% } ifelse
%% 07/03/06 %% } if
%% 07/03/06 %% end
%% 07/03/06 %% grestore
%% 07/03/06 %% } def
%% 07/03/06 %%
%% 07/03/06 %% %% meme manip que pour p@cture, mais avec un "stranslate" et pas un "smoveto"
%% 07/03/06 %% /manip_deplacement_picture {
%% 07/03/06 %% M stranslate
%% 07/03/06 %% angle_rot rotate
%% 07/03/06 %% with_decal {ajustement_p@ct translate} if
%% 07/03/06 %% vect_transl translate
%% 07/03/06 %% vect_scale scale
%% 07/03/06 %% decalage_pictlabel translate
%% 07/03/06 %% } def
%% 07/03/06 %%
%% 07/03/06 %% %% attention, ne peut etre appele que de l'interieur de p@cturee, utilise
%% 07/03/06 %% %% un dictionnaire local a cette fonction
%% 07/03/06 %% %% trace le rectangle encadrant la boite a afficher
%% 07/03/06 %% /b@xit_l@bel {
%% 07/03/06 %% drawpicture {
%% 07/03/06 %% Rn@deencours not {
%% 07/03/06 %% [
%% 07/03/06 %% llx lly ptojpoint pict_transform
%% 07/03/06 %% wx lly ptojpoint pict_transform
%% 07/03/06 %% wx wy ptojpoint pict_transform
%% 07/03/06 %% llx wy ptojpoint pict_transform
%% 07/03/06 %% ] polygone*
%% 07/03/06 %% } {
%% 07/03/06 %% gsave
%% 07/03/06 %% newpath
%% 07/03/06 %% [
%% 07/03/06 %% llx lly ptojpoint pict_transform
%% 07/03/06 %% wx lly ptojpoint pict_transform
%% 07/03/06 %% wx wy ptojpoint pict_transform
%% 07/03/06 %% llx wy ptojpoint pict_transform
%% 07/03/06 %% ] polygone_
%% 07/03/06 %% fillstyle
%% 07/03/06 %% closepath
%% 07/03/06 %% grestore
%% 07/03/06 %% /Rn@deencours false store
%% 07/03/06 %% } ifelse
%% 07/03/06 %% } if
%% 07/03/06 %% } def
%% 07/03/06 %%
%% 07/03/06 %% %% recupere le nom de l'objet, initialise les methodes 'picture'
%% 07/03/06 %% %% et 'picture_dim', puis charge les defs des points speciaux de
%% 07/03/06 %% %% l'objet dans le dictionnaire Pictdic
%% 07/03/06 %% /recup_pict_name {
%% 07/03/06 %% 13 dict begin %% le dictionnaire sera ferme par la procedure p@cture
%% 07/03/06 %% /picture_name exch def
%% 07/03/06 %% /picture picture_name cvx def
%% 07/03/06 %% /picture_dim picture_name (_dim) append cvx def
%% 07/03/06 %% %% y a-t-il des points definis pour l'objet ?
%% 07/03/06 %% /objdic_name picture_name (_dic) append cvn def
%% 07/03/06 %% %% 30/04/05 %% %% on copie le dictionnaire des points ds Pictdic
%% 07/03/06 %% %% 30/04/05 %% objdic_name where
%% 07/03/06 %% %% 30/04/05 %% {pop objdic_name load Pictdic copy pop}
%% 07/03/06 %% %% 30/04/05 %% if
%% 07/03/06 %% } def
%% 07/03/06 %%
%% 07/03/06 %% %% recupere les 3 arguments optionnels passes a une commande de pict
%% 07/03/06 %% %% et initialise les parametres internes angle_rot, vect_transl et
%% 07/03/06 %% %% vect_scale
%% 07/03/06 %% /recup_opt {
%% 07/03/06 %% /angle_rot 0 def
%% 07/03/06 %% /vect_transl {0 0} def
%% 07/03/06 %% /vect_scale {1 1} def
%% 07/03/06 %% /with_decal true def
%% 07/03/06 %% dup xcheck %% y a-t-il un angle specifie ?
%% 07/03/06 %% {/angle_rot exch store} %% oui, on le stocke
%% 07/03/06 %% if
%% 07/03/06 %% dup isarray %% y a-t-il une scaling specifie
%% 07/03/06 %% {/vect_scale exch cvx def} %% oui, on le stocke
%% 07/03/06 %% if
%% 07/03/06 %% dup isstring
%% 07/03/06 %% {
%% 07/03/06 %% dup length 0 eq
%% 07/03/06 %% {
%% 07/03/06 %% /with_decal false def
%% 07/03/06 %% pop
%% 07/03/06 %% }
%% 07/03/06 %% {
%% 07/03/06 %% /vect_transl exch cvx def
%% 07/03/06 %% }
%% 07/03/06 %% ifelse
%% 07/03/06 %% }
%% 07/03/06 %% if
%% 07/03/06 %% } def
%% 07/03/06 %%
%% 07/03/06 %% %% syntaxe : pict x y boxpictdim --> pict x y llx lly wx wy, en tenant compte
%% 07/03/06 %% %% de l'encadrement
%% 07/03/06 %% %% attention, doit laisser la pile intacte
%% 07/03/06 %% /boxpictdim {
%% 07/03/06 %% %% la commande livree avec l'objet passe a 'picture' indiquant la
%% 07/03/06 %% %% BB en picas de cet objet
%% 07/03/06 %% picture_dim
%% 07/03/06 %% %% il faut maintenant tenir compte de l'encadrement
%% 07/03/06 %% with_box with_circbox or
%% 07/03/06 %% {
%% 07/03/06 %% dx_boxit dy_boxit addv
%% 07/03/06 %% exchp
%% 07/03/06 %% dx_boxit dy_boxit subv
%% 07/03/06 %% exchp
%% 07/03/06 %% }
%% 07/03/06 %% if
%% 07/03/06 %% with_oval with_diabox or
%% 07/03/06 %% {
%% 07/03/06 %% diax_boxit diay_boxit addv
%% 07/03/06 %% exchp
%% 07/03/06 %% diax_boxit diay_boxit subv
%% 07/03/06 %% exchp
%% 07/03/06 %% }
%% 07/03/06 %% if
%% 07/03/06 %% %% ici on calcule en cas d'oval ou diabox
%% 07/03/06 %% } def
%% 07/03/06 %%
%% 07/03/06 %% %% syntaxe : pict x y recup_dim_pict --> stocke width et height de la
%% 07/03/06 %% %% boite contenant pict dans les variables pict_wd et pict_ht, et stocke
%% 07/03/06 %% %% les coordonees llx, lly, wx et wy
%% 07/03/06 %% /recup_dim_pict {
%% 07/03/06 %% boxpictdim
%% 07/03/06 %% /wy exch def
%% 07/03/06 %% /wx exch def
%% 07/03/06 %% /lly exch def
%% 07/03/06 %% /llx exch def
%% 07/03/06 %% llx lly wx wy
%% 07/03/06 %% vecteur
%% 07/03/06 %% /pict_ht exch def
%% 07/03/06 %% /pict_wd exch def
%% 07/03/06 %% } def
%% 07/03/06 %%
%% 07/03/06 %% %% preliminaire a un nouvel affichage par p@cture :
%% 07/03/06 %% %% - nettoyage du dictionnaire Pictdic
%% 07/03/06 %% %% - restoration du dictionnaire sauvegarde secondPictdic
%% 07/03/06 %% %% - lecture des différents arguments sur la pile (nom de l'objet, options
%% 07/03/06 %% %% - d'angle, de deplacement, de scaling)
%% 07/03/06 %% %% - initialisation de differentes variables (dimension de l'objet,...)
%% 07/03/06 %% /init_pict {
%% 07/03/06 %% cleartmpPictdict
%% 07/03/06 %% clearPictdic
%% 07/03/06 %% restorePictdic
%% 07/03/06 %% recup_pict_name
%% 07/03/06 %% recup_opt
%% 07/03/06 %% recup_dim_pict
%% 07/03/06 %% } def
%% 07/03/06 %%
%% 07/03/06 %% %% syntaxe : x y pict_transform
%% 07/03/06 %% %% --> X Y, transforme du point (x, y) ds le repere jps
%% 07/03/06 %% /pict_transform {
%% 07/03/06 %% 12 dict begin
%% 07/03/06 %% jtoppoint
%% 07/03/06 %% /y exch def
%% 07/03/06 %% /x exch def
%% 07/03/06 %% %% le scale
%% 07/03/06 %% /sx vect_scale pop def
%% 07/03/06 %% /sy vect_scale exch pop def
%% 07/03/06 %% %% le decalage
%% 07/03/06 %% /xd decalage_pictlabel pop def
%% 07/03/06 %% /yd decalage_pictlabel exch pop def
%% 07/03/06 %% %% l'ajustement_p@ct
%% 07/03/06 %% with_decal {
%% 07/03/06 %% /xa ajustement_p@ct pop def
%% 07/03/06 %% /ya ajustement_p@ct exch pop def
%% 07/03/06 %% } {
%% 07/03/06 %% /xa 0 def
%% 07/03/06 %% /ya 0 def
%% 07/03/06 %% } ifelse
%% 07/03/06 %% %% la translation
%% 07/03/06 %% /xt vect_transl pop def
%% 07/03/06 %% /yt vect_transl exch pop def
%% 07/03/06 %% /a sx xd mul xa add xt add def
%% 07/03/06 %% /b sy yd mul ya add yt add def
%% 07/03/06 %%
%% 07/03/06 %% sx angle_rot cos mul x mul
%% 07/03/06 %% sy angle_rot sin mul y mul sub
%% 07/03/06 %% sx angle_rot sin mul x mul
%% 07/03/06 %% sy angle_rot cos mul y mul add
%% 07/03/06 %%
%% 07/03/06 %% a angle_rot cos mul b angle_rot sin mul sub
%% 07/03/06 %% a angle_rot sin mul b angle_rot cos mul add
%% 07/03/06 %% addv
%% 07/03/06 %% ptojpoint
%% 07/03/06 %% M addv
%% 07/03/06 %% end
%% 07/03/06 %% } def
%% 07/03/06 %%
%% 07/03/06 %% %% 03/02/05 %% %% syntaxe : pict M dir_x dir_y p@cture ou M dans le repere jps, dx,
%% 07/03/06 %% %% 03/02/05 %% %% dy dans le repere ps --> ecrit le picte dont le coin inferieur
%% 07/03/06 %% %% 03/02/05 %% %% gauche de la BB est au point M, avec le decalage (dx, dy). Apres le
%% 07/03/06 %% %% 03/02/05 %% %% decalage, applique translation, scale puis rotate definis par les
%% 07/03/06 %% %% 03/02/05 %% %% options
%% 07/03/06 %% %% 03/02/05 %% /p@cture {
%% 07/03/06 %% %% 03/02/05 %% %%gsave
%% 07/03/06 %% %% 03/02/05 %% %% ouverture du dictionnaire par recup_opt
%% 07/03/06 %% %% 03/02/05 %% /M defpoint
%% 07/03/06 %% %% 03/02/05 %%
%% 07/03/06 %% %% 03/02/05 %% Pictdic /dl {0 0 jtoppoint llx lly addv ptojpoint} bind put
%% 07/03/06 %% %% 03/02/05 %% Pictdic /bl {0 0 jtoppoint llx 0 addv ptojpoint} bind put
%% 07/03/06 %% %% 03/02/05 %% Pictdic /cl {0 0 jtoppoint llx lly wy add 2 div addv ptojpoint} bind put
%% 07/03/06 %% %% 03/02/05 %% Pictdic /ul {0 0 jtoppoint llx wy addv ptojpoint} bind put
%% 07/03/06 %% %% 03/02/05 %%
%% 07/03/06 %% %% 03/02/05 %% Pictdic /dr {0 0 jtoppoint wx lly addv ptojpoint} bind put
%% 07/03/06 %% %% 03/02/05 %% Pictdic /br {0 0 jtoppoint wx 0 addv ptojpoint} bind put
%% 07/03/06 %% %% 03/02/05 %% Pictdic /cr {0 0 jtoppoint wx lly wy add 2 div addv ptojpoint} bind put
%% 07/03/06 %% %% 03/02/05 %% Pictdic /ur {0 0 jtoppoint wx wy addv ptojpoint} bind put
%% 07/03/06 %% %% 03/02/05 %%
%% 07/03/06 %% %% 03/02/05 %% Pictdic /dc {0 0 jtoppoint wx llx add 2 div lly addv ptojpoint} bind put
%% 07/03/06 %% %% 03/02/05 %% Pictdic /bc {0 0 jtoppoint wx llx add 2 div 0 addv ptojpoint} bind put
%% 07/03/06 %% %% 03/02/05 %% Pictdic /cc {0 0 jtoppoint wx llx add 2 div lly wy add 2 div addv ptojpoint} bind put
%% 07/03/06 %% %% 03/02/05 %% Pictdic /uc {0 0 jtoppoint wx llx add 2 div wy addv ptojpoint} bind put
%% 07/03/06 %% %% 03/02/05 %%
%% 07/03/06 %% %% 03/02/05 %% Pictdic /db {0 0 jtoppoint 0 lly addv ptojpoint} bind put
%% 07/03/06 %% %% 03/02/05 %% Pictdic /bb {0 0 jtoppoint} bind put
%% 07/03/06 %% %% 03/02/05 %% Pictdic /cb {0 0 jtoppoint 0 wy lly add 2 div addv ptojpoint} bind put
%% 07/03/06 %% %% 03/02/05 %% Pictdic /ub {0 0 jtoppoint 0 wy addv ptojpoint} bind put
%% 07/03/06 %% %% 03/02/05 %%
%% 07/03/06 %% %% 03/02/05 %% %% on extrait tous les point de Pictdic
%% 07/03/06 %% %% 03/02/05 %% Pictdic {} forall
%% 07/03/06 %% %% 03/02/05 %% %% et on leur applique la meme transformation qu'a l'objet
%% 07/03/06 %% %% 03/02/05 %% %% global puis on les restocke dans Pictdict
%% 07/03/06 %% %% 03/02/05 %% Pictdic length {
%% 07/03/06 %% %% 03/02/05 %% exec pict_transform [ 3 1 roll ] cvx store
%% 07/03/06 %% %% 03/02/05 %% } repeat
%% 07/03/06 %% %% 03/02/05 %%
%% 07/03/06 %% %% 03/02/05 %% %% on pratique les encadrements si necessaire
%% 07/03/06 %% %% 03/02/05 %% with_circbox {circl@it_l@bel remove_circleit} if
%% 07/03/06 %% %% 03/02/05 %% with_Circbox {Circl@it_l@bel remove_Circleit} if
%% 07/03/06 %% %% 03/02/05 %% with_box {b@xit_l@bel remove_boxit} if
%% 07/03/06 %% %% 03/02/05 %% with_diabox with_oval or {diab@xit_l@bel} if
%% 07/03/06 %% %% 03/02/05 %%
%% 07/03/06 %% %% 03/02/05 %% gsave
%% 07/03/06 %% %% 03/02/05 %% %% ici on met un "smoveto" pour conserver le point courant a la
%% 07/03/06 %% %% 03/02/05 %% %% fin du dessin
%% 07/03/06 %% %% 03/02/05 %% M smoveto
%% 07/03/06 %% %% 03/02/05 %% angle_rot rotate
%% 07/03/06 %% %% 03/02/05 %% with_decal {ajustement_p@ct rmoveto} if
%% 07/03/06 %% %% 03/02/05 %% vect_transl rmoveto
%% 07/03/06 %% %% 03/02/05 %% vect_scale scale
%% 07/03/06 %% %% 03/02/05 %% decalage_pictlabel rmoveto
%% 07/03/06 %% %% 03/02/05 %% picture
%% 07/03/06 %% %% 03/02/05 %% currentpoint /save_current_point defpoint
%% 07/03/06 %% %% 03/02/05 %% grestore
%% 07/03/06 %% %% 03/02/05 %%
%% 07/03/06 %% %% 03/02/05 %% save_current_point moveto
%% 07/03/06 %% %% 03/02/05 %%
%% 07/03/06 %% %% 03/02/05 %% n@deencours dian@deencours or
%% 07/03/06 %% %% 03/02/05 %% ovaln@deencours or cn@deencours or Cn@deencours or {
%% 07/03/06 %% %% 03/02/05 %% %% on extrait tous les point de Pictdic
%% 07/03/06 %% %% 03/02/05 %% Pictdic {} forall
%% 07/03/06 %% %% 03/02/05 %% %% et on les stocke dans n@dedict
%% 07/03/06 %% %% 03/02/05 %% Pictdic length {
%% 07/03/06 %% %% 03/02/05 %% n@dedict 3 1 roll put
%% 07/03/06 %% %% 03/02/05 %% } repeat
%% 07/03/06 %% %% 03/02/05 %% ovaln@deencours {n@dedict /nodetype /oval put } if
%% 07/03/06 %% %% 03/02/05 %% /n@deencours false store
%% 07/03/06 %% %% 03/02/05 %% /dian@deencours false store
%% 07/03/06 %% %% 03/02/05 %% /ovaln@deencours false store
%% 07/03/06 %% %% 03/02/05 %% } if
%% 07/03/06 %% %% 03/02/05 %%
%% 07/03/06 %% %% 03/02/05 %% transmet_dim {depose_dim} if
%% 07/03/06 %% %% 03/02/05 %% end
%% 07/03/06 %% %% 03/02/05 %% transmet_dim {charge_dim} if
%% 07/03/06 %% %% 03/02/05 %% } def
%% 07/03/06 %%
%% 07/03/06 %% %% syntaxe : x y str_pict brpict
%% 07/03/06 %% %% avec eventuellement les arguments optionnels
%% 07/03/06 %% %% <{angle_rot} (vect_transl) [vect_scale]>
%% 07/03/06 %% /brpict {
%% 07/03/06 %% init_pict
%% 07/03/06 %% /ajustement_p@ct {hadjust 0} def
%% 07/03/06 %% /decalage_pictlabel {llx neg 0} def
%% 07/03/06 %% p@cture
%% 07/03/06 %% } def
%% 07/03/06 %%
%% 07/03/06 %% /bbpict {
%% 07/03/06 %% init_pict
%% 07/03/06 %% /ajustement_p@ct {0 0} def
%% 07/03/06 %% /decalage_pictlabel {0 0} def
%% 07/03/06 %% p@cture
%% 07/03/06 %% } def
%% 07/03/06 %%
%% 07/03/06 %% /blpict {
%% 07/03/06 %% init_pict
%% 07/03/06 %% /ajustement_p@ct {hadjust neg 0} def
%% 07/03/06 %% /decalage_pictlabel {wx neg 0} def
%% 07/03/06 %% p@cture
%% 07/03/06 %% } def
%% 07/03/06 %%
%% 07/03/06 %% /bcpict {
%% 07/03/06 %% init_pict
%% 07/03/06 %% /ajustement_p@ct {0 0} def
%% 07/03/06 %% /decalage_pictlabel {wx llx add -.5 mul 0} def
%% 07/03/06 %% p@cture
%% 07/03/06 %% } def
%% 07/03/06 %%
%% 07/03/06 %% /ubpict {
%% 07/03/06 %% init_pict
%% 07/03/06 %% /ajustement_p@ct {0 vadjust} def
%% 07/03/06 %% /decalage_pictlabel {0 lly neg} def
%% 07/03/06 %% p@cture
%% 07/03/06 %% } def
%% 07/03/06 %%
%% 07/03/06 %% /urpict {
%% 07/03/06 %% init_pict
%% 07/03/06 %% /ajustement_p@ct {hadjust vadjust} def
%% 07/03/06 %% /decalage_pictlabel {llx neg lly neg} def
%% 07/03/06 %% p@cture
%% 07/03/06 %% } def
%% 07/03/06 %%
%% 07/03/06 %% /ulpict {
%% 07/03/06 %% init_pict
%% 07/03/06 %% /ajustement_p@ct {hadjust neg vadjust} def
%% 07/03/06 %% /decalage_pictlabel {wx neg lly neg} def
%% 07/03/06 %% p@cture
%% 07/03/06 %% } def
%% 07/03/06 %%
%% 07/03/06 %% /ucpict {
%% 07/03/06 %% init_pict
%% 07/03/06 %% /ajustement_p@ct {0 vadjust} def
%% 07/03/06 %% /decalage_pictlabel {llx wx add -.5 mul lly neg} def
%% 07/03/06 %% p@cture
%% 07/03/06 %% } def
%% 07/03/06 %%
%% 07/03/06 %% /drpict {
%% 07/03/06 %% init_pict
%% 07/03/06 %% /ajustement_p@ct {hadjust vadjust neg} def
%% 07/03/06 %% /decalage_pictlabel {llx neg wy neg} def
%% 07/03/06 %% p@cture
%% 07/03/06 %% } def
%% 07/03/06 %%
%% 07/03/06 %% /dbpict {
%% 07/03/06 %% init_pict
%% 07/03/06 %% /ajustement_p@ct {0 vadjust neg} def
%% 07/03/06 %% /decalage_pictlabel {0 wy neg} def
%% 07/03/06 %% p@cture
%% 07/03/06 %% } def
%% 07/03/06 %%
%% 07/03/06 %% /dlpict {
%% 07/03/06 %% init_pict
%% 07/03/06 %% /ajustement_p@ct {hadjust neg vadjust neg} def
%% 07/03/06 %% /decalage_pictlabel {wx neg wy neg} def
%% 07/03/06 %% p@cture
%% 07/03/06 %% } def
%% 07/03/06 %%
%% 07/03/06 %% /dcpict {
%% 07/03/06 %% init_pict
%% 07/03/06 %% /ajustement_p@ct {0 vadjust neg} def
%% 07/03/06 %% /decalage_pictlabel {llx wx add -2 div wy neg} def
%% 07/03/06 %% p@cture
%% 07/03/06 %% } def
%% 07/03/06 %%
%% 07/03/06 %% /crpict {
%% 07/03/06 %% init_pict
%% 07/03/06 %% /ajustement_p@ct {hadjust 0} def
%% 07/03/06 %% /decalage_pictlabel {llx neg lly wy add -2 div} def
%% 07/03/06 %% p@cture
%% 07/03/06 %% } def
%% 07/03/06 %%
%% 07/03/06 %% /cbpict {
%% 07/03/06 %% init_pict
%% 07/03/06 %% /ajustement_p@ct {0 0} def
%% 07/03/06 %% /decalage_pictlabel {0 lly wy add -2 div} def
%% 07/03/06 %% p@cture
%% 07/03/06 %% } def
%% 07/03/06 %%
%% 07/03/06 %% /clpict {
%% 07/03/06 %% init_pict
%% 07/03/06 %% /ajustement_p@ct {hadjust neg 0} def
%% 07/03/06 %% /decalage_pictlabel {wx neg lly wy add -2 div} def
%% 07/03/06 %% p@cture
%% 07/03/06 %% } def
%% 07/03/06 %%
%% 07/03/06 %% /ccpict {
%% 07/03/06 %% init_pict
%% 07/03/06 %% /ajustement_p@ct {0 0} def
%% 07/03/06 %% /decalage_pictlabel {llx wx add lly wy add -.5 mulv} def
%% 07/03/06 %% p@cture
%% 07/03/06 %% } def
%% 07/03/06 %%
%% 07/03/06 %% /spict {
%% 07/03/06 %% %% le 1er arg est-il un litteral
%% 07/03/06 %% dup type (nametype) cvn eq
%% 07/03/06 %% {
%% 07/03/06 %% 2 copy pop
%% 07/03/06 %% (_dic) append cvlit load exch
%% 07/03/06 %% get exec
%% 07/03/06 %% }
%% 07/03/06 %% if
%% 07/03/06 %% jtoppoint
%% 07/03/06 %% /le_y exch def
%% 07/03/06 %% /le_x exch def
%% 07/03/06 %% init_pict
%% 07/03/06 %% /ajustement_p@ct {0 0} def
%% 07/03/06 %% /decalage_pictlabel {
%% 07/03/06 %% le_x le_y -1 mulv
%% 07/03/06 %% } def
%% 07/03/06 %% p@cture
%% 07/03/06 %% } def
%% 07/03/06 %%
%% 07/03/06 %% %% =======================================================
%% 07/03/06 %% /drawpicture true def
%% 07/03/06 %%
%% 07/03/06 %% %% syntaxe : pict M dir_x dir_y p@cture ou M dans le repere jps, dx,
%% 07/03/06 %% %% dy dans le repere ps --> ecrit le picte dont le coin inferieur
%% 07/03/06 %% %% gauche de la BB est au point M, avec le decalage (dx, dy). Apres le
%% 07/03/06 %% %% decalage, applique translation, scale puis rotate definis par les
%% 07/03/06 %% %% options
%% 07/03/06 %% /p@cture {
%% 07/03/06 %% %%gsave
%% 07/03/06 %% %% ouverture du dictionnaire par recup_opt
%% 07/03/06 %% /M defpoint
%% 07/03/06 %%
%% 07/03/06 %% %% currentpictpoints {
%% 07/03/06 %% %% Pictdic /dl {0 0 jtoppoint llx lly addv ptojpoint} bind put
%% 07/03/06 %% %% Pictdic /bl {0 0 jtoppoint llx 0 addv ptojpoint} bind put
%% 07/03/06 %% %% Pictdic /cl {0 0 jtoppoint llx lly wy add 2 div addv ptojpoint} bind put
%% 07/03/06 %% %% Pictdic /ul {0 0 jtoppoint llx wy addv ptojpoint} bind put
%% 07/03/06 %% %%
%% 07/03/06 %% %% Pictdic /dr {0 0 jtoppoint wx lly addv ptojpoint} bind put
%% 07/03/06 %% %% Pictdic /br {0 0 jtoppoint wx 0 addv ptojpoint} bind put
%% 07/03/06 %% %% Pictdic /cr {0 0 jtoppoint wx lly wy add 2 div addv ptojpoint} bind put
%% 07/03/06 %% %% Pictdic /ur {0 0 jtoppoint wx wy addv ptojpoint} bind put
%% 07/03/06 %% %%
%% 07/03/06 %% %% Pictdic /dc {0 0 jtoppoint wx llx add 2 div lly addv ptojpoint} bind put
%% 07/03/06 %% %% Pictdic /bc {0 0 jtoppoint wx llx add 2 div 0 addv ptojpoint} bind put
%% 07/03/06 %% %% Pictdic /cc {0 0 jtoppoint wx llx add 2 div lly wy add 2 div addv ptojpoint} bind put
%% 07/03/06 %% %% Pictdic /uc {0 0 jtoppoint wx llx add 2 div wy addv ptojpoint} bind put
%% 07/03/06 %% %%
%% 07/03/06 %% %% Pictdic /db {0 0 jtoppoint 0 lly addv ptojpoint} bind put
%% 07/03/06 %% %% Pictdic /bb {0 0 jtoppoint } bind put
%% 07/03/06 %% %% Pictdic /cb {0 0 jtoppoint 0 wy lly add 2 div addv ptojpoint} bind put
%% 07/03/06 %% %% Pictdic /ub {0 0 jtoppoint 0 wy addv ptojpoint} bind put
%% 07/03/06 %% %% } if
%% 07/03/06 %%
%% 07/03/06 %% currentpictpoints {
%% 07/03/06 %% Pictdic /dl {llx lly ptojpoint} bind put
%% 07/03/06 %% Pictdic /bl {llx 0 ptojpoint} bind put
%% 07/03/06 %% Pictdic /cl {llx lly wy add 2 div ptojpoint} bind put
%% 07/03/06 %% Pictdic /ul {llx wy ptojpoint} bind put
%% 07/03/06 %% Pictdic /dr {wx lly ptojpoint} bind put
%% 07/03/06 %% Pictdic /br {wx 0 ptojpoint} bind put
%% 07/03/06 %% Pictdic /cr {wx lly wy add 2 div ptojpoint} bind put
%% 07/03/06 %% Pictdic /ur {wx wy ptojpoint} bind put
%% 07/03/06 %% Pictdic /dc {wx llx add 2 div lly ptojpoint} bind put
%% 07/03/06 %% Pictdic /bc {wx llx add 2 div 0 ptojpoint} bind put
%% 07/03/06 %% Pictdic /cc {wx llx add 2 div lly wy add 2 div ptojpoint} bind put
%% 07/03/06 %% Pictdic /uc {wx llx add 2 div wy ptojpoint} bind put
%% 07/03/06 %% Pictdic /db {0 lly ptojpoint} bind put
%% 07/03/06 %% Pictdic /bb {0 0 ptojpoint} bind put
%% 07/03/06 %% Pictdic /cb {0 wy lly add 2 div ptojpoint} bind put
%% 07/03/06 %% Pictdic /ub {0 wy ptojpoint} bind put
%% 07/03/06 %% } if
%% 07/03/06 %%
%% 07/03/06 %% with_circbox {circl@it_l@bel remove_circleit} if
%% 07/03/06 %% with_Circbox {Circl@it_l@bel remove_Circleit} if
%% 07/03/06 %% with_box {b@xit_l@bel remove_boxit} if
%% 07/03/06 %% with_diabox with_oval or {diab@xit_l@bel} if
%% 07/03/06 %%
%% 07/03/06 %% drawpicture {
%% 07/03/06 %% gsave
%% 07/03/06 %% %% ici on met un "smoveto" pour conserver le point courant a la
%% 07/03/06 %% %% fin du dessin
%% 07/03/06 %% M smoveto
%% 07/03/06 %% angle_rot rotate
%% 07/03/06 %% with_decal {ajustement_p@ct rmoveto} if
%% 07/03/06 %% vect_transl rmoveto
%% 07/03/06 %% vect_scale scale
%% 07/03/06 %% decalage_pictlabel rmoveto
%% 07/03/06 %% picture
%% 07/03/06 %% currentpoint /save_current_point defpoint
%% 07/03/06 %% grestore
%% 07/03/06 %% save_current_point moveto
%% 07/03/06 %% } {
%% 07/03/06 %% %% il ne faut faire le pop que si on n'a pas de texlabel
%% 07/03/06 %% picture_name length 8 ne {pop} if
%% 07/03/06 %% }ifelse
%% 07/03/06 %%
%% 07/03/06 %% %% si on etait en dianode, on rajoute les diapoint ds Pictdict
%% 07/03/06 %% with_diabox with_oval or {
%% 07/03/06 %% 2 dict begin
%% 07/03/06 %% wx llx add 2 div lly wy add 2 div ptojpoint %% cc
%% 07/03/06 %% wx lly wy add 2 div ptojpoint %% cr
%% 07/03/06 %% vecteur /u defpoint
%% 07/03/06 %% wx llx add 2 div lly wy add 2 div ptojpoint %% cc
%% 07/03/06 %% wx llx add 2 div wy ptojpoint %% uc
%% 07/03/06 %% vecteur /v defpoint
%% 07/03/06 %% wx lly wy add 2 div ptojpoint %% cr
%% 07/03/06 %% u addv /rdia defpoint
%% 07/03/06 %% llx lly wy add 2 div ptojpoint %% cl
%% 07/03/06 %% u subv /ldia defpoint
%% 07/03/06 %% wx llx add 2 div wy ptojpoint %% uc
%% 07/03/06 %% v addv /udia defpoint
%% 07/03/06 %% wx llx add 2 div lly ptojpoint %% dc
%% 07/03/06 %% v subv /ddia defpoint
%% 07/03/06 %% Pictdic /rdia [ rdia ] cvx put
%% 07/03/06 %% Pictdic /ldia [ ldia ] cvx put
%% 07/03/06 %% Pictdic /udia [ udia ] cvx put
%% 07/03/06 %% Pictdic /ddia [ ddia ] cvx put
%% 07/03/06 %% remove_ovalit
%% 07/03/06 %% remove_diaboxit
%% 07/03/06 %% end
%% 07/03/06 %% } if
%% 07/03/06 %%
%% 07/03/06 %% %% on extrait tous les point de Pictdic
%% 07/03/06 %% Pictdic {} forall
%% 07/03/06 %%
%% 07/03/06 %% %% et on leur applique la meme transformation qu'a l'objet
%% 07/03/06 %% %% global puis on les restocke dans Pictdict
%% 07/03/06 %% Pictdic length {
%% 07/03/06 %% exec pict_transform [ 3 1 roll ] cvx store
%% 07/03/06 %% } repeat
%% 07/03/06 %%
%% 07/03/06 %%
%% 07/03/06 %% %% si l'objet a un dictionnaire associe ds l'environnement pict
%% 07/03/06 %% objdic_name where {
%% 07/03/06 %% pop
%% 07/03/06 %% %% on extrait tous les point de objdic
%% 07/03/06 %% objdic_name load {} forall
%% 07/03/06 %% %% et on leur applique la meme transformation qu'a l'objet
%% 07/03/06 %% %% global puis on les restocke dans Pictdict
%% 07/03/06 %% objdic_name load length {
%% 07/03/06 %% exec pict_transform [ 3 1 roll ] cvx
%% 07/03/06 %% Pictdic 3 1 roll put
%% 07/03/06 %% } repeat
%% 07/03/06 %% } if
%% 07/03/06 %%
%% 07/03/06 %% n@deencours dian@deencours or
%% 07/03/06 %% ovaln@deencours or cn@deencours or Cn@deencours or {
%% 07/03/06 %% %% on extrait tous les point de Pictdic
%% 07/03/06 %% Pictdic {} forall
%% 07/03/06 %% %% et on les stocke dans n@dedict
%% 07/03/06 %% Pictdic length {
%% 07/03/06 %% n@dedict 3 1 roll put
%% 07/03/06 %% } repeat
%% 07/03/06 %% ovaln@deencours {n@dedict /nodetype /oval put } if
%% 07/03/06 %% /n@deencours false store
%% 07/03/06 %% /cn@deencours false store
%% 07/03/06 %% /Cn@deencours false store
%% 07/03/06 %% /dian@deencours false store
%% 07/03/06 %% /ovaln@deencours false store
%% 07/03/06 %% loadnodedict {
%% 07/03/06 %% %% on extrait tous les point de Pictdic
%% 07/03/06 %% Pictdic {} forall
%% 07/03/06 %% %% et on les stocke dans tmpPictdict
%% 07/03/06 %% Pictdic length {
%% 07/03/06 %% exch chaine cvs n@den@mesuffix exch append exch
%% 07/03/06 %% tmpPictdict 3 1 roll put
%% 07/03/06 %% } repeat
%% 07/03/06 %% } if
%% 07/03/06 %% } if
%% 07/03/06 %%
%% 07/03/06 %% transmet_dim {depose_dim} if
%% 07/03/06 %% end
%% 07/03/06 %% %% on extrait tous les point de tmpPictdic
%% 07/03/06 %% tmpPictdict {} forall
%% 07/03/06 %% %% et on les stocke dans currentdict
%% 07/03/06 %% tmpPictdict length {
%% 07/03/06 %% currentdict 3 1 roll put
%% 07/03/06 %% } repeat
%% 07/03/06 %% transmet_dim {charge_dim} if
%% 07/03/06 %% } def
%% 07/03/06 %%
%% 07/03/06 %% /showpictpoints {
%% 07/03/06 %% gsave
%% 07/03/06 %% Pictdic {} forall
%% 07/03/06 %% %% et on les stocke dans currentdict
%% 07/03/06 %% Pictdic length {
%% 07/03/06 %% exec dotstyle pop
%% 07/03/06 %% } repeat
%% 07/03/06 %% grestore
%% 07/03/06 %% } def
|