// Copyright (c) 2016-2019 OPEN CASCADE SAS
//
// This file is part of Open CASCADE Technology software library.
//
// This library is free software; you can redistribute it and/or modify it under
// the terms of the GNU Lesser General Public License version 2.1 as published
// by the Free Software Foundation, with special exception defined in the file
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
// distribution for complete text of the license and disclaimer of any warranty.
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.

#ifndef _Aspect_VKeyFlags_HeaderFile
#define _Aspect_VKeyFlags_HeaderFile

//! Key modifier, for combining with general key from Aspect_VKey.
typedef unsigned int Aspect_VKeyFlags;

//! Key modifier, for combining with general key from Aspect_VKey.
enum
{
  Aspect_VKeyFlags_NONE = 0,
  // reserve first 8 bits to combine value with Aspect_VKey
  Aspect_VKeyFlags_SHIFT = 1 << 8,  //!< Aspect_VKey_Shift
  Aspect_VKeyFlags_CTRL  = 1 << 9,  //!< Aspect_VKey_Control
  Aspect_VKeyFlags_ALT   = 1 << 10, //!< Aspect_VKey_Alt
  Aspect_VKeyFlags_MENU  = 1 << 11, //!< Aspect_VKey_Menu
  Aspect_VKeyFlags_META  = 1 << 12, //!< Aspect_VKey_Meta

  Aspect_VKeyFlags_ALL = Aspect_VKeyFlags_SHIFT | Aspect_VKeyFlags_CTRL | Aspect_VKeyFlags_ALT
                         | Aspect_VKeyFlags_MENU | Aspect_VKeyFlags_META
};

//! Mouse buttons, for combining with Aspect_VKey and Aspect_VKeyFlags.
typedef unsigned int Aspect_VKeyMouse;

//! Mouse button bitmask
enum
{
  Aspect_VKeyMouse_NONE = 0, //!< no buttons

  Aspect_VKeyMouse_LeftButton   = 1 << 13, //!< mouse left   button
  Aspect_VKeyMouse_MiddleButton = 1 << 14, //!< mouse middle button (scroll)
  Aspect_VKeyMouse_RightButton  = 1 << 15, //!< mouse right  button

  Aspect_VKeyMouse_MainButtons =
    Aspect_VKeyMouse_LeftButton | Aspect_VKeyMouse_MiddleButton | Aspect_VKeyMouse_RightButton
};

#endif // _Aspect_VKeyFlags_HeaderFile
