Spaces:
Sleeping
Sleeping
File size: 7,956 Bytes
07c3cdd | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 | /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 |