diff options
Diffstat (limited to 'inc/3rdparty/libraries/mpdf/classes/meter.php')
-rw-r--r-- | inc/3rdparty/libraries/mpdf/classes/meter.php | 224 |
1 files changed, 224 insertions, 0 deletions
diff --git a/inc/3rdparty/libraries/mpdf/classes/meter.php b/inc/3rdparty/libraries/mpdf/classes/meter.php new file mode 100644 index 00000000..46fa9d5a --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/classes/meter.php | |||
@@ -0,0 +1,224 @@ | |||
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 { | ||
73 | ///////////////////////////////////////////////////////////////////////////////////// | ||
74 | ///////// DEFAULT <meter> | ||
75 | ///////////////////////////////////////////////////////////////////////////////////// | ||
76 | $h = 10; | ||
77 | $w = 50; | ||
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 | <defs> | ||
85 | <linearGradient id="GrGRAY" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox"> | ||
86 | <stop offset="0%" stop-color="rgb(222, 222, 222)" /> | ||
87 | <stop offset="20%" stop-color="rgb(232, 232, 232)" /> | ||
88 | <stop offset="25%" stop-color="rgb(232, 232, 232)" /> | ||
89 | <stop offset="100%" stop-color="rgb(182, 182, 182)" /> | ||
90 | </linearGradient> | ||
91 | |||
92 | <linearGradient id="GrRED" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox"> | ||
93 | <stop offset="0%" stop-color="rgb(255, 162, 162)" /> | ||
94 | <stop offset="20%" stop-color="rgb(255, 218, 218)" /> | ||
95 | <stop offset="25%" stop-color="rgb(255, 218, 218)" /> | ||
96 | <stop offset="100%" stop-color="rgb(255, 0, 0)" /> | ||
97 | </linearGradient> | ||
98 | |||
99 | <linearGradient id="GrGREEN" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox"> | ||
100 | <stop offset="0%" stop-color="rgb(102, 230, 102)" /> | ||
101 | <stop offset="20%" stop-color="rgb(218, 255, 218)" /> | ||
102 | <stop offset="25%" stop-color="rgb(218, 255, 218)" /> | ||
103 | <stop offset="100%" stop-color="rgb(0, 148, 0)" /> | ||
104 | </linearGradient> | ||
105 | |||
106 | <linearGradient id="GrBLUE" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox"> | ||
107 | <stop offset="0%" stop-color="rgb(102, 102, 230)" /> | ||
108 | <stop offset="20%" stop-color="rgb(238, 238, 238)" /> | ||
109 | <stop offset="25%" stop-color="rgb(238, 238, 238)" /> | ||
110 | <stop offset="100%" stop-color="rgb(0, 0, 128)" /> | ||
111 | </linearGradient> | ||
112 | |||
113 | <linearGradient id="GrORANGE" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox"> | ||
114 | <stop offset="0%" stop-color="rgb(255, 186, 0)" /> | ||
115 | <stop offset="20%" stop-color="rgb(255, 238, 168)" /> | ||
116 | <stop offset="25%" stop-color="rgb(255, 238, 168)" /> | ||
117 | <stop offset="100%" stop-color="rgb(255, 155, 0)" /> | ||
118 | </linearGradient> | ||
119 | </defs> | ||
120 | |||
121 | <rect x="0" y="0" rx="'.($h*$border_radius).'px" ry="'.($h*$border_radius).'px" width="'.$w.'" height="'.$h.'" fill="url(#GrGRAY)" stroke="none" /> | ||
122 | '; | ||
123 | |||
124 | if ($value) { | ||
125 | $barw = (($value-$min) / ($max-$min) ) * $w; | ||
126 | if ($optimum < $low) { | ||
127 | if ($value < $low) { $barcol = 'url(#GrGREEN)'; } | ||
128 | else if ($value > $high) { $barcol = 'url(#GrRED)'; } | ||
129 | else { $barcol = 'url(#GrORANGE)'; } | ||
130 | } | ||
131 | else if ($optimum > $high) { | ||
132 | if ($value < $low) { $barcol = 'url(#GrRED)'; } | ||
133 | else if ($value > $high) { $barcol = 'url(#GrGREEN)'; } | ||
134 | else { $barcol = 'url(#GrORANGE)'; } | ||
135 | } | ||
136 | else { | ||
137 | if ($value < $low) { $barcol = 'url(#GrORANGE)'; } | ||
138 | else if ($value > $high) { $barcol = 'url(#GrORANGE)'; } | ||
139 | else { $barcol = 'url(#GrGREEN)'; } | ||
140 | } | ||
141 | $svg .= '<rect x="0" y="0" rx="'.($h*$border_radius).'px" ry="'.($h*$border_radius).'px" width="'.$barw.'" height="'.$h.'" fill="'.$barcol.'" stroke="none" />'; | ||
142 | } | ||
143 | |||
144 | |||
145 | // Borders | ||
146 | //$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" />'; | ||
147 | if ($value) { | ||
148 | // $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" />'; | ||
149 | } | ||
150 | |||
151 | |||
152 | $svg .= '</g></svg>'; | ||
153 | } | ||
154 | } | ||
155 | else { // $tag == 'progress' | ||
156 | |||
157 | if ($type=='2') { | ||
158 | ///////////////////////////////////////////////////////////////////////////////////// | ||
159 | ///////// CUSTOM <progress type="2"> | ||
160 | ///////////////////////////////////////////////////////////////////////////////////// | ||
161 | } | ||
162 | else { | ||
163 | ///////////////////////////////////////////////////////////////////////////////////// | ||
164 | ///////// DEFAULT <progress> | ||
165 | ///////////////////////////////////////////////////////////////////////////////////// | ||
166 | $h = 10; | ||
167 | $w = 100; | ||
168 | $border_radius = 0.143; // Factor of Height | ||
169 | |||
170 | if ($value or $value==='0') { | ||
171 | $fill = 'url(#GrGRAY)'; | ||
172 | } | ||
173 | else { | ||
174 | $fill = '#f8f8f8'; | ||
175 | } | ||
176 | |||
177 | $svg = '<svg width="'.$w.'px" height="'.$h.'px" viewBox="0 0 '.$w.' '.$h.'"><g> | ||
178 | |||
179 | <defs> | ||
180 | <linearGradient id="GrGRAY" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox"> | ||
181 | <stop offset="0%" stop-color="rgb(222, 222, 222)" /> | ||
182 | <stop offset="20%" stop-color="rgb(232, 232, 232)" /> | ||
183 | <stop offset="25%" stop-color="rgb(232, 232, 232)" /> | ||
184 | <stop offset="100%" stop-color="rgb(182, 182, 182)" /> | ||
185 | </linearGradient> | ||
186 | |||
187 | <linearGradient id="GrGREEN" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox"> | ||
188 | <stop offset="0%" stop-color="rgb(102, 230, 102)" /> | ||
189 | <stop offset="20%" stop-color="rgb(218, 255, 218)" /> | ||
190 | <stop offset="25%" stop-color="rgb(218, 255, 218)" /> | ||
191 | <stop offset="100%" stop-color="rgb(0, 148, 0)" /> | ||
192 | </linearGradient> | ||
193 | |||
194 | </defs> | ||
195 | |||
196 | <rect x="0" y="0" rx="'.($h*$border_radius).'px" ry="'.($h*$border_radius).'px" width="'.$w.'" height="'.$h.'" fill="'.$fill.'" stroke="none" /> | ||
197 | '; | ||
198 | |||
199 | if ($value) { | ||
200 | $barw = (($value-$min) / ($max-$min) ) * $w; | ||
201 | $barcol = 'url(#GrGREEN)'; | ||
202 | $svg .= '<rect x="0" y="0" rx="'.($h*$border_radius).'px" ry="'.($h*$border_radius).'px" width="'.$barw.'" height="'.$h.'" fill="'.$barcol.'" stroke="none" />'; | ||
203 | } | ||
204 | |||
205 | |||
206 | // Borders | ||
207 | $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" />'; | ||
208 | if ($value) { | ||
209 | // $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" />'; | ||
210 | } | ||
211 | |||
212 | |||
213 | $svg .= '</g></svg>'; | ||
214 | |||
215 | } | ||
216 | } | ||
217 | |||
218 | return $svg; | ||
219 | } | ||
220 | |||
221 | |||
222 | } // end of class | ||
223 | |||
224 | ?> \ No newline at end of file | ||