5 Commits
Author SHA1 Message Date
DaemoandGitHub ed160ed63d Merge indev to master (#246)
Added mlx_set_image_rectangle, mlx_set_window_icon, key code enums,
updated dependencies and fixed various bugs
2026-08-28 17:10:42 +02:00
Daemo ff1a0bb4cb Fixed C casts to reinterpret cast in window icon deletion 2026-08-28 16:58:55 +02:00
Daemo bd7cd52c4f Merge branch 'master' of github.com:seekrs/MacroLibX into indev 2026-08-28 16:42:22 +02:00
DaemoandGitHub d276899e8b changed mlx_put_transformed_image_to_window to use float position (#243)
Using integer positions (x and y), the displayed image could suffer from
rounding errors with rotation. Leading to jittering on most dynamically
resized images trying to fit the window while rotating (common
optimization done in projects like Cub3D). This PR aims to fix this
issue by using float parameters for positioning in the function
2026-08-12 19:30:53 +02:00
Daemo 42f0d52bfa changed mlx_put_transformed_image_to_window to use float position 2026-08-12 19:25:09 +02:00
10 changed files with 12 additions and 25 deletions
+1 -1
View File
@@ -171,7 +171,7 @@ MLX_API void mlx_set_image_region(mlx_context mlx, mlx_image image, int x, int y
* @param scale_y Scale y of the image * @param scale_y Scale y of the image
* @param angle Rotation angle of the image (clockwise) * @param angle Rotation angle of the image (clockwise)
*/ */
MLX_API void mlx_put_transformed_image_to_window(mlx_context mlx, mlx_window win, mlx_image image, int x, int y, float scale_x, float scale_y, float angle); MLX_API void mlx_put_transformed_image_to_window(mlx_context mlx, mlx_window win, mlx_image image, float x, float y, float scale_x, float scale_y, float angle);
/** /**
* @brief Get direct pointers to hidden functions * @brief Get direct pointers to hidden functions
+1 -1
View File
@@ -28,7 +28,7 @@ namespace mlx
void PixelPutArray(int x, int y, mlx_color* color, std::size_t pixels_size) noexcept; void PixelPutArray(int x, int y, mlx_color* color, std::size_t pixels_size) noexcept;
void PixelPutRegion(int x, int y, int w, int h, mlx_color* color) noexcept; void PixelPutRegion(int x, int y, int w, int h, mlx_color* color) noexcept;
void StringPut(int x, int y, mlx_color color, std::string str); void StringPut(int x, int y, mlx_color color, std::string str);
void TexturePut(NonOwningPtr<class Texture> texture, int x, int y, float scale_x, float scale_y, float angle); void TexturePut(NonOwningPtr<class Texture> texture, float x, float y, float scale_x, float scale_y, float angle);
inline void TryEraseSpritesInScene(NonOwningPtr<Texture> texture) noexcept; inline void TryEraseSpritesInScene(NonOwningPtr<Texture> texture) noexcept;
+1 -1
View File
@@ -484,7 +484,7 @@ extern "C"
texture->SetRegion(x, y, w, h, pixels); texture->SetRegion(x, y, w, h, pixels);
} }
void mlx_put_transformed_image_to_window(mlx_context mlx, mlx_window win, mlx_image image, int x, int y, float scale_x, float scale_y, float angle) void mlx_put_transformed_image_to_window(mlx_context mlx, mlx_window win, mlx_image image, float x, float y, float scale_x, float scale_y, float angle)
{ {
MLX_CHECK_APPLICATION_POINTER(mlx); MLX_CHECK_APPLICATION_POINTER(mlx);
mlx::NonOwningPtr<mlx::GraphicsSupport> gs = mlx->app->GetGraphicsSupport(win); mlx::NonOwningPtr<mlx::GraphicsSupport> gs = mlx->app->GetGraphicsSupport(win);
+3 -3
View File
@@ -136,7 +136,7 @@ namespace mlx
p_scene->BringToDrawLayer(text.Get(), m_draw_layer); p_scene->BringToDrawLayer(text.Get(), m_draw_layer);
} }
void GraphicsSupport::TexturePut(NonOwningPtr<Texture> texture, int x, int y, float scale_x, float scale_y, float angle) void GraphicsSupport::TexturePut(NonOwningPtr<Texture> texture, float x, float y, float scale_x, float scale_y, float angle)
{ {
MLX_PROFILE_FUNCTION(); MLX_PROFILE_FUNCTION();
NonOwningPtr<Sprite> sprite = p_scene->GetSpriteFromTexturePositionScaleRotation(texture, Vec2f{ static_cast<float>(x), static_cast<float>(y) }, scale_x, scale_y, angle); NonOwningPtr<Sprite> sprite = p_scene->GetSpriteFromTexturePositionScaleRotation(texture, Vec2f{ static_cast<float>(x), static_cast<float>(y) }, scale_x, scale_y, angle);
@@ -146,14 +146,14 @@ namespace mlx
{ {
m_draw_layer++; m_draw_layer++;
m_pixelput_called = false; m_pixelput_called = false;
} }
Sprite& new_sprite = p_scene->CreateSprite(texture); Sprite& new_sprite = p_scene->CreateSprite(texture);
new_sprite.SetCenter(Vec2f{ texture->GetWidth() * 0.5f, texture->GetHeight() * 0.5f }); new_sprite.SetCenter(Vec2f{ texture->GetWidth() * 0.5f, texture->GetHeight() * 0.5f });
new_sprite.SetPosition(Vec2f{ static_cast<float>(x), static_cast<float>(y) }); new_sprite.SetPosition(Vec2f{ static_cast<float>(x), static_cast<float>(y) });
new_sprite.SetScale(Vec2f{ scale_x, scale_y }); new_sprite.SetScale(Vec2f{ scale_x, scale_y });
new_sprite.SetRotation(angle); new_sprite.SetRotation(angle);
} }
else if(!p_scene->IsTextureAtGivenDrawLayer(texture, m_draw_layer)) else if(!p_scene->IsTextureAtGivenDrawLayer(texture, m_draw_layer))
p_scene->BringToDrawLayer(sprite.Get(), m_draw_layer); p_scene->BringToDrawLayer(sprite.Get(), m_draw_layer);
} }
+2 -2
View File
@@ -82,7 +82,7 @@ namespace mlx
SDL_DestroyWindow(infos->window); SDL_DestroyWindow(infos->window);
if(infos->icon != nullptr) if(infos->icon != nullptr)
{ {
delete[] (mlx_color*)infos->icon->pixels; delete[] reinterpret_cast<mlx_color*>(infos->icon->pixels);
SDL_FreeSurface(infos->icon); SDL_FreeSurface(infos->icon);
} }
@@ -167,7 +167,7 @@ namespace mlx
Internal::WindowInfos* infos = static_cast<Internal::WindowInfos*>(window); Internal::WindowInfos* infos = static_cast<Internal::WindowInfos*>(window);
if(infos->icon != nullptr) if(infos->icon != nullptr)
{ {
delete[] (mlx_color*)infos->icon->pixels; delete[] reinterpret_cast<mlx_color*>(infos->icon->pixels);
SDL_FreeSurface(infos->icon); SDL_FreeSurface(infos->icon);
} }
+2 -2
View File
@@ -24,9 +24,9 @@ VULKAN_HPP_COMPILE_WARNING( VULKAN_HPP_CXX_MODULE_EXPERIMENTAL_WARNING )
export module vulkan; export module vulkan;
import std; export import std;
VULKAN_HPP_STATIC_ASSERT( VK_HEADER_VERSION == 360, "Wrong VK_HEADER_VERSION!" ); VULKAN_HPP_STATIC_ASSERT( VK_HEADER_VERSION == 359, "Wrong VK_HEADER_VERSION!" );
#if defined( __clang__ ) #if defined( __clang__ )
# pragma clang diagnostic push # pragma clang diagnostic push
+1 -1
View File
@@ -36,7 +36,7 @@
# endif # endif
#endif #endif
VULKAN_HPP_STATIC_ASSERT( VK_HEADER_VERSION == 360, "Wrong VK_HEADER_VERSION!" ); VULKAN_HPP_STATIC_ASSERT( VK_HEADER_VERSION == 359, "Wrong VK_HEADER_VERSION!" );
VULKAN_HPP_EXPORT namespace VULKAN_HPP_NAMESPACE VULKAN_HPP_EXPORT namespace VULKAN_HPP_NAMESPACE
{ {
+1 -1
View File
@@ -66,7 +66,7 @@ extern "C" {
//#define VK_API_VERSION VK_MAKE_API_VERSION(0, 1, 0, 0) // Patch version should always be set to 0 //#define VK_API_VERSION VK_MAKE_API_VERSION(0, 1, 0, 0) // Patch version should always be set to 0
// Version of this file // Version of this file
#define VK_HEADER_VERSION 360 #define VK_HEADER_VERSION 359
// Complete version of this file // Complete version of this file
#define VK_HEADER_VERSION_COMPLETE VK_MAKE_API_VERSION(0, 1, 4, VK_HEADER_VERSION) #define VK_HEADER_VERSION_COMPLETE VK_MAKE_API_VERSION(0, 1, 4, VK_HEADER_VERSION)
-12
View File
@@ -3292,24 +3292,12 @@ VULKAN_HPP_EXPORT namespace VULKAN_HPP_NAMESPACE
"VK_KHR_shader_float16_int8", "VK_KHR_shader_float16_int8",
} } }, } } },
{ "VK_VERSION_1_2", { {} } } } }, { "VK_VERSION_1_2", { {} } } } },
{ "VK_ARM_data_graph_neural_accelerator_statistics",
{ { "VK_VERSION_1_0",
{ {
"VK_KHR_get_physical_device_properties2",
} } },
{ "VK_VERSION_1_1", { {} } } } },
{ "VK_EXT_primitive_restart_index", { "VK_EXT_primitive_restart_index",
{ { "VK_VERSION_1_0", { { "VK_VERSION_1_0",
{ { { {
"VK_KHR_get_physical_device_properties2", "VK_KHR_get_physical_device_properties2",
} } }, } } },
{ "VK_VERSION_1_1", { {} } } } }, { "VK_VERSION_1_1", { {} } } } },
{ "VK_EXT_image_tiling_control",
{ { "VK_VERSION_1_0",
{ {
"VK_KHR_get_physical_device_properties2",
} } },
{ "VK_VERSION_1_1", { {} } } } },
{ "VK_NV_cooperative_matrix_decode_vector", { "VK_NV_cooperative_matrix_decode_vector",
{ { "VK_VERSION_1_0", { { "VK_VERSION_1_0",
{ { { {
-1
View File
@@ -51,7 +51,6 @@ module;
export module vulkan_video; export module vulkan_video;
import std;
import vulkan; import vulkan;
#if defined( __clang__ ) #if defined( __clang__ )