172 lines
3.0 KiB
PostScript
Executable File
172 lines
3.0 KiB
PostScript
Executable File
/viewport-create { % => Box
|
|
<<
|
|
/left 0
|
|
/width 0
|
|
/height 0
|
|
/top 0
|
|
/offset 0
|
|
/page-offset 0
|
|
/current-page 1
|
|
/anchors << >>
|
|
>> % => Box Viewport
|
|
|
|
1 index get-left
|
|
1 index exch
|
|
/left exch put
|
|
|
|
1 index get-top
|
|
1 index exch
|
|
/top exch put
|
|
|
|
1 index /get-width call-method
|
|
1 index exch
|
|
/width exch put
|
|
|
|
1 index get-height
|
|
1 index exch
|
|
/height exch put
|
|
|
|
exch pop
|
|
} def % => Viewport
|
|
|
|
/viewport-draw-page-border { % => Viewport
|
|
newpath
|
|
1 setlinewidth
|
|
0 0 0 setrgbcolor
|
|
|
|
dup viewport-get-left
|
|
1 index viewport-get-bottom
|
|
moveto
|
|
|
|
dup viewport-get-left
|
|
1 index viewport-get-top
|
|
lineto
|
|
|
|
dup viewport-get-right
|
|
1 index viewport-get-top
|
|
lineto
|
|
|
|
dup viewport-get-right
|
|
1 index viewport-get-bottom
|
|
lineto
|
|
|
|
closepath
|
|
|
|
stroke
|
|
pop
|
|
} def
|
|
|
|
/viewport-get-anchor { % => Viewport Name
|
|
1 index /anchors get % => Viewport Name Anchors
|
|
dup 2 index known { % => Viewport Name Anchors
|
|
1 index get % => Viewport Name AnchorData
|
|
} {
|
|
pop /null
|
|
} ifelse % => Viewport Name AnchorData
|
|
|
|
exch pop
|
|
exch pop
|
|
} def
|
|
|
|
/viewport-get-bottom { % => Viewport
|
|
dup /top get
|
|
1 index /height get
|
|
sub
|
|
exch pop
|
|
} def
|
|
|
|
/viewport-get-height {
|
|
/height get
|
|
} def
|
|
|
|
/viewport-get-left {
|
|
/left get
|
|
} def
|
|
|
|
/viewport-get-offset-delta { % => Viewport
|
|
/offset get
|
|
} def
|
|
|
|
/viewport-get-page-offset {
|
|
/page-offset get
|
|
} def
|
|
|
|
/viewport-get-right { % => Viewport
|
|
dup /left get
|
|
1 index /width get
|
|
add
|
|
exch pop
|
|
} def
|
|
|
|
/viewport-get-top { % => Viewport
|
|
dup /top get
|
|
exch pop
|
|
} def
|
|
|
|
/viewport-init-page { % => Viewport
|
|
0 1 index /page-offset get
|
|
translate
|
|
|
|
0 tmargin neg
|
|
translate
|
|
|
|
pop
|
|
} def
|
|
|
|
/viewport-next-page { % => Viewport
|
|
dup /page-offset get neg % => Viewport Offset
|
|
real-page-height sub % => Viewport Offset1
|
|
1 index /offset get add % => Viewport Offset2
|
|
neg
|
|
|
|
1 index exch % => Viewport Viewport Offset2
|
|
/page-offset exch put % => Viewport
|
|
|
|
dup /top get
|
|
real-page-height sub % => Viewport Top'
|
|
1 index /offset get add
|
|
1 index exch
|
|
/top exch put
|
|
|
|
dup /offset 0 put % => Viewport
|
|
|
|
% Increase current page number
|
|
dup /current-page get 1 add
|
|
1 index exch
|
|
/current-page exch put % => Viewport
|
|
|
|
pop
|
|
} def
|
|
|
|
/viewport-put-anchors { % => Data Viewport
|
|
exch /anchors exch put
|
|
} def
|
|
|
|
/viewport-put-offset-delta { % => Delta Viewport
|
|
exch /offset exch put
|
|
} def
|
|
|
|
/viewport-setup-clip {
|
|
dup viewport-get-left
|
|
1 index viewport-get-bottom
|
|
moveto
|
|
|
|
dup viewport-get-left
|
|
1 index viewport-get-top
|
|
lineto
|
|
|
|
dup viewport-get-right
|
|
1 index viewport-get-top
|
|
lineto
|
|
|
|
dup viewport-get-right
|
|
1 index viewport-get-bottom
|
|
lineto
|
|
|
|
closepath
|
|
clip
|
|
|
|
pop
|
|
} def
|
|
|