adding support for changing window position

mlx_set_window_position(void *mlx, void *win, int x, int y)
This commit is contained in:
Tidian Delage
2024-09-12 01:32:52 +02:00
parent 5a09ebb179
commit 466050ee7a
4 changed files with 32 additions and 3 deletions

View File

@@ -6,7 +6,7 @@
/* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */ /* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2022/10/04 16:56:35 by maldavid #+# #+# */ /* Created: 2022/10/04 16:56:35 by maldavid #+# #+# */
/* Updated: 2024/01/18 14:36:12 by maldavid ### ########.fr */ /* Updated: 2024/09/12 01:28:12 by tdelage ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@@ -53,6 +53,17 @@ MLX_API void* mlx_init();
*/ */
MLX_API void* mlx_new_window(void* mlx, int w, int h, const char* title); MLX_API void* mlx_new_window(void* mlx, int w, int h, const char* title);
/**
* @brief Creates a new window
*
* @param mlx Internal MLX application
* @param win Internal window to move
* @param x New x position
* @param y New y position
*
*/
MLX_API void mlx_set_window_position(void *mlx, void *win, int x, int y);
/** /**
* @brief Gives a function to be executed at each loop turn * @brief Gives a function to be executed at each loop turn

View File

@@ -6,7 +6,7 @@
/* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */ /* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2022/10/04 21:49:46 by maldavid #+# #+# */ /* Created: 2022/10/04 21:49:46 by maldavid #+# #+# */
/* Updated: 2024/01/26 11:26:54 by maldavid ### ########.fr */ /* Updated: 2024/09/12 01:30:35 by tdelage ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@@ -45,6 +45,7 @@ namespace mlx::core
inline void* newGraphicsSuport(std::size_t w, std::size_t h, const char* title); inline void* newGraphicsSuport(std::size_t w, std::size_t h, const char* title);
inline void clearGraphicsSupport(void* win); inline void clearGraphicsSupport(void* win);
inline void destroyGraphicsSupport(void* win); inline void destroyGraphicsSupport(void* win);
inline void setWindowPosition(void *win, int x, int y);
inline void pixelPut(void* win, int x, int y, std::uint32_t color) const noexcept; inline void pixelPut(void* win, int x, int y, std::uint32_t color) const noexcept;
inline void stringPut(void* win, int x, int y, std::uint32_t color, char* str); inline void stringPut(void* win, int x, int y, std::uint32_t color, char* str);

View File

@@ -10,6 +10,7 @@
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#include <SDL2/SDL_video.h>
#include <algorithm> #include <algorithm>
#include <core/application.h> #include <core/application.h>
@@ -71,6 +72,16 @@ namespace mlx::core
_in->onEvent(_graphics[*static_cast<int*>(win)]->getWindow()->getID(), event, funct_ptr, param); _in->onEvent(_graphics[*static_cast<int*>(win)]->getWindow()->getID(), event, funct_ptr, param);
} }
void Application::setWindowPosition(void *win, int x, int y) {
CHECK_WINDOW_PTR(win);
if(!_graphics[*static_cast<int*>(win)]->hasWindow())
{
error::report(e_kind::warning, "trying to move a window that is targeting an image and not a real window, this is not allowed");
return;
}
SDL_SetWindowPosition(_graphics[*static_cast<int*>(win)]->getWindow()->getNativeWindow(), x, y);
}
void Application::getScreenSize(void* win, int* w, int* h) noexcept void Application::getScreenSize(void* win, int* w, int* h) noexcept
{ {
CHECK_WINDOW_PTR(win); CHECK_WINDOW_PTR(win);

View File

@@ -6,7 +6,7 @@
/* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */ /* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2022/10/04 17:35:20 by maldavid #+# #+# */ /* Created: 2022/10/04 17:35:20 by maldavid #+# #+# */
/* Updated: 2024/02/23 22:37:24 by maldavid ### ########.fr */ /* Updated: 2024/09/12 01:29:33 by tdelage ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@@ -62,6 +62,12 @@ extern "C"
return 0; return 0;
} }
void mlx_set_window_position(void *mlx, void *win, int x, int y)
{
MLX_CHECK_APPLICATION_POINTER(mlx);
static_cast<mlx::core::Application*>(mlx)->setWindowPosition(win, x, y);
}
int mlx_loop(void* mlx) int mlx_loop(void* mlx)
{ {
MLX_CHECK_APPLICATION_POINTER(mlx); MLX_CHECK_APPLICATION_POINTER(mlx);