/* * 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.0f; 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.67F)/1.8f; } double CTemperature::ToCelsius() const { return (m_value-32.0f)/1.8f; } double CTemperature::ToReaumur() const { return (m_value-32.0f)/2.25f; } double CTemperature::ToRankine() const { return m_value+459.67f; } double CTemperature::ToRomer() const { return (m_value-32.0f)*7.0f/24.0f+7.5f; } double CTemperature::ToDelisle() const { return (212.f-m_value)*5.0f/6.0f; } double CTemperature::ToNewton() const { return (m_value-32.0f)*11.0f/60.0f; } 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)); }