File indexing completed on 2024-05-12 15:58:51

0001 #ifndef KISLODPREFERENCES_H
0002 #define KISLODPREFERENCES_H
0003 
0004 #include <QFlags>
0005 #include "kis_assert.h"
0006 
0007 struct KisLodPreferences
0008 {
0009     enum PreferenceFlag {
0010         None = 0x0,
0011         LodSupported = 0x1,
0012         LodPreferred = 0x2
0013     };
0014     Q_DECLARE_FLAGS(PreferenceFlags, PreferenceFlag)
0015 
0016     KisLodPreferences() = default;
0017 
0018     KisLodPreferences(PreferenceFlags flags, int desiredLevelOfDetail)
0019         : m_flags(flags), m_desiredLevelOfDetail(desiredLevelOfDetail)
0020     {
0021         KIS_SAFE_ASSERT_RECOVER(m_desiredLevelOfDetail == 0 || m_flags & LodSupported) {
0022             m_desiredLevelOfDetail = 0;
0023         }
0024     }
0025 
0026     KisLodPreferences(int desiredLevelOfDetail)
0027         : m_flags(LodSupported | LodPreferred), m_desiredLevelOfDetail(desiredLevelOfDetail)
0028     {
0029     }
0030 
0031     PreferenceFlags flags() const {
0032         return m_flags;
0033     }
0034 
0035     bool lodPreferred() const {
0036         return m_flags & LodPreferred;
0037     }
0038 
0039     bool lodSupported() const {
0040         return m_flags & LodSupported;
0041     }
0042 
0043     int desiredLevelOfDetail() const {
0044         return m_desiredLevelOfDetail;
0045     }
0046 
0047 private:
0048     PreferenceFlags m_flags = None;
0049     int m_desiredLevelOfDetail = 0;
0050 };
0051 
0052 Q_DECLARE_OPERATORS_FOR_FLAGS(KisLodPreferences::PreferenceFlags)
0053 
0054 #endif // KISLODPREFERENCES_H