Files
luos/gulliver/thirdparty/html2ps_pdf/postscript/background.image.ps

152 lines
7.8 KiB
PostScript
Raw Normal View History

2010-12-02 23:34:41 +00:00
/background-image-create { % => Data-or-/null
dup /null eq { % => /null
} { % => Mask Image Init SY SX
image-create
} ifelse
} def
/background-image-show { % => Position Repeat Box Viewport Image
dup /null ne {
% Setup clipping region for padding area
gsave
2 index get-left-padding
3 index get-bottom-padding
4 index get-right-padding
5 index get-left-padding sub
5 index get-top-padding
6 index get-bottom-padding sub
rectclip
% Determine the vertical an horizontal offset for the image
2 index /get-width call-method
3 index get-padding-left add
3 index get-padding-right add % => Position Repeat box viewport Image PaddingWidth
3 index get-height
4 index get-padding-top add
4 index get-padding-bottom add % => Position Repeat box viewport Image PaddingWidth PadingHeight
6 index /x get /percentage get {
1 index % => Position Repeat box viewport Image PaddingWidth PadingHeight PaddingWidth
3 index /SX get px sub % => Position Repeat box viewport Image PaddingWidth PadingHeight (PaddingWidth-ImageWidth*px)
7 index /x get /value get mul 100 div
} {
6 index /x get /value get
} ifelse % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset
7 index /y get /percentage get {
1 index % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset PaddingHeight
4 index /SY get px sub
8 index /y get /value get mul 100 div
} {
7 index /y get /value get
} ifelse % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
% NOTE: px2pt(1) make a scaing factor for PDF output
% NOTE: background-image is positioned relative to PADDING corner and drawn in the PADDING area!
{ % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
7 index % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset Repeat
dup /no-repeat eq {
pop
1 px % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset Scale
7 index get-top-padding
6 index /SY get px sub
1 index sub % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset Scale Y
8 index get-left-padding
4 index add % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset Scale Y X
7 index
image-show-simple
exit
} if
dup /repeat-x eq {
pop
1 px % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset Scale
1 index
3 index % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
% Scale YOffset XOffset
9 index get-right-padding % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
% Scale YOffset XOffset TX
8 index /SX get px % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
% Scale YOffset XOffset TX SX
11 index get-top-padding
10 index /SY get px sub
4 index sub % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
% Scale YOffset XOffset TX SX Y
12 index get-left-padding
4 index add % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
% Scale YOffset XOffset TX SX Y X
11 index % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
% Scale YOffset XOffset TX SX Y X Image
image-show-repeat-x
exit
} if
dup /repeat-y eq {
pop
1 px % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset Scale
1 index
3 index % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
% Scale YOffset XOffset
9 index get-bottom-padding % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
% Scale YOffset XOffset TX
8 index /SY get px % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
% Scale YOffset XOffset TX SX
11 index get-top-padding
10 index /SY get px sub
4 index sub % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
% Scale YOffset XOffset TX SX Y
12 index get-left-padding
4 index add % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
% Scale YOffset XOffset TX SX Y X
11 index % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
% Scale YOffset XOffset TX SX Y X Image
image-show-repeat-y
exit
} if
% /repeat (default)
pop
1 px % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
% Scale
1 index 3 index % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
% Scale YOffset XOffset
9 index get-bottom-padding % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
% Scale YOffset XOffset TY
10 index get-right-padding % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
% Scale YOffset XOffset TY TX
9 index /SY get px % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
% Scale YOffset XOffset TY TX SY
10 index /SX get px % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
% Scale YOffset XOffset TY TX SY SX
13 index get-top-padding
12 index /SY get px sub
6 index add % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
% Scale YOffset XOffset TY TX SY SX Y
14 index get-left-padding
6 index add % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
% Scale YOffset XOffset TY TX SY SX Y X
13 index % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
% Scale YOffset XOffset TY TX SY SX Y X
image-show-repeat-xy % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
exit
} loop % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
pop pop pop pop
% return to the previous clipping area
grestore
} if % => Position Repeat Box Viewport Image
pop pop pop pop pop
} def