public static GLFWcharfun setErrorCallback(GLFWwindow window, GLFWcharfun cbfun) { return(Glfwint.setErrorCallback(window.handle, cbfun)); }
public static extern GLFWcharfun glfwSetCharCallback(IntPtr window, GLFWcharfun cbfun);
public static extern void glfwSetCharCallback(GLFWcharfun cbfun);
internal OpenGLContext(string name) { if (GLFW.GlfwInit() == 0) { Console.Error.WriteLine("GLFW failed to initialize!"); Environment.Exit(1); } Window = GLFW.GlfwCreateWindow(1920, 1080, name, null, null); if (Window == null) { Console.Error.WriteLine("GLFW failed to open window!"); GLFW.GlfwTerminate(); Environment.Exit(1); } Input = new InputSource(); GLFW.GlfwMakeContextCurrent(Window); StrongReferences = new List <Delegate>(); { GLFWkeyfun cb = KeyCallback; StrongReferences.Add(cb); GLFW.GlfwSetKeyCallback(Window, cb); } { GLFWcharfun cb = CharCallback; StrongReferences.Add(cb); GLFW.GlfwSetCharCallback(Window, cb); } { GLFWerrorfun cb = ErrorCallback; StrongReferences.Add(cb); GLFW.GlfwSetErrorCallback(cb); } { GLFWscrollfun cb = ScrollCallback; StrongReferences.Add(cb); GLFW.GlfwSetScrollCallback(Window, cb); } { GLFWcharmodsfun cb = CharModsCallback; StrongReferences.Add(cb); GLFW.GlfwSetCharModsCallback(Window, cb); } { GLFWcursorposfun cb = CursorPosCallback; StrongReferences.Add(cb); GLFW.GlfwSetCursorPosCallback(Window, cb); } { GLFWwindowposfun cb = WindowPosCallback; StrongReferences.Add(cb); GLFW.GlfwSetWindowPosCallback(Window, cb); } { GLFWwindowsizefun cb = WindowSizeCallback; StrongReferences.Add(cb); GLFW.GlfwSetWindowSizeCallback(Window, cb); } { GLFWcursorenterfun cb = CursorEnterCallback; StrongReferences.Add(cb); GLFW.GlfwSetCursorEnterCallback(Window, cb); } { GLFWmousebuttonfun cb = MouseButtonCallback; StrongReferences.Add(cb); GLFW.GlfwSetMouseButtonCallback(Window, cb); } { GLFWwindowfocusfun cb = WindowFocusCallback; StrongReferences.Add(cb); GLFW.GlfwSetWindowFocusCallback(Window, cb); } { GLFWwindowiconifyfun cb = WindowIconifyCallback; StrongReferences.Add(cb); GLFW.GlfwSetWindowIconifyCallback(Window, cb); } { GLFWframebuffersizefun cb = FrameBufferSizeCallback; StrongReferences.Add(cb); GLFW.GlfwSetFramebufferSizeCallback(Window, cb); } }
public GlfwWindow(WindowSettings settings) : base(settings) { var glfwMonitor = settings.Monitor as GlfwMonitor ?? throw new NotSupportedException(); this.keyRepeatEnabled = false; var enc = Encoding.GetEncoding("utf-32", new EncoderReplacementFallback("□"), new DecoderReplacementFallback("□")); this.utf32Decoder = enc.GetDecoder(); glfwDefaultWindowHints(); glfwWindowHint(GLFW_RESIZABLE, GLFW_FALSE); glfwWindowHint(GLFW_VISIBLE, GLFW_FALSE); glfwWindowHint(GLFW_DOUBLEBUFFER, GLFW_TRUE); switch (settings.Style) { case WindowStyle.Windowed: glfwWindowHint(GLFW_DECORATED, GLFW_TRUE); break; case WindowStyle.FullScreen: case WindowStyle.Borderless: glfwWindowHint(GLFW_DECORATED, GLFW_FALSE); break; } checked { var mode = settings.DisplayMode; int bitspercolour = (int)mode.BitsPerPixel / 4; glfwWindowHint(GLFW_RED_BITS, bitspercolour); glfwWindowHint(GLFW_GREEN_BITS, bitspercolour); glfwWindowHint(GLFW_BLUE_BITS, bitspercolour); glfwWindowHint(GLFW_ALPHA_BITS, bitspercolour); glfwWindowHint(GLFW_REFRESH_RATE, (int)mode.RefreshRate); var titleutf8 = Encoding.UTF8.GetBytes(settings.Title); unsafe { fixed(byte *titleptr = titleutf8) { this.window = glfwCreateWindow((int)mode.Width, (int)mode.Height, titleptr, settings.Style == WindowStyle.FullScreen ? glfwMonitor.Handle : IntPtr.Zero, IntPtr.Zero); } } } if (this.window == IntPtr.Zero) { var errorPtr = IntPtr.Zero; glfwGetError(errorPtr); var errorDesc = new CString(errorPtr); throw new ApplicationException(errorDesc); } this.windowResizeDelegate = this.HandleResizeEvent; this.windowFocusDelegate = this.HandleFocusEvent; this.cursorEnterDelegate = this.HandleMouseEnterOrLeaveEvent; this.cursorMoveDelegate = this.HandleMouseMoveEvent; this.mouseButtonDelegate = this.HandleMouseButtonEvent; this.scrollDelegate = this.HandleScrollEvent; this.keyDelegate = this.HandleKeyEvent; this.textDelegate = this.HandleTextEvent; this.SetupCallbacks(); this.Activate(); glfwSwapInterval(settings.VSync ? 1 : 0); glfwSetInputMode(this.window, GLFW_CURSOR, settings.ShowCursor ? GLFW_CURSOR_NORMAL : GLFW_CURSOR_HIDDEN); }
/*! @brief Sets the Unicode character callback. * * This function sets the character callback of the specified window, which is * called when a Unicode character is input. * * The character callback is intended for Unicode text input. As it deals with * characters, it is keyboard layout dependent, whereas the * [key callback](@ref glfwSetKeyCallback) is not. Characters do not map 1:1 * to physical keys, as a key may produce zero, one or more characters. If you * want to know whether a specific physical key was pressed or released, see * the key callback instead. * * The character callback behaves as system text input normally does and will * not be called if modifier keys are held down that would prevent normal text * input on that platform, for example a Super (Command) key on OS X or Alt key * on Windows. There is a * [character with modifiers callback](@ref glfwSetCharModsCallback) that * receives these events. * * @param[in] window The window whose callback to set. * @param[in] cbfun The new callback, or `NULL` to remove the currently set * callback. * @return The previously set callback, or `NULL` if no callback was set or the * library had not been [initialized](@ref intro_init). * * @par Thread Safety * This function may only be called from the main thread. * * @sa @ref input_char * * @since Added in GLFW 2.4. * * @par * __GLFW 3:__ Added window handle parameter. Updated callback signature. * * @ingroup input */ internal static extern GLFWcharfun glfwSetCharCallback(GLFWwindow* window, GLFWcharfun cbfun);