File indexing completed on 2026-04-09 07:49:39
0001 #pragma once
0002
0003
0004
0005
0006
0007
0008 struct SGLM_Modifiers
0009 {
0010
0011 enum {
0012 MOD_SHIFT = 0x1 << 0,
0013 MOD_CONTROL = 0x1 << 1,
0014 MOD_ALT = 0x1 << 2,
0015 MOD_SUPER = 0x1 << 3,
0016 MOD_ALL = MOD_SHIFT | MOD_CONTROL | MOD_ALT | MOD_SUPER
0017 };
0018
0019 static bool IsNone(unsigned modifiers);
0020 static bool IsShift(unsigned modifiers);
0021 static bool IsControl(unsigned modifiers);
0022 static bool IsAlt(unsigned modifiers);
0023 static bool IsSuper(unsigned modifiers);
0024
0025 static std::string Desc(unsigned modifiers);
0026 };
0027
0028
0029 inline bool SGLM_Modifiers::IsNone( unsigned modifiers) { return 0 == (modifiers & MOD_ALL ) ; }
0030 inline bool SGLM_Modifiers::IsShift( unsigned modifiers) { return 0 != (modifiers & MOD_SHIFT) ; }
0031 inline bool SGLM_Modifiers::IsControl(unsigned modifiers) { return 0 != (modifiers & MOD_CONTROL) ; }
0032 inline bool SGLM_Modifiers::IsAlt( unsigned modifiers) { return 0 != (modifiers & MOD_ALT) ; }
0033 inline bool SGLM_Modifiers::IsSuper( unsigned modifiers) { return 0 != (modifiers & MOD_SUPER) ; }
0034
0035 inline std::string SGLM_Modifiers::Desc(unsigned modifiers)
0036 {
0037 std::stringstream ss ;
0038 ss << "SGLM_Modifiers::Desc["
0039 << ( IsNone( modifiers) ? " NONE" : "" )
0040 << ( IsShift( modifiers) ? " SHIFT" : "" )
0041 << ( IsControl(modifiers) ? " CONTROL" : "" )
0042 << ( IsAlt( modifiers) ? " ALT" : "" )
0043 << ( IsSuper( modifiers) ? " SUPER" : "" )
0044 << "]"
0045 ;
0046 std::string str = ss.str();
0047 return str ;
0048 }
0049
0050
0051
0052
0053 struct SGLM_Modnav
0054 {
0055
0056 enum {
0057 MOD_W = 0x1 << 4,
0058 MOD_A = 0x1 << 5,
0059 MOD_S = 0x1 << 6,
0060 MOD_D = 0x1 << 7,
0061 MOD_Z = 0x1 << 8,
0062 MOD_X = 0x1 << 9,
0063 MOD_Q = 0x1 << 10,
0064 MOD_E = 0x1 << 11,
0065 MOD_R = 0x1 << 12,
0066 MOD_Y = 0x1 << 13,
0067 MOD_ALL = MOD_W | MOD_A | MOD_S | MOD_D | MOD_Z | MOD_X | MOD_Q | MOD_E | MOD_R | MOD_Y
0068 };
0069
0070 static bool IsNone(unsigned modifiers);
0071 static bool IsW(unsigned modifiers);
0072 static bool IsA(unsigned modifiers);
0073 static bool IsS(unsigned modifiers);
0074 static bool IsD(unsigned modifiers);
0075 static bool IsZ(unsigned modifiers);
0076 static bool IsX(unsigned modifiers);
0077 static bool IsQ(unsigned modifiers);
0078 static bool IsE(unsigned modifiers);
0079 static bool IsR(unsigned modifiers);
0080 static bool IsY(unsigned modifiers);
0081
0082 static std::string Desc(unsigned modifiers);
0083 };
0084
0085
0086
0087 inline bool SGLM_Modnav::IsNone( unsigned modifiers) { return 0 == (modifiers & MOD_ALL ) ; }
0088 inline bool SGLM_Modnav::IsW( unsigned modifiers) { return 0 != (modifiers & MOD_W) ; }
0089 inline bool SGLM_Modnav::IsA( unsigned modifiers) { return 0 != (modifiers & MOD_A) ; }
0090 inline bool SGLM_Modnav::IsS( unsigned modifiers) { return 0 != (modifiers & MOD_S) ; }
0091 inline bool SGLM_Modnav::IsD( unsigned modifiers) { return 0 != (modifiers & MOD_D) ; }
0092 inline bool SGLM_Modnav::IsZ( unsigned modifiers) { return 0 != (modifiers & MOD_Z) ; }
0093 inline bool SGLM_Modnav::IsX( unsigned modifiers) { return 0 != (modifiers & MOD_X) ; }
0094 inline bool SGLM_Modnav::IsQ( unsigned modifiers) { return 0 != (modifiers & MOD_Q) ; }
0095 inline bool SGLM_Modnav::IsE( unsigned modifiers) { return 0 != (modifiers & MOD_E) ; }
0096 inline bool SGLM_Modnav::IsR( unsigned modifiers) { return 0 != (modifiers & MOD_R) ; }
0097 inline bool SGLM_Modnav::IsY( unsigned modifiers) { return 0 != (modifiers & MOD_Y) ; }
0098
0099 inline std::string SGLM_Modnav::Desc(unsigned modifiers)
0100 {
0101 std::stringstream ss ;
0102 ss << "SGLM_Modnav::Desc["
0103 << ( IsNone( modifiers) ? " NONE" : "" )
0104 << ( IsW( modifiers) ? " W" : "" )
0105 << ( IsA( modifiers) ? " A" : "" )
0106 << ( IsS( modifiers) ? " S" : "" )
0107 << ( IsD( modifiers) ? " D" : "" )
0108 << ( IsZ( modifiers) ? " Z" : "" )
0109 << ( IsX( modifiers) ? " X" : "" )
0110 << ( IsQ( modifiers) ? " Q" : "" )
0111 << ( IsE( modifiers) ? " E" : "" )
0112 << ( IsR( modifiers) ? " R" : "" )
0113 << ( IsY( modifiers) ? " Y" : "" )
0114 << "]"
0115 ;
0116 std::string str = ss.str();
0117 return str ;
0118 }
0119
0120
0121