from typing import Any, ClassVar

from typing import overload
import mrpt.pymrpt.mrpt.img
import mrpt.pymrpt.mrpt.opengl
import mrpt.pymrpt.mrpt.system
import mrpt.pymrpt.nanogui
MRPTKMOD_ALT: mrptKeyModifier
MRPTKMOD_ALTGR: mrptKeyModifier
MRPTKMOD_CMD: mrptKeyModifier
MRPTKMOD_CONTROL: mrptKeyModifier
MRPTKMOD_META: mrptKeyModifier
MRPTKMOD_NONE: mrptKeyModifier
MRPTKMOD_SHIFT: mrptKeyModifier
MRPTKMOD_WIN: mrptKeyModifier
MRPTK_ADD: mrptKeyCode
MRPTK_ALT: mrptKeyCode
MRPTK_BACK: mrptKeyCode
MRPTK_CANCEL: mrptKeyCode
MRPTK_CAPITAL: mrptKeyCode
MRPTK_CLEAR: mrptKeyCode
MRPTK_COMMAND: mrptKeyCode
MRPTK_CONTROL: mrptKeyCode
MRPTK_DECIMAL: mrptKeyCode
MRPTK_DELETE: mrptKeyCode
MRPTK_DIVIDE: mrptKeyCode
MRPTK_DOWN: mrptKeyCode
MRPTK_END: mrptKeyCode
MRPTK_ESCAPE: mrptKeyCode
MRPTK_EXECUTE: mrptKeyCode
MRPTK_F1: mrptKeyCode
MRPTK_F10: mrptKeyCode
MRPTK_F11: mrptKeyCode
MRPTK_F12: mrptKeyCode
MRPTK_F13: mrptKeyCode
MRPTK_F14: mrptKeyCode
MRPTK_F15: mrptKeyCode
MRPTK_F16: mrptKeyCode
MRPTK_F17: mrptKeyCode
MRPTK_F18: mrptKeyCode
MRPTK_F19: mrptKeyCode
MRPTK_F2: mrptKeyCode
MRPTK_F20: mrptKeyCode
MRPTK_F21: mrptKeyCode
MRPTK_F22: mrptKeyCode
MRPTK_F23: mrptKeyCode
MRPTK_F24: mrptKeyCode
MRPTK_F3: mrptKeyCode
MRPTK_F4: mrptKeyCode
MRPTK_F5: mrptKeyCode
MRPTK_F6: mrptKeyCode
MRPTK_F7: mrptKeyCode
MRPTK_F8: mrptKeyCode
MRPTK_F9: mrptKeyCode
MRPTK_HELP: mrptKeyCode
MRPTK_HOME: mrptKeyCode
MRPTK_INSERT: mrptKeyCode
MRPTK_LBUTTON: mrptKeyCode
MRPTK_LEFT: mrptKeyCode
MRPTK_MBUTTON: mrptKeyCode
MRPTK_MENU: mrptKeyCode
MRPTK_MULTIPLY: mrptKeyCode
MRPTK_NUMLOCK: mrptKeyCode
MRPTK_NUMPAD0: mrptKeyCode
MRPTK_NUMPAD1: mrptKeyCode
MRPTK_NUMPAD2: mrptKeyCode
MRPTK_NUMPAD3: mrptKeyCode
MRPTK_NUMPAD4: mrptKeyCode
MRPTK_NUMPAD5: mrptKeyCode
MRPTK_NUMPAD6: mrptKeyCode
MRPTK_NUMPAD7: mrptKeyCode
MRPTK_NUMPAD8: mrptKeyCode
MRPTK_NUMPAD9: mrptKeyCode
MRPTK_NUMPAD_ADD: mrptKeyCode
MRPTK_NUMPAD_BEGIN: mrptKeyCode
MRPTK_NUMPAD_DECIMAL: mrptKeyCode
MRPTK_NUMPAD_DELETE: mrptKeyCode
MRPTK_NUMPAD_DIVIDE: mrptKeyCode
MRPTK_NUMPAD_DOWN: mrptKeyCode
MRPTK_NUMPAD_END: mrptKeyCode
MRPTK_NUMPAD_ENTER: mrptKeyCode
MRPTK_NUMPAD_EQUAL: mrptKeyCode
MRPTK_NUMPAD_F1: mrptKeyCode
MRPTK_NUMPAD_F2: mrptKeyCode
MRPTK_NUMPAD_F3: mrptKeyCode
MRPTK_NUMPAD_F4: mrptKeyCode
MRPTK_NUMPAD_HOME: mrptKeyCode
MRPTK_NUMPAD_INSERT: mrptKeyCode
MRPTK_NUMPAD_LEFT: mrptKeyCode
MRPTK_NUMPAD_MULTIPLY: mrptKeyCode
MRPTK_NUMPAD_PAGEDOWN: mrptKeyCode
MRPTK_NUMPAD_PAGEUP: mrptKeyCode
MRPTK_NUMPAD_RIGHT: mrptKeyCode
MRPTK_NUMPAD_SEPARATOR: mrptKeyCode
MRPTK_NUMPAD_SPACE: mrptKeyCode
MRPTK_NUMPAD_SUBTRACT: mrptKeyCode
MRPTK_NUMPAD_TAB: mrptKeyCode
MRPTK_NUMPAD_UP: mrptKeyCode
MRPTK_PAGEDOWN: mrptKeyCode
MRPTK_PAGEUP: mrptKeyCode
MRPTK_PAUSE: mrptKeyCode
MRPTK_PRINT: mrptKeyCode
MRPTK_RBUTTON: mrptKeyCode
MRPTK_RETURN: mrptKeyCode
MRPTK_RIGHT: mrptKeyCode
MRPTK_SCROLL: mrptKeyCode
MRPTK_SELECT: mrptKeyCode
MRPTK_SEPARATOR: mrptKeyCode
MRPTK_SHIFT: mrptKeyCode
MRPTK_SNAPSHOT: mrptKeyCode
MRPTK_SPACE: mrptKeyCode
MRPTK_SPECIAL1: mrptKeyCode
MRPTK_SPECIAL10: mrptKeyCode
MRPTK_SPECIAL11: mrptKeyCode
MRPTK_SPECIAL12: mrptKeyCode
MRPTK_SPECIAL13: mrptKeyCode
MRPTK_SPECIAL14: mrptKeyCode
MRPTK_SPECIAL15: mrptKeyCode
MRPTK_SPECIAL16: mrptKeyCode
MRPTK_SPECIAL17: mrptKeyCode
MRPTK_SPECIAL18: mrptKeyCode
MRPTK_SPECIAL19: mrptKeyCode
MRPTK_SPECIAL2: mrptKeyCode
MRPTK_SPECIAL20: mrptKeyCode
MRPTK_SPECIAL3: mrptKeyCode
MRPTK_SPECIAL4: mrptKeyCode
MRPTK_SPECIAL5: mrptKeyCode
MRPTK_SPECIAL6: mrptKeyCode
MRPTK_SPECIAL7: mrptKeyCode
MRPTK_SPECIAL8: mrptKeyCode
MRPTK_SPECIAL9: mrptKeyCode
MRPTK_START: mrptKeyCode
MRPTK_SUBTRACT: mrptKeyCode
MRPTK_TAB: mrptKeyCode
MRPTK_UP: mrptKeyCode
MRPTK_WINDOWS_LEFT: mrptKeyCode
MRPTK_WINDOWS_MENU: mrptKeyCode
MRPTK_WINDOWS_RIGHT: mrptKeyCode

