[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdebase/workspace/plasma/dataengines/weather/ions
From: Shawn Starr <shawn.starr () rogers ! com>
Date: 2008-07-30 4:07:55
Message-ID: 1217390875.816182.25322.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 839444 by spstarr:
Refactor weather formulas, add in additional conversions, kelvin now supported. Now \
you just call convert() with value, source and dest units
M +132 -103 formulas.cpp
M +12 -31 formulas.h
--- trunk/KDE/kdebase/workspace/plasma/dataengines/weather/ions/formulas.cpp \
#839443:839444 @@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2007 by Shawn Starr <shawn.starr@rogers.com> *
+ * Copyright (C) 2007, 2008 by Shawn Starr <shawn.starr@rogers.com> *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
@@ -23,112 +23,136 @@
namespace WeatherFormula
{
-float celsiusToF(float temperature)
+float convert(float value, int srcUnit, int destUnit)
{
- return (temperature * 9 / 5 + 32);
-}
+ switch (srcUnit) {
+ case WeatherFormula::Celsius:
+ switch (destUnit) {
+ case WeatherFormula::Fahrenheit:
+ return (value * 9 / 5 + 32);
+ case WeatherFormula::Kelvin:
+ return (value + 273.15);
+ };
-float fahrenheitToC(float temperature)
-{
- return (temperature - 32) * 5 / 9;
-}
+ case WeatherFormula::Fahrenheit:
+ switch (destUnit) {
+ case WeatherFormula::Celsius:
+ return (value - 32) * 5 / 9;
+ case WeatherFormula::Kelvin:
+ return (5 / 9 * (value - 32) + 273.15);
+ };
-float milesToKM(float miles)
-{
- return (1.609344 * miles);
-}
+ case WeatherFormula::Kelvin:
+ switch (destUnit) {
+ case WeatherFormula::Celsius:
+ return (value - 273.15);
+ case WeatherFormula::Fahrenheit:
+ return ((value - 273.15) * 1.8) + 32;
+ };
+
+ case WeatherFormula::Kilometers:
+ switch (destUnit) {
+ case WeatherFormula::Miles:
+ return (0.621371192 * value);
+ case WeatherFormula::MetersPerSecond:
+ return (value * 0.277778);
+ case WeatherFormula::Knots:
+ return (value * 0.539956803);
+ case WeatherFormula::Beaufort:
+ return kilometersToBeaufort(value);
+ };
-float kilometersToMI(float km)
-{
- return (0.621371192 * km);
-}
+ case WeatherFormula::MetersPerSecond:
+ switch (destUnit) {
+ case WeatherFormula::Miles:
+ return (value * 2.23693629);
+ case WeatherFormula::Kilometers:
+ return (value * 3.6);
+ case WeatherFormula::Knots:
+ return (value * 1.943845);
+ case WeatherFormula::Beaufort:
+ return metersPerSecondToBeaufort(value);
+ };
+
+ case WeatherFormula::Miles:
+ switch (destUnit) {
+ case WeatherFormula::Kilometers:
+ return (1.609344 * value);
+ case WeatherFormula::MetersPerSecond:
+ return (value * 0.44704);
+ case WeatherFormula::Knots:
+ return (value * 0.868976242);
+ case WeatherFormula::Beaufort:
+ return milesToBeaufort(value);
+ };
-float kilopascalsToInches(float kpa)
-{
- return ((0.02952997 * kpa) * 10);
-}
+ case WeatherFormula::Kilopascals:
+ switch (destUnit) {
+ case WeatherFormula::InchesHG:
+ return ((0.02952997 * value) * 10);
+ case WeatherFormula::Millibars:
+ case WeatherFormula::Hectopascals:
+ return (value / 0.10);
+ };
+
+ case WeatherFormula::InchesHG:
+ switch (destUnit) {
+ case WeatherFormula::Kilopascals:
+ return (value * 3.386389);
+ case WeatherFormula::Millibars:
+ case WeatherFormula::Hectopascals:
+ return (value * 33.8637526);
+ };
+
+ case WeatherFormula::Millibars:
+ switch (destUnit) {
+ case WeatherFormula::Kilopascals:
+ return (value * 0.10);
+ case WeatherFormula::InchesHG:
+ return (value * 0.0295333727);
+ };
-float kilopascalsToHectopascals(float kpa)
-{
- return (kpa * 10);
+ case WeatherFormula::Centimeters:
+ switch (destUnit) {
+ case WeatherFormula::Millimeters:
+ return (value / 0.1);
+ case WeatherFormula::Inches:
+ return (value * 0.393700787);
+ };
+
+ case WeatherFormula::Millimeters:
+ switch (destUnit) {
+ case WeatherFormula::Centimeters:
+ return (value * 0.1);
+ case WeatherFormula::Inches:
+ return (value * 0.0393700787);
+ };
+
+ case WeatherFormula::Inches:
+ switch (destUnit) {
+ case WeatherFormula::Centimeters:
+ return (value * 2.54);
+ case WeatherFormula::Millimeters:
+ return (value * 25.4);
+ };
+
+ case WeatherFormula::Knots:
+ switch (destUnit) {
+ case WeatherFormula::Kilometers:
+ return floor(value * 1.852 + 0.5);
+ case WeatherFormula::Miles:
+ return (value * 1.507794);
+ case WeatherFormula::MetersPerSecond:
+ return (value * 1.9438);
+ case WeatherFormula::Beaufort:
+ return knotsToBeaufort(value);
+ };
+ };
+ return 0;
}
-
-float HectopascalsToKilopascals(float hpa)
-{
- return (hpa / 10);
-}
-
-float inchesToKilopascals(float inches)
+
+int knotsToBeaufort(float knots)
{
- return (inches * 3.386389);
-}
-
-float millibarsToInches(float millibar)
-{
- return (millibar * 0.0295301);
-}
-
-float millibarsToKilopascals(float millibar)
-{
- return (millibar * 0.10);
-}
-
-float centimetersToIN(float cm)
-{
- return (cm * 0.393700787);
-}
-
-float inchesToCM(float inch)
-{
- return (inch * 2.54);
-}
-
-float millimetersToIN(float mm)
-{
- return (mm * 0.0393700787);
-}
-
-float inchesToMM(float inch)
-{
- return (inch * 25.4);
-}
-
-float kilometersToMS(float km)
-{
- return (km * 0.277778);
-}
-
-float milesToMS(float miles)
-{
- return (miles * 0.44704);
-}
-
-float knotsToMS(float knots)
-{
- return (knots * 1.9438);
-}
-
-float knotsToKM(float knots)
-{
- return floor(knots * 1.852 + 0.5);
-}
-
-float kilometersToKT(float km)
-{
- return (km * 0.539956803);
-}
-
-float milesToKT(float miles)
-{
- return (miles * 0.868976242);
-}
-float knotsToMI(float knots)
-{
- return (knots * 1.507794);
-}
-
-int knotsToBF(float knots)
-{
if (knots < 1) {
return 0;
} else if (knots >= 1 && knots < 4) {
@@ -158,15 +182,20 @@
}
}
-int milesToBF(float miles)
+int milesToBeaufort(float miles)
{
- return knotsToBF(miles / 1.1507794);
+ return knotsToBeaufort(miles / 1.1507794);
}
-int kilometersToBF(float km)
+int kilometersToBeaufort(float km)
{
- return knotsToBF(km / 1.852);
+ return knotsToBeaufort(km / 1.852);
}
+int metersPerSecondToBeaufort(float ms)
+{
+ return knotsToBeaufort(ms * 1.943845);
+}
+
} // namespace WeatherFormula
--- trunk/KDE/kdebase/workspace/plasma/dataengines/weather/ions/formulas.h \
#839443:839444 @@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2007 by Shawn Starr <shawn.starr@rogers.com> *
+ * Copyright (C) 2007, 2008 by Shawn Starr <shawn.starr@rogers.com> *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
@@ -26,38 +26,19 @@
namespace WeatherFormula
{
- // Convert Temperatures, pressures
- ION_EXPORT float celsiusToF(float temperature);
- ION_EXPORT float fahrenheitToC(float temperature);
- ION_EXPORT float milesToKM(float miles);
- ION_EXPORT float kilometersToMI(float km);
- ION_EXPORT float kilopascalsToInches(float kpa);
- ION_EXPORT float inchesToKilopascals(float inches);
- ION_EXPORT float millibarsToKilopascals(float milibar);
- ION_EXPORT float millibarsToInches(float milibar);
- ION_EXPORT float kilopascalsToHectopascals(float kpa);
- ION_EXPORT float HectopascalsTokilopascals(float hpa);
- ION_EXPORT float centimetersToIN(float cm);
- ION_EXPORT float inchesToCM(float inch);
- ION_EXPORT float millimetersToIN(float mm);
- ION_EXPORT float inchesToMM(float inch);
+
+ // Enumerations for unit types
+ enum Unit { NoUnit = 0, Celsius, Fahrenheit, Kelvin, Kilometers, \
MetersPerSecond, Miles, Kilopascals, + InchesHG, Millibars, \
Hectopascals, Centimeters, Millimeters, Inches, + Knots, Beaufort };
- // Winds measured in meters per second
- ION_EXPORT float kilometersToMS(float km);
- ION_EXPORT float milesToMS(float miles);
- ION_EXPORT float knotsToMS(float knots);
+ // Convert Units
+ ION_EXPORT float convert(float value, int srcUnit, int destUnit);
+ ION_EXPORT int knotsToBeaufort(float knots);
+ ION_EXPORT int milesToBeaufort(float miles);
+ ION_EXPORT int kilometersToBeaufort(float km);
+ ION_EXPORT int metersPerSecondToBeaufort(float ms);
- // Winds measured in knots
- ION_EXPORT float kilometersToKT(float km);
- ION_EXPORT float milesToKT(float miles);
- ION_EXPORT float knotsToKM(float knots);
- ION_EXPORT float knotsToMI(float knots);
-
- // Winds measured in beaufort scale value
- ION_EXPORT int knotsToBF(float knots);
- ION_EXPORT int milesToBF(float miles);
- ION_EXPORT int kilometersToBF(float km);
-
} // WeatherFormula namespace
#endif
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic