1 // This file is part of the SpeedCrunch project
2 // Copyright (C) 2013, 2014 @heldercorreia
3 //
4 // This program is free software; you can redistribute it and/or
5 // modify it under the terms of the GNU General Public License
6 // as published by the Free Software Foundation; either version 2
7 // of the License, or (at your option) any later version.
8 //
9 // This program is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU General Public License for more details.
13 //
14 // You should have received a copy of the GNU General Public License
15 // along with this program; see the file COPYING. If not, write to
16 // the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 // Boston, MA 02110-1301, USA.
18
19 #include "core/book.h"
20
21 #define STYLE \
22 "<style>" \
23 "body {" \
24 "background-color: #ffffff;" \
25 "color: #000000;" \
26 "}" \
27 \
28 "h2 {" \
29 "font-family: \"Times New Roman\", Verdana, Arial, Helvetica, sans-serif;" \
30 "}" \
31 \
32 ".variable {" \
33 "font-weight: bold;" \
34 "font-size: 10pt;" \
35 "}" \
36 \
37 ".unit {" \
38 "font-size: 8pt;" \
39 "font-style: italic;" \
40 "}" \
41 \
42 ".caption {" \
43 "font-style: italic;" \
44 "font-size: 10pt;" \
45 \
46 "}" \
47 \
48 "a:link {" \
49 "text-decoration: none;" \
50 "}" \
51 \
52 ".page-link a:link {" \
53 "color: #555;" \
54 "font-family: Verdana, Arial, Helvetica, sans-serif;" \
55 "}" \
56 \
57 ".formula a:link {" \
58 "color: SteelBlue;" \
59 "font-size: 15pt;" \
60 "font-family: \"Times New Roman\", Verdana, Arial, Helvetica, sans-serif;" \
61 "}" \
62 "</style>"
63
64 #define BEGIN QString("<html><head>" STYLE "</head><body>")+
65 #define SECTION(s) "<h3>"+(s)+"</h3>"
66 #define BR "<br />"
67 #define INDEX_LINK "<span class=\"page-link\"><a href=\"index\">"+Book::tr("Index")+"</a></span>"
68 #define LINK(link,text) "<span class=\"page-link\"><a href=\""#link"\">"+text+"</a></span>"
69 #define TITLE(s) "<h1>"+(s)+"</h1><div>"
70 #define SUBTITLE(s) "<h2>"#s+"</h2><div>"
71 #define FORMULA(link,text) "<span class=\"formula\"><a href=\"formula:"#link"\">"#text"</a></span><br />"
72 #define FORMULA_UNIT(link,text,unit) "<span class=\"formula\"><a href=\"formula:"#link"\">"#text"</a></span> <span class=\"unit\">"#unit"</span><br />"
73 #define TABLE "<table><tr>"
74 #define ROW "</tr><tr>"
75 #define _TABLE "</div></tr></table>"
76 #define VARIABLE(s) "<td class=\"variable\">"#s"</td>"
77 #define CAPTION(s) "<td class=\"caption\">"+(s)+"</td>"
78 #define END "</body></html>"
79
makeIndexPage()80 static QString makeIndexPage()
81 {
82 return
83 BEGIN
84 TITLE(Book::tr("Index"))
85 SECTION(Book::tr("Algebra"))
86 LINK(algebra/quadratic-equation, Book::tr("Quadratic Equation")) BR
87 LINK(algebra/log-base-conversion, Book::tr("Logarithmic Base Conversion")) BR
88 SECTION(Book::tr("Geometry"))
89 LINK(geometry/circle, Book::tr("Circle")) BR
90 LINK(geometry/sector, Book::tr("Sector")) BR
91 LINK(geometry/sphere, Book::tr("Sphere")) BR
92 LINK(geometry/cube, Book::tr("Cube")) BR
93 LINK(geometry/cone, Book::tr("Cone")) BR
94 LINK(geometry/cylinder, Book::tr("Cylinder")) BR
95 SECTION(Book::tr("Unit Conversions"))
96 LINK(units/temperature, Book::tr("Temperature")) BR
97 SECTION(Book::tr("Electronics"))
98 LINK(electronics/ohmslaw, Book::tr("Ohm's Law")) BR
99 LINK(electronics/power, Book::tr("Power")) BR
100 LINK(electronics/reactance, Book::tr("Reactance")) BR
101 LINK(electronics/resonance, Book::tr("Resonance")) BR
102 SECTION(Book::tr("Radio Frequency"))
103 LINK(rf/antennas, Book::tr("Antennas")) BR
104 LINK(rf/impedance, Book::tr("Characteristic Impedance (coax)")) BR
105 LINK(rf/propagation, Book::tr("Velocity of Propagation (coax)")) BR
106 LINK(rf/swr, Book::tr("Standing Wave Ratio & Return Loss")) BR
107 LINK(rf/wavelength, Book::tr("Free Space Wavelength")) BR
108 END;
109 }
110
makeAlgebraQuadraticEquationPage()111 static QString makeAlgebraQuadraticEquationPage()
112 {
113 return
114 BEGIN
115 INDEX_LINK
116 TITLE(Book::tr("Quadratic Equation"))
117 SUBTITLE(a⋅x<sup>2</sup> + b⋅x + c = 0)
118 FORMULA(x1 = (-b + sqrt(b%5e2 - 4*a*c))/(2*a), x<sub>1</sub> = (-b + √(b<sup>2</sup> - 4⋅a⋅c)) / (2⋅a))
119 FORMULA(x2 = (-b - sqrt(b%5e2 - 4*a*c))/(2*a), x<sub>2</sub> = (-b - √(b<sup>2</sup> - 4⋅a⋅c)) / (2⋅a))
120 END;
121 }
122
makeAlgebraLogBaseConversionPage()123 static QString makeAlgebraLogBaseConversionPage() {
124 return
125 BEGIN
126 INDEX_LINK
127 TITLE(Book::tr("Logarithmic Base Conversion"))
128 FORMULA(y = log(x) / log(a), log<sub>a</sub>x = log(x) / log(a))
129 END;
130 }
131
makeElectronicsOhmsLawPage()132 static QString makeElectronicsOhmsLawPage()
133 {
134 return
135 BEGIN
136 INDEX_LINK
137 TITLE(Book::tr("Ohm's Law"))
138 FORMULA_UNIT(R = V / I, R = V / I, Ω)
139 FORMULA_UNIT(V = I * R, V = I⋅R, V)
140 FORMULA_UNIT(I = V / R, I = V / R, A)
141 TABLE
142 VARIABLE(R) CAPTION(Book::tr("resistance")) ROW
143 VARIABLE(V) CAPTION(Book::tr("voltage")) ROW
144 VARIABLE(I) CAPTION(Book::tr("current")) ROW
145 _TABLE
146 END;
147 }
148
makeElectronicsPowerPage()149 static QString makeElectronicsPowerPage()
150 {
151 return
152 BEGIN
153 INDEX_LINK
154 TITLE(Book::tr("Power"))
155 FORMULA_UNIT(P = I * V, P = I⋅V, W)
156 FORMULA_UNIT(P = I%5e2 * R, P = I<sup>2</sup>⋅R, W)
157 FORMULA_UNIT(P = V%5e2 / R, P = V<sup>2</sup> / R, W)
158 FORMULA_UNIT(I = P / V, I = P / V, A)
159 FORMULA_UNIT(I = sqrt(P / R), I = √(P / R), A)
160 FORMULA_UNIT(V = P / I, V = P / I, V)
161 FORMULA_UNIT(V = sqrt(P * R), V = √(P⋅R), V)
162 FORMULA_UNIT(R = V%5e2 / P, R = V<sup>2</sup> / P, Ω)
163 FORMULA_UNIT(R = P / I%5e2, R = P / I<sup>2</sup>, Ω)
164 TABLE
165 VARIABLE(P) CAPTION(Book::tr("power")) ROW
166 VARIABLE(I) CAPTION(Book::tr("current")) ROW
167 VARIABLE(V) CAPTION(Book::tr("voltage")) ROW
168 VARIABLE(R) CAPTION(Book::tr("resistance")) ROW
169 _TABLE
170 END;
171 }
172
makeElectronicsReactancePage()173 static QString makeElectronicsReactancePage()
174 {
175 return
176 BEGIN
177 INDEX_LINK
178 TITLE(Book::tr("Reactance"))
179 FORMULA_UNIT(Xl = 2 * pi * f * L, X<sub>L</sub> = 2⋅π⋅f⋅L, Ω)
180 FORMULA_UNIT(Xc = 1 / (2 * pi * f * C), X<sub>C</sub> = 1 / (2⋅π⋅f⋅C), Ω)
181 FORMULA_UNIT(L = Xl / (2 * pi * f), L = X<sub>L</sub> / (2⋅π⋅f), H)
182 FORMULA_UNIT(C = 1 / (2 * pi * f * Xc), C = 1 / (2⋅π⋅f⋅X<sub>C</sub>), F)
183 FORMULA_UNIT(f = Xl / (2 * pi * L), f = X<sub>L</sub> / (2⋅π⋅L), Hz)
184 FORMULA_UNIT(f = 1 / (Xc * 2 * pi * C), f = 1 / (X<sub>C</sub>⋅2⋅π⋅C), Hz)
185 TABLE
186 VARIABLE(X<sub>L</sub>) CAPTION(Book::tr("inductive reactance")) ROW
187 VARIABLE(X<sub>C</sub>) CAPTION(Book::tr("capacitive reactance")) ROW
188 VARIABLE(L) CAPTION(Book::tr("inductance")) ROW
189 VARIABLE(C) CAPTION(Book::tr("capacitance")) ROW
190 VARIABLE(f) CAPTION(Book::tr("frequency")) ROW
191 _TABLE
192 END;
193 }
194
makeElectronicsResonancePage()195 static QString makeElectronicsResonancePage()
196 {
197 return
198 BEGIN
199 INDEX_LINK
200 TITLE(Book::tr("Resonance"))
201 FORMULA_UNIT(f = 1 / (2 * pi * sqrt(L * C)), f = 1 / (2⋅π⋅√(L⋅C)), Hz)
202 FORMULA_UNIT(L = 1 / (4 * pi%5e2 * f%5e2 * C), L = 1 / (4⋅π<sup>2</sup>⋅f<sup>2</sup>⋅C), H)
203 FORMULA_UNIT(C = 1 / (4 * pi%5e2 * f%5e2 * L), C = 1 / (4⋅π<sup>2</sup>⋅f<sup>2</sup>⋅L), F)
204 TABLE
205 VARIABLE(f) CAPTION(Book::tr("resonance frequency")) ROW
206 VARIABLE(L) CAPTION(Book::tr("inductance")) ROW
207 VARIABLE(C) CAPTION(Book::tr("capacitance")) ROW
208 _TABLE
209 END;
210 }
211
makeGeometryCirclePage()212 static QString makeGeometryCirclePage()
213 {
214 return
215 BEGIN
216 INDEX_LINK
217 TITLE(Book::tr("Circle"))
218 FORMULA(A = pi * r^2, A = π⋅r<sup>2</sup>)
219 FORMULA(A = pi * (d/2)^2, A = π⋅(d/2)<sup>2</sup>)
220 FORMULA(P = 2 * pi * r, P = 2⋅π⋅r)
221 FORMULA(P = pi * d, P = π⋅d)
222 TABLE
223 VARIABLE(A) CAPTION(Book::tr("area")) ROW
224 VARIABLE(P) CAPTION(Book::tr("perimeter")) ROW
225 VARIABLE(d) CAPTION(Book::tr("diameter")) ROW
226 VARIABLE(r) CAPTION(Book::tr("radius"))
227 _TABLE
228 END;
229 }
230
makeGeometryConePage()231 static QString makeGeometryConePage()
232 {
233 return
234 BEGIN
235 INDEX_LINK
236 TITLE(Book::tr("Cone"))
237 FORMULA(V = 1/3 * pi * r%5e2 * h, V = (1/3)⋅pi⋅r<sup>2</sup>⋅h)
238 FORMULA(A = pi * r%5e2 + pi * r * s, A = π⋅r<sup>2</sup> + π⋅r⋅s)
239 FORMULA(A = pi * r%5e2 + pi * r * sqrt(r%5e2+h%5e2), A = π⋅r<sup>2</sup> + π⋅r⋅√(r<sup>2</sup>+h<sup>2</sup>))
240 TABLE
241 VARIABLE(V) CAPTION(Book::tr("volume")) ROW
242 VARIABLE(A) CAPTION(Book::tr("surface area")) ROW
243 VARIABLE(r) CAPTION(Book::tr("radius")) ROW
244 VARIABLE(h) CAPTION(Book::tr("height")) ROW
245 VARIABLE(s) CAPTION(Book::tr("slant height"))
246 _TABLE
247 END;
248 }
249
makeGeometryCubePage()250 static QString makeGeometryCubePage()
251 {
252 return
253 BEGIN
254 INDEX_LINK
255 TITLE(Book::tr("Cube"))
256 FORMULA(V = l%5e3, V = l<sup>3</sup>)
257 FORMULA(A = 6 * l%5e2, A = 6⋅l<sup>2</sup>)
258 FORMULA(Df = sqrt(2) * l, D<sub>f</sub> = √2⋅l)
259 FORMULA(Ds = sqrt(3) * l, D<sub>s</sub> = √3⋅l)
260 TABLE
261 VARIABLE(V) CAPTION(Book::tr("volume")) ROW
262 VARIABLE(A) CAPTION(Book::tr("surface area")) ROW
263 VARIABLE(D<sub>f</sub>) CAPTION(Book::tr("face diagonal")) ROW
264 VARIABLE(D<sub>s</sub>) CAPTION(Book::tr("space diagonal")) ROW
265 VARIABLE(l) CAPTION(Book::tr("edge length"))
266 _TABLE
267 END;
268 }
269
makeGeometryCylinderPage()270 static QString makeGeometryCylinderPage()
271 {
272 return
273 BEGIN
274 INDEX_LINK
275 TITLE(Book::tr("Cylinder"))
276 FORMULA(V = pi * r%5e2 * h, V = π⋅r<sup>2</sup>⋅h)
277 FORMULA(A = (2 * pi * r%5e2) + (2 * pi * r * h), A = 2⋅π⋅r<sup>2</sup> + 2⋅π⋅r⋅h)
278 TABLE
279 VARIABLE(V) CAPTION(Book::tr("volume")) ROW
280 VARIABLE(A) CAPTION(Book::tr("area")) ROW
281 VARIABLE(r) CAPTION(Book::tr("radius")) ROW
282 VARIABLE(h) CAPTION(Book::tr("height"))
283 _TABLE
284 END;
285 }
286
makeGeometrySectorPage()287 static QString makeGeometrySectorPage()
288 {
289 return
290 BEGIN
291 INDEX_LINK
292 TITLE(Book::tr("Sector"))
293 FORMULA(A = 1/2 * L * r, A = 1/2⋅L⋅r)
294 FORMULA(A = theta/360 * pi * r^2, A = θ/360⋅π⋅r<sup>2</sup>)
295 FORMULA(L = theta/180 * pi * r, L = θ/180⋅π⋅r)
296 TABLE
297 VARIABLE(A) CAPTION(Book::tr("area")) ROW
298 VARIABLE(L) CAPTION(Book::tr("arc length")) ROW
299 VARIABLE(r) CAPTION(Book::tr("radius")) ROW
300 VARIABLE(θ) CAPTION(Book::tr("central angle (degrees)"))
301 _TABLE
302 END;
303 }
304
makeGeometrySpherePage()305 static QString makeGeometrySpherePage()
306 {
307 return
308 BEGIN
309 INDEX_LINK
310 TITLE(Book::tr("Sphere"))
311 FORMULA(A = 4 * pi * r^2, A = 4⋅π⋅r<sup>2</sup>)
312 FORMULA(A = pi *d^2, A = π⋅d<sup>2</sup>)
313 FORMULA(V = 4/3 * pi * r^3, V = 4/3⋅π⋅r<sup>3</sup>)
314 FORMULA(V = 1/6 * pi * d^3, V = 1/6⋅π⋅d<sup>3</sup>)
315 TABLE
316 VARIABLE(A) CAPTION(Book::tr("area")) ROW
317 VARIABLE(V) CAPTION(Book::tr("volume")) ROW
318 VARIABLE(r) CAPTION(Book::tr("radius")) ROW
319 VARIABLE(d) CAPTION(Book::tr("diameter"))
320 _TABLE
321 END;
322 }
323
makeRFAntennasPage()324 static QString makeRFAntennasPage()
325 {
326 return
327 BEGIN
328 INDEX_LINK
329 TITLE(Book::tr("Radio Frequency"))
330 FORMULA_UNIT(Pd = Pin / (4 * pi * r%5e2), Pd = P<sub>in</sub> / (4⋅π⋅r<sup>2</sup>), W⋅m<sup>-2</sup>)
331 FORMULA_UNIT(E = sqrt(Pd * 120 * pi), E = √(P<sub>d</sub>⋅120⋅π), V⋅m<sup>-1</sup>)
332 FORMULA_UNIT(E = sqrt((Pin * 120 * pi) / (4 * pi * r%5e2)), E = √[(P<sub>in</sub>⋅120⋅π) / (4⋅π⋅r<sup>2</sup>)], V⋅m<sup>-1</sup>)
333 FORMULA_UNIT(E = sqrt(30 * Pin) / r, E = √(30⋅P<sub>in</sub>) / r, V⋅m<sup>-1</sup>)
334 FORMULA_UNIT(Ed = E * sqrt(D), Ed = E⋅√D, V⋅m<sup>-1</sup>)
335 FORMULA_UNIT(Edp = E * sqrt(1.64), Edp = E⋅√1.64, V⋅m<sup>-1</sup>)
336 END;
337 }
338
makeRFImpedancePage()339 static QString makeRFImpedancePage()
340 {
341 return
342 BEGIN
343 INDEX_LINK
344 TITLE(Book::tr("Characteristic Impedance (coax)"))
345 FORMULA_UNIT(Zo = 59.959 / sqrt(er) * ln(d1/d2), Z<sub>0</sub> = 59.959 / √e<sub>r</sub> ⋅ ln(d<sub>1</sub>/d<sub>2</sub>), Ω)
346 TABLE
347 VARIABLE(e<sub>r) CAPTION(Book::tr("dielectric constant")) ROW
348 VARIABLE(d<sub>1) CAPTION(Book::tr("outer conductor's inner diameter")) ROW
349 VARIABLE(d<sub>2</sub>) CAPTION(Book::tr("inner conductor's outer diameter"))
350 _TABLE
351 END;
352 }
353
makeRFPropagationPage()354 static QString makeRFPropagationPage()
355 {
356 return
357 BEGIN
358 INDEX_LINK
359 TITLE(Book::tr("Velocity of Propagation (coax)"))
360 SUBTITLE(V<sub>p</sub> = c / √e<sub>r</sub>)
361 FORMULA_UNIT(Vp = 3e8 / sqrt(er), V<sub>p</sub> = 3e8 / √e<sub>r</sub>, m⋅s<sup>-1</sup>)
362 FORMULA_UNIT(Vp = 299792458 / sqrt(er), V<sub>p</sub> = 299792458 / √e<sub>r</sub>, m⋅s<sup>-1</sup>)
363 FORMULA_UNIT(Vp = 983571056.43045 / sqrt(er), V<sub>p</sub> = 983571056.43045 / √e<sub>r</sub>, ft⋅s<sup>-1</sup>)
364 TABLE
365 VARIABLE(c) CAPTION(Book::tr("speed of light")) ROW
366 VARIABLE(e) CAPTION(Book::tr("dielectric constant")) ROW
367 _TABLE
368 END;
369 }
370
makeRFSWRPage()371 static QString makeRFSWRPage()
372 {
373 return
374 BEGIN
375 INDEX_LINK
376 TITLE(Book::tr("Standing Wave Ratio & Return Loss"))
377 FORMULA(SWR = (1+r) / (1-r), SWR = (1 + ρ) / (1 - ρ))
378 FORMULA(r = (SWR-1) / (SWR+1), ρ = (SWR - 1) / (SWR + 1))
379 FORMULA(r = (Z-1) / (Z+1), ρ = (Z - 1) / (Z + 1))
380 FORMULA_UNIT(Z = (1+r) / (1-r), Z = (1 + ρ) / (1 - ρ), Ω)
381 FORMULA_UNIT(RL = -20 * log(r), R<sub>L</sub> = -20⋅log(ρ), dB)
382 FORMULA_UNIT(RL = -20 * log((SWR-1)/(SWR+1)), R<sub>L</sub> = -20⋅log[(SWR - 1) / (SWR + 1)], dB)
383 FORMULA_UNIT(Pr = Pin * r%5e2, P<sub>r</sub> = P<sub>in</sub>⋅ρ<sup>2</sup>, W)
384 FORMULA_UNIT(Pt = Pin * (1-r%5e2), P<sub>t</sub> = P<sub>in</sub>⋅(1-ρ<sup>2</sup>), W)
385 TABLE
386 VARIABLE(P<sub>in</sub>) CAPTION(Book::tr("input power") + " (W)") ROW
387 VARIABLE(P<sub>r</sub>) CAPTION(Book::tr("reflected power") + " (W)") ROW
388 VARIABLE(P<sub>t</sub>) CAPTION(Book::tr("transmitted power") + " (W)") ROW
389 VARIABLE(R<sub>L</sub>) CAPTION(Book::tr("return loss") + " (dB)") ROW
390 VARIABLE(ρ) CAPTION(Book::tr("reflection coefficient")) ROW
391 VARIABLE(SWR) CAPTION(Book::tr("standing wave ratio")) ROW
392 VARIABLE(Z) CAPTION(Book::tr("normalized impedance")) ROW
393 _TABLE
394 END;
395 }
396
makeRFWavelengthPage()397 static QString makeRFWavelengthPage()
398 {
399 return
400 BEGIN
401 INDEX_LINK
402 TITLE(Book::tr("Free Space Wavelength"))
403 SUBTITLE(λ<sub>0</sub> = c / f)
404 FORMULA_UNIT(L = 3e8 / f, L = 3×10<sup>8</sup> / f, m)
405 FORMULA_UNIT(L = 299792458 / f, L = 299792458 / f, m)
406 FORMULA_UNIT(L = 983571056.43045 / f, L = 983571056.43045 / f, ft)
407 TABLE
408 VARIABLE(f) CAPTION(Book::tr("frequency (Hz)")) ROW
409 _TABLE
410 END;
411 }
412
makeUnitsTemperaturePage()413 static QString makeUnitsTemperaturePage()
414 {
415 return
416 BEGIN
417 INDEX_LINK
418 TITLE(Book::tr("Temperature"))
419 FORMULA(Tf = 1.8 * Tc + 32, T<sub>f</sub> = 1.8 * T<sub>c</sub> + 32)
420 FORMULA(Tk = Tc + 273.15, T<sub>k</sub> = T<sub>c</sub> + 273.15)
421 FORMULA(Tc = (Tf - 32) / 1.8, T<sub>c</sub> = (T<sub>f</sub> - 32) / 1.8)
422 FORMULA(Tc = Tk - 273.15, T<sub>c</sub> = T<sub>k</sub> - 273.15)
423 TABLE
424 VARIABLE(T<sub>c</sub>) CAPTION(Book::tr("temperature") + QString::fromUtf8(" (°C)")) ROW
425 VARIABLE(T<sub>f</sub>) CAPTION(Book::tr("temperature") + QString::fromUtf8(" (°F)")) ROW
426 VARIABLE(T<sub>k</sub>) CAPTION(Book::tr("temperature") + " (K)")
427 _TABLE
428 END;
429 }
430
createPages()431 void Book::createPages()
432 {
433 addPage("index", &makeIndexPage);
434 addPage("algebra/quadratic-equation", &makeAlgebraQuadraticEquationPage);
435 addPage("algebra/log-base-conversion", &makeAlgebraLogBaseConversionPage);
436 addPage("electronics/ohmslaw", &makeElectronicsOhmsLawPage);
437 addPage("electronics/power", &makeElectronicsPowerPage);
438 addPage("electronics/reactance", &makeElectronicsReactancePage);
439 addPage("electronics/resonance", &makeElectronicsResonancePage);
440 addPage("geometry/circle", &makeGeometryCirclePage);
441 addPage("geometry/cone", &makeGeometryConePage);
442 addPage("geometry/cube", &makeGeometryCubePage);
443 addPage("geometry/cylinder", &makeGeometryCylinderPage);
444 addPage("geometry/sector", &makeGeometrySectorPage);
445 addPage("geometry/sphere", &makeGeometrySpherePage);
446 addPage("rf/antennas", &makeRFAntennasPage);
447 addPage("rf/impedance", &makeRFImpedancePage);
448 addPage("rf/propagation", &makeRFPropagationPage);
449 addPage("rf/swr", &makeRFSWRPage);
450 addPage("rf/wavelength", &makeRFWavelengthPage);
451 addPage("units/temperature", &makeUnitsTemperaturePage);
452 }
453