class CBaseGUIWindow(mrpt.pymrpt.mrpt.system.CObservable):
    @overload
    def __init__(self, arg0: capsule, arg1: int, arg2: int) -> None: ...
    @overload
    def __init__(self, winobj_voidptr: capsule, CMD_CREATE_WIN: int, CMD_DESTROY_WIN: int, initial_caption: str) -> None: ...
    @overload
    def clearKeyHitFlag(self) -> None: ...
    @overload
    def clearKeyHitFlag() -> void: ...
    def getLastMousePosition(self, x: int, y: int) -> bool: ...
    @overload
    def getPushedKey(self) -> int: ...
    @overload
    def getPushedKey(self, out_pushModifier: mrptKeyModifier) -> int: ...
    @overload
    def getPushedKey(enummrpt) -> int: ...
    def getWxObject(self) -> capsule: ...
    @overload
    def isOpen(self) -> bool: ...
    @overload
    def isOpen() -> bool: ...
    @overload
    def keyHit(self) -> bool: ...
    @overload
    def keyHit() -> bool: ...
    @overload
    def notifyChildWindowDestruction(self) -> None: ...
    @overload
    def notifyChildWindowDestruction() -> void: ...
    @overload
    def notifySemThreadReady(self) -> None: ...
    @overload
    def notifySemThreadReady() -> void: ...
    def resize(self, width: int, height: int) -> None: ...
    @overload
    def setCursorCross(self, cursorIsCross: bool) -> None: ...
    @overload
    def setCursorCross(bool) -> void: ...
    def setPos(self, x: int, y: int) -> None: ...
    @overload
    def setWindowTitle(self, str: str) -> None: ...
    @overload
    def setWindowTitle(conststd) -> void: ...
    @overload
    def waitForKey(self) -> int: ...
    @overload
    def waitForKey(self, ignoreControlKeys: bool) -> int: ...
    @overload
    def waitForKey(self, ignoreControlKeys: bool, out_pushModifier: mrptKeyModifier) -> int: ...
    @overload
    def waitForKey(bool, enummrpt) -> int: ...

class CDisplayWindow(CBaseGUIWindow):
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, arg0: str) -> None: ...
    @overload
    def __init__(self, arg0: str, arg1: int) -> None: ...
    @overload
    def __init__(self, windowCaption: str, initWidth: int, initHeight: int) -> None: ...
    def Create(self, *args, **kwargs) -> Any: ...
    @overload
    def enableCursorCoordinatesVisualization(self, enable: bool) -> None: ...
    @overload
    def enableCursorCoordinatesVisualization(bool) -> void: ...
    def getLastMousePosition(self, x: int, y: int) -> bool: ...
    @overload
    def plot(self, x, y) -> None: ...
    @overload
    def plot(self, y) -> None: ...
    @overload
    def plot(constclassmrpt) -> void: ...
    def resize(self, width: int, height: int) -> None: ...
    @overload
    def setCursorCross(self, cursorIsCross: bool) -> None: ...
    @overload
    def setCursorCross(bool) -> void: ...
    def setPos(self, x: int, y: int) -> None: ...
    @overload
    def setWindowTitle(self, str: str) -> None: ...
    @overload
    def setWindowTitle(conststd) -> void: ...
    @overload
    def showImage(self, img: mrpt.pymrpt.mrpt.img.CImage) -> None: ...
    @overload
    def showImage(constclassmrpt) -> void: ...
    @overload
    def showImageAndPoints(self, img: mrpt.pymrpt.mrpt.img.CImage, x, y) -> None: ...
    @overload
    def showImageAndPoints(self, img: mrpt.pymrpt.mrpt.img.CImage, x, y, color: mrpt.pymrpt.mrpt.img.TColor) -> None: ...
    @overload
    def showImageAndPoints(self, img: mrpt.pymrpt.mrpt.img.CImage, x, y, color: mrpt.pymrpt.mrpt.img.TColor, showNumbers: bool) -> None: ...

