summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/dvips/pst-optexp/pst-optexp.pro
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/dvips/pst-optexp/pst-optexp.pro')
-rw-r--r--Master/texmf-dist/dvips/pst-optexp/pst-optexp.pro73
1 files changed, 55 insertions, 18 deletions
diff --git a/Master/texmf-dist/dvips/pst-optexp/pst-optexp.pro b/Master/texmf-dist/dvips/pst-optexp/pst-optexp.pro
index e8bfcdb9054..a824a39d9c8 100644
--- a/Master/texmf-dist/dvips/pst-optexp/pst-optexp.pro
+++ b/Master/texmf-dist/dvips/pst-optexp/pst-optexp.pro
@@ -9,7 +9,7 @@
%% This is a generated file.
%%
%% Project: pst-optexp
-%% Version: 5.0 (2014/10/30)
+%% Version: 5.1 (2014/11/19)
%%
%% Copyright (C) 2007-2014 by Christoph Bersch <usenet@bersch.net>
%%
@@ -85,7 +85,7 @@ tx@OptexpDict begin
dup length string cvs
} bind def
/PrintWarning {
- (Warning pst-optexp: ) exch strcat ==
+ (Warning pst-optexp: ) exch strcat (\n) strcat print
} bind def
/CompUnknownWarning {
(Component ') exch strcat (' unknown) strcat Warning
@@ -766,6 +766,13 @@ tx@OptexpDict begin
/Chirality {
4 -1 roll mul 3 1 roll mul sub sign
} bind def
+/TraceInterfacePath {
+ tx@IntersectDict begin
+ /ArrowA { {currentpoint} stopped {moveto}{pop pop pop pop} ifelse } def
+ {} TraceCurveOrPath
+ currentdict /ArrowA undef
+ end
+} bind def
/TraceAndFillWideBeam {
(TraceAndFillWideBeam) DebugBegin
AngToVec /InvecLow ED /StartLow ED
@@ -818,6 +825,9 @@ tx@OptexpDict begin
counttomark /IfcCnt ED
/n1 bgRefIndex def
/CurrR false def
+ /CurrPath false def
+ /CurrUpT false def
+ /CurrLowT false def
/ret missed def
/PN 1 def
{
@@ -864,7 +874,9 @@ tx@OptexpDict begin
currentdict /relAngleUp known { relAngleUp } { 0 } ifelse
connectInterfaces /relAngleUp ED
} if
- /CurrUp load /PrevUp ED
+ /PrevUp /CurrUp load def
+ /PrevUpT /CurrUpT load def
+ /PrevPath /CurrPath load def
IfcNum CompName Mode n2 8 4 roll HandleInterface
dup /ret ED
missed eq {
@@ -873,8 +885,13 @@ tx@OptexpDict begin
} if
ToVec /CurrVecUp ED
ToVec /CurrUp ED
+ currentdict /isectT known currentdict /isectPath known and {
+ /CurrUpT isectT def
+ /CurrPath isectPath def
+ } if
/n1 oldn1 def
- /CurrLow load /PrevLow ED
+ /PrevLow /CurrLow load def
+ /PrevLowT /CurrLowT load def
CurrLow CurrVecLow
connectifc PrevCorrect PN 2 gt and PN 2 eq or and {
CurrVecLow CurrPCenter PrevPCenter PrevMode
@@ -894,6 +911,9 @@ tx@OptexpDict begin
} ifelse
ToVec /CurrVecLow ED
ToVec /CurrLow ED
+ currentdict /isectT known {
+ /CurrLowT isectT def
+ } if
/PrevR CurrR def
PrevR type /realtype eq {
/CurrCenter load /PrevCenter ED
@@ -906,6 +926,11 @@ tx@OptexpDict begin
/CurrR false def
/CurrCenter false def
} ifelse
+ IfcNum CompName isPathIfc not {
+ /CurrPath false def
+ /CurrLowT false def
+ /CurrUpT false def
+ } if
PN 1 gt currentdict /fillBeam known and {
draw {
/DrawnSegm DrawnSegm 1 add def
@@ -919,19 +944,27 @@ tx@OptexpDict begin
CurrLow CurrR arct
} ifelse
} {
- CurrLow lineto
+ IfcNum CompName isPathIfc {
+ CurrPath CurrUpT CurrLowT TraceInterfacePath
+ } {
+ CurrLow lineto
+ } ifelse
} ifelse
PrevLow lineto
- PrevR type /booleantype eq not {
- PrevCenter PrevLow PrevUp
- 4 copy 3 -1 roll eq 3 1 roll eq and {
- 6 {pop} repeat
+ PrevPath type /booleantype eq not {
+ PrevPath PrevLowT PrevUpT TraceInterfacePath
+ } {
+ PrevR type /booleantype eq not {
+ PrevCenter PrevLow PrevUp
+ 4 copy 3 -1 roll eq 3 1 roll eq and {
+ 6 {pop} repeat
+ } {
+ TangentCrosspoint
+ PrevUp PrevR arct
+ } ifelse
} {
- TangentCrosspoint
- PrevUp PrevR arct
+ PrevUp lineto
} ifelse
- } {
- PrevUp lineto
} ifelse
} if
Mode refl eq draw and
@@ -1096,9 +1129,12 @@ tx@OptexpDict begin
/HandleInterface {
(HandleInterface) DebugBegin
/Yin ED /Xin ED /Y0 ED /X0 ED /n2 ED /mode ED
+ currentdict /isectT undef currentdict /isectPath undef
2 copy 2 copy LoadIfc % IfcNum name IfcNum name path
dup type /arraytype eq { % is an path interface
- 3 1 roll pop pop PathInterface % IfcNum name X0' Y0' Xout Yout status
+ dup /isectPath exch def
+ 3 1 roll pop pop PathInterface % IfcNum name t X0' Y0' Xout Yout status
+ dup missed eq not { 6 -1 roll /isectT exch def } if
} {
6 -2 roll
isCurvedIfc { CurvedInterface }{ PlainInterface } ifelse
@@ -1555,9 +1591,10 @@ tx@OptexpDict begin
aload pop
Xin Yin Xin Yin
8 -2 roll exch % I.x I.y Xin Yin Xin Yin t [pathseg]
+ exch dup 9 1 roll exch % t I.x I.y Xin Yin Xin Yin t [pathseg]
dup length 2 eq { % a line
exch pop
- aload pop aload pop 3 -1 roll aload pop VecSub % I.x I.y Xin Yin Xin Yin dXp dYp
+ aload pop aload pop 3 -1 roll aload pop VecSub % t I.x I.y Xin Yin Xin Yin dXp dYp
} {
exch dup cvi sub DeriveCurve
} ifelse
@@ -1574,6 +1611,7 @@ tx@OptexpDict begin
PN 1 gt and {
pop missed
} if
+ % t X0' Y0' Xout Yout status
} ifelse
DebugEnd
} bind def
@@ -1890,13 +1928,12 @@ tx@OptexpDict begin
tx@IntersectDict begin
/IntersectLinePath {
3 dict begin
- PreparePath
+ PreparePath dup length /n exch def
2 copy ElongateLine exch 3 -1 roll pop
/isect [] def
/t -1 def
- /n -1 def
{
- /n n 1 add def
+ /n n 1 sub def
2 copy IntersectBeziers
dup 5 1 roll LoadIntersectionPoints
dup length 0 gt {