{
  "header": "SDL_mouse.h",
  "opaque_types": [
    {
      "name": "SDL_Cursor"
    }
  ],
  "typedefs": [
    {
      "name": "SDL_MouseID",
      "underlying_type": "Uint32"
    }
  ],
  "function_pointers": [],
  "c_type_aliases": [],
  "enums": [
    {
      "name": "SDL_SystemCursor",
      "values": [
        {
          "name": "SDL_SYSTEM_CURSOR_DEFAULT",
          "comment": "Default cursor. Usually an arrow."
        },
        {
          "name": "SDL_SYSTEM_CURSOR_TEXT",
          "comment": "Text selection. Usually an I-beam."
        },
        {
          "name": "SDL_SYSTEM_CURSOR_WAIT",
          "comment": "Wait. Usually an hourglass or watch or spinning ball."
        },
        {
          "name": "SDL_SYSTEM_CURSOR_CROSSHAIR",
          "comment": "Crosshair."
        },
        {
          "name": "SDL_SYSTEM_CURSOR_PROGRESS",
          "comment": "Program is busy but still interactive. Usually it's WAIT with an arrow."
        },
        {
          "name": "SDL_SYSTEM_CURSOR_NWSE_RESIZE",
          "comment": "Double arrow pointing northwest and southeast."
        },
        {
          "name": "SDL_SYSTEM_CURSOR_NESW_RESIZE",
          "comment": "Double arrow pointing northeast and southwest."
        },
        {
          "name": "SDL_SYSTEM_CURSOR_EW_RESIZE",
          "comment": "Double arrow pointing west and east."
        },
        {
          "name": "SDL_SYSTEM_CURSOR_NS_RESIZE",
          "comment": "Double arrow pointing north and south."
        },
        {
          "name": "SDL_SYSTEM_CURSOR_MOVE",
          "comment": "Four pointed arrow pointing north, south, east, and west."
        },
        {
          "name": "SDL_SYSTEM_CURSOR_NOT_ALLOWED",
          "comment": "Not permitted. Usually a slashed circle or crossbones."
        },
        {
          "name": "SDL_SYSTEM_CURSOR_POINTER",
          "comment": "Pointer that indicates a link. Usually a pointing hand."
        },
        {
          "name": "SDL_SYSTEM_CURSOR_NW_RESIZE",
          "comment": "Window resize top-left. This may be a single arrow or a double arrow like NWSE_RESIZE."
        },
        {
          "name": "SDL_SYSTEM_CURSOR_N_RESIZE",
          "comment": "Window resize top. May be NS_RESIZE."
        },
        {
          "name": "SDL_SYSTEM_CURSOR_NE_RESIZE",
          "comment": "Window resize top-right. May be NESW_RESIZE."
        },
        {
          "name": "SDL_SYSTEM_CURSOR_E_RESIZE",
          "comment": "Window resize right. May be EW_RESIZE."
        },
        {
          "name": "SDL_SYSTEM_CURSOR_SE_RESIZE",
          "comment": "Window resize bottom-right. May be NWSE_RESIZE."
        },
        {
          "name": "SDL_SYSTEM_CURSOR_S_RESIZE",
          "comment": "Window resize bottom. May be NS_RESIZE."
        },
        {
          "name": "SDL_SYSTEM_CURSOR_SW_RESIZE",
          "comment": "Window resize bottom-left. May be NESW_RESIZE."
        },
        {
          "name": "SDL_SYSTEM_CURSOR_W_RESIZE",
          "comment": "Window resize left. May be EW_RESIZE."
        },
        {
          "name": "SDL_SYSTEM_CURSOR_COUNT"
        }
      ]
    },
    {
      "name": "SDL_MouseWheelDirection",
      "values": [
        {
          "name": "SDL_MOUSEWHEEL_NORMAL",
          "comment": "The scroll direction is normal"
        },
        {
          "name": "SDL_MOUSEWHEEL_FLIPPED",
          "comment": "The scroll direction is flipped / natural"
        }
      ]
    }
  ],
  "structs": [],
  "unions": [],
  "flags": [
    {
      "name": "SDL_MouseButtonFlags",
      "underlying_type": "Uint32",
      "values": [
        {
          "name": "SDL_BUTTON_LEFT",
          "value": "1"
        },
        {
          "name": "SDL_BUTTON_MIDDLE",
          "value": "2"
        },
        {
          "name": "SDL_BUTTON_RIGHT",
          "value": "3"
        },
        {
          "name": "SDL_BUTTON_X1",
          "value": "4"
        },
        {
          "name": "SDL_BUTTON_X2",
          "value": "5"
        }
      ]
    }
  ],
  "functions": [
    {
      "name": "SDL_HasMouse",
      "return_type": "bool",
      "parameters": []
    },
    {
      "name": "SDL_GetMice",
      "return_type": "SDL_MouseID *",
      "parameters": [
        {
          "name": "count",
          "type": "int *"
        }
      ]
    },
    {
      "name": "SDL_GetMouseNameForID",
      "return_type": "const char *",
      "parameters": [
        {
          "name": "instance_id",
          "type": "SDL_MouseID"
        }
      ]
    },
    {
      "name": "SDL_GetMouseFocus",
      "return_type": "SDL_Window *",
      "parameters": []
    },
    {
      "name": "SDL_GetMouseState",
      "return_type": "SDL_MouseButtonFlags",
      "parameters": [
        {
          "name": "x",
          "type": "float *"
        },
        {
          "name": "y",
          "type": "float *"
        }
      ]
    },
    {
      "name": "SDL_GetGlobalMouseState",
      "return_type": "SDL_MouseButtonFlags",
      "parameters": [
        {
          "name": "x",
          "type": "float *"
        },
        {
          "name": "y",
          "type": "float *"
        }
      ]
    },
    {
      "name": "SDL_GetRelativeMouseState",
      "return_type": "SDL_MouseButtonFlags",
      "parameters": [
        {
          "name": "x",
          "type": "float *"
        },
        {
          "name": "y",
          "type": "float *"
        }
      ]
    },
    {
      "name": "SDL_WarpMouseInWindow",
      "return_type": "void",
      "parameters": [
        {
          "name": "window",
          "type": "SDL_Window *"
        },
        {
          "name": "x",
          "type": "float"
        },
        {
          "name": "y",
          "type": "float"
        }
      ]
    },
    {
      "name": "SDL_WarpMouseGlobal",
      "return_type": "bool",
      "parameters": [
        {
          "name": "x",
          "type": "float"
        },
        {
          "name": "y",
          "type": "float"
        }
      ]
    },
    {
      "name": "SDL_SetWindowRelativeMouseMode",
      "return_type": "bool",
      "parameters": [
        {
          "name": "window",
          "type": "SDL_Window *"
        },
        {
          "name": "enabled",
          "type": "bool"
        }
      ]
    },
    {
      "name": "SDL_GetWindowRelativeMouseMode",
      "return_type": "bool",
      "parameters": [
        {
          "name": "window",
          "type": "SDL_Window *"
        }
      ]
    },
    {
      "name": "SDL_CaptureMouse",
      "return_type": "bool",
      "parameters": [
        {
          "name": "enabled",
          "type": "bool"
        }
      ]
    },
    {
      "name": "SDL_CreateCursor",
      "return_type": "SDL_Cursor *",
      "parameters": [
        {
          "name": "data",
          "type": "const Uint8 *"
        },
        {
          "name": "mask",
          "type": "const Uint8 *"
        },
        {
          "name": "w",
          "type": "int"
        },
        {
          "name": "h",
          "type": "int"
        },
        {
          "name": "hot_x",
          "type": "int"
        },
        {
          "name": "hot_y",
          "type": "int"
        }
      ]
    },
    {
      "name": "SDL_CreateColorCursor",
      "return_type": "SDL_Cursor *",
      "parameters": [
        {
          "name": "surface",
          "type": "SDL_Surface *"
        },
        {
          "name": "hot_x",
          "type": "int"
        },
        {
          "name": "hot_y",
          "type": "int"
        }
      ]
    },
    {
      "name": "SDL_CreateSystemCursor",
      "return_type": "SDL_Cursor *",
      "parameters": [
        {
          "name": "id",
          "type": "SDL_SystemCursor"
        }
      ]
    },
    {
      "name": "SDL_SetCursor",
      "return_type": "bool",
      "parameters": [
        {
          "name": "cursor",
          "type": "SDL_Cursor *"
        }
      ]
    },
    {
      "name": "SDL_GetCursor",
      "return_type": "SDL_Cursor *",
      "parameters": []
    },
    {
      "name": "SDL_GetDefaultCursor",
      "return_type": "SDL_Cursor *",
      "parameters": []
    },
    {
      "name": "SDL_DestroyCursor",
      "return_type": "void",
      "parameters": [
        {
          "name": "cursor",
          "type": "SDL_Cursor *"
        }
      ]
    },
    {
      "name": "SDL_ShowCursor",
      "return_type": "bool",
      "parameters": []
    },
    {
      "name": "SDL_HideCursor",
      "return_type": "bool",
      "parameters": []
    },
    {
      "name": "SDL_CursorVisible",
      "return_type": "bool",
      "parameters": []
    }
  ]
}