class CDisplayWindow3D(CBaseGUIWindow):
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, arg0: str) -> None: ...
    @overload
    def __init__(self, arg0: str, arg1: int) -> None: ...
    @overload
    def __init__(self, windowCaption: str, initialWindowWidth: int, initialWindowHeight: int) -> None: ...
    def Create(self, *args, **kwargs) -> Any: ...
    @overload
    def addTextMessage(self, x_frac: float, y_frac: float, text: str) -> None: ...
    @overload
    def addTextMessage(self, x_frac: float, y_frac: float, text: str, unique_index: int) -> None: ...
    @overload
    def addTextMessage(self, x_frac: float, y_frac: float, text: str, unique_index: int, fontParams: mrpt.pymrpt.mrpt.opengl.TFontParams) -> None: ...
    @overload
    def addTextMessage() -> Any: ...
    @overload
    def addTextMessage() -> Any: ...
    @overload
    def captureImagesStart(self) -> None: ...
    @overload
    def captureImagesStart() -> void: ...
    @overload
    def captureImagesStop(self) -> None: ...
    @overload
    def captureImagesStop() -> void: ...
    @overload
    def clearTextMessages(self) -> None: ...
    @overload
    def clearTextMessages() -> Any: ...
    @overload
    def clearTextMessages() -> void: ...
    @overload
    def forceRepaint(self) -> None: ...
    @overload
    def forceRepaint() -> void: ...
    def get3DSceneAndLock(self) -> mrpt.pymrpt.mrpt.opengl.Scene: ...
    @overload
    def getCameraAzimuthDeg(self) -> float: ...
    @overload
    def getCameraAzimuthDeg() -> float: ...
    @overload
    def getCameraElevationDeg(self) -> float: ...
    @overload
    def getCameraElevationDeg() -> float: ...
    def getCameraPointingToPoint(self, x: float, y: float, z: float) -> None: ...
    @overload
    def getCameraZoom(self) -> float: ...
    @overload
    def getCameraZoom() -> float: ...
    def getDefaultViewport(self) -> mrpt.pymrpt.mrpt.opengl.Viewport: ...
    @overload
    def getFOV(self) -> float: ...
    @overload
    def getFOV() -> float: ...
    def getLastMousePosition(self, x: int, y: int) -> bool: ...
    @overload
    def getLastMousePositionRay(self, ray) -> bool: ...
    @overload
    def getLastMousePositionRay(structmrpt) -> bool: ...
    def getLastWindowImage(self, *args, **kwargs) -> Any: ...
    def getLastWindowImagePtr(self, *args, **kwargs) -> Any: ...
    @overload
    def getRenderingFPS(self) -> float: ...
    @overload
    def getRenderingFPS() -> double: ...
    def grabImageGetNextFile(self) -> str: ...
    def grabImagesStart(self, *args, **kwargs) -> Any: ...
    @overload
    def grabImagesStop(self) -> None: ...
    @overload
    def grabImagesStop() -> void: ...
    @overload
    def isCameraProjective(self) -> bool: ...
    @overload
    def isCameraProjective() -> bool: ...
    @overload
    def isCapturingImgs(self) -> bool: ...
    @overload
    def isCapturingImgs() -> bool: ...
    @overload
    def is_GL_context_created(self) -> bool: ...
    @overload
    def is_GL_context_created() -> bool: ...
    @overload
    def repaint(self) -> None: ...
    @overload
    def repaint() -> void: ...
    def resize(self, width: int, height: int) -> None: ...
    @overload
    def sendFunctionToRunOnGUIThread(self, f) -> None: ...
    @overload
    def sendFunctionToRunOnGUIThread(constclassstd) -> void: ...
    @overload
    def setCameraAzimuthDeg(self, deg: float) -> None: ...
    @overload
    def setCameraAzimuthDeg(float) -> void: ...
    @overload
    def setCameraElevationDeg(self, deg: float) -> None: ...
    @overload
    def setCameraElevationDeg(float) -> void: ...
    def setCameraPointingToPoint(self, x: float, y: float, z: float) -> None: ...
    @overload
    def setCameraProjective(self, isProjective: bool) -> None: ...
    @overload
    def setCameraProjective(bool) -> void: ...
    @overload
    def setCameraZoom(self, zoom: float) -> None: ...
    @overload
    def setCameraZoom(float) -> void: ...
    @overload
    def setCursorCross(self, cursorIsCross: bool) -> None: ...
    @overload
    def setCursorCross(bool) -> void: ...
    @overload
    def setFOV(self, v: float) -> None: ...
    @overload
    def setFOV(float) -> void: ...
    @overload
    def setImageView(self, img: mrpt.pymrpt.mrpt.img.CImage) -> None: ...
    @overload
    def setImageView(constclassmrpt) -> void: ...
    def setMaxRange(self, new_max: float) -> None: ...
    @overload
    def setMinRange(self, new_min: float) -> None: ...
    @overload
    def setMinRange(float) -> void: ...
    def setPos(self, x: int, y: int) -> None: ...
    @overload
    def setWindowTitle(self, str: str) -> None: ...
    @overload
    def setWindowTitle(conststd) -> void: ...
    @overload
    def unlockAccess3DScene(self) -> None: ...
    @overload
    def unlockAccess3DScene() -> void: ...
    @overload
    def updateTextMessage(self, unique_index: int, text: str) -> bool: ...
    @overload
    def updateTextMessage() -> Any: ...
    @overload
    def updateTextMessage(constunsignedlong, conststd) -> bool: ...
    @overload
    def updateWindow(self) -> None: ...
    @overload
    def updateWindow() -> void: ...
    @overload
    def useCameraFromScene(self) -> None: ...
    @overload
    def useCameraFromScene(self, useIt: bool) -> None: ...
    @overload
    def useCameraFromScene(bool) -> void: ...
    @overload
    def wait_for_GL_context(self) -> bool: ...
    @overload
    def wait_for_GL_context(self, timeout_seconds: float) -> bool: ...
    @overload
    def wait_for_GL_context(constdouble) -> bool: ...

