📄 bmemops.eps
字号:
/DrawFlattendSegment {
/pointCount 2 def
dup 0 lt { pop 0 } if
fpc
3 1 roll
2 index
1 index
gt {
2 copy get
dup length
dup 3 eq {
pop
dup 0 get
exch 1 get
2 copy InitTotalLineLength
m
} {
} ifelse
} {
pop 1 index
} ifelse
dup 1 add
3 index
exch sub
dup 10 gt { pop 10} if
{
1 add
2 copy
get aload pop
AccumeLineLength
exec
} repeat
3 1 roll pop pop
DecumeLastLineLength
} bind def
/IncFPC {
fpc add
/fpc exch def
} bind def
/DrawFlatPathArray {
fpc
0 {
dup 2 index
1 sub
lt {
flatPathArray exch
newpath
1 sub DrawFlattendSegment
gsave
pathSegProc
grestore
newpath
}
{
pop pop
exit
} ifelse
} loop
} bind def
/RecordFirstSubSegment {
closepathArray 0 pathArray 0 get
put
closepathArray 1
pathArray 0 get aload pop pop
pathArray 1 get dup length 3 eq {
aload pop pop
} {
newpath
0 0 moveto
aload pop exec
/segmentArray flattenpath MakeFlatPathArray def
segmentArray 1 get aload pop pop
} ifelse
FractionalLine {lineto} 3 array astore
put
} bind def
/AppendClosePath {
closepathArray 0 get 2 {lineto} put
flatPathArray fpc closepathArray 0 get put
1 IncFPC
flatPathArray fpc closepathArray 1 get put
1 IncFPC
} bind def
/RecordCurrentDash {
/theDash
currentdash 2 array astore def
/currentLineLength 0 def
} bind def
/PatternStroke {
0 setlinecap
RecordCurrentDash
/saveFlat currentflat def
.5 setflat
/pathArray MakePathArray def
/closepathArray 2 array def
/pathLength pathArray length def
/flatPathArray 513 array def
/currentLineLength 0 def
/fpc 0 def
pathArray pathLength 1 sub get
length 1 eq {
/usingClosepath true def
RecordFirstSubSegment
/pathLength pathLength 1 sub def
} {
/usingClosepath false def
} ifelse
0 1 pathLength 1 sub {
pathArray exch get
dup length 3 eq {
fpc 1 add 512 ge {
DrawFlatPathArray
fpc 2 ge {
flatPathArray flatPathArray fpc 2 sub get 0 put
flatPathArray flatPathArray fpc 1 sub get 1 put
/fpc 2 def
}{
/fpc 0 def
} ifelse
} if
flatPathArray exch fpc exch put
1 IncFPC
} {
dup length 7 eq {
newpath
/nToStrip 0 def
fpc 1 gt {
flatPathArray fpc 2 sub get aload pop pop m
flatPathArray fpc 1 sub get aload pop exec
/nToStrip 2 def
} {
fpc 1 eq {
flatPathArray fpc 1 sub get aload pop exec
/nToStrip 2 def
} if
} ifelse
aload pop exec
/segmentArray flattenpath MakeFlatPathArray def
/segmentArray nToStrip segmentArray StripFromFront def
segmentArray length fpc add 512 lt {
flatPathArray fpc segmentArray putinterval
segmentArray length IncFPC
} {
DrawFlatPathArray
fpc 1 gt {
flatPathArray flatPathArray fpc 2 sub get 0 exch put
flatPathArray flatPathArray fpc 1 sub get 1 exch put
/fpc 2 def
}{
/fpc 0 def
} ifelse
segmentArray length 512 lt {
flatPathArray fpc segmentArray putinterval
segmentArray length IncFPC
} {
segmentArray length
/exitLoop false def
0
{
2 copy sub
dup 500 gt {
pop 500
} {
/exitLoop true def
} ifelse
segmentArray 2 index 2 index getinterval
flatPathArray fpc 3 -1 roll putinterval
dup IncFPC
add
exitLoop {
exit
} {
DrawFlatPathArray
fpc 1 gt {
flatPathArray flatPathArray fpc 2 sub get 0 exch put
flatPathArray flatPathArray fpc 1 sub get 1 exch put
/fpc 2 def
}{
/fpc 0 def
} ifelse
} ifelse
} loop
} ifelse
} ifelse
} if
} ifelse
} for
fpc 0 gt {
usingClosepath {
AppendClosePath
} if
DrawFlatPathArray
} if
saveFlat setflat
} bind def
%%BeginProcSet : rampdelta
/rampdelta {
/len 0 3 -1 roll add def
/i2 0 3 -1 roll add def
/i1 0 3 -1 roll add def
/nRampSteps len cellPenW div cvi 1 add dup 512 gt {pop 512} if def
/rampPenW len nRampSteps div def
rampColors i1 get aload pop c1 astore pop
rampColors i2 get aload pop c2 astore pop
c2 0 get c1 0 get sub nRampSteps div d 0 3 -1 roll put
c2 1 get c1 1 get sub nRampSteps div d 1 3 -1 roll put
c2 2 get c1 2 get sub nRampSteps div d 2 3 -1 roll put
d aload pop
} bind def
%%EndProcSet
%%BeginProcSet : adddelta
/adddelta {
d astore pop
mycurrentrgbcolor c1 copy pop
c1 0 get d 0 get add c2 0 3 -1 roll put
c1 1 get d 1 get add c2 1 3 -1 roll put
c1 2 get d 2 get add c2 2 3 -1 roll put
c2 aload pop setrgbcolor
c2 mycurrentrgbcolor copy pop
} bind def
%%EndProcSet
%%BeginProcSet : rampline
/rampline {
segbox ulx get rampPenW add segbox ulx 3 -1 roll put
segbox llx get rampPenW add segbox llx 3 -1 roll put
segbox ulx get segbox uly get moveto
segbox llx get segbox lly get lineto
delta aload pop adddelta stroke
}bind def
%%EndProcSet
%%BeginProcSet : slantrampseg
/slantrampseg {
gsave newpath
segbox ulx get segbox urx get sub abs
rampdelta delta astore pop
segbox ulx get rampPenW .5 mul sub segbox ulx 3 -1 roll put
segbox llx get rampPenW .5 mul sub segbox llx 3 -1 roll put
rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor
rampPenW setlinewidth nRampSteps {rampline} repeat
grestore
}bind def
%%EndProcSet
%%BeginProcSet : flipramp
/flipramp {
rampColors 0 get rampColors 3 get rampColors 0 3 -1 roll put rampColors 3 3 -1 roll put
rampColors 1 get rampColors 2 get rampColors 1 3 -1 roll put rampColors 2 3 -1 roll put
} bind def
%%EndProcSet
%%BeginProcSet : leftrbox
/leftrbox {
rbox segbox copy pop
rbox urx get rbox ulx get sub
flipRatio mul dup
segbox ulx get add segbox urx 3 -1 roll put
segbox llx get add segbox lrx 3 -1 roll put
} bind def
%%EndProcSet
%%BeginProcSet : rightrbox
/rightrbox {
rbox segbox copy pop
rbox urx get rbox ulx get sub
flipRatio mul dup
segbox ulx get add segbox ulx 3 -1 roll put
segbox llx get add segbox llx 3 -1 roll put
} bind def
%%EndProcSet
%%BeginProcSet : drawslantramp
/drawslantramp {
segbox urx get segbox ulx get sub 3 div dup dup dup dup dup dup dup dup dup
segbox ulx get add segbox urx 3 -1 roll put
segbox llx get add segbox lrx 3 -1 roll put
segbox aload pop
0 0 1 slantrampseg
segbox astore pop
segbox ulx get add segbox ulx 3 -1 roll put
segbox llx get add segbox llx 3 -1 roll put
segbox urx get add segbox urx 3 -1 roll put
segbox lrx get add segbox lrx 3 -1 roll put
segbox aload pop
1 1 2 slantrampseg
segbox astore pop
segbox ulx get add segbox ulx 3 -1 roll put
segbox llx get add segbox llx 3 -1 roll put
segbox urx get add segbox urx 3 -1 roll put
segbox lrx get add segbox lrx 3 -1 roll put
2 2 3 slantrampseg
}bind def
%%EndProcSet
%%BeginProcSet : tan
/tan {
dup sin exch cos div
}bind def
%%EndProcSet
%%BeginProcSet : rampbox
/rampbox {
pbox top get dup rbox uly 3 -1 roll put rbox ury 3 -1 roll put
pbox left get dup rbox ulx 3 -1 roll put rbox llx 3 -1 roll put
pbox bottom get dup rbox lly 3 -1 roll put rbox lry 3 -1 roll put
pbox right get dup rbox urx 3 -1 roll put rbox lrx 3 -1 roll put
}bind def
%%EndProcSet
%%BeginProcSet : rampbox
/LoadSegBox {
4 copy
segbox llx 6 -1 roll put
segbox lly 5 -1 roll put
segbox lrx 4 -1 roll put
segbox lry 6 -1 roll put
segbox urx 5 -1 roll put
segbox ury 3 -1 roll put
segbox ulx 4 -1 roll put
segbox uly 3 -1 roll put
} bind def
/TransToCenter {
gsave
flattenpath
pathbbox
grestore
2 index
sub 2.0 div exch
3 index sub 2.0 div
4 -1 roll add
3 1 roll add
translate
} bind def
/RotRampGrad {
gsave
TransToCenter
-1.0 mul 180.0 add rotate
flattenpath
pathbbox
clip
newpath
LoadSegBox
flipRatio 1 lt dup{flipramp}if flipRatio 0 gt and
{
/flipRatio 1.0 flipRatio sub def
segbox rbox copy pop leftrbox drawslantramp flipramp rightrbox drawslantramp
}
{drawslantramp} ifelse
grestore
} bind def
/bbg {
pbox exch get
} bind def
%%BeginProcSet : DR
/DR { % Directional ramp
/workingMatrix mstore def
objectCord setmatrix
flipramp
gsave
flattenpath pathbbox
grestore
pbox bottom 3 -1 roll put pbox right 3 -1 roll put pbox top 3 -1 roll put pbox left 3 -1 roll put
rampAngle RotRampGrad
RF
workingMatrix setmatrix
}bind def
%%EndProcSet
%%BeginProcSet : ramparc
/ramparc {
gsave
circum rampdelta delta astore pop
/rampPenW 60.0 nRampSteps div def
/ang1 exch rampAngle sub def
/ang2 rampPenW ang1 add def
rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor 1 setlinewidth
nRampSteps {ramparcseg}repeat
grestore
}bind def
%%EndProcSet
%%BeginProcSet : ramparcseg
/ramparcseg {
newpath
rampcenter aload pop moveto
rampcenter aload pop rampradius ang2 ang1 arcn fill
/ang1 ang2 def
/ang2 ang2 rampPenW add def
delta aload pop adddelta
}bind def
%%EndProcSet
/GetRadius {
rbox urx get rbox llx get sub 2 div rampcenter 0 get abs add dup mul
rbox lly get rbox ury get sub 2 div rampcenter 1 get abs add dup mul
add sqrt
} bind def
%%BeginProcSet : circularRamp
/circularRamp {
rampbox
/rampradius GetRadius def
CalcCrcm
flipramp
0 0 0 1 ramparc
1 60 1 2 ramparc
2 120 2 3 ramparc
flipramp
0 180 0 1 ramparc
1 240 1 2 ramparc
2 300 2 3 ramparc
}bind def
%%EndProcSet
/GetCircumf {
2.0 mul 3.1415926 mul
} bind def
/CalcCrcm {
rampradius GetCircumf
/circum exch 6.0 div def
} bind def
%%BeginProcSet : CR
/CR {
gsave
clip
MTC currentmatrix pop
CTM setmatrix
flattenpath
pathbbox pbox bottom 3 -1 roll put pbox right 3 -1 roll put pbox top 3 -1 roll put pbox left 3 -1 roll put
pbox left get pbox right get sub abs 2 div
pbox left get add rampcenter 0 get add rampcenter 0 3 -1 roll put
pbox top get pbox bottom get sub abs 2 div
pbox top get add rampcenter 1 get add rampcenter 1 3 -1 roll put
circularRamp
MTC setmatrix
grestore
RF
}bind def
%%EndProcSet
%%BeginProcSet : shaperamp
/SBR {
gsave
clip
/workingMatrix mstore def
objectCord setmatrix
flattenpath
/BaseBox pathbbox 4 array astore def
/len BaseBox 2 get BaseBox 0 get sub dup mul
BaseBox 3 get BaseBox 1 get sub dup mul
add sqrt
12.0 div
def
/EndBox
BaseBox aload pop
3 -1 roll sub
3 1 roll
exch sub
/dbx exch def
/dby exch def
BaseBox aload pop pop pop
/blly exch def
/bllx exch def
sbox 0 get 100.0 div dby mul blly add
sbox 1 get 100.0 div dbx mul bllx add
sbox 2 get 100.0 div dby mul blly add
sbox 3 get 100.0 div dbx mul bllx add
exch
4 -2 roll
exch
4 -2 roll
4 array astore
def
BaseBox EndBox ShapeBurst
workingMatrix setmatrix
grestore
} bind def
%%EndProcSet
/GetBoxCenter {
2 index
sub 2.0 div
3 -1 roll add
3 1 roll
1 index sub
2.0 div add
exch
} bind def
/GetInterBox {
/boxInter exch def
4 1 7 {
-1 roll
7 index
} for
sub boxInter mul
8 -1 roll add
7 1 roll
sub boxInter mul
7 -1 roll add
6 1 roll
sub boxInter mul
6 -1 roll add
5 1 roll
sub boxInter mul
5 -1 roll add
4 1 roll
} bind def
/GetBoxCenterDeltas {
GetBoxCenter
6 2 roll
GetBoxCenter
3 -1 roll exch sub
3 1 roll sub
exch
} bind def
/GetBoxCornerDeltas {
pop pop
4 2 roll pop pop
3 -1 roll sub
3 1 roll exch sub
exch
} bind def
%%BeginProcSet : getpath
/getpath {
/k 0 def
{/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{}pathforall
/pfa k array def
/k 0 def
{{moveto} 3 array astore pfa k 3 -1 roll put /k k 1 add def}
{{lineto} 3 array astore pfa k 3 -1 roll put /k k 1 add def}
{{curveto} 7 array astore pfa k 3 -1 roll put /k k 1 add def}
{}pathforall
}bind def
%%EndProcSet
/ShapeBurst {
getpath
newpath
/SBERect exch 4 array copy def
/SBBRect exch 4 array copy def
/interRect1 SBBRect aload pop SBERect aload pop .3333333 GetInterBox 4 array astore def
/interRect2 SBBRect aload pop SBERect aload pop .6666666 GetInterBox 4 array astore def
0 0 1 SBBRect interRect1 ShapeBurstSeg
msave
interRect1 0 get interRect1 1 get translate
SBBRect aload pop interRect1 aload pop GetBoxesRatio scale
SBBRect 0 get -1.0 mul SBBRect 1 get -1.0 mul translate
1 1 2 interRect1 interRect2 ShapeBurstSeg
mrestore
msave
interRect2 0 get interRect2 1 get translate
SBBRect aload pop interRect2 aload pop GetBoxesRatio scale
SBBRect 0 get -1.0 mul SBBRect 1 get -1.0 mul translate
2 2 3 interRect2 SBERect ShapeBurstSeg
mrestore
} bind def
/ShapeBurstSeg {
/sbr1 exch 4 array copy def
/sbr0 exch 4 array copy def
/blx sbr0 0 get def
/bly sbr0 1 get def
len rampdelta delta astore pop
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -