File indexing completed on 2024-05-12 04:44:33
0001 // SPDX-FileCopyrightText: Lukas Sommer <sommerluk@gmail.com> 0002 // SPDX-License-Identifier: BSD-2-Clause OR MIT 0003 0004 #ifndef HELPERQTTYPES_H 0005 #define HELPERQTTYPES_H 0006 0007 #include <qcolor.h> 0008 #include <qlist.h> 0009 0010 /** @internal 0011 * 0012 * @file 0013 * 0014 * Type declarations for types that Qt uses in its API and that have 0015 * changed between Qt5 and Qt6. */ 0016 0017 namespace PerceptualColor 0018 { 0019 0020 /** @internal 0021 * 0022 * The type that <tt>QColor</tt> uses for floating point values. 0023 * 0024 * This type might vary: On Qt6, it’s <tt>float</tt> while on Qt5 it 0025 * is <tt>qreal</tt> which might be either <tt>float</tt> or <tt>double</tt> 0026 * depending on the options with which Qt was compiled. */ 0027 using QColorFloatType = decltype(std::declval<QColor>().redF()); 0028 static_assert(std::is_floating_point<QColorFloatType>()); 0029 static_assert( // 0030 std::is_same_v<QColorFloatType, decltype(std::declval<QColor>().redF())>); 0031 static_assert( // 0032 std::is_same_v<QColorFloatType, decltype(std::declval<QColor>().greenF())>); 0033 static_assert( // 0034 std::is_same_v<QColorFloatType, decltype(std::declval<QColor>().blueF())>); 0035 static_assert( // 0036 std::is_same_v<QColorFloatType, decltype(std::declval<QColor>().alphaF())>); 0037 static_assert( // 0038 std::is_same_v<QColorFloatType, decltype(std::declval<QColor>().valueF())>); 0039 static_assert( // 0040 std::is_same_v<QColorFloatType, decltype(std::declval<QColor>().lightnessF())>); 0041 static_assert( // 0042 std::is_same_v<QColorFloatType, decltype(std::declval<QColor>().saturationF())>); 0043 static_assert( // 0044 std::is_same_v<QColorFloatType, decltype(std::declval<QColor>().hsvSaturationF())>); 0045 static_assert( // 0046 std::is_same_v<QColorFloatType, decltype(std::declval<QColor>().hslSaturationF())>); 0047 static_assert( // 0048 std::is_same_v<QColorFloatType, decltype(std::declval<QColor>().hsvHueF())>); 0049 static_assert( // 0050 std::is_same_v<QColorFloatType, decltype(std::declval<QColor>().hslHueF())>); 0051 static_assert( // 0052 std::is_same_v<QColorFloatType, decltype(std::declval<QColor>().hueF())>); 0053 static_assert( // 0054 std::is_same_v<QColorFloatType, decltype(std::declval<QColor>().magentaF())>); 0055 static_assert( // 0056 std::is_same_v<QColorFloatType, decltype(std::declval<QColor>().cyanF())>); 0057 static_assert( // 0058 std::is_same_v<QColorFloatType, decltype(std::declval<QColor>().yellowF())>); 0059 0060 /** @internal 0061 * 0062 * The type that <tt>QList</tt> uses for index. 0063 * 0064 * This type might vary between Qt5 and Qt6. */ 0065 using QListSizeType = decltype(std::declval<QList<int>>().count()); 0066 static_assert( // 0067 std::is_same_v<QListSizeType, decltype(std::declval<QList<int>>().count())>); 0068 static_assert( // 0069 std::is_same_v<QListSizeType, decltype(std::declval<QList<int>>().size())>); 0070 static_assert( // 0071 std::is_same_v<QListSizeType, decltype(std::declval<QList<int>>().indexOf(0))>); 0072 static_assert( // 0073 std::is_same_v<QListSizeType, decltype(std::declval<QList<int>>().lastIndexOf(0))>); 0074 0075 /** @internal 0076 * 0077 * The type that <tt>QString</tt> uses for length. 0078 * 0079 * This type might vary between Qt5 and Qt6. 0080 * 0081 * @sa @ref QStringSize */ 0082 using QStringLength = decltype(std::declval<QString>().length()); 0083 static_assert( // 0084 std::is_same_v<QStringLength, decltype(std::declval<QString>().length())>); 0085 static_assert( // 0086 std::is_same_v<QStringLength, decltype(std::declval<QString>().size())>); 0087 0088 /** @internal 0089 * 0090 * The type that <tt>QString</tt> uses for size. 0091 * 0092 * This type might vary between Qt5 and Qt6. 0093 * 0094 * @sa @ref QStringLength */ 0095 using QStringSize = decltype(std::declval<QString>().size()); 0096 static_assert( // 0097 std::is_same_v<QStringLength, decltype(std::declval<QString>().length())>); 0098 static_assert( // 0099 std::is_same_v<QStringLength, decltype(std::declval<QString>().size())>); 0100 0101 } // namespace PerceptualColor 0102 0103 #endif // HELPERQTTYPES_H