class CDisplayWindow3DLocker:
    @overload
    def __init__(self, win: CDisplayWindow3D, out_scene_ptr: mrpt.pymrpt.mrpt.opengl.Scene) -> None: ...
    @overload
    def __init__(self, win: CDisplayWindow3D) -> None: ...

class CDisplayWindowGUI(mrpt.pymrpt.nanogui.Screen):
    background_scene: mrpt.pymrpt.mrpt.opengl.Scene
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, arg0: str) -> None: ...
    @overload
    def __init__(self, arg0: str, arg1: int) -> None: ...
    @overload
    def __init__(self, arg0: str, arg1: int, arg2: int) -> None: ...
    @overload
    def __init__(self, caption: str, width: int, height: int, p: CDisplayWindowGUI_Params) -> None: ...
    @overload
    def addDropFilesCallback(self, callback) -> None: ...
    @overload
    def addDropFilesCallback(constclassstd) -> void: ...
    @overload
    def addKeyboardCallback(self, callback) -> None: ...
    @overload
    def addKeyboardCallback(constclassstd) -> void: ...
    @overload
    def addLoopCallback(self, callback) -> None: ...
    @overload
    def addLoopCallback(constclassstd) -> void: ...
    def camera(self) -> CGlCanvasBase: ...
    def createManagedSubWindow(self, title: str) -> mrpt.pymrpt.nanogui.Window: ...
    @overload
    def drawContents(self) -> None: ...
    @overload
    def drawContents() -> void: ...
    def dropFilesCallback(self, *args, **kwargs) -> Any: ...
    def getSubWindowsUI(self) -> mrpt.pymrpt.nanogui.Window: ...
    def getSubwindow(self, index: int) -> mrpt.pymrpt.nanogui.Window: ...
    @overload
    def getSubwindowCount(self) -> int: ...
    @overload
    def getSubwindowCount() -> size_t: ...
    def keyboardCallback(self, *args, **kwargs) -> Any: ...
    def loopCallback(self, *args, **kwargs) -> Any: ...
    def nanogui_screen(self) -> mrpt.pymrpt.nanogui.Screen: ...
    @overload
    def onIdleLoopTasks(self) -> None: ...
    @overload
    def onIdleLoopTasks() -> void: ...
    def resize(self, width: int, height: int) -> None: ...
    @overload
    def setDropFilesCallback(self, callback) -> None: ...
    @overload
    def setDropFilesCallback(constclassstd) -> void: ...
    @overload
    def setIcon(self, img: mrpt.pymrpt.mrpt.img.CImage) -> None: ...
    @overload
    def setIcon(constclassmrpt) -> void: ...
    def setIconFromData(self, imgData: str, width: int, height: int, transparent: int) -> None: ...
    @overload
    def setKeyboardCallback(self, callback) -> None: ...
    @overload
    def setKeyboardCallback(constclassstd) -> void: ...
    @overload
    def setLoopCallback(self, callback) -> None: ...
    @overload
    def setLoopCallback(constclassstd) -> void: ...
    def setPos(self, x: int, y: int) -> None: ...
    @overload
    def setWindowTitle(self, str: str) -> None: ...
    @overload
    def setWindowTitle(conststd) -> void: ...
    @overload
    def subwindowMinimize(self, index: int) -> None: ...
    @overload
    def subwindowMinimize(size_t) -> void: ...
    @overload
    def subwindowRestore(self, index: int) -> None: ...
    @overload
    def subwindowRestore(size_t) -> void: ...
    @overload
    def subwindowSetFocused(self, index: int) -> None: ...
    @overload
    def subwindowSetFocused(size_t) -> void: ...

class CDisplayWindowGUI_Params:
    alphaBits: int
    colorBits: int
    depthBits: int
    fullscreen: bool
    glMajor: int
    glMinor: int
    gles_context: bool
    maximized: bool
    nSamples: int
    resizable: bool
    stencilBits: int
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, arg0: CDisplayWindowGUI_Params) -> None: ...

