PluginProbe
PDF & Print by BestWebSoft – WordPress Posts and Pages PDF Generator Plugin / 1.8.1
PDF & Print by BestWebSoft – WordPress Posts and Pages PDF Generator Plugin v1.8.1
trunk 1.5 1.6 1.7 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 1.7.6 1.7.7 1.7.8 1.7.9 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9.0 1.9.1 All 71 releases
pdf-print / mpdf / classes / meter.php

meter.php in PDF & Print by BestWebSoft – WordPress Posts and Pages PDF Generator Plugin 1.8.1, at mpdf/classes/meter.php

282 lines 10.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 class meter {
4
5
6 function __construct() {
7
8 }
9
10 function makeSVG($tag, $type, $value, $max, $min, $optimum, $low, $high) {
11 $svg = '';
12 if ($tag == 'meter') {
13
14 if ($type=='2') {
15 /////////////////////////////////////////////////////////////////////////////////////
16 ///////// CUSTOM <meter type="2">
17 /////////////////////////////////////////////////////////////////////////////////////
18 $h = 10;
19 $w = 160;
20 $border_radius = 0.143; // Factor of Height
21
22 $svg = '<?xml version="1.0" encoding="UTF-8"?>
23 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
24 <svg width="'.$w.'px" height="'.$h.'px" viewBox="0 0 '.$w.' '.$h.'" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" ><g>
25
26
27 <defs>
28 <linearGradient id="GrGRAY" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox">
29 <stop offset="0%" stop-color="rgb(222, 222, 222)" />
30 <stop offset="20%" stop-color="rgb(232, 232, 232)" />
31 <stop offset="25%" stop-color="rgb(232, 232, 232)" />
32 <stop offset="100%" stop-color="rgb(182, 182, 182)" />
33 </linearGradient>
34
35 </defs>
36 ';
37 $svg .= '<rect x="0" y="0" width="'.$w.'" height="'.$h.'" fill="#f4f4f4" stroke="none" />';
38
39 // LOW to HIGH region
40 //if ($low && $high && ($low != $min || $high != $max)) {
41 if ($low && $high) {
42 $barx = (($low-$min) / ($max-$min) ) * $w;
43 $barw = (($high-$low) / ($max-$min) ) * $w;
44 $svg .= '<rect x="'.$barx.'" y="0" width="'.$barw.'" height="'.$h.'" fill="url(#GrGRAY)" stroke="#888888" stroke-width="0.5px" />';
45 }
46
47 // OPTIMUM Marker (? AVERAGE)
48 if ($optimum) {
49 $barx = (($optimum-$min) / ($max-$min) ) * $w;
50 $barw = $h/2;
51 $barcol = '#888888';
52 $svg .= '<rect x="'.$barx.'" y="0" rx="'.($h*$border_radius).'px" ry="'.($h*$border_radius).'px" width="'.$barw.'" height="'.$h.'" fill="'.$barcol.'" stroke="none" />';
53 }
54
55 // VALUE Marker
56 if ($value) {
57 if ($min != $low && $value < $low) { $col = 'orange'; }
58 else if ($max != $high && $value > $high) { $col = 'orange'; }
59 else { $col = '#008800'; }
60 $cx = (($value-$min) / ($max-$min) ) * $w;
61 $cy = $h/2;
62 $rx = $h/3.5;
63 $ry = $h/2.2;
64 $svg .= '<ellipse fill="'.$col.'" stroke="#000000" stroke-width="0.5px" cx="'.$cx.'" cy="'.$cy.'" rx="'.$rx.'" ry="'.$ry.'"/>';
65 }
66
67 // BoRDER
68 $svg .= '<rect x="0" y="0" width="'.$w.'" height="'.$h.'" fill="none" stroke="#888888" stroke-width="0.5px" />';
69
70 $svg .= '</g></svg>';
71 }
72 else if ($type=='3') {
73 /////////////////////////////////////////////////////////////////////////////////////
74 ///////// CUSTOM <meter type="2">
75 /////////////////////////////////////////////////////////////////////////////////////
76 $h = 10;
77 $w = 100;
78 $border_radius = 0.143; // Factor of Height
79
80 $svg = '<?xml version="1.0" encoding="UTF-8"?>
81 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
82 <svg width="'.$w.'px" height="'.$h.'px" viewBox="0 0 '.$w.' '.$h.'" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" ><g>
83
84
85 <defs>
86 <linearGradient id="GrGRAY" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox">
87 <stop offset="0%" stop-color="rgb(222, 222, 222)" />
88 <stop offset="20%" stop-color="rgb(232, 232, 232)" />
89 <stop offset="25%" stop-color="rgb(232, 232, 232)" />
90 <stop offset="100%" stop-color="rgb(182, 182, 182)" />
91 </linearGradient>
92
93 </defs>
94 ';
95 $svg .= '<rect x="0" y="0" width="'.$w.'" height="'.$h.'" fill="#f4f4f4" stroke="none" />';
96
97 // LOW to HIGH region
98 if ($low && $high && ($low != $min || $high != $max)) {
99 //if ($low && $high) {
100 $barx = (($low-$min) / ($max-$min) ) * $w;
101 $barw = (($high-$low) / ($max-$min) ) * $w;
102 $svg .= '<rect x="'.$barx.'" y="0" width="'.$barw.'" height="'.$h.'" fill="url(#GrGRAY)" stroke="#888888" stroke-width="0.5px" />';
103 }
104
105 // OPTIMUM Marker (? AVERAGE)
106 if ($optimum) {
107 $barx = (($optimum-$min) / ($max-$min) ) * $w;
108 $barw = $h/2;
109 $barcol = '#888888';
110 $svg .= '<rect x="'.$barx.'" y="0" rx="'.($h*$border_radius).'px" ry="'.($h*$border_radius).'px" width="'.$barw.'" height="'.$h.'" fill="'.$barcol.'" stroke="none" />';
111 }
112
113 // VALUE Marker
114 if ($value) {
115 if ($min != $low && $value < $low) { $col = 'orange'; }
116 else if ($max != $high && $value > $high) { $col = 'orange'; }
117 else { $col = 'orange'; }
118 $cx = (($value-$min) / ($max-$min) ) * $w;
119 $cy = $h/2;
120 $rx = $h/2.2;
121 $ry = $h/2.2;
122 $svg .= '<ellipse fill="'.$col.'" stroke="#000000" stroke-width="0.5px" cx="'.$cx.'" cy="'.$cy.'" rx="'.$rx.'" ry="'.$ry.'"/>';
123 }
124
125 // BoRDER
126 $svg .= '<rect x="0" y="0" width="'.$w.'" height="'.$h.'" fill="none" stroke="#888888" stroke-width="0.5px" />';
127
128 $svg .= '</g></svg>';
129 }
130 else {
131 /////////////////////////////////////////////////////////////////////////////////////
132 ///////// DEFAULT <meter>
133 /////////////////////////////////////////////////////////////////////////////////////
134 $h = 10;
135 $w = 50;
136 $border_radius = 0.143; // Factor of Height
137
138 $svg = '<?xml version="1.0" encoding="UTF-8"?>
139 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
140 <svg width="'.$w.'px" height="'.$h.'px" viewBox="0 0 '.$w.' '.$h.'" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" ><g>
141
142 <defs>
143 <linearGradient id="GrGRAY" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox">
144 <stop offset="0%" stop-color="rgb(222, 222, 222)" />
145 <stop offset="20%" stop-color="rgb(232, 232, 232)" />
146 <stop offset="25%" stop-color="rgb(232, 232, 232)" />
147 <stop offset="100%" stop-color="rgb(182, 182, 182)" />
148 </linearGradient>
149
150 <linearGradient id="GrRED" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox">
151 <stop offset="0%" stop-color="rgb(255, 162, 162)" />
152 <stop offset="20%" stop-color="rgb(255, 218, 218)" />
153 <stop offset="25%" stop-color="rgb(255, 218, 218)" />
154 <stop offset="100%" stop-color="rgb(255, 0, 0)" />
155 </linearGradient>
156
157 <linearGradient id="GrGREEN" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox">
158 <stop offset="0%" stop-color="rgb(102, 230, 102)" />
159 <stop offset="20%" stop-color="rgb(218, 255, 218)" />
160 <stop offset="25%" stop-color="rgb(218, 255, 218)" />
161 <stop offset="100%" stop-color="rgb(0, 148, 0)" />
162 </linearGradient>
163
164 <linearGradient id="GrBLUE" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox">
165 <stop offset="0%" stop-color="rgb(102, 102, 230)" />
166 <stop offset="20%" stop-color="rgb(238, 238, 238)" />
167 <stop offset="25%" stop-color="rgb(238, 238, 238)" />
168 <stop offset="100%" stop-color="rgb(0, 0, 128)" />
169 </linearGradient>
170
171 <linearGradient id="GrORANGE" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox">
172 <stop offset="0%" stop-color="rgb(255, 186, 0)" />
173 <stop offset="20%" stop-color="rgb(255, 238, 168)" />
174 <stop offset="25%" stop-color="rgb(255, 238, 168)" />
175 <stop offset="100%" stop-color="rgb(255, 155, 0)" />
176 </linearGradient>
177 </defs>
178
179 <rect x="0" y="0" rx="'.($h*$border_radius).'px" ry="'.($h*$border_radius).'px" width="'.$w.'" height="'.$h.'" fill="url(#GrGRAY)" stroke="none" />
180 ';
181
182 if ($value) {
183 $barw = (($value-$min) / ($max-$min) ) * $w;
184 if ($optimum < $low) {
185 if ($value < $low) { $barcol = 'url(#GrGREEN)'; }
186 else if ($value > $high) { $barcol = 'url(#GrRED)'; }
187 else { $barcol = 'url(#GrORANGE)'; }
188 }
189 else if ($optimum > $high) {
190 if ($value < $low) { $barcol = 'url(#GrRED)'; }
191 else if ($value > $high) { $barcol = 'url(#GrGREEN)'; }
192 else { $barcol = 'url(#GrORANGE)'; }
193 }
194 else {
195 if ($value < $low) { $barcol = 'url(#GrORANGE)'; }
196 else if ($value > $high) { $barcol = 'url(#GrORANGE)'; }
197 else { $barcol = 'url(#GrGREEN)'; }
198 }
199 $svg .= '<rect x="0" y="0" rx="'.($h*$border_radius).'px" ry="'.($h*$border_radius).'px" width="'.$barw.'" height="'.$h.'" fill="'.$barcol.'" stroke="none" />';
200 }
201
202
203 // Borders
204 //$svg .= '<rect x="0" y="0" rx="'.($h*$border_radius).'px" ry="'.($h*$border_radius).'px" width="'.$w.'" height="'.$h.'" fill="none" stroke="#888888" stroke-width="0.5px" />';
205 if ($value) {
206 // $svg .= '<rect x="0" y="0" rx="'.($h*$border_radius).'px" ry="'.($h*$border_radius).'px" width="'.$barw.'" height="'.$h.'" fill="none" stroke="#888888" stroke-width="0.5px" />';
207 }
208
209
210 $svg .= '</g></svg>';
211 }
212 }
213 else { // $tag == 'progress'
214
215 if ($type=='2') {
216 /////////////////////////////////////////////////////////////////////////////////////
217 ///////// CUSTOM <progress type="2">
218 /////////////////////////////////////////////////////////////////////////////////////
219 }
220 else {
221 /////////////////////////////////////////////////////////////////////////////////////
222 ///////// DEFAULT <progress>
223 /////////////////////////////////////////////////////////////////////////////////////
224 $h = 10;
225 $w = 100;
226 $border_radius = 0.143; // Factor of Height
227
228 if ($value or $value==='0') {
229 $fill = 'url(#GrGRAY)';
230 }
231 else {
232 $fill = '#f8f8f8';
233 }
234
235 $svg = '<svg width="'.$w.'px" height="'.$h.'px" viewBox="0 0 '.$w.' '.$h.'"><g>
236
237 <defs>
238 <linearGradient id="GrGRAY" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox">
239 <stop offset="0%" stop-color="rgb(222, 222, 222)" />
240 <stop offset="20%" stop-color="rgb(232, 232, 232)" />
241 <stop offset="25%" stop-color="rgb(232, 232, 232)" />
242 <stop offset="100%" stop-color="rgb(182, 182, 182)" />
243 </linearGradient>
244
245 <linearGradient id="GrGREEN" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox">
246 <stop offset="0%" stop-color="rgb(102, 230, 102)" />
247 <stop offset="20%" stop-color="rgb(218, 255, 218)" />
248 <stop offset="25%" stop-color="rgb(218, 255, 218)" />
249 <stop offset="100%" stop-color="rgb(0, 148, 0)" />
250 </linearGradient>
251
252 </defs>
253
254 <rect x="0" y="0" rx="'.($h*$border_radius).'px" ry="'.($h*$border_radius).'px" width="'.$w.'" height="'.$h.'" fill="'.$fill.'" stroke="none" />
255 ';
256
257 if ($value) {
258 $barw = (($value-$min) / ($max-$min) ) * $w;
259 $barcol = 'url(#GrGREEN)';
260 $svg .= '<rect x="0" y="0" rx="'.($h*$border_radius).'px" ry="'.($h*$border_radius).'px" width="'.$barw.'" height="'.$h.'" fill="'.$barcol.'" stroke="none" />';
261 }
262
263
264 // Borders
265 $svg .= '<rect x="0" y="0" rx="'.($h*$border_radius).'px" ry="'.($h*$border_radius).'px" width="'.$w.'" height="'.$h.'" fill="none" stroke="#888888" stroke-width="0.5px" />';
266 if ($value) {
267 // $svg .= '<rect x="0" y="0" rx="'.($h*$border_radius).'px" ry="'.($h*$border_radius).'px" width="'.$barw.'" height="'.$h.'" fill="none" stroke="#888888" stroke-width="0.5px" />';
268 }
269
270
271 $svg .= '</g></svg>';
272
273 }
274 }
275
276 return $svg;
277 }
278
279
280 } // end of class
281
282 ?>