Changeset View
Changeset View
Standalone View
Standalone View
src/binary_data.cpp
- This file was added.
1 | /* | ||||
---|---|---|---|---|---|
2 | * Copyright (C) 2019 Jonathan Rubenstein <jrubcop@gmail.com> | ||||
3 | * | ||||
4 | * This program is free software; you can redistribute it and/or modify | ||||
5 | * it under the terms of the GNU Library General Public License as | ||||
6 | * published by the Free Software Foundation; either version 2, or | ||||
7 | * (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 Library General Public | ||||
15 | * License along with this program; if not, write to the | ||||
16 | * Free Software Foundation, Inc., | ||||
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | ||||
18 | */ | ||||
19 | | ||||
20 | | ||||
21 | #include "binary_data_p.h" | ||||
22 | #include "unit_p.h" | ||||
23 | | ||||
24 | #include <KI18n/klocalizedstring.h> | ||||
25 | | ||||
26 | #include <math.h> | ||||
27 | | ||||
28 | namespace KUnitConversion | ||||
29 | { | ||||
30 | | ||||
31 | class BinaryPowerOfTwoUnitPrivate : public UnitPrivate | ||||
32 | { | ||||
33 | public: | ||||
34 | BinaryPowerOfTwoUnitPrivate(CategoryId categoryId, UnitId id, qreal multiplier, | ||||
35 | const QString &symbol, const QString &description, | ||||
36 | const QString &matchString, const KLocalizedString &symbolString, | ||||
37 | const KLocalizedString &realString, const KLocalizedString &integerString) | ||||
38 | : UnitPrivate(categoryId, id, multiplier, | ||||
39 | symbol, description, | ||||
40 | matchString, symbolString, | ||||
41 | realString, integerString) | ||||
42 | {} | ||||
43 | | ||||
44 | qreal toDefault(qreal value) const override | ||||
45 | { | ||||
46 | return value * pow(2.0, m_multiplier); | ||||
47 | } | ||||
48 | qreal fromDefault(qreal value) const override | ||||
49 | { | ||||
50 | return value / pow(2.0, m_multiplier); | ||||
51 | } | ||||
52 | }; | ||||
53 | | ||||
54 | BinaryData::BinaryData() : CustomCategory(BinaryDataCategory, i18n("Binary Data"), i18n("Binary Data Size")) | ||||
55 | { | ||||
56 | KLocalizedString symbolString = ki18nc("%1 value, %2 unit symbol (binary data)", "%1 %2"); | ||||
57 | | ||||
58 | addUnit(CustomUnit(new BinaryPowerOfTwoUnitPrivate(BinaryDataCategory, Yobibyte, 83, | ||||
59 | i18nc("binary data unit symbol", "YiB"), | ||||
60 | i18nc("unit description in lists", "yobibytes"), | ||||
61 | i18nc("unit synonyms for matching user input", | ||||
62 | "YiB;yobibyte;yobibytes"), | ||||
63 | symbolString, | ||||
64 | ki18nc("amount in units (real)", "%1 yobibytes"), | ||||
65 | ki18ncp("amount in units (integer)", "%1 yobibyte", "%1 yobibytes")))); | ||||
66 | | ||||
67 | addUnit(CustomUnit(new BinaryPowerOfTwoUnitPrivate(BinaryDataCategory, Yobibit, 80, | ||||
68 | i18nc("binary data unit symbol", "Yib"), | ||||
69 | i18nc("unit description in lists", "yobibits"), | ||||
70 | i18nc("unit synonyms for matching user input", | ||||
71 | "Yib;yobibit;yobibits"), | ||||
72 | symbolString, | ||||
73 | ki18nc("amount in units (real)", "%1 yobibits"), | ||||
74 | ki18ncp("amount in units (integer)", "%1 yobibit", "%1 yobibits")))); | ||||
75 | | ||||
76 | addUnit(CustomUnit(BinaryDataCategory, Yottabyte, 8e+24, | ||||
77 | i18nc("binary data unit symbol", "YB"), | ||||
78 | i18nc("unit description in lists", "yottabytes"), | ||||
79 | i18nc("unit synonyms for matching user input", | ||||
80 | "YB;yottabyte;yottabytes"), | ||||
81 | symbolString, | ||||
82 | ki18nc("amount in units (real)", "%1 yottabytes"), | ||||
83 | ki18ncp("amount in units (integer)", "%1 yottabyte", "%1 yottabytes"))); | ||||
84 | | ||||
85 | addUnit(CustomUnit(BinaryDataCategory, Yottabit, 1e+24, | ||||
86 | i18nc("binary data unit symbol", "Yb"), | ||||
87 | i18nc("unit description in lists", "yottabits"), | ||||
88 | i18nc("unit synonyms for matching user input", | ||||
89 | "Yb;yottabit;yottabits"), | ||||
90 | symbolString, | ||||
91 | ki18nc("amount in units (real)", "%1 yottabits"), | ||||
92 | ki18ncp("amount in units (integer)", "%1 yottabit", "%1 yottabits"))); | ||||
93 | | ||||
94 | addUnit(CustomUnit(new BinaryPowerOfTwoUnitPrivate(BinaryDataCategory, Zebibyte, 73, | ||||
95 | i18nc("binary data unit symbol", "ZiB"), | ||||
96 | i18nc("unit description in lists", "zebibytes"), | ||||
97 | i18nc("unit synonyms for matching user input", | ||||
98 | "ZiB;zebibyte;zebibytes"), | ||||
99 | symbolString, | ||||
100 | ki18nc("amount in units (real)", "%1 zebibytes"), | ||||
101 | ki18ncp("amount in units (integer)", "%1 zebibyte", "%1 zebibytes")))); | ||||
102 | | ||||
103 | addUnit(CustomUnit(new BinaryPowerOfTwoUnitPrivate(BinaryDataCategory, Zebibit, 70, | ||||
104 | i18nc("binary data unit symbol", "Zib"), | ||||
105 | i18nc("unit description in lists", "zebibits"), | ||||
106 | i18nc("unit synonyms for matching user input", | ||||
107 | "Zib;zebibit;zebibits"), | ||||
108 | symbolString, | ||||
109 | ki18nc("amount in units (real)", "%1 zebibits"), | ||||
110 | ki18ncp("amount in units (integer)", "%1 zebibit", "%1 zebibits")))); | ||||
111 | | ||||
112 | addUnit(CustomUnit(BinaryDataCategory, Zettabyte, 8e+21, | ||||
113 | i18nc("binary data unit symbol", "ZB"), | ||||
114 | i18nc("unit description in lists", "zettabytes"), | ||||
115 | i18nc("unit synonyms for matching user input", | ||||
116 | "ZB;zettabyte;zettabytes"), | ||||
117 | symbolString, | ||||
118 | ki18nc("amount in units (real)", "%1 zettabytes"), | ||||
119 | ki18ncp("amount in units (integer)", "%1 zettabyte", "%1 zettabytes"))); | ||||
120 | | ||||
121 | addUnit(CustomUnit(BinaryDataCategory, Zettabit, 1e+21, | ||||
122 | i18nc("binary data unit symbol", "Zb"), | ||||
123 | i18nc("unit description in lists", "zettabits"), | ||||
124 | i18nc("unit synonyms for matching user input", | ||||
125 | "Zb;zettabit;zettabits"), | ||||
126 | symbolString, | ||||
127 | ki18nc("amount in units (real)", "%1 zettabits"), | ||||
128 | ki18ncp("amount in units (integer)", "%1 zettabit", "%1 zettabits"))); | ||||
129 | | ||||
130 | addUnit(CustomUnit(new BinaryPowerOfTwoUnitPrivate(BinaryDataCategory, Exbibyte, 63, | ||||
131 | i18nc("binary data unit symbol", "EiB"), | ||||
132 | i18nc("unit description in lists", "exbibytes"), | ||||
133 | i18nc("unit synonyms for matching user input", | ||||
134 | "EiB;exbibyte;exbibytes"), | ||||
135 | symbolString, | ||||
136 | ki18nc("amount in units (real)", "%1 exbibytes"), | ||||
137 | ki18ncp("amount in units (integer)", "%1 exbibyte", "%1 exbibytes")))); | ||||
138 | | ||||
139 | addUnit(CustomUnit(new BinaryPowerOfTwoUnitPrivate(BinaryDataCategory, Exbibit, 60, | ||||
140 | i18nc("binary data unit symbol", "Eib"), | ||||
141 | i18nc("unit description in lists", "exbibits"), | ||||
142 | i18nc("unit synonyms for matching user input", | ||||
143 | "Eib;exbibit;exbibits"), | ||||
144 | symbolString, | ||||
145 | ki18nc("amount in units (real)", "%1 exbibits"), | ||||
146 | ki18ncp("amount in units (integer)", "%1 exbibit", "%1 exbibits")))); | ||||
147 | | ||||
148 | addUnit(CustomUnit(BinaryDataCategory, Exabyte, 8e+18, | ||||
149 | i18nc("binary data unit symbol", "EB"), | ||||
150 | i18nc("unit description in lists", "exabytes"), | ||||
151 | i18nc("unit synonyms for matching user input", | ||||
152 | "EB;exabyte;exabytes"), | ||||
153 | symbolString, | ||||
154 | ki18nc("amount in units (real)", "%1 exabytes"), | ||||
155 | ki18ncp("amount in units (integer)", "%1 exabyte", "%1 exabytes"))); | ||||
156 | | ||||
157 | addUnit(CustomUnit(BinaryDataCategory, Exabit, 1e+18, | ||||
158 | i18nc("binary data unit symbol", "Eb"), | ||||
159 | i18nc("unit description in lists", "exabits"), | ||||
160 | i18nc("unit synonyms for matching user input", | ||||
161 | "Eb;exabit;exabits"), | ||||
162 | symbolString, | ||||
163 | ki18nc("amount in units (real)", "%1 exabits"), | ||||
164 | ki18ncp("amount in units (integer)", "%1 exabit", "%1 exabits"))); | ||||
165 | | ||||
166 | addUnit(CustomUnit(new BinaryPowerOfTwoUnitPrivate(BinaryDataCategory, Pebibyte, 53, | ||||
167 | i18nc("binary data unit symbol", "PiB"), | ||||
168 | i18nc("unit description in lists", "pebibytes"), | ||||
169 | i18nc("unit synonyms for matching user input", | ||||
170 | "PiB;pebibyte;pebibytes"), | ||||
171 | symbolString, | ||||
172 | ki18nc("amount in units (real)", "%1 pebibytes"), | ||||
173 | ki18ncp("amount in units (integer)", "%1 pebibyte", "%1 pebibytes")))); | ||||
174 | | ||||
175 | addUnit(CustomUnit(new BinaryPowerOfTwoUnitPrivate(BinaryDataCategory, Pebibit, 50, | ||||
176 | i18nc("binary data unit symbol", "Pib"), | ||||
177 | i18nc("unit description in lists", "pebibits"), | ||||
178 | i18nc("unit synonyms for matching user input", | ||||
179 | "Pib;pebibit;pebibits"), | ||||
180 | symbolString, | ||||
181 | ki18nc("amount in units (real)", "%1 pebibits"), | ||||
182 | ki18ncp("amount in units (integer)", "%1 pebibit", "%1 pebibits")))); | ||||
183 | | ||||
184 | addUnit(CustomUnit(BinaryDataCategory, Petabyte, 8e+15, | ||||
185 | i18nc("binary data unit symbol", "PB"), | ||||
186 | i18nc("unit description in lists", "petabytes"), | ||||
187 | i18nc("unit synonyms for matching user input", | ||||
188 | "PB;petabyte;petabytes"), | ||||
189 | symbolString, | ||||
190 | ki18nc("amount in units (real)", "%1 petabytes"), | ||||
191 | ki18ncp("amount in units (integer)", "%1 petabyte", "%1 petabytes"))); | ||||
192 | | ||||
193 | addUnit(CustomUnit(BinaryDataCategory, Petabit, 1e+15, | ||||
194 | i18nc("binary data unit symbol", "Tb"), | ||||
195 | i18nc("unit description in lists", "petabits"), | ||||
196 | i18nc("unit synonyms for matching user input", | ||||
197 | "Tb;petabit;petabits"), | ||||
198 | symbolString, | ||||
199 | ki18nc("amount in units (real)", "%1 petabits"), | ||||
200 | ki18ncp("amount in units (integer)", "%1 petabit", "%1 petabits"))); | ||||
201 | | ||||
202 | addCommonUnit(CustomUnit(new BinaryPowerOfTwoUnitPrivate(BinaryDataCategory, Tebibyte, 43, | ||||
203 | i18nc("binary data unit symbol", "TiB"), | ||||
204 | i18nc("unit description in lists", "tebibytes"), | ||||
205 | i18nc("unit synonyms for matching user input", | ||||
206 | "TiB;tebibyte;tebibytes"), | ||||
207 | symbolString, | ||||
208 | ki18nc("amount in units (real)", "%1 tebibytes"), | ||||
209 | ki18ncp("amount in units (integer)", "%1 tebibyte", "%1 tebibytes")))); | ||||
210 | | ||||
211 | addUnit(CustomUnit(new BinaryPowerOfTwoUnitPrivate(BinaryDataCategory, Tebibit, 40, | ||||
212 | i18nc("binary data unit symbol", "Tib"), | ||||
213 | i18nc("unit description in lists", "tebibits"), | ||||
214 | i18nc("unit synonyms for matching user input", | ||||
215 | "Tib;tebibit;tebibits"), | ||||
216 | symbolString, | ||||
217 | ki18nc("amount in units (real)", "%1 tebibits"), | ||||
218 | ki18ncp("amount in units (integer)", "%1 tebibit", "%1 tebibits")))); | ||||
219 | | ||||
220 | addCommonUnit(CustomUnit(BinaryDataCategory, Terabyte, 8e+12, | ||||
221 | i18nc("binary data unit symbol", "TB"), | ||||
222 | i18nc("unit description in lists", "terabytes"), | ||||
223 | i18nc("unit synonyms for matching user input", | ||||
224 | "TB;terabyte;terabytes"), | ||||
225 | symbolString, | ||||
226 | ki18nc("amount in units (real)", "%1 terabytes"), | ||||
227 | ki18ncp("amount in units (integer)", "%1 terabyte", "%1 terabytes"))); | ||||
228 | | ||||
229 | addCommonUnit(CustomUnit(BinaryDataCategory, Terabit, 1e+12, | ||||
230 | i18nc("binary data unit symbol", "Tb"), | ||||
231 | i18nc("unit description in lists", "terabits"), | ||||
232 | i18nc("unit synonyms for matching user input", | ||||
233 | "Tb;terabit;terabits"), | ||||
234 | symbolString, | ||||
235 | ki18nc("amount in units (real)", "%1 terabits"), | ||||
236 | ki18ncp("amount in units (integer)", "%1 terabit", "%1 terabits"))); | ||||
237 | | ||||
238 | addCommonUnit(CustomUnit(new BinaryPowerOfTwoUnitPrivate(BinaryDataCategory, Gibibyte, 33, | ||||
239 | i18nc("binary data unit symbol", "GiB"), | ||||
240 | i18nc("unit description in lists", "gibibytes"), | ||||
241 | i18nc("unit synonyms for matching user input", | ||||
242 | "GiB;gibibyte;gibibytes"), | ||||
243 | symbolString, | ||||
244 | ki18nc("amount in units (real)", "%1 gibibytes"), | ||||
245 | ki18ncp("amount in units (integer)", "%1 gibibyte", "%1 gibibytes")))); | ||||
246 | | ||||
247 | addUnit(CustomUnit(new BinaryPowerOfTwoUnitPrivate(BinaryDataCategory, Gibibit, 30, | ||||
248 | i18nc("binary data unit symbol", "Gib"), | ||||
249 | i18nc("unit description in lists", "gibibits"), | ||||
250 | i18nc("unit synonyms for matching user input", | ||||
251 | "Gib;gibibit;gibibits"), | ||||
252 | symbolString, | ||||
253 | ki18nc("amount in units (real)", "%1 gibibits"), | ||||
254 | ki18ncp("amount in units (integer)", "%1 gibibit", "%1 gibibits")))); | ||||
255 | | ||||
256 | addCommonUnit(CustomUnit(BinaryDataCategory, Gigabyte, 8e+09, | ||||
257 | i18nc("binary data unit symbol", "GB"), | ||||
258 | i18nc("unit description in lists", "gigabytes"), | ||||
259 | i18nc("unit synonyms for matching user input", | ||||
260 | "GB;gigabyte;gigabytes"), | ||||
261 | symbolString, | ||||
262 | ki18nc("amount in units (real)", "%1 gigabytes"), | ||||
263 | ki18ncp("amount in units (integer)", "%1 gigabyte", "%1 gigabytes"))); | ||||
264 | | ||||
265 | addCommonUnit(CustomUnit(BinaryDataCategory, Gigabit, 1e+09, | ||||
266 | i18nc("binary data unit symbol", "Gb"), | ||||
267 | i18nc("unit description in lists", "gigabits"), | ||||
268 | i18nc("unit synonyms for matching user input", | ||||
269 | "Gb;gigabit;gigabits"), | ||||
270 | symbolString, | ||||
271 | ki18nc("amount in units (real)", "%1 gigabits"), | ||||
272 | ki18ncp("amount in units (integer)", "%1 gigabit", "%1 gigabits"))); | ||||
273 | | ||||
274 | addCommonUnit(CustomUnit(new BinaryPowerOfTwoUnitPrivate(BinaryDataCategory, Mebibyte, 23, | ||||
275 | i18nc("binary data unit symbol", "MiB"), | ||||
276 | i18nc("unit description in lists", "mebibytes"), | ||||
277 | i18nc("unit synonyms for matching user input", | ||||
278 | "MiB;mebibyte;mebibytes"), | ||||
279 | symbolString, | ||||
280 | ki18nc("amount in units (real)", "%1 mebibytes"), | ||||
281 | ki18ncp("amount in units (integer)", "%1 mebibyte", "%1 mebibytes")))); | ||||
282 | | ||||
283 | addUnit(CustomUnit(new BinaryPowerOfTwoUnitPrivate(BinaryDataCategory, Mebibit, 20, | ||||
284 | i18nc("binary data unit symbol", "Mib"), | ||||
285 | i18nc("unit description in lists", "mebibits"), | ||||
286 | i18nc("unit synonyms for matching user input", | ||||
287 | "Mib;mebibit;mebibits"), | ||||
288 | symbolString, | ||||
289 | ki18nc("amount in units (real)", "%1 mebibits"), | ||||
290 | ki18ncp("amount in units (integer)", "%1 mebibit", "%1 mebibits")))); | ||||
291 | | ||||
292 | addCommonUnit(CustomUnit(BinaryDataCategory, Megabyte, 8e+06, | ||||
293 | i18nc("binary data unit symbol", "MB"), | ||||
294 | i18nc("unit description in lists", "megabytes"), | ||||
295 | i18nc("unit synonyms for matching user input", | ||||
296 | "MB;megabyte;megabytes"), | ||||
297 | symbolString, | ||||
298 | ki18nc("amount in units (real)", "%1 megabytes"), | ||||
299 | ki18ncp("amount in units (integer)", "%1 megabyte", "%1 megabytes"))); | ||||
300 | | ||||
301 | addCommonUnit(CustomUnit(BinaryDataCategory, Megabit, 1e+06, | ||||
302 | i18nc("binary data unit symbol", "Mb"), | ||||
303 | i18nc("unit description in lists", "megabits"), | ||||
304 | i18nc("unit synonyms for matching user input", | ||||
305 | "Mb;megabit;megabits"), | ||||
306 | symbolString, | ||||
307 | ki18nc("amount in units (real)", "%1 megabits"), | ||||
308 | ki18ncp("amount in units (integer)", "%1 megabit", "%1 megabits"))); | ||||
309 | | ||||
310 | addCommonUnit(CustomUnit(BinaryDataCategory, Kibibyte, 8192, | ||||
311 | i18nc("binary data unit symbol", "KiB"), | ||||
312 | i18nc("unit description in lists", "kibibytes"), | ||||
313 | i18nc("unit synonyms for matching user input", | ||||
314 | "KiB;kibibyte;kibibytes"), | ||||
315 | symbolString, | ||||
316 | ki18nc("amount in units (real)", "%1 kibibytes"), | ||||
317 | ki18ncp("amount in units (integer)", "%1 kibibyte", "%1 kibibytes"))); | ||||
318 | | ||||
319 | addUnit(CustomUnit(BinaryDataCategory, Kibibit, 1024, | ||||
320 | i18nc("binary data unit symbol", "Kib"), | ||||
321 | i18nc("unit description in lists", "kibibits"), | ||||
322 | i18nc("unit synonyms for matching user input", | ||||
323 | "Kib;kibibit;kibibits"), | ||||
324 | symbolString, | ||||
325 | ki18nc("amount in units (real)", "%1 kibibits"), | ||||
326 | ki18ncp("amount in units (integer)", "%1 kibibit", "%1 kibibits"))); | ||||
327 | | ||||
328 | addCommonUnit(CustomUnit(BinaryDataCategory, Kilobyte, 8000, | ||||
329 | i18nc("binary data unit symbol", "kB"), | ||||
330 | i18nc("unit description in lists", "kilobytes"), | ||||
331 | i18nc("unit synonyms for matching user input", | ||||
332 | "kB;kilobyte;kilobytes"), | ||||
333 | symbolString, | ||||
334 | ki18nc("amount in units (real)", "%1 kilobytes"), | ||||
335 | ki18ncp("amount in units (integer)", "%1 kilobyte", "%1 kilobytes"))); | ||||
336 | | ||||
337 | addCommonUnit(CustomUnit(BinaryDataCategory, Kilobit, 1000, | ||||
338 | i18nc("binary data unit symbol", "kb"), | ||||
339 | i18nc("unit description in lists", "kilobits"), | ||||
340 | i18nc("unit synonyms for matching user input", | ||||
341 | "kb;kilobit;kilobits"), | ||||
342 | symbolString, | ||||
343 | ki18nc("amount in units (real)", "%1 kilobits"), | ||||
344 | ki18ncp("amount in units (integer)", "%1 kilobit", "%1 kilobits"))); | ||||
345 | | ||||
346 | addCommonUnit(CustomUnit(BinaryDataCategory, Byte, 8, | ||||
347 | i18nc("binary data unit symbol", "B"), | ||||
348 | i18nc("unit description in lists", "bytes"), | ||||
349 | i18nc("unit synonyms for matching user input", | ||||
350 | "B;byte;bytes"), | ||||
351 | symbolString, | ||||
352 | ki18nc("amount in units (real)", "%1 bytes"), | ||||
353 | ki18ncp("amount in units (integer)", "%1 byte", "%1 bytes"))); | ||||
354 | | ||||
355 | addDefaultUnit(CustomUnit(BinaryDataCategory, Bit, 1, | ||||
356 | i18nc("binary data unit symbol", "b"), | ||||
357 | i18nc("unit description in lists", "bits"), | ||||
358 | i18nc("unit synonyms for matching user input", | ||||
359 | "b;bit;bits"), | ||||
360 | symbolString, | ||||
361 | ki18nc("amount in units (real)", "%1 bits"), | ||||
362 | ki18ncp("amount in units (integer)", "%1 bit", "%1 bits"))); | ||||
363 | } | ||||
364 | | ||||
365 | } // KUnitConversion namespace |