class CDisplayWindowPlots(CBaseGUIWindow):
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, arg0: str) -> None: ...
    @overload
    def __init__(self, arg0: str, arg1: int) -> None: ...
    @overload
    def __init__(self, windowCaption: str, initialWidth: int, initialHeight: int) -> None: ...
    def Create(self, *args, **kwargs) -> Any: ...
    @overload
    def addPopupMenuEntry(self, label: str, menuID: int) -> None: ...
    @overload
    def addPopupMenuEntry(conststd, int) -> void: ...
    @overload
    def axis(self, x_min: float, x_max: float, y_min: float, y_max: float) -> None: ...
    @overload
    def axis(self, x_min: float, x_max: float, y_min: float, y_max: float, aspectRatioFix: bool) -> None: ...
    @overload
    def axis_equal(self) -> None: ...
    @overload
    def axis_equal(self, enable: bool) -> None: ...
    @overload
    def axis_equal(bool) -> void: ...
    @overload
    def axis_fit(self) -> None: ...
    @overload
    def axis_fit(self, aspectRatioFix: bool) -> None: ...
    @overload
    def axis_fit(bool) -> void: ...
    @overload
    def clear(self) -> None: ...
    @overload
    def clear() -> void: ...
    @overload
    def clf(self) -> None: ...
    @overload
    def clf() -> void: ...
    @overload
    def enableMousePanZoom(self, enabled: bool) -> None: ...
    @overload
    def enableMousePanZoom(bool) -> void: ...
    def getLastMousePosition(self, x: int, y: int) -> bool: ...
    @overload
    def hold_off(self) -> None: ...
    @overload
    def hold_off() -> void: ...
    @overload
    def hold_on(self) -> None: ...
    @overload
    def hold_on() -> void: ...
    def image(self, *args, **kwargs) -> Any: ...
    def resize(self, width: int, height: int) -> None: ...
    @overload
    def setCursorCross(self, cursorIsCross: bool) -> None: ...
    @overload
    def setCursorCross(bool) -> void: ...
    def setPos(self, x: int, y: int) -> None: ...
    @overload
    def setWindowTitle(self, str: str) -> None: ...
    @overload
    def setWindowTitle(conststd) -> void: ...

class CGlCanvasBase:
    class CamaraParams:
        cameraAzimuthDeg: float
        cameraElevationDeg: float
        cameraFOV: float
        cameraIsProjective: bool
        cameraPointingX: float
        cameraPointingY: float
        cameraPointingZ: float
        cameraZoomDistance: float
        @overload
        def __init__(self) -> None: ...
        @overload
        def __init__(self, arg0: CGlCanvasBase.CamaraParams) -> None: ...
        def FromCamera(self, *args, **kwargs) -> Any: ...
        def assign(self) -> CGlCanvasBase.CamaraParams: ...
        @overload
        def setElevationDeg(self, deg: float) -> None: ...
        @overload
        def setElevationDeg(float) -> void: ...
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, arg0: CGlCanvasBase) -> None: ...
    def OnUserManuallyMovesCamera(self, new_cameraPointingX: float, new_cameraPointingY: float, new_cameraPointingZ: float, new_cameraZoomDistance: float, new_cameraElevationDeg: float, new_cameraAzimuthDeg: float) -> None: ...
    def assign(self) -> CGlCanvasBase: ...
    @overload
    def cameraFOV(self) -> float: ...
    @overload
    def cameraFOV() -> float: ...
    def cameraParams(self, *args, **kwargs) -> Any: ...
    @overload
    def getAzimuthDegrees(self) -> float: ...
    @overload
    def getAzimuthDegrees() -> float: ...
    @overload
    def getCameraPointingX(self) -> float: ...
    @overload
    def getCameraPointingX() -> float: ...
    @overload
    def getCameraPointingY(self) -> float: ...
    @overload
    def getCameraPointingY() -> float: ...
    @overload
    def getCameraPointingZ(self) -> float: ...
    @overload
    def getCameraPointingZ() -> float: ...
    @overload
    def getElevationDegrees(self) -> float: ...
    @overload
    def getElevationDegrees() -> float: ...
    def getLastMousePosition(self, x: int, y: int) -> None: ...
    def getOpenGLSceneRef(self, *args, **kwargs) -> Any: ...
    def getRefCameraParams(self, *args, **kwargs) -> Any: ...
    @overload
    def getUseCameraFromScene(self) -> bool: ...
    @overload
    def getUseCameraFromScene() -> bool: ...
    @overload
    def getZoomDistance(self) -> float: ...
    @overload
    def getZoomDistance() -> float: ...
    @overload
    def isCameraProjective(self) -> bool: ...
    @overload
    def isCameraProjective() -> bool: ...
    def resizeViewport(self, w: int, h: int) -> None: ...
    @overload
    def setAzimuthDegrees(self, ang: float) -> None: ...
    @overload
    def setAzimuthDegrees(float) -> void: ...
    @overload
    def setCameraFOV(self, FOV: float) -> None: ...
    @overload
    def setCameraFOV(float) -> void: ...
    @overload
    def setCameraParams(self, params) -> None: ...
    @overload
    def setCameraParams(conststructmrpt) -> void: ...
    def setCameraPointing(self, pointX: float, pointY: float, pointZ: float) -> None: ...
    @overload
    def setCameraProjective(self, is: bool) -> None: ...
    @overload
    def setCameraProjective(bool) -> void: ...
    @overload
    def setElevationDegrees(self, ang: float) -> None: ...
    @overload
    def setElevationDegrees(float) -> void: ...
    @overload
    def setMaximumZoom(self, zoom: float) -> None: ...
    @overload
    def setMaximumZoom(float) -> void: ...
    @overload
    def setMinimumZoom(self, zoom: float) -> None: ...
    @overload
    def setMinimumZoom(float) -> void: ...
    @overload
    def setMouseClicked(self, is: bool) -> None: ...
    @overload
    def setMouseClicked(bool) -> void: ...
    def setMousePos(self, x: int, y: int) -> None: ...
    @overload
    def setOpenGLSceneRef(self, scene: mrpt.pymrpt.mrpt.opengl.Scene) -> None: ...
    @overload
    def setOpenGLSceneRef(classstd) -> void: ...
    @overload
    def setUseCameraFromScene(self, is: bool) -> None: ...
    @overload
    def setUseCameraFromScene(bool) -> void: ...
    @overload
    def setZoomDistance(self, zoom: float) -> None: ...
    @overload
    def setZoomDistance(float) -> void: ...
    def updateCameraParams(self, cam: mrpt.pymrpt.mrpt.opengl.CCamera) -> mrpt.pymrpt.mrpt.opengl.CCamera: ...
    def updateLastPos(self, x: int, y: int) -> None: ...
    def updateOrbitCamera(self, params, x: int, y: int) -> None: ...
    def updatePan(self, params, x: int, y: int) -> None: ...
    def updateRotate(self, params, x: int, y: int) -> None: ...
    @overload
    def updateZoom(self, params, x: int, y: int) -> None: ...
    @overload
    def updateZoom(self, params, delta: float) -> None: ...
    @overload
    def updateZoom(structmrpt, float) -> void: ...

