/* * Copyright (C) 2005-2018 Team Kodi * This file is part of Kodi - https://kodi.tv * * SPDX-License-Identifier: GPL-2.0-or-later * See LICENSES/README.md for more information. */ #include "Temperature.h" #include "utils/Archive.h" #include "utils/StringUtils.h" #include CTemperature::CTemperature() { m_value = 0.0; m_valid=false; } CTemperature::CTemperature(const CTemperature& temperature) { m_value=temperature.m_value; m_valid=temperature.m_valid; } CTemperature::CTemperature(double value) { m_value=value; m_valid=true; } bool CTemperature::operator >(const CTemperature& right) const { assert(IsValid()); assert(right.IsValid()); if (!IsValid() || !right.IsValid()) return false; if (this==&right) return false; return (m_value>right.m_value); } bool CTemperature::operator >=(const CTemperature& right) const { return operator >(right) || operator ==(right); } bool CTemperature::operator <(const CTemperature& right) const { assert(IsValid()); assert(right.IsValid()); if (!IsValid() || !right.IsValid()) return false; if (this==&right) return false; return (m_value(double right) const { assert(IsValid()); if (!IsValid()) return false; return (m_value>right); } bool CTemperature::operator >=(double right) const { return operator >(right) || operator ==(right); } bool CTemperature::operator <(double right) const { assert(IsValid()); if (!IsValid()) return false; return (m_value>m_value; ar>>m_valid; } } bool CTemperature::IsValid() const { return m_valid; } double CTemperature::ToFahrenheit() const { return m_value; } double CTemperature::ToKelvin() const { return (m_value + 459.67) / 1.8; } double CTemperature::ToCelsius() const { return (m_value - 32.0) / 1.8; } double CTemperature::ToReaumur() const { return (m_value - 32.0) / 2.25; } double CTemperature::ToRankine() const { return m_value + 459.67; } double CTemperature::ToRomer() const { return (m_value - 32.0) * 7.0 / 24.0 + 7.5; } double CTemperature::ToDelisle() const { return (212.0 - m_value) * 5.0 / 6.0; } double CTemperature::ToNewton() const { return (m_value - 32.0) * 11.0 / 60.0; } double CTemperature::To(Unit temperatureUnit) const { if (!IsValid()) return 0; double value = 0.0; switch (temperatureUnit) { case UnitFahrenheit: value=ToFahrenheit(); break; case UnitKelvin: value=ToKelvin(); break; case UnitCelsius: value=ToCelsius(); break; case UnitReaumur: value=ToReaumur(); break; case UnitRankine: value=ToRankine(); break; case UnitRomer: value=ToRomer(); break; case UnitDelisle: value=ToDelisle(); break; case UnitNewton: value=ToNewton(); break; default: assert(false); break; } return value; } // Returns temperature as localized string std::string CTemperature::ToString(Unit temperatureUnit) const { if (!IsValid()) return ""; return StringUtils::Format("{:2.0f}", To(temperatureUnit)); }