Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenconvert.c
Go to the documentation of this file.
00001 #include "calc.h" 00002 00003 /* 00004 The conversion is made by converting the "from" unit 00005 into the I.S. unit and then the I.S. unit is converted 00006 into the "from" one. 00007 00008 The base units for all categories are: 00009 00010 ANGLE..........degrees 00011 AREA...........square meters 00012 CONSUMPTION....kilometers per liter 00013 CURRENCY.......Euro 00014 ENERGY.........joule 00015 LENGTHS........meters 00016 POWER..........Watt 00017 PRESSURE.......Pascal 00018 TEMPERATURE....kelvin 00019 TIME...........seconds 00020 VELOCITY.......meters per second 00021 VOLUME.........liter 00022 WEIGHT.........gram 00023 00024 The '$' character is used as "what you read into the display". 00025 */ 00026 typedef struct { 00027 DWORD unit; 00028 const char *formula_from; 00029 const char *formula_to; 00030 } conv_t; 00031 00032 typedef struct { 00033 const DWORD category; 00034 const conv_t *items; 00035 } conv_category_t; 00036 00037 #define DECLARE_CONV_CAT(_category) \ 00038 { IDS_CONV_##_category, conv_##_category }, 00039 00040 #define DECLARE_CONV_UNIT(_category, _unit, _from, _to ) \ 00041 { IDS_##_category##_##_unit, _from, _to }, 00042 00043 #define DECLARE_CONV_END \ 00044 { 0, NULL, NULL }, 00045 00046 /* 00047 1 gradian = 0.9 deg 00048 1 radian = 57.29577951308233 deg 00049 */ 00050 static const conv_t conv_ANGLE[] = { 00051 DECLARE_CONV_UNIT(ANGLE, DEGREES, "$", "$") 00052 DECLARE_CONV_UNIT(ANGLE, GRADIANS, "$*0.9", "$/0.9") 00053 DECLARE_CONV_UNIT(ANGLE, RADIANS, "$/P*180", "$*P/180") 00054 DECLARE_CONV_END 00055 }; 00056 00057 /* 00058 1 acre ................ = 4840 square yd = 4046,8564224 mq 00059 1 acre brazil ......... = 00060 1 acre france ......... = 00061 1 acre scots .......... = 5000 mq 00062 1 acre us ............. = 4840*(36/39.37)^2 m = 6272640/1549.9969 m 00063 1 are ................. = 100 mq 00064 1 chou ................ = 108000*(10/33)^2 mq 00065 1 danbo ............... = 00066 1 ha .................. = 10000 mq 00067 1 jeongbo ............. = 00068 1 morgen hungary ...... = 00069 1 mu .................. = 2000/3 mq 00070 1 ping ................ = 00071 1 pyeong .............. = 00072 1 pyeongbangja ........ = 00073 1 rai ................. = 1600 mq 00074 1 se .................. = 1080*(10/33)^2 mq 00075 1 square cm ........... = 0.0001 mq 00076 1 square chr .......... = 00077 1 square fathom ....... = 1.8288^2 = 3.34450944 mq 00078 1 square fathom hungary = 1.8964838^2 = 3.59665080366244 mq 00079 1 square ft ........... = 0,09290304 mq 00080 1 square in ........... = 0,00064516 mq 00081 1 square km ........... = 1000000 mq 00082 1 square lar .......... = 00083 1 square mile ......... = 1609.344^2 = 2589988.110336 mq 00084 1 square mm ........... = 0,000001 mq 00085 1 square shaku ........ = (10/33)^2 mq 00086 1 square tsuen ........ = 00087 1 square va ........... = 00088 1 square yard ......... = 0,83612736 mq 00089 1 tan ................. = 10800*(10/33)^2 mq 00090 1 tsubo ............... = 36*(10/33)^2 mq 00091 */ 00092 static const conv_t conv_AREA[] = { 00093 DECLARE_CONV_UNIT(AREA, ACRES, "$*4046,8564224", "$/4046,8564224") 00094 // DECLARE_CONV_UNIT(AREA, ACRES_BRAZIL, "$", "$") 00095 // DECLARE_CONV_UNIT(AREA, ACRES_FRANCE, "$", "$") 00096 DECLARE_CONV_UNIT(AREA, ACRES_US, "$*627264/154.99969", "$/627264*154.99969") 00097 DECLARE_CONV_UNIT(AREA, ACRES_SCOTS, "$*5000", "$/5000") 00098 DECLARE_CONV_UNIT(AREA, ARES, "$*100", "$/100") 00099 DECLARE_CONV_UNIT(AREA, CHOU, "$*10800000/1089", "$*1089/10800000") 00100 // DECLARE_CONV_UNIT(AREA, DANBO, "$", "$") 00101 DECLARE_CONV_UNIT(AREA, HECTARES, "$*10000", "$/10000") 00102 // DECLARE_CONV_UNIT(AREA, JEONGBO, "$", "$") 00103 // DECLARE_CONV_UNIT(AREA, MORGEN_HUNGARY, "$", "$") 00104 DECLARE_CONV_UNIT(AREA, MU, "$*(2000/3)", "$/(2000/3)") 00105 // DECLARE_CONV_UNIT(AREA, PING, "$", "$") 00106 // DECLARE_CONV_UNIT(AREA, PYEONG, "$", "$") 00107 // DECLARE_CONV_UNIT(AREA, PYEONGBANGJA, "$", "$") 00108 DECLARE_CONV_UNIT(AREA, RAI, "$*1600", "$/1600") 00109 DECLARE_CONV_UNIT(AREA, SE, "$*108000/1089", "$*1089/108000") 00110 DECLARE_CONV_UNIT(AREA, SQUARE_CENTIMETERS, "$*0,0001", "$/0,0001") 00111 // DECLARE_CONV_UNIT(AREA, SQUARE_CHR, "$", "$") 00112 DECLARE_CONV_UNIT(AREA, SQUARE_FATHOMS, "$*3.34450944", "$/3.34450944") 00113 DECLARE_CONV_UNIT(AREA, SQUARE_FATHOMS_HUNGARY, "$*3.59665080366244", "$/3.59665080366244") 00114 DECLARE_CONV_UNIT(AREA, SQUARE_FEET, "$*0,09290304", "$/0,09290304") 00115 DECLARE_CONV_UNIT(AREA, SQUARE_INCHES, "$*0,00064516", "$/0.00064516") 00116 DECLARE_CONV_UNIT(AREA, SQUARE_KILOMETERS, "$*1000000", "$/1000000") 00117 // DECLARE_CONV_UNIT(AREA, SQUARE_LAR, "$", "$") 00118 DECLARE_CONV_UNIT(AREA, SQUARE_METER, "$", "$") 00119 DECLARE_CONV_UNIT(AREA, SQUARE_MILES, "$*2589988.110336", "$/2589988.110336") 00120 DECLARE_CONV_UNIT(AREA, SQUARE_MILLIMETERS, "$*1000000", "$/1000000") 00121 DECLARE_CONV_UNIT(AREA, SQUARE_SHAKU, "$*100/1089", "$/1089*100") 00122 // DECLARE_CONV_UNIT(AREA, SQUARE_TSUEN, "$", "$") 00123 // DECLARE_CONV_UNIT(AREA, SQUARE_VA, "$", "$") 00124 DECLARE_CONV_UNIT(AREA, SQUARE_YARD, "$*0,83612736", "$/0,83612736") 00125 DECLARE_CONV_UNIT(AREA, TAN, "$*1080000/1089", "$*1089/1080000") 00126 DECLARE_CONV_UNIT(AREA, TSUBO, "$*1188/1089", "$*1089/1188") 00127 DECLARE_CONV_END 00128 }; 00129 00130 /* 00131 1 l/100Km = 100 km/l -> y = 100/x 00132 1 miles/gal uk = 1.609344/4.54609 km/l 00133 1 miles/gal us = 1.609344/3.785411784 km/l 00134 */ 00135 static const conv_t conv_CONSUMPTION[] = { 00136 DECLARE_CONV_UNIT(CONSUMPTION, KM_PER_L, "$", "$") 00137 DECLARE_CONV_UNIT(CONSUMPTION, L_PER_100_KM, "100/$", "100/$") 00138 DECLARE_CONV_UNIT(CONSUMPTION, MILES_GALLON_UK, "$*1.609344/4.54609", "$/1.609344*4.54609") 00139 DECLARE_CONV_UNIT(CONSUMPTION, MILES_GALLON_US, "$*1.609344/3.785411784", "$/1.609344*3.785411784") 00140 DECLARE_CONV_END 00141 }; 00142 00143 static const conv_t conv_CURRENCY[] = { 00144 DECLARE_CONV_UNIT(CURRENCY, AUSTRIAN_SCHILLING, "$/13,7603", "$*13,7603") 00145 DECLARE_CONV_UNIT(CURRENCY, BELGIAN_FRANC, "$/40,3399", "$*40,3399") 00146 DECLARE_CONV_UNIT(CURRENCY, CYPRIOT_POUND, "$/0,585274","$*0,585274") 00147 DECLARE_CONV_UNIT(CURRENCY, CZECH_KORUNA, "$/27,9766", "$*27,9766") 00148 DECLARE_CONV_UNIT(CURRENCY, DEUTSCHE_MARK, "$/1,9558", "$*1,9558") 00149 DECLARE_CONV_UNIT(CURRENCY, DUTCH_GUILDER, "$/2,20371", "$*2,20371") 00150 DECLARE_CONV_UNIT(CURRENCY, EURO, "$", "$") 00151 DECLARE_CONV_UNIT(CURRENCY, FINNISH_MARKKA, "$/5,9457", "$*5,9457") 00152 DECLARE_CONV_UNIT(CURRENCY, FRENCH_FRANC, "$/6,5596", "$*6,5596") 00153 DECLARE_CONV_UNIT(CURRENCY, GREEK_DRACHMA, "$/340,75", "$*340,75") 00154 DECLARE_CONV_UNIT(CURRENCY, IRISH_POUND, "$/0,7876", "$*0,7876") 00155 DECLARE_CONV_UNIT(CURRENCY, ITALIAN_LIRA, "$/1936.27", "$*1936.27") 00156 DECLARE_CONV_UNIT(CURRENCY, LUXEMBOURG_FRANC, "$/40,3399", "$*40,3399") 00157 DECLARE_CONV_UNIT(CURRENCY, MALTESE_LIRA, "$/0.42930", "$*0.42930") 00158 DECLARE_CONV_UNIT(CURRENCY, PORTOGUESE_ESCUDO, "$/200,482", "$*200,482") 00159 DECLARE_CONV_UNIT(CURRENCY, SLOVAK_KORUNA, "$/30,126", "$*30,126") 00160 DECLARE_CONV_UNIT(CURRENCY, SLOVENIAN_TOLAR, "$/239,640", "$*239,640") 00161 DECLARE_CONV_UNIT(CURRENCY, SPANISH_PESETA, "$/166,386", "$*166,386") 00162 DECLARE_CONV_END 00163 }; 00164 00165 /* 00166 1 cal15 .... = 4.1855 J 00167 1 BTU ...... = 1055.056 J 00168 1 ERG ...... = 0.0000001 J 00169 1 EV ....... = 0.000000000000000000160217653 J 00170 1 Foot-Pound = 1.3558179483314004 J 00171 1 IT calorie = 4.1868 J 00172 1 KCa ...... = 4186.8 J 00173 1 KJ ....... = 1000 J 00174 1 KWh ...... = 3600 J 00175 1 IUNS ..... = 4.182 J 00176 1 calth .... = 4.184 J 00177 */ 00178 static const conv_t conv_ENERGY[] = { 00179 DECLARE_CONV_UNIT(ENERGY, 15_C_CALORIES, "$*4.1855", "$/4.1855") 00180 DECLARE_CONV_UNIT(ENERGY, BTUS, "$*1055.056", "$/1055.056") 00181 DECLARE_CONV_UNIT(ENERGY, ERGS, "$*.0000001", "$/.0000001") 00182 DECLARE_CONV_UNIT(ENERGY, EVS, "$*.000000000000000000160217653", "$/.000000000000000000160217653") 00183 DECLARE_CONV_UNIT(ENERGY, FOOT_POUNDS, "$*1.3558179483314004", "$/1.3558179483314004") 00184 DECLARE_CONV_UNIT(ENERGY, IT_CALORIES, "$*4.1868", "$/4.1868") 00185 DECLARE_CONV_UNIT(ENERGY, IT_KILOCALORIES, "$*4186.8", "$/4186.8") 00186 DECLARE_CONV_UNIT(ENERGY, JOULES, "$", "$") 00187 DECLARE_CONV_UNIT(ENERGY, KILOJOULES, "$*1000", "$/1000") 00188 DECLARE_CONV_UNIT(ENERGY, KILOWATT_HOURS, "$*3600", "$/3600") 00189 DECLARE_CONV_UNIT(ENERGY, NUTRITION_CALORIES, "$*4.182", "$/4.182") 00190 DECLARE_CONV_UNIT(ENERGY, TH_CALORIES, "$*4.184", "$/4.184") 00191 DECLARE_CONV_END 00192 }; 00193 00194 /* 00195 1 angstrom ....... = 0.0000000001 m 00196 1 astronomical unit= 149598000000 m 00197 1 barleycorn ..... = 1/3 inch = 0.9144/108 m 00198 1 cm ............. = 1/100 m 00199 1 chain uk ....... = 22 yards = 22*0.9144 m 00200 1 chi ............ = 1/3 m 00201 1 chou ........... = 3600/33 m 00202 1 chr ............ = 00203 1 cun ............ = 1/10 chi = 1/30 m 00204 1 fathom ......... = 2 yard = 2*0.9144 m 00205 1 fathom ungary .. = 1.8964838 m (fixed) 00206 1 feet ........... = 12 inch = 0.9144/3 m 00207 1 furlong ........ = 10 chains = 220*0.9144 m 00208 1 gan ............ = 00209 1 hand ........... = 4 inches = 0.9144/9 m 00210 1 hunh ........... = 00211 1 inch ........... = yard/36 = 0.9144/36 m 00212 1 ja ............. = 00213 1 jeong .......... = 00214 1 kabiet ......... = 00215 1 ken ............ = 60/33 m 00216 1 keub ........... = 00217 1 km ............. = 1000 m 00218 1 lar ............ = 00219 1 light year ..... = 9460730472580800 m 00220 1 link uk ........ = 0.01 chains = 0.22*0.9144 m 00221 1 micron ......... = 0.000001 m 00222 1 mile ........... = 1760 yards = 1609.344 m 00223 1 millimeter ..... = 1/1000 m 00224 1 nautical mile .. = 1852 m 00225 1 nieu ........... = 00226 1 parsec ......... = 30856800000000000 m 00227 1 pica ........... = yard/216 = 0.9144/216 m 00228 1 ri japan ....... = 00229 1 ri korea ....... = 00230 1 rod ............ = 5.0292 m 00231 1 sawk ........... = 00232 1 sen ............ = 00233 1 shaku .......... = 10/33 m 00234 1 span ........... = 9 inches = 0.9144/4 m 00235 1 sun ............ = 1/33 m 00236 1 tsuen .......... = 00237 1 va ............. = 00238 1 yard ........... = 0.9144 m 00239 1 yote ........... = 00240 1 zhang .......... = 00241 */ 00242 static const conv_t conv_LENGTH[] = { 00243 DECLARE_CONV_UNIT(LENGTH, ANGSTROMS, "$*0.0000000001", "$/0.0000000001") 00244 DECLARE_CONV_UNIT(LENGTH, ASTRONOMICAL_UNITS, "$*149598000000", "$/149598000000") 00245 DECLARE_CONV_UNIT(LENGTH, BARLEYCORNS, "$*0.9144/108", "$/0.9144*108") 00246 DECLARE_CONV_UNIT(LENGTH, CENTIMETERS, "$/100", "$*100") 00247 DECLARE_CONV_UNIT(LENGTH, CHAINS_UK, "$*20.1168", "$/20.1168") 00248 DECLARE_CONV_UNIT(LENGTH, CHI, "$/3", "$*3") 00249 DECLARE_CONV_UNIT(LENGTH, CHOU, "$*3600/33", "$*33/3600") 00250 // DECLARE_CONV_UNIT(LENGTH, CHR, "$", "$") 00251 DECLARE_CONV_UNIT(LENGTH, CUN, "$/30", "$*30") 00252 DECLARE_CONV_UNIT(LENGTH, FATHOMS, "$*1.8288", "$/1.8288") 00253 DECLARE_CONV_UNIT(LENGTH, FATHOMS_HUNGARY, "$*1.8964838", "$/1.8964838") 00254 DECLARE_CONV_UNIT(LENGTH, FEET, "$*0.3048", "$/0.3048") 00255 DECLARE_CONV_UNIT(LENGTH, FURLONGS, "$*201.168", "$/201.168") 00256 // DECLARE_CONV_UNIT(LENGTH, GAN, "$", "$") 00257 DECLARE_CONV_UNIT(LENGTH, HANDS, "$*0,1016", "$/0,1016") 00258 // DECLARE_CONV_UNIT(LENGTH, HUNH, "$", "$") 00259 DECLARE_CONV_UNIT(LENGTH, INCHES, "$*0.0254", "$/0.0254") 00260 // DECLARE_CONV_UNIT(LENGTH, JA, "$", "$") 00261 // DECLARE_CONV_UNIT(LENGTH, JEONG, "$", "$") 00262 // DECLARE_CONV_UNIT(LENGTH, KABIET, "$", "$") 00263 DECLARE_CONV_UNIT(LENGTH, KEN, "$*60/33", "$*33/60") 00264 // DECLARE_CONV_UNIT(LENGTH, KEUB, "$", "$") 00265 DECLARE_CONV_UNIT(LENGTH, KILOMETERS, "$*1000", "$/1000") 00266 // DECLARE_CONV_UNIT(LENGTH, LAR, "$", "$") 00267 DECLARE_CONV_UNIT(LENGTH, LIGHT_YEARS, "$*9460730472580800", "$/9460730472580800") 00268 DECLARE_CONV_UNIT(LENGTH, LINKS_UK, "$*0.201168", "$/0.201168") 00269 DECLARE_CONV_UNIT(LENGTH, METERS, "$", "$") 00270 DECLARE_CONV_UNIT(LENGTH, MICRONS, "$*0.000001", "$/0.000001") 00271 DECLARE_CONV_UNIT(LENGTH, MILES, "$*1609.344", "$/1609.344") 00272 DECLARE_CONV_UNIT(LENGTH, MILLIMETERS, "$/1000", "$*1000") 00273 DECLARE_CONV_UNIT(LENGTH, NAUTICAL_MILES, "$*1852", "$/1852") 00274 // DECLARE_CONV_UNIT(LENGTH, NIEU, "$", "$") 00275 DECLARE_CONV_UNIT(LENGTH, PARSECS, "$*30856800000000000", "$/30856800000000000") 00276 DECLARE_CONV_UNIT(LENGTH, PICAS, "$*0.9144/216", "$/0.9144*216") 00277 DECLARE_CONV_UNIT(LENGTH, RODS, "$*5.0292", "$/5.0292") 00278 // DECLARE_CONV_UNIT(LENGTH, RI_JAPAN, "$", "$") 00279 // DECLARE_CONV_UNIT(LENGTH, RI_KOREA, "$", "$") 00280 // DECLARE_CONV_UNIT(LENGTH, SAWK, "$", "$") 00281 // DECLARE_CONV_UNIT(LENGTH, SEN, "$", "$") 00282 DECLARE_CONV_UNIT(LENGTH, SHAKU, "$*10/33", "$*33/10") 00283 DECLARE_CONV_UNIT(LENGTH, SPAN, "$*0.9144/4", "$*4/0.9144") 00284 DECLARE_CONV_UNIT(LENGTH, SUN, "$*1/33", "$*33") 00285 // DECLARE_CONV_UNIT(LENGTH, TSUEN, "$", "$") 00286 // DECLARE_CONV_UNIT(LENGTH, VA, "$", "$") 00287 DECLARE_CONV_UNIT(LENGTH, YARDS, "$*0.9144", "$/0.9144") 00288 // DECLARE_CONV_UNIT(LENGTH, YOTE, "$", "$") 00289 // DECLARE_CONV_UNIT(LENGTH, ZHANG, "$", "$") 00290 DECLARE_CONV_END 00291 }; 00292 00293 /* 00294 1 BTU/min = 17.5842642 W 00295 1 Foot-pound/minute = 0.02259696580552333 W 00296 1 hp = 745.69987158227022 W 00297 1 KW = 1000 W 00298 1 MW = 1000000 W 00299 */ 00300 static const conv_t conv_POWER[] = { 00301 DECLARE_CONV_UNIT(POWER, BTUS_PER_MINUTE, "$*17.5842642", "$/17.5842642") 00302 DECLARE_CONV_UNIT(POWER, FPS_PER_MINUTE, "$*0.02259696580552333", "$/0.02259696580552333") 00303 DECLARE_CONV_UNIT(POWER, HORSEPOWER, "$*745.69987158227022", "$/745.69987158227022") 00304 DECLARE_CONV_UNIT(POWER, KILOWATTS, "$*1000", "$/1000") 00305 DECLARE_CONV_UNIT(POWER, MEGAWATTS, "$*1000000", "$/1000000") 00306 DECLARE_CONV_UNIT(POWER, WATTS, "$", "$") 00307 DECLARE_CONV_END 00308 }; 00309 00310 /* 00311 1 ATM = 101325 Pa 00312 1 BAR = 100000 Pa 00313 1 hPa = 100 Pa 00314 1 kPa = 1000 Pa 00315 1 mm HG = 133.322 Pa 00316 1 psi = 6894.757 Pa 00317 */ 00318 static const conv_t conv_PRESSURE[] = { 00319 DECLARE_CONV_UNIT(PRESSURE, ATMOSPHERES, "$*101325", "$/101325") 00320 DECLARE_CONV_UNIT(PRESSURE, BARS, "$*100000", "$/100000") 00321 DECLARE_CONV_UNIT(PRESSURE, HECTOPASCALS, "$*100", "$/100") 00322 DECLARE_CONV_UNIT(PRESSURE, KILOPASCALS, "$*1000", "$/1000") 00323 DECLARE_CONV_UNIT(PRESSURE, MM_OF_MERCURY, "$*133.322", "$/133.322") 00324 DECLARE_CONV_UNIT(PRESSURE, PASCALS, "$", "$") 00325 DECLARE_CONV_UNIT(PRESSURE, PSI, "$*6894.757", "$/6894.757") 00326 DECLARE_CONV_END 00327 }; 00328 00329 /* 00330 1 day ....... = 86400 s 00331 1 hour ...... = 3600 s 00332 1 microsecond = 0.000001 s 00333 1 millisecond = 0.001 s 00334 1 nanosecond. = 0.000000001 s 00335 1 minute .... = 60 s 00336 1 week ...... = 669600 s 00337 */ 00338 static const conv_t conv_TIME[] = { 00339 DECLARE_CONV_UNIT(TIME, MINUTES, "$*60", "$/60") 00340 DECLARE_CONV_UNIT(TIME, DAYS, "$*86400", "$/86400") 00341 DECLARE_CONV_UNIT(TIME, HOURS, "$*3600", "$/3600") 00342 DECLARE_CONV_UNIT(TIME, MILLISECONDS, "$*0.001", "$/0.001") 00343 DECLARE_CONV_UNIT(TIME, MICROSECONDS, "$*0.000001", "$/0.000001") 00344 DECLARE_CONV_UNIT(TIME, NANOSECONDS, "$*0.000000001", "$/0.000000001") 00345 DECLARE_CONV_UNIT(TIME, SECONDS, "$", "$") 00346 DECLARE_CONV_UNIT(TIME, WEEKS, "$*604800", "$/604800") 00347 DECLARE_CONV_UNIT(TIME, YEARS, "$*31556952", "$/31556952") 00348 DECLARE_CONV_END 00349 }; 00350 00351 /* 00352 C = K - 273.15 00353 F = K * 9/5 - 459.67 00354 R = K * 9/5 00355 */ 00356 static const conv_t conv_TEMPERATURE[] = { 00357 DECLARE_CONV_UNIT(TEMPERATURE, CELSIUS, "$+273.15", "$-273.15") 00358 DECLARE_CONV_UNIT(TEMPERATURE, FAHRENHEIT, "($+459.67)*5/9", "$*9/5-459.67") 00359 DECLARE_CONV_UNIT(TEMPERATURE, KELVIN, "$", "$") 00360 DECLARE_CONV_UNIT(TEMPERATURE, RANKINE, "$*5/9", "$*9/5") 00361 DECLARE_CONV_END 00362 }; 00363 00364 /* 00365 1 cm/s = 0.01 m/s 00366 1 f/h = 0.0000846666667 m/s 00367 1 f/s = 0.3048 m/s 00368 1 Km/h = 10/36 m/s -> 0.27778 m/s 00369 1 knot = 18.52/36 m/s -> 0.51444444 m/s 00370 1 mach = 340.3 m/s 00371 1 mph = 0.44704 m/s 00372 */ 00373 static const conv_t conv_VELOCITY[] = { 00374 DECLARE_CONV_UNIT(VELOCITY, CMS_SECOND, "$*.01", "$/.01") 00375 DECLARE_CONV_UNIT(VELOCITY, FEET_SECOND, "$*.3048", "$/.3048") 00376 DECLARE_CONV_UNIT(VELOCITY, FEET_HOUR, "$*.0000846666667", "$/.0000846666667") 00377 DECLARE_CONV_UNIT(VELOCITY, KILOMETERS_HOUR, "$*10/36", "$*36/10") 00378 DECLARE_CONV_UNIT(VELOCITY, KNOTS, "$*18.52/36", "$*36/18.52") 00379 DECLARE_CONV_UNIT(VELOCITY, MACH, "$*340.3", "$/340.3") 00380 DECLARE_CONV_UNIT(VELOCITY, METERS_SECOND, "$", "$") 00381 DECLARE_CONV_UNIT(VELOCITY, MILES_HOUR, "$*.44704", "$/.44704") 00382 DECLARE_CONV_END 00383 }; 00384 00385 /* 00386 1 barrel uk ...... = 163.65924 l 00387 1 barrel oil ..... = 158.987295 l 00388 1 bun ............ = 00389 1 bushel uk ...... = 36.36872 l 00390 1 bushel us ...... = 35.23907017 l 00391 1 cubic cm ...... = 0.001 l 00392 1 cubic feet ..... = 28.316846 l 00393 1 cubic inch ..... = 0.016387064 l 00394 1 cubic meter .... = 1000 l 00395 1 cubic yard ..... = 764.554857 l 00396 1 doe ............ = 00397 1 fluid ounce uk = 0.0284130625 l 00398 1 fluid ounce us = 0.0295735295625 l 00399 1 gallon uk ...... = 4.54609 l 00400 1 gallon dry us .. = 4.40488377086 l 00401 1 gallon liquid us = 3.785411784 l 00402 1 gou ............ = 0.1809 l 00403 1 hop ............ = 00404 1 icce ........... = 00405 1 kwian .......... = 00406 1 mal ............ = 00407 1 milliliter ..... = 0.001 l 00408 1 pint uk ........ = 0.56826125 l 00409 1 pint dry us .... = 0.5506104713575 l 00410 1 pint liquid us = 0.473176473 l 00411 1 quart uk ....... = 1.1365225 l 00412 1 quart dry us ... = 1.101220942715 l 00413 1 quart liquid us = 0.946352946 l 00414 1 seki ........... = 00415 1 syou ........... = 00416 1 tananloung ..... = 00417 1 tang ........... = 00418 1 to ............. = 18040 l 00419 */ 00420 static const conv_t conv_VOLUME[] = { 00421 DECLARE_CONV_UNIT(VOLUME, BARRELS_UK, "$*163.65924", "$/163.65924") 00422 DECLARE_CONV_UNIT(VOLUME, BARRELS_OIL, "$*158.987295", "$/158.987295") 00423 // DECLARE_CONV_UNIT(VOLUME, BUN, "$", "$") 00424 DECLARE_CONV_UNIT(VOLUME, BUSHELS_UK, "$*36.36872", "$/36.36872") 00425 DECLARE_CONV_UNIT(VOLUME, BUSHELS_US, "$*35.23907017", "$/35.23907017") 00426 DECLARE_CONV_UNIT(VOLUME, CUBIC_CENTIMETERS, "$*0.001", "$/0.001") 00427 DECLARE_CONV_UNIT(VOLUME, CUBIC_FEET, "$*28.316846", "$/28.316846") 00428 DECLARE_CONV_UNIT(VOLUME, CUBIC_INCHES, "$*0.016387064", "$/0.016387064") 00429 DECLARE_CONV_UNIT(VOLUME, CUBIC_METERS, "$*1000", "$/1000") 00430 DECLARE_CONV_UNIT(VOLUME, CUBIC_YARDS, "$*764.554857", "$/764.554857") 00431 // DECLARE_CONV_UNIT(VOLUME, DOE, "$", "$") 00432 DECLARE_CONV_UNIT(VOLUME, FLUID_OUNCES_UK, "$*0.0284130625", "$/0.0284130625") 00433 DECLARE_CONV_UNIT(VOLUME, FLUID_OUNCES_US, "$*0.0295735295625", "$/0.0295735295625") 00434 DECLARE_CONV_UNIT(VOLUME, GALLONS_UK, "$*4.54609", "$/4.54609") 00435 DECLARE_CONV_UNIT(VOLUME, GALLONS_DRY_US, "$*4.40488377086", "$/4.40488377086") 00436 DECLARE_CONV_UNIT(VOLUME, GALLONS_LIQUID_US, "$*3.785411784", "$/3.785411784") 00437 DECLARE_CONV_UNIT(VOLUME, GOU, "$*0.1809", "$/0.1809") 00438 // DECLARE_CONV_UNIT(VOLUME, HOP, "$", "$") 00439 // DECLARE_CONV_UNIT(VOLUME, ICCE, "$", "$") 00440 // DECLARE_CONV_UNIT(VOLUME, KWIAN, "$", "$") 00441 DECLARE_CONV_UNIT(VOLUME, LITERS, "$", "$") 00442 // DECLARE_CONV_UNIT(VOLUME, MAL, "$", "$") 00443 DECLARE_CONV_UNIT(VOLUME, MILLILITERS, "$*0.001", "$/0.001") 00444 DECLARE_CONV_UNIT(VOLUME, PINTS_UK, "$*0.56826125", "$/0.56826125") 00445 DECLARE_CONV_UNIT(VOLUME, PINTS_DRY_US, "$*0.5506104713575", "$/0.5506104713575") 00446 DECLARE_CONV_UNIT(VOLUME, PINTS_LIQUID_US, "$*0.473176473", "$/0.473176473") 00447 DECLARE_CONV_UNIT(VOLUME, QUARTS_UK, "$*1.1365225", "$/1.1365225") 00448 DECLARE_CONV_UNIT(VOLUME, QUARTS_DRY_US, "$*1.101220942715", "$/1.101220942715") 00449 DECLARE_CONV_UNIT(VOLUME, QUARTS_LIQUID_US, "$*0.946352946", "$/0.946352946") 00450 // DECLARE_CONV_UNIT(VOLUME, SEKI, "$", "$") 00451 // DECLARE_CONV_UNIT(VOLUME, SYOU, "$", "$") 00452 // DECLARE_CONV_UNIT(VOLUME, TANANLOUNG, "$", "$") 00453 // DECLARE_CONV_UNIT(VOLUME, TANG, "$", "$") 00454 DECLARE_CONV_UNIT(VOLUME, TO, "$*18040", "$/18040") 00455 DECLARE_CONV_END 00456 }; 00457 00458 /* 00459 1 baht ............ = 12.244 g 00460 1 carat ........... = 0.2 g 00461 1 chung ........... = 00462 1 don ............. = 00463 1 geun ............ = 00464 1 gwan ............ = 00465 1 harb ............ = 00466 1 jin china ....... = 00467 1 jin taiwan ...... = 00468 1 Kan ............. = 3750 g 00469 1 Kilograms ....... = 1000 g 00470 1 Kin ............. = 600 g 00471 1 Liang China ..... = 00472 1 Liang Taiwan .... = 00473 1 monme ........... = 3.75 g 00474 1 ounce avoirdupois = 28.349523125 g 00475 1 ounce troy ...... = 31.1034768 g 00476 1 pound ........... = 453.59237 g 00477 1 quintal metric .. = 100000 g 00478 1 saloung ......... = 00479 1 stone ........... = 6350.29318 g 00480 1 tamlung ......... = 00481 1 ton ............. = 1000000 g 00482 1 ton uk .......... = 1016046.9088 g // long ton 00483 1 ton us .......... = 907184.74 g // short ton 00484 */ 00485 static const conv_t conv_WEIGHT[] = { 00486 DECLARE_CONV_UNIT(WEIGHT, BAHT, "$*12.244", "$/12.244") 00487 DECLARE_CONV_UNIT(WEIGHT, CARATS, "$*0.2", "$/0.2") 00488 // DECLARE_CONV_UNIT(WEIGHT, CHUNG, "$", "$") 00489 // DECLARE_CONV_UNIT(WEIGHT, DON, "$", "$") 00490 // DECLARE_CONV_UNIT(WEIGHT, GEUN, "$", "$") 00491 DECLARE_CONV_UNIT(WEIGHT, GRAMS, "$", "$") 00492 // DECLARE_CONV_UNIT(WEIGHT, GWAN, "$", "$") 00493 // DECLARE_CONV_UNIT(WEIGHT, HARB, "$", "$") 00494 // DECLARE_CONV_UNIT(WEIGHT, JIN_CHINA, "$", "$") 00495 // DECLARE_CONV_UNIT(WEIGHT, JIN_TAIWAN, "$", "$") 00496 DECLARE_CONV_UNIT(WEIGHT, KAN, "$*3750", "$/3750") 00497 DECLARE_CONV_UNIT(WEIGHT, KILOGRAMS, "$*1000", "$/1000") 00498 DECLARE_CONV_UNIT(WEIGHT, KIN, "$*600", "$/600") 00499 // DECLARE_CONV_UNIT(WEIGHT, LIANG_CHINA, "$", "$") 00500 // DECLARE_CONV_UNIT(WEIGHT, LIANG_TAIWAN, "$", "$") 00501 DECLARE_CONV_UNIT(WEIGHT, MONME, "$*3.75", "$/3.75") 00502 DECLARE_CONV_UNIT(WEIGHT, OUNCES_AVOIRDUPOIS, "$*28.349523125", "$/28.349523125") 00503 DECLARE_CONV_UNIT(WEIGHT, OUNCES_TROY, "$*31.1034768", "$/31.1034768") 00504 DECLARE_CONV_UNIT(WEIGHT, POUNDS, "$*453.59237", "$/453.59237") 00505 DECLARE_CONV_UNIT(WEIGHT, QUINTAL_METRIC, "$*100000", "$/100000") 00506 // DECLARE_CONV_UNIT(WEIGHT, SALOUNG, "$", "$") 00507 DECLARE_CONV_UNIT(WEIGHT, STONES, "$*6350.29318", "$/6350.29318") 00508 // DECLARE_CONV_UNIT(WEIGHT, TAMLUNG, "$", "$") 00509 DECLARE_CONV_UNIT(WEIGHT, TONNES, "$*1000000", "$/1000000") 00510 DECLARE_CONV_UNIT(WEIGHT, TONS_UK, "$*1016046.9088", "$/1016046.9088") 00511 DECLARE_CONV_UNIT(WEIGHT, TONS_US, "$*907184.74", "$/907184.74") 00512 DECLARE_CONV_END 00513 }; 00514 00515 static const conv_category_t conv_table[] = { 00516 DECLARE_CONV_CAT(ANGLE) 00517 DECLARE_CONV_CAT(AREA) 00518 DECLARE_CONV_CAT(CONSUMPTION) 00519 DECLARE_CONV_CAT(CURRENCY) 00520 DECLARE_CONV_CAT(ENERGY) 00521 DECLARE_CONV_CAT(LENGTH) 00522 DECLARE_CONV_CAT(POWER) 00523 DECLARE_CONV_CAT(PRESSURE) 00524 DECLARE_CONV_CAT(TIME) 00525 DECLARE_CONV_CAT(TEMPERATURE) 00526 DECLARE_CONV_CAT(VELOCITY) 00527 DECLARE_CONV_CAT(VOLUME) 00528 DECLARE_CONV_CAT(WEIGHT) 00529 }; 00530 00531 void ConvExecute(HWND hWnd) 00532 { 00533 DWORD c_cat = (DWORD)SendDlgItemMessage(hWnd, IDC_COMBO_CATEGORY, CB_GETCURSEL, 0, 0); 00534 const conv_t *items = NULL; 00535 DWORD from = SendDlgItemMessage(hWnd, IDC_COMBO_FROM, CB_GETCURSEL, 0, 0); 00536 DWORD to = SendDlgItemMessage(hWnd, IDC_COMBO_TO, CB_GETCURSEL, 0, 0); 00537 TCHAR txt_cb[128]; 00538 TCHAR txt[128]; 00539 const conv_t *item; 00540 00541 /* do nothing if the indexes point to the same unit */ 00542 if (from == to) 00543 return; 00544 00545 /* Search correct category, since it can be sorted too */ 00546 SendDlgItemMessage(hWnd, IDC_COMBO_CATEGORY, CB_GETLBTEXT, c_cat, (LPARAM)txt_cb); 00547 for (c_cat=0; c_cat < SIZEOF(conv_table); c_cat++) { 00548 LoadString(calc.hInstance, conv_table[c_cat].category, txt, SIZEOF(txt)); 00549 if (!_tcscmp(txt_cb, txt)) { 00550 items = conv_table[c_cat].items; 00551 break; 00552 } 00553 } 00554 00555 /* The units can be sorted, so I must search the exact match */ 00556 item = items; 00557 SendDlgItemMessage(hWnd, IDC_COMBO_FROM, CB_GETLBTEXT, from, (LPARAM)txt_cb); 00558 while (item->unit) { 00559 LoadString(calc.hInstance, item->unit, txt, SIZEOF(txt)); 00560 if (!_tcscmp(txt_cb, txt)) { 00561 from = item-items; 00562 break; 00563 } 00564 item++; 00565 } 00566 SendDlgItemMessage(hWnd, IDC_COMBO_TO, CB_GETLBTEXT, to, (LPARAM)txt_cb); 00567 item = items; 00568 while (item->unit) { 00569 LoadString(calc.hInstance, item->unit, txt, SIZEOF(txt)); 00570 if (!_tcscmp(txt_cb, txt)) { 00571 to = item-items; 00572 break; 00573 } 00574 item++; 00575 } 00576 00577 calc.Convert[0].data = (char *)items[from].formula_from; 00578 calc.Convert[1].data = (char *)items[to].formula_to; 00579 calc.Convert[0].wm_msg = WM_HANDLE_FROM; 00580 calc.Convert[1].wm_msg = WM_HANDLE_TO; 00581 PostMessage(hWnd, WM_START_CONV, 0, MAKELPARAM(0, WM_HANDLE_FROM)); 00582 } 00583 00584 void ConvAdjust(HWND hWnd, int n_cat) 00585 { 00586 TCHAR txt[128]; 00587 TCHAR txt_cat[128]; 00588 HWND hFromWnd = GetDlgItem(hWnd, IDC_COMBO_FROM); 00589 HWND hToWnd = GetDlgItem(hWnd, IDC_COMBO_TO); 00590 const conv_t *item; 00591 unsigned int n; 00592 00593 SendDlgItemMessage(hWnd, IDC_COMBO_CATEGORY, CB_GETLBTEXT, n_cat, (LPARAM)txt_cat); 00594 for (n=0; n<SIZEOF(conv_table); n++) { 00595 item = conv_table[n].items; 00596 LoadString(calc.hInstance, conv_table[n].category, txt, SIZEOF(txt)); 00597 if (!_tcscmp(txt_cat, txt)) 00598 break; 00599 } 00600 00601 SendMessage(hFromWnd, CB_RESETCONTENT, 0, 0); 00602 SendMessage(hToWnd, CB_RESETCONTENT, 0, 0); 00603 while (item->unit) { 00604 LoadString(calc.hInstance, item->unit, txt, SIZEOF(txt)); 00605 SendMessage(hFromWnd, CB_ADDSTRING, 0, (LPARAM)txt); 00606 SendMessage(hToWnd, CB_ADDSTRING, 0, (LPARAM)txt); 00607 item++; 00608 } 00609 SendMessage(hFromWnd, CB_SETCURSEL, 0, 0); 00610 SendMessage(hToWnd, CB_SETCURSEL, 0, 0); 00611 } 00612 00613 void ConvInit(HWND hWnd) 00614 { 00615 HWND hCatWnd = GetDlgItem(hWnd, IDC_COMBO_CATEGORY); 00616 TCHAR txt[128]; 00617 unsigned int n; 00618 00619 /* Fill category combo */ 00620 for (n=0; n<SIZEOF(conv_table); n++) { 00621 LoadString(calc.hInstance, conv_table[n].category, txt, SIZEOF(txt)); 00622 SendMessage(hCatWnd, CB_ADDSTRING, 0, (LPARAM)txt); 00623 } 00624 SendMessage(hCatWnd, CB_SETCURSEL, 0, 0); 00625 ConvAdjust(hWnd, 0); 00626 } 00627 Generated on Fri May 25 2012 04:14:49 for ReactOS by
1.7.6.1
|