tagparser/size.cpp

40 lines
1.2 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "./size.h"
namespace TagParser {
/// \cond
constexpr Size fromHeightAndAspectRatio(std::uint32_t height, std::uint32_t numerator = 4, std::uint32_t denominator = 3)
{
return Size(height * numerator / denominator, height);
}
/// \endcond
/*!
* \brief Returns an abbreviation for the current instance, eg. 720p for sizes greater than 960×720
* and 1080p for sizes greater than 1440×1080.
* \remarks The width thresolds are for 4:3 resolutions so both, 4:3 and 16:9 "720p" is considered as such.
*/
std::string_view Size::abbreviation() const
{
if (*this >= fromHeightAndAspectRatio(4320)) {
return "8k";
} else if (*this >= fromHeightAndAspectRatio(2160)) {
return "4k";
} else if (*this >= fromHeightAndAspectRatio(1080)) {
return "1080p";
} else if (*this >= fromHeightAndAspectRatio(720)) {
return "720p";
} else if (*this >= fromHeightAndAspectRatio(576)) {
return "576p";
} else if (*this >= fromHeightAndAspectRatio(480)) {
return "480p";
} else if (*this >= fromHeightAndAspectRatio(320)) {
return "320p";
} else if (*this >= fromHeightAndAspectRatio(240)) {
return "240p";
}
return "<240p";
}
} // namespace TagParser