Source PostScript (frame.pps)

Retour Texte non formaté
/frameangle 0 def /linearc 0 def %% syntaxe : L l alpha Frame_ /Frame_ { 3 dict begin /@lpha exch def /l exch def /L exch def @lpha rotate L 0 srlineto 0 l srlineto L neg 0 srlineto 0 l neg srlineto stockcurrentcpath end } def %% syntaxe : A L l alpha (string) Frame --> dessine un urframe avec %% 'ligne' (donc tenant compte de linearc) /arcFrame { pop gsave 4 dict begin /alpha exch def /l exch def /L exch def /A defpoint A stranslate alpha rotate [0 0 0 l L l L 0] polygone grestore end } def /Frame { linearc 0 eq {Frame_simple} {arcFrame} ifelse } def %% %% syntaxe : A L l alpha (string) Frame %% /Frame_simple { %% 6 dict begin %% /frameoption exch def %% /@ngle exch def %% /l exch def %% /L exch def %% /boty exch def %% /botx exch def %% gsave %% newpath %% botx boty smoveto %% L l @ngle Frame_ %% closepath %% starfill %% grestore %% gsave %% newpath %% botx boty smoveto %% @ngle rotate %% frameoption length 4 eq %% { %% gsave %% botx boty stranslate %% [0 0 L 0 L l 0 l] polygone %% grestore %% } %% { %% 98 frameoption in %% si option 'b' %% {pop L 0 srlineto L neg 0 srmoveto} %% if %% 117 frameoption in %% si option 'u' %% {pop 0 l srmoveto L 0 srlineto L neg l neg srmoveto} %% if %% 108 frameoption in %% si option 'l' %% {pop 0 l srlineto 0 l neg srmoveto} %% if %% 114 frameoption in %% si option 'r' %% {pop L 0 srmoveto 0 l srlineto} %% if %% } ifelse %% currentlinewidth 0 eq {} {stroke} ifelse %% % borderline {stroke} if %% grestore %% end %% } def %% syntaxe : [A L l theta] rframe_ ou A L l rframe_ /rframe_ { dup isarray {aload pop Frame_} {frameangle Frame_} ifelse } def %% syntaxe : [A L l theta] (option) rframe ou A L l (option) rframe , %% ou option est une chaine optionnelle contenant b,u,l,r /rframe { 1 dict begin dup type (stringtype) cvn eq %% y a-t-il une option ? {/frameoption exch def} %% oui => on la sauve {/frameoption (bulr) def} %% non => on l'impose ifelse dup isarray {aload pop frameoption Frame} {frameangle frameoption Frame} ifelse end } def %% syntaxe : A L l (option) rframe* /rframe* { 1 dict begin /startest {true} def rframe end } def %% syntaxe : A L l (option) mframe , ou option est une chaine %% optionnelle contenant b,u,l,r /mframe { 1 dict begin dup type (stringtype) cvn eq %% y a-t-il une option ? {/frameoption exch def} %% oui => on la sauve {/frameoption (bulr) def} %% non => on l'impose ifelse mf2rf frameoption rframe end } def %% syntaxe : [A L l theta] mframe_ ou A L l mframe_ /mframe_ { mf2rf Frame_ } def %% syntaxe : [A L l theta] mf2rf ou A L l mf2rf --> [A' L l theta] /mf2rf { dup isarray {[ exch aload pop mf@rf ]} {[ 5 1 roll frameangle mf@rf ]} ifelse } def %% syntaxe : A L l theta mf@rf /mf@rf { 1 dict begin /thet@ exch def 4 copy %% A L l A L l pop -2 div %% A L l A L/2 thet@ cos thet@ sin 3 -1 roll mulv addv %% A L l A' 6 -1 roll 6 -1 roll pop pop %% L l A' 4 -1 roll 4 -1 roll thet@ end } def /mframe* { 1 dict begin /startest {true} def mframe end } def %% %% syntaxe : A L l (option) cframe , ou option est une chaine %% %% optionnelle contenant b,u,l,r %% /cframe { %% 1 dict begin %% dup type (stringtype) cvn eq %% y a-t-il une option ? %% {/frameoption exch def} %% oui => on la sauve %% {/frameoption (bulr) def} %% non => on l'impose %% ifelse %% cf2rf frameoption rframe %% end %% } def %% syntaxe : [A L l theta] cframe_ ou A L l cframe_ /cframe_ { cf2rf Frame_ } def %% syntaxe : [A L l theta] cf2rf ou A L l cf2rf --> [A' L l theta] /cf2rf { dup isarray {[ exch aload pop cf@rf ]} {[ 5 1 roll frameangle cf@rf ]} ifelse } def %% syntaxe : A L l theta cf@rf /cf@rf { 1 dict begin /@ngle exch def 4 copy %% A L l A L l -2 div exch -2 div exch %% A L l A -L/2 -l/2 addv %% A L l A' 6 copy pop pop pop pop @ngle rotatepoint 6 -1 roll 6 -1 roll pop pop %% L l A' 4 -1 roll 4 -1 roll @ngle end } def /cframe* { 1 dict begin /startest {true} def cframe end } def %% syntaxe : [A B theta] (option) frame ou A B (option) frame , ou %% option est une chaine optionnelle contenant b,u,l,r /frame { 1 dict begin dup type (stringtype) cvn eq %% y a-t-il une option ? {/frameoption exch def} %% oui => on la sauve {/frameoption (bulr) def} %% non => on l'impose ifelse f2rf frameoption rframe end } def %% syntaxe : [A B theta] frame_ ou A B frame_ /frame_ { f2rf rframe_ } def %% syntaxe : [A B theta] f2rf ou A B f2rf --> [A' L l theta] /f2rf { dup isarray {[ exch aload pop f@rf ]} {[ 5 1 roll frameangle f@rf ]} ifelse } def %% syntaxe : A B theta f@rf /f@rf { 4 dict begin /@ngle exch def /B defpoint /A1 defpoint B A1 @ngle neg rotatepoint /B' defpoint A1 B' pop A1 pop sub B' exch pop A1 exch pop sub @ngle end } def %% syntaxe : A B (option) frame* /frame* { 1 dict begin /startest {true} def frame end } def %% syntaxe : A B C D str gereframe --> - /gereframe { 5 dict begin /option exch def /D defpoint %% /C defpoint %% D-----C /B defpoint %% | | /A defpoint %% A-----B gsave newpath A smoveto B slineto C slineto D slineto closepath starfill grestore gsave newpath 98 option in %% si option 'b' {pop A smoveto B slineto} if 117 option in %% si option 'u' {pop C smoveto D slineto} if 108 option in %% si option 'l' {pop A smoveto D slineto} if 114 option in %% si option 'r' {pop B smoveto C slineto} if currentlinewidth 0 eq {} {stroke} ifelse grestore end } def %% syntaxe : [A L l alpha] cframe %% syntaxe : A L l cframe /cframe { 4 dict begin dup isstring { /option exch def } { /option (bulr) def } ifelse dup isarray { aload pop /alpha exch def } { /alpha frameangle def } ifelse /l exch def /L exch def /A defpoint [ A L 2 div l 2 div subv A L 2 div l -2 div addv A L 2 div l 2 div addv A L -2 div l 2 div addv ] {A alpha rotatepoint} papply aload pop option gereframe end } def %% syntaxe : A L l alpha (string) Frame /Frame_simple { 6 dict begin /frameoption exch def /@ngle exch def /l exch def /L exch def /boty exch def /botx exch def gsave newpath botx boty smoveto L l @ngle Frame_ closepath starfill grestore gsave newpath botx boty smoveto @ngle rotate frameoption length 4 eq { botx boty stranslate L 0 srlineto 0 l srlineto L neg 0 srlineto closepath } { 98 frameoption in { %% si option 'b' pop L 0 srlineto L neg 0 srmoveto } if 117 frameoption in { %% si option 'u' pop 0 l srmoveto L 0 srlineto L neg l neg srmoveto } if 108 frameoption in { %% si option 'l' pop 0 l srlineto 0 l neg srmoveto } if 114 frameoption in { %% si option 'r' pop L 0 srmoveto 0 l srlineto } if } ifelse currentlinewidth 0 eq {} {stroke} ifelse grestore end } def