File indexing completed on 2024-04-21 03:58:30
0001 /* 0002 * SPDX-FileCopyrightText: 2009 Petri Damstén <damu@iki.fi> 0003 * SPDX-FileCopyrightText: 2014 John Layt <jlayt@kde.org> 0004 * 0005 * SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 #include "energy_p.h" 0009 #include "unit_p.h" 0010 0011 #include <KLocalizedString> 0012 0013 namespace KUnitConversion 0014 { 0015 class PhotoUnitPrivate : public UnitPrivate 0016 { 0017 public: 0018 PhotoUnitPrivate(CategoryId categoryId, 0019 UnitId id, 0020 qreal multiplier, 0021 const QString &symbol, 0022 const QString &description, 0023 const QString &matchString, 0024 const KLocalizedString &symbolString, 0025 const KLocalizedString &realString, 0026 const KLocalizedString &integerString) 0027 : UnitPrivate(categoryId, id, multiplier, symbol, description, matchString, symbolString, realString, integerString) 0028 { 0029 } 0030 0031 qreal toDefault(qreal value) const override 0032 { 0033 return (2.99792458e+08 * 6.62606896e-34) / (value * 1e-09); 0034 } 0035 0036 qreal fromDefault(qreal value) const override 0037 { 0038 return ((2.99792458e+08 * 6.62606896e-34) / value) / 1e-09; 0039 } 0040 }; 0041 0042 UnitCategory Energy::makeCategory() 0043 { 0044 auto c = UnitCategoryPrivate::makeCategory(EnergyCategory, i18n("Energy"), i18n("Energy")); 0045 auto d = UnitCategoryPrivate::get(c); 0046 KLocalizedString symbolString = ki18nc("%1 value, %2 unit symbol (energy)", "%1 %2"); 0047 0048 d->addUnit(UnitPrivate::makeUnit(EnergyCategory, 0049 Yottajoule, 0050 1e+24, 0051 i18nc("energy unit symbol", "YJ"), 0052 i18nc("unit description in lists", "yottajoules"), 0053 i18nc("unit synonyms for matching user input", "yottajoule;yottajoules;YJ"), 0054 symbolString, 0055 ki18nc("amount in units (real)", "%1 yottajoules"), 0056 ki18ncp("amount in units (integer)", "%1 yottajoule", "%1 yottajoules"))); 0057 0058 d->addUnit(UnitPrivate::makeUnit(EnergyCategory, 0059 Zettajoule, 0060 1e+21, 0061 i18nc("energy unit symbol", "ZJ"), 0062 i18nc("unit description in lists", "zettajoules"), 0063 i18nc("unit synonyms for matching user input", "zettajoule;zettajoules;ZJ"), 0064 symbolString, 0065 ki18nc("amount in units (real)", "%1 zettajoules"), 0066 ki18ncp("amount in units (integer)", "%1 zettajoule", "%1 zettajoules"))); 0067 0068 d->addUnit(UnitPrivate::makeUnit(EnergyCategory, 0069 Exajoule, 0070 1e+18, 0071 i18nc("energy unit symbol", "EJ"), 0072 i18nc("unit description in lists", "exajoules"), 0073 i18nc("unit synonyms for matching user input", "exajoule;exajoules;EJ"), 0074 symbolString, 0075 ki18nc("amount in units (real)", "%1 exajoules"), 0076 ki18ncp("amount in units (integer)", "%1 exajoule", "%1 exajoules"))); 0077 0078 d->addUnit(UnitPrivate::makeUnit(EnergyCategory, 0079 Petajoule, 0080 1e+15, 0081 i18nc("energy unit symbol", "PJ"), 0082 i18nc("unit description in lists", "petajoules"), 0083 i18nc("unit synonyms for matching user input", "petajoule;petajoules;PJ"), 0084 symbolString, 0085 ki18nc("amount in units (real)", "%1 petajoules"), 0086 ki18ncp("amount in units (integer)", "%1 petajoule", "%1 petajoules"))); 0087 0088 d->addUnit(UnitPrivate::makeUnit(EnergyCategory, 0089 Terajoule, 0090 1e+12, 0091 i18nc("energy unit symbol", "TJ"), 0092 i18nc("unit description in lists", "terajoules"), 0093 i18nc("unit synonyms for matching user input", "terajoule;terajoules;TJ"), 0094 symbolString, 0095 ki18nc("amount in units (real)", "%1 terajoules"), 0096 ki18ncp("amount in units (integer)", "%1 terajoule", "%1 terajoules"))); 0097 0098 d->addUnit(UnitPrivate::makeUnit(EnergyCategory, 0099 Gigajoule, 0100 1e+09, 0101 i18nc("energy unit symbol", "GJ"), 0102 i18nc("unit description in lists", "gigajoules"), 0103 i18nc("unit synonyms for matching user input", "gigajoule;gigajoules;GJ"), 0104 symbolString, 0105 ki18nc("amount in units (real)", "%1 gigajoules"), 0106 ki18ncp("amount in units (integer)", "%1 gigajoule", "%1 gigajoules"))); 0107 0108 d->addUnit(UnitPrivate::makeUnit(EnergyCategory, 0109 Megajoule, 0110 1e+06, 0111 i18nc("energy unit symbol", "MJ"), 0112 i18nc("unit description in lists", "megajoules"), 0113 i18nc("unit synonyms for matching user input", "megajoule;megajoules;MJ"), 0114 symbolString, 0115 ki18nc("amount in units (real)", "%1 megajoules"), 0116 ki18ncp("amount in units (integer)", "%1 megajoule", "%1 megajoules"))); 0117 0118 d->addCommonUnit(UnitPrivate::makeUnit(EnergyCategory, 0119 Kilojoule, 0120 1000, 0121 i18nc("energy unit symbol", "kJ"), 0122 i18nc("unit description in lists", "kilojoules"), 0123 i18nc("unit synonyms for matching user input", "kilojoule;kilojoules;kJ"), 0124 symbolString, 0125 ki18nc("amount in units (real)", "%1 kilojoules"), 0126 ki18ncp("amount in units (integer)", "%1 kilojoule", "%1 kilojoules"))); 0127 0128 d->addUnit(UnitPrivate::makeUnit(EnergyCategory, 0129 Hectojoule, 0130 100, 0131 i18nc("energy unit symbol", "hJ"), 0132 i18nc("unit description in lists", "hectojoules"), 0133 i18nc("unit synonyms for matching user input", "hectojoule;hectojoules;hJ"), 0134 symbolString, 0135 ki18nc("amount in units (real)", "%1 hectojoules"), 0136 ki18ncp("amount in units (integer)", "%1 hectojoule", "%1 hectojoules"))); 0137 0138 d->addUnit(UnitPrivate::makeUnit(EnergyCategory, 0139 Decajoule, 0140 10, 0141 i18nc("energy unit symbol", "daJ"), 0142 i18nc("unit description in lists", "decajoules"), 0143 i18nc("unit synonyms for matching user input", "decajoule;decajoules;daJ"), 0144 symbolString, 0145 ki18nc("amount in units (real)", "%1 decajoules"), 0146 ki18ncp("amount in units (integer)", "%1 decajoule", "%1 decajoules"))); 0147 0148 d->addDefaultUnit(UnitPrivate::makeUnit(EnergyCategory, 0149 Joule, 0150 1, 0151 i18nc("energy unit symbol", "J"), 0152 i18nc("unit description in lists", "joules"), 0153 i18nc("unit synonyms for matching user input", "joule;joules;J"), 0154 symbolString, 0155 ki18nc("amount in units (real)", "%1 joules"), 0156 ki18ncp("amount in units (integer)", "%1 joule", "%1 joules"))); 0157 0158 d->addUnit(UnitPrivate::makeUnit(EnergyCategory, 0159 Decijoule, 0160 0.1, 0161 i18nc("energy unit symbol", "dJ"), 0162 i18nc("unit description in lists", "decijoules"), 0163 i18nc("unit synonyms for matching user input", "decijoule;decijoules;dJ"), 0164 symbolString, 0165 ki18nc("amount in units (real)", "%1 decijoules"), 0166 ki18ncp("amount in units (integer)", "%1 decijoule", "%1 decijoules"))); 0167 0168 d->addUnit(UnitPrivate::makeUnit(EnergyCategory, 0169 Centijoule, 0170 0.01, 0171 i18nc("energy unit symbol", "cJ"), 0172 i18nc("unit description in lists", "centijoules"), 0173 i18nc("unit synonyms for matching user input", "centijoule;centijoules;cJ"), 0174 symbolString, 0175 ki18nc("amount in units (real)", "%1 centijoules"), 0176 ki18ncp("amount in units (integer)", "%1 centijoule", "%1 centijoules"))); 0177 0178 d->addUnit(UnitPrivate::makeUnit(EnergyCategory, 0179 Millijoule, 0180 0.001, 0181 i18nc("energy unit symbol", "mJ"), 0182 i18nc("unit description in lists", "millijoules"), 0183 i18nc("unit synonyms for matching user input", "millijoule;millijoules;mJ"), 0184 symbolString, 0185 ki18nc("amount in units (real)", "%1 millijoules"), 0186 ki18ncp("amount in units (integer)", "%1 millijoule", "%1 millijoules"))); 0187 0188 d->addUnit(UnitPrivate::makeUnit(EnergyCategory, 0189 Microjoule, 0190 1e-06, 0191 i18nc("energy unit symbol", "µJ"), 0192 i18nc("unit description in lists", "microjoules"), 0193 i18nc("unit synonyms for matching user input", "microjoule;microjoules;µJ;uJ"), 0194 symbolString, 0195 ki18nc("amount in units (real)", "%1 microjoules"), 0196 ki18ncp("amount in units (integer)", "%1 microjoule", "%1 microjoules"))); 0197 0198 d->addUnit(UnitPrivate::makeUnit(EnergyCategory, 0199 Nanojoule, 0200 1e-09, 0201 i18nc("energy unit symbol", "nJ"), 0202 i18nc("unit description in lists", "nanojoules"), 0203 i18nc("unit synonyms for matching user input", "nanojoule;nanojoules;nJ"), 0204 symbolString, 0205 ki18nc("amount in units (real)", "%1 nanojoules"), 0206 ki18ncp("amount in units (integer)", "%1 nanojoule", "%1 nanojoules"))); 0207 0208 d->addUnit(UnitPrivate::makeUnit(EnergyCategory, 0209 Picojoule, 0210 1e-12, 0211 i18nc("energy unit symbol", "pJ"), 0212 i18nc("unit description in lists", "picojoules"), 0213 i18nc("unit synonyms for matching user input", "picojoule;picojoules;pJ"), 0214 symbolString, 0215 ki18nc("amount in units (real)", "%1 picojoules"), 0216 ki18ncp("amount in units (integer)", "%1 picojoule", "%1 picojoules"))); 0217 0218 d->addUnit(UnitPrivate::makeUnit(EnergyCategory, 0219 Femtojoule, 0220 1e-15, 0221 i18nc("energy unit symbol", "fJ"), 0222 i18nc("unit description in lists", "femtojoules"), 0223 i18nc("unit synonyms for matching user input", "femtojoule;femtojoules;fJ"), 0224 symbolString, 0225 ki18nc("amount in units (real)", "%1 femtojoules"), 0226 ki18ncp("amount in units (integer)", "%1 femtojoule", "%1 femtojoules"))); 0227 0228 d->addUnit(UnitPrivate::makeUnit(EnergyCategory, 0229 Attojoule, 0230 1e-18, 0231 i18nc("energy unit symbol", "aJ"), 0232 i18nc("unit description in lists", "attojoules"), 0233 i18nc("unit synonyms for matching user input", "attojoule;attojoules;aJ"), 0234 symbolString, 0235 ki18nc("amount in units (real)", "%1 attojoules"), 0236 ki18ncp("amount in units (integer)", "%1 attojoule", "%1 attojoules"))); 0237 0238 d->addUnit(UnitPrivate::makeUnit(EnergyCategory, 0239 Zeptojoule, 0240 1e-21, 0241 i18nc("energy unit symbol", "zJ"), 0242 i18nc("unit description in lists", "zeptojoules"), 0243 i18nc("unit synonyms for matching user input", "zeptojoule;zeptojoules;zJ"), 0244 symbolString, 0245 ki18nc("amount in units (real)", "%1 zeptojoules"), 0246 ki18ncp("amount in units (integer)", "%1 zeptojoule", "%1 zeptojoules"))); 0247 0248 d->addUnit(UnitPrivate::makeUnit(EnergyCategory, 0249 Yoctojoule, 0250 1e-24, 0251 i18nc("energy unit symbol", "yJ"), 0252 i18nc("unit description in lists", "yoctojoules"), 0253 i18nc("unit synonyms for matching user input", "yoctojoule;yoctojoules;yJ"), 0254 symbolString, 0255 ki18nc("amount in units (real)", "%1 yoctojoules"), 0256 ki18ncp("amount in units (integer)", "%1 yoctojoule", "%1 yoctojoules"))); 0257 0258 d->addCommonUnit(UnitPrivate::makeUnit(EnergyCategory, 0259 GuidelineDailyAmount, 0260 8.3736e+06, 0261 i18nc("energy unit symbol", "GDA"), 0262 i18nc("unit description in lists", "guideline daily amount"), 0263 i18nc("unit synonyms for matching user input", "guideline daily amount;guideline daily amount;GDA"), 0264 symbolString, 0265 ki18nc("amount in units (real)", "%1 guideline daily amount"), 0266 ki18ncp("amount in units (integer)", "%1 guideline daily amount", "%1 guideline daily amount"))); 0267 0268 d->addUnit(UnitPrivate::makeUnit(EnergyCategory, 0269 Electronvolt, 0270 1.60218e-19, 0271 i18nc("energy unit symbol", "eV"), 0272 i18nc("unit description in lists", "electronvolts"), 0273 i18nc("unit synonyms for matching user input", "electronvolt;electronvolts;eV"), 0274 symbolString, 0275 ki18nc("amount in units (real)", "%1 electronvolts"), 0276 ki18ncp("amount in units (integer)", "%1 electronvolt", "%1 electronvolts"))); 0277 0278 d->addUnit(UnitPrivate::makeUnit(EnergyCategory, 0279 JoulePerMole, 0280 1.66054238581e-24, 0281 i18nc("energy unit symbol", "J/mol"), 0282 i18nc("unit description in lists", "joule per mole"), 0283 i18nc("unit synonyms for matching user input", "joule per mole;joulepermole;joulemol;jmol;j/mol"), 0284 symbolString, 0285 ki18nc("amount in units (real)", "%1 joules per mole"), 0286 ki18ncp("amount in units (integer)", "%1 joule per mole", "%1 joules per mole"))); 0287 0288 d->addUnit(UnitPrivate::makeUnit(EnergyCategory, 0289 KiloJoulePerMole, 0290 1.66054238581e-21, 0291 i18nc("energy unit symbol", "kJ/mol"), 0292 i18nc("unit description in lists", "kilojoule per mole"), 0293 i18nc("unit synonyms for matching user input", "kilojoule per mole;kilojoulepermole;kilojoule per mole;kilojoulemol;kjmol;kj/mol"), 0294 symbolString, 0295 ki18nc("amount in units (real)", "%1 kilojoules per mole"), 0296 ki18ncp("amount in units (integer)", "%1 kilojoule per mole", "%1 kilojoules per mole"))); 0297 0298 d->addUnit(UnitPrivate::makeUnit(EnergyCategory, 0299 Rydberg, 0300 2.17987e-18, 0301 i18nc("energy unit symbol", "Ry"), 0302 i18nc("unit description in lists", "rydbergs"), 0303 i18nc("unit synonyms for matching user input", "rydberg;rydbergs;Ry"), 0304 symbolString, 0305 ki18nc("amount in units (real)", "%1 rydbergs"), 0306 ki18ncp("amount in units (integer)", "%1 rydberg", "%1 rydbergs"))); 0307 0308 d->addCommonUnit(UnitPrivate::makeUnit(EnergyCategory, 0309 Kilocalorie, 0310 4186.8, 0311 i18nc("energy unit symbol", "kcal"), 0312 i18nc("unit description in lists", "kilocalories"), 0313 i18nc("unit synonyms for matching user input", "kilocalorie;kilocalories;kcal"), 0314 symbolString, 0315 ki18nc("amount in units (real)", "%1 kilocalories"), 0316 ki18ncp("amount in units (integer)", "%1 kilocalorie", "%1 kilocalories"))); 0317 0318 d->addCommonUnit(UnitPrivate::makeUnit(EnergyCategory, 0319 Btu, 0320 1055.05585, 0321 i18nc("energy unit symbol", "BTU"), 0322 i18nc("unit description in lists", "British Thermal Unit"), 0323 i18nc("unit synonyms for matching user input", "Btu;BTU;Btus;BTUs"), 0324 symbolString, 0325 ki18nc("amount in units (real)", "%1 BTU"), 0326 ki18ncp("amount in units (integer)", "%1 BTU", "%1 BTU"))); 0327 0328 d->addCommonUnit(UnitPrivate::makeUnit(EnergyCategory, 0329 Erg, 0330 1.0e-7, 0331 i18nc("energy unit symbol", "Erg"), 0332 i18nc("unit description in lists", "ergs"), 0333 i18nc("unit synonyms for matching user input", "Erg;erg;Ergs;ergs"), 0334 symbolString, 0335 ki18nc("amount in units (real)", "%1 ergs"), 0336 ki18ncp("amount in units (integer)", "%1 erg", "%1 erg"))); 0337 0338 d->addUnit(UnitPrivate::makeUnit(new PhotoUnitPrivate(EnergyCategory, 0339 PhotonWavelength, 0340 1.0, 0341 i18nc("energy unit symbol", "nm"), 0342 i18nc("unit description in lists", "photon wavelength in nanometers"), 0343 i18nc("unit synonyms for matching user input", "nm;photon wavelength"), 0344 symbolString, 0345 ki18nc("amount in units (real)", "%1 nanometers"), 0346 ki18ncp("amount in units (integer)", "%1 nanometer", "%1 nanometers")))); 0347 0348 return c; 0349 } 0350 0351 } // KUnitConversion namespace