Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-04-09 07:49:39

0001 #pragma once
0002 /**
0003 SGLM_Modifiers.h : control keys enumeration 
0004 ============================================
0005 
0006 **/
0007 
0008 struct SGLM_Modifiers
0009 {
0010     // NB these enum values must not clash with SGLM_Modnav
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     // NB these enum values must not clash with SGLM_Modifiers
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