| 1 |
lars |
1 |
/background-image-create { % => Data-or-/null
|
|
|
2 |
dup /null eq { % => /null
|
|
|
3 |
} { % => Mask Image Init SY SX
|
|
|
4 |
image-create
|
|
|
5 |
} ifelse
|
|
|
6 |
} def
|
|
|
7 |
|
|
|
8 |
/background-image-show { % => Position Repeat Box Viewport Image
|
|
|
9 |
dup /null ne {
|
|
|
10 |
% Setup clipping region for padding area
|
|
|
11 |
gsave
|
|
|
12 |
|
|
|
13 |
2 index get-left-padding
|
|
|
14 |
3 index get-bottom-padding
|
|
|
15 |
4 index get-right-padding
|
|
|
16 |
5 index get-left-padding sub
|
|
|
17 |
5 index get-top-padding
|
|
|
18 |
6 index get-bottom-padding sub
|
|
|
19 |
rectclip
|
|
|
20 |
|
|
|
21 |
% Determine the vertical an horizontal offset for the image
|
|
|
22 |
2 index /get-width call-method
|
|
|
23 |
3 index get-padding-left add
|
|
|
24 |
3 index get-padding-right add % => Position Repeat box viewport Image PaddingWidth
|
|
|
25 |
|
|
|
26 |
3 index get-height
|
|
|
27 |
4 index get-padding-top add
|
|
|
28 |
4 index get-padding-bottom add % => Position Repeat box viewport Image PaddingWidth PadingHeight
|
|
|
29 |
|
|
|
30 |
6 index /x get /percentage get {
|
|
|
31 |
1 index % => Position Repeat box viewport Image PaddingWidth PadingHeight PaddingWidth
|
|
|
32 |
3 index /SX get px sub % => Position Repeat box viewport Image PaddingWidth PadingHeight (PaddingWidth-ImageWidth*px)
|
|
|
33 |
7 index /x get /value get mul 100 div
|
|
|
34 |
} {
|
|
|
35 |
6 index /x get /value get
|
|
|
36 |
} ifelse % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset
|
|
|
37 |
|
|
|
38 |
7 index /y get /percentage get {
|
|
|
39 |
1 index % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset PaddingHeight
|
|
|
40 |
4 index /SY get px sub
|
|
|
41 |
8 index /y get /value get mul 100 div
|
|
|
42 |
} {
|
|
|
43 |
7 index /y get /value get
|
|
|
44 |
} ifelse % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
|
|
|
45 |
|
|
|
46 |
% NOTE: px2pt(1) make a scaing factor for PDF output
|
|
|
47 |
% NOTE: background-image is positioned relative to PADDING corner and drawn in the PADDING area!
|
|
|
48 |
{ % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
|
|
|
49 |
7 index % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset Repeat
|
|
|
50 |
|
|
|
51 |
dup /no-repeat eq {
|
|
|
52 |
pop
|
|
|
53 |
|
|
|
54 |
1 px % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset Scale
|
|
|
55 |
7 index get-top-padding
|
|
|
56 |
6 index /SY get px sub
|
|
|
57 |
1 index sub % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset Scale Y
|
|
|
58 |
8 index get-left-padding
|
|
|
59 |
4 index add % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset Scale Y X
|
|
|
60 |
7 index
|
|
|
61 |
image-show-simple
|
|
|
62 |
|
|
|
63 |
exit
|
|
|
64 |
} if
|
|
|
65 |
|
|
|
66 |
dup /repeat-x eq {
|
|
|
67 |
pop
|
|
|
68 |
|
|
|
69 |
1 px % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset Scale
|
|
|
70 |
1 index
|
|
|
71 |
3 index % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
|
|
|
72 |
% Scale YOffset XOffset
|
|
|
73 |
9 index get-right-padding % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
|
|
|
74 |
% Scale YOffset XOffset TX
|
|
|
75 |
8 index /SX get px % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
|
|
|
76 |
% Scale YOffset XOffset TX SX
|
|
|
77 |
11 index get-top-padding
|
|
|
78 |
10 index /SY get px sub
|
|
|
79 |
4 index sub % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
|
|
|
80 |
% Scale YOffset XOffset TX SX Y
|
|
|
81 |
12 index get-left-padding
|
|
|
82 |
4 index add % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
|
|
|
83 |
% Scale YOffset XOffset TX SX Y X
|
|
|
84 |
11 index % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
|
|
|
85 |
% Scale YOffset XOffset TX SX Y X Image
|
|
|
86 |
image-show-repeat-x
|
|
|
87 |
|
|
|
88 |
exit
|
|
|
89 |
} if
|
|
|
90 |
|
|
|
91 |
dup /repeat-y eq {
|
|
|
92 |
pop
|
|
|
93 |
|
|
|
94 |
1 px % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset Scale
|
|
|
95 |
1 index
|
|
|
96 |
3 index % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
|
|
|
97 |
% Scale YOffset XOffset
|
|
|
98 |
9 index get-bottom-padding % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
|
|
|
99 |
% Scale YOffset XOffset TX
|
|
|
100 |
8 index /SY get px % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
|
|
|
101 |
% Scale YOffset XOffset TX SX
|
|
|
102 |
11 index get-top-padding
|
|
|
103 |
10 index /SY get px sub
|
|
|
104 |
4 index sub % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
|
|
|
105 |
% Scale YOffset XOffset TX SX Y
|
|
|
106 |
12 index get-left-padding
|
|
|
107 |
4 index add % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
|
|
|
108 |
% Scale YOffset XOffset TX SX Y X
|
|
|
109 |
11 index % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
|
|
|
110 |
% Scale YOffset XOffset TX SX Y X Image
|
|
|
111 |
image-show-repeat-y
|
|
|
112 |
|
|
|
113 |
exit
|
|
|
114 |
} if
|
|
|
115 |
|
|
|
116 |
% /repeat (default)
|
|
|
117 |
pop
|
|
|
118 |
|
|
|
119 |
1 px % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
|
|
|
120 |
% Scale
|
|
|
121 |
1 index 3 index % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
|
|
|
122 |
% Scale YOffset XOffset
|
|
|
123 |
9 index get-bottom-padding % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
|
|
|
124 |
% Scale YOffset XOffset TY
|
|
|
125 |
10 index get-right-padding % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
|
|
|
126 |
% Scale YOffset XOffset TY TX
|
|
|
127 |
9 index /SY get px % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
|
|
|
128 |
% Scale YOffset XOffset TY TX SY
|
|
|
129 |
10 index /SX get px % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
|
|
|
130 |
% Scale YOffset XOffset TY TX SY SX
|
|
|
131 |
13 index get-top-padding
|
|
|
132 |
12 index /SY get px sub
|
|
|
133 |
6 index add % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
|
|
|
134 |
% Scale YOffset XOffset TY TX SY SX Y
|
|
|
135 |
14 index get-left-padding
|
|
|
136 |
6 index add % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
|
|
|
137 |
% Scale YOffset XOffset TY TX SY SX Y X
|
|
|
138 |
13 index % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
|
|
|
139 |
% Scale YOffset XOffset TY TX SY SX Y X
|
|
|
140 |
image-show-repeat-xy % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
|
|
|
141 |
|
|
|
142 |
exit
|
|
|
143 |
} loop % => Position Repeat box viewport Image PaddingWidth PadingHeight XOffset YOffset
|
|
|
144 |
pop pop pop pop
|
|
|
145 |
|
|
|
146 |
% return to the previous clipping area
|
|
|
147 |
grestore
|
|
|
148 |
|
|
|
149 |
} if % => Position Repeat Box Viewport Image
|
|
|
150 |
|
|
|
151 |
pop pop pop pop pop
|
|
|
152 |
} def
|