class CGlCanvasBaseHeadless(CGlCanvasBase):
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, arg0: CGlCanvasBaseHeadless) -> None: ...
    @overload
    def __init__(self, arg0: CGlCanvasBaseHeadless) -> None: ...
    def assign(self) -> CGlCanvasBaseHeadless: ...

class MRPT2NanoguiGLCanvas(mrpt.pymrpt.nanogui.GLCanvas):
    scene: mrpt.pymrpt.mrpt.opengl.Scene
    def __init__(self, *args, **kwargs) -> None: ...
    def camera(self) -> CGlCanvasBase: ...
    @overload
    def drawGL(self) -> None: ...
    @overload
    def drawGL() -> void: ...

class mrptEvent3DWindowGrabImageFile(mrpt.pymrpt.mrpt.system.mrptEvent):
    def __init__(self, obj: CDisplayWindow3D, _img_file: str) -> None: ...

class mrptEventMouseDown(mrpt.pymrpt.mrpt.system.mrptEvent):
    coords: mrpt.pymrpt.mrpt.img.TPixelCoord
    leftButton: bool
    rightButton: bool
    def __init__(self, obj: CBaseGUIWindow, _coords: mrpt.pymrpt.mrpt.img.TPixelCoord, _leftButton: bool, _rightButton: bool) -> None: ...
    def assign(self) -> mrptEventMouseDown: ...

class mrptEventMouseMove(mrpt.pymrpt.mrpt.system.mrptEvent):
    coords: mrpt.pymrpt.mrpt.img.TPixelCoord
    leftButton: bool
    rightButton: bool
    def __init__(self, obj: CBaseGUIWindow, _coords: mrpt.pymrpt.mrpt.img.TPixelCoord, _leftButton: bool, _rightButton: bool) -> None: ...
    def assign(self) -> mrptEventMouseMove: ...

class mrptEventWindowChar(mrpt.pymrpt.mrpt.system.mrptEvent):
    char_code: int
    key_modifiers: mrptKeyModifier
    def __init__(self, obj: CBaseGUIWindow, _char_code: int, _key_mod: mrptKeyModifier) -> None: ...
    def assign(self) -> mrptEventWindowChar: ...

class mrptEventWindowClosed(mrpt.pymrpt.mrpt.system.mrptEvent):
    allow_close: bool
    @overload
    def __init__(self, arg0: CBaseGUIWindow) -> None: ...
    @overload
    def __init__(self, obj: CBaseGUIWindow, _allow_close: bool) -> None: ...
    def assign(self) -> mrptEventWindowClosed: ...

class mrptEventWindowResize(mrpt.pymrpt.mrpt.system.mrptEvent):
    new_height: int
    new_width: int
    def __init__(self, obj: CBaseGUIWindow, _new_width: int, _new_height: int) -> None: ...
    def assign(self) -> mrptEventWindowResize: ...

