Subversion-Projekte lars-tiefland.php_share

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
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