class mrptKeyCode:
    __doc__: ClassVar[str] = ...  # read-only
    __members__: ClassVar[dict] = ...  # read-only
    MRPTK_ADD: ClassVar[mrptKeyCode] = ...
    MRPTK_ALT: ClassVar[mrptKeyCode] = ...
    MRPTK_BACK: ClassVar[mrptKeyCode] = ...
    MRPTK_CANCEL: ClassVar[mrptKeyCode] = ...
    MRPTK_CAPITAL: ClassVar[mrptKeyCode] = ...
    MRPTK_CLEAR: ClassVar[mrptKeyCode] = ...
    MRPTK_COMMAND: ClassVar[mrptKeyCode] = ...
    MRPTK_CONTROL: ClassVar[mrptKeyCode] = ...
    MRPTK_DECIMAL: ClassVar[mrptKeyCode] = ...
    MRPTK_DELETE: ClassVar[mrptKeyCode] = ...
    MRPTK_DIVIDE: ClassVar[mrptKeyCode] = ...
    MRPTK_DOWN: ClassVar[mrptKeyCode] = ...
    MRPTK_END: ClassVar[mrptKeyCode] = ...
    MRPTK_ESCAPE: ClassVar[mrptKeyCode] = ...
    MRPTK_EXECUTE: ClassVar[mrptKeyCode] = ...
    MRPTK_F1: ClassVar[mrptKeyCode] = ...
    MRPTK_F10: ClassVar[mrptKeyCode] = ...
    MRPTK_F11: ClassVar[mrptKeyCode] = ...
    MRPTK_F12: ClassVar[mrptKeyCode] = ...
    MRPTK_F13: ClassVar[mrptKeyCode] = ...
    MRPTK_F14: ClassVar[mrptKeyCode] = ...
    MRPTK_F15: ClassVar[mrptKeyCode] = ...
    MRPTK_F16: ClassVar[mrptKeyCode] = ...
    MRPTK_F17: ClassVar[mrptKeyCode] = ...
    MRPTK_F18: ClassVar[mrptKeyCode] = ...
    MRPTK_F19: ClassVar[mrptKeyCode] = ...
    MRPTK_F2: ClassVar[mrptKeyCode] = ...
    MRPTK_F20: ClassVar[mrptKeyCode] = ...
    MRPTK_F21: ClassVar[mrptKeyCode] = ...
    MRPTK_F22: ClassVar[mrptKeyCode] = ...
    MRPTK_F23: ClassVar[mrptKeyCode] = ...
    MRPTK_F24: ClassVar[mrptKeyCode] = ...
    MRPTK_F3: ClassVar[mrptKeyCode] = ...
    MRPTK_F4: ClassVar[mrptKeyCode] = ...
    MRPTK_F5: ClassVar[mrptKeyCode] = ...
    MRPTK_F6: ClassVar[mrptKeyCode] = ...
    MRPTK_F7: ClassVar[mrptKeyCode] = ...
    MRPTK_F8: ClassVar[mrptKeyCode] = ...
    MRPTK_F9: ClassVar[mrptKeyCode] = ...
    MRPTK_HELP: ClassVar[mrptKeyCode] = ...
    MRPTK_HOME: ClassVar[mrptKeyCode] = ...
    MRPTK_INSERT: ClassVar[mrptKeyCode] = ...
    MRPTK_LBUTTON: ClassVar[mrptKeyCode] = ...
    MRPTK_LEFT: ClassVar[mrptKeyCode] = ...
    MRPTK_MBUTTON: ClassVar[mrptKeyCode] = ...
    MRPTK_MENU: ClassVar[mrptKeyCode] = ...
    MRPTK_MULTIPLY: ClassVar[mrptKeyCode] = ...
    MRPTK_NUMLOCK: ClassVar[mrptKeyCode] = ...
    MRPTK_NUMPAD0: ClassVar[mrptKeyCode] = ...
    MRPTK_NUMPAD1: ClassVar[mrptKeyCode] = ...
    MRPTK_NUMPAD2: ClassVar[mrptKeyCode] = ...
    MRPTK_NUMPAD3: ClassVar[mrptKeyCode] = ...
    MRPTK_NUMPAD4: ClassVar[mrptKeyCode] = ...
    MRPTK_NUMPAD5: ClassVar[mrptKeyCode] = ...
    MRPTK_NUMPAD6: ClassVar[mrptKeyCode] = ...
    MRPTK_NUMPAD7: ClassVar[mrptKeyCode] = ...
    MRPTK_NUMPAD8: ClassVar[mrptKeyCode] = ...
    MRPTK_NUMPAD9: ClassVar[mrptKeyCode] = ...
    MRPTK_NUMPAD_ADD: ClassVar[mrptKeyCode] = ...
    MRPTK_NUMPAD_BEGIN: ClassVar[mrptKeyCode] = ...
    MRPTK_NUMPAD_DECIMAL: ClassVar[mrptKeyCode] = ...
    MRPTK_NUMPAD_DELETE: ClassVar[mrptKeyCode] = ...
    MRPTK_NUMPAD_DIVIDE: ClassVar[mrptKeyCode] = ...
    MRPTK_NUMPAD_DOWN: ClassVar[mrptKeyCode] = ...
    MRPTK_NUMPAD_END: ClassVar[mrptKeyCode] = ...
    MRPTK_NUMPAD_ENTER: ClassVar[mrptKeyCode] = ...
    MRPTK_NUMPAD_EQUAL: ClassVar[mrptKeyCode] = ...
    MRPTK_NUMPAD_F1: ClassVar[mrptKeyCode] = ...
    MRPTK_NUMPAD_F2: ClassVar[mrptKeyCode] = ...
    MRPTK_NUMPAD_F3: ClassVar[mrptKeyCode] = ...
    MRPTK_NUMPAD_F4: ClassVar[mrptKeyCode] = ...
    MRPTK_NUMPAD_HOME: ClassVar[mrptKeyCode] = ...
    MRPTK_NUMPAD_INSERT: ClassVar[mrptKeyCode] = ...
    MRPTK_NUMPAD_LEFT: ClassVar[mrptKeyCode] = ...
    MRPTK_NUMPAD_MULTIPLY: ClassVar[mrptKeyCode] = ...
    MRPTK_NUMPAD_PAGEDOWN: ClassVar[mrptKeyCode] = ...
    MRPTK_NUMPAD_PAGEUP: ClassVar[mrptKeyCode] = ...
    MRPTK_NUMPAD_RIGHT: ClassVar[mrptKeyCode] = ...
    MRPTK_NUMPAD_SEPARATOR: ClassVar[mrptKeyCode] = ...
    MRPTK_NUMPAD_SPACE: ClassVar[mrptKeyCode] = ...
    MRPTK_NUMPAD_SUBTRACT: ClassVar[mrptKeyCode] = ...
    MRPTK_NUMPAD_TAB: ClassVar[mrptKeyCode] = ...
    MRPTK_NUMPAD_UP: ClassVar[mrptKeyCode] = ...
    MRPTK_PAGEDOWN: ClassVar[mrptKeyCode] = ...
    MRPTK_PAGEUP: ClassVar[mrptKeyCode] = ...
    MRPTK_PAUSE: ClassVar[mrptKeyCode] = ...
    MRPTK_PRINT: ClassVar[mrptKeyCode] = ...
    MRPTK_RBUTTON: ClassVar[mrptKeyCode] = ...
    MRPTK_RETURN: ClassVar[mrptKeyCode] = ...
    MRPTK_RIGHT: ClassVar[mrptKeyCode] = ...
    MRPTK_SCROLL: ClassVar[mrptKeyCode] = ...
    MRPTK_SELECT: ClassVar[mrptKeyCode] = ...
    MRPTK_SEPARATOR: ClassVar[mrptKeyCode] = ...
    MRPTK_SHIFT: ClassVar[mrptKeyCode] = ...
    MRPTK_SNAPSHOT: ClassVar[mrptKeyCode] = ...
    MRPTK_SPACE: ClassVar[mrptKeyCode] = ...
    MRPTK_SPECIAL1: ClassVar[mrptKeyCode] = ...
    MRPTK_SPECIAL10: ClassVar[mrptKeyCode] = ...
    MRPTK_SPECIAL11: ClassVar[mrptKeyCode] = ...
    MRPTK_SPECIAL12: ClassVar[mrptKeyCode] = ...
    MRPTK_SPECIAL13: ClassVar[mrptKeyCode] = ...
    MRPTK_SPECIAL14: ClassVar[mrptKeyCode] = ...
    MRPTK_SPECIAL15: ClassVar[mrptKeyCode] = ...
    MRPTK_SPECIAL16: ClassVar[mrptKeyCode] = ...
    MRPTK_SPECIAL17: ClassVar[mrptKeyCode] = ...
    MRPTK_SPECIAL18: ClassVar[mrptKeyCode] = ...
    MRPTK_SPECIAL19: ClassVar[mrptKeyCode] = ...
    MRPTK_SPECIAL2: ClassVar[mrptKeyCode] = ...
    MRPTK_SPECIAL20: ClassVar[mrptKeyCode] = ...
    MRPTK_SPECIAL3: ClassVar[mrptKeyCode] = ...
    MRPTK_SPECIAL4: ClassVar[mrptKeyCode] = ...
    MRPTK_SPECIAL5: ClassVar[mrptKeyCode] = ...
    MRPTK_SPECIAL6: ClassVar[mrptKeyCode] = ...
    MRPTK_SPECIAL7: ClassVar[mrptKeyCode] = ...
    MRPTK_SPECIAL8: ClassVar[mrptKeyCode] = ...
    MRPTK_SPECIAL9: ClassVar[mrptKeyCode] = ...
    MRPTK_START: ClassVar[mrptKeyCode] = ...
    MRPTK_SUBTRACT: ClassVar[mrptKeyCode] = ...
    MRPTK_TAB: ClassVar[mrptKeyCode] = ...
    MRPTK_UP: ClassVar[mrptKeyCode] = ...
    MRPTK_WINDOWS_LEFT: ClassVar[mrptKeyCode] = ...
    MRPTK_WINDOWS_MENU: ClassVar[mrptKeyCode] = ...
    MRPTK_WINDOWS_RIGHT: ClassVar[mrptKeyCode] = ...
    __entries: ClassVar[dict] = ...
    def __init__(self, value: int) -> None: ...
    def __and__(self, other: object) -> object: ...
    def __eq__(self, other: object) -> bool: ...
    def __ge__(self, other: object) -> bool: ...
    def __getstate__(self) -> int: ...
    def __gt__(self, other: object) -> bool: ...
    def __hash__(self) -> int: ...
    def __index__(self) -> int: ...
    def __int__(self) -> int: ...
    def __invert__(self) -> object: ...
    def __le__(self, other: object) -> bool: ...
    def __lt__(self, other: object) -> bool: ...
    def __ne__(self, other: object) -> bool: ...
    def __or__(self, other: object) -> object: ...
    def __rand__(self, other: object) -> object: ...
    def __ror__(self, other: object) -> object: ...
    def __rxor__(self, other: object) -> object: ...
    def __setstate__(self, state: int) -> None: ...
    def __xor__(self, other: object) -> object: ...
    @property
    def name(self) -> str: ...
    @property
    def value(self) -> int: ...

class mrptKeyModifier:
    __doc__: ClassVar[str] = ...  # read-only
    __members__: ClassVar[dict] = ...  # read-only
    MRPTKMOD_ALT: ClassVar[mrptKeyModifier] = ...
    MRPTKMOD_ALTGR: ClassVar[mrptKeyModifier] = ...
    MRPTKMOD_CMD: ClassVar[mrptKeyModifier] = ...
    MRPTKMOD_CONTROL: ClassVar[mrptKeyModifier] = ...
    MRPTKMOD_META: ClassVar[mrptKeyModifier] = ...
    MRPTKMOD_NONE: ClassVar[mrptKeyModifier] = ...
    MRPTKMOD_SHIFT: ClassVar[mrptKeyModifier] = ...
    MRPTKMOD_WIN: ClassVar[mrptKeyModifier] = ...
    __entries: ClassVar[dict] = ...
    def __init__(self, value: int) -> None: ...
    def __and__(self, other: object) -> object: ...
    def __eq__(self, other: object) -> bool: ...
    def __ge__(self, other: object) -> bool: ...
    def __getstate__(self) -> int: ...
    def __gt__(self, other: object) -> bool: ...
    def __hash__(self) -> int: ...
    def __index__(self) -> int: ...
    def __int__(self) -> int: ...
    def __invert__(self) -> object: ...
    def __le__(self, other: object) -> bool: ...
    def __lt__(self, other: object) -> bool: ...
    def __ne__(self, other: object) -> bool: ...
    def __or__(self, other: object) -> object: ...
    def __rand__(self, other: object) -> object: ...
    def __ror__(self, other: object) -> object: ...
    def __rxor__(self, other: object) -> object: ...
    def __setstate__(self, state: int) -> None: ...
    def __xor__(self, other: object) -> object: ...
    @property
    def name(self) -> str: ...
    @property
    def value(self) -> int: ...
