mirror of
https://github.com/seekrs/MacroLibX.git
synced 2026-01-11 22:53:34 +00:00
fixing color issues with texts
This commit is contained in:
@@ -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: 2023/04/11 18:37:29 by maldavid ### ########.fr */
|
/* Updated: 2023/04/11 20:31:38 by maldavid ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@@ -29,6 +29,10 @@ int mlx_mouse_hide();
|
|||||||
int mlx_mouse_move(void* mlx, void* win, int x, int y);
|
int mlx_mouse_move(void* mlx, void* win, int x, int y);
|
||||||
int mlx_mouse_get_pos(void* mlx, int* x, int* y);
|
int mlx_mouse_get_pos(void* mlx, int* x, int* y);
|
||||||
|
|
||||||
|
int mlx_mouse_hook(void* mlx, int (*funct_ptr)(), void* param);
|
||||||
|
int mlx_key_hook(void* mlx, int (*funct_ptr)(), void* param);
|
||||||
|
int mlx_expose_hook(void* mlx, int (*funct_ptr)(), void* param);
|
||||||
|
|
||||||
int mlx_do_key_autorepeaton(void* mlx);
|
int mlx_do_key_autorepeaton(void* mlx);
|
||||||
int mlx_do_key_autorepeatoff(void* mlx);
|
int mlx_do_key_autorepeatoff(void* mlx);
|
||||||
|
|
||||||
|
|||||||
@@ -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: 2023/04/11 18:37:05 by maldavid ### ########.fr */
|
/* Updated: 2023/04/11 21:43:13 by maldavid ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@@ -37,6 +37,10 @@ namespace mlx::core
|
|||||||
inline void getMousePos(int* x, int* y) noexcept;
|
inline void getMousePos(int* x, int* y) noexcept;
|
||||||
inline void mouseMove(void* win, int x, int y) noexcept;
|
inline void mouseMove(void* win, int x, int y) noexcept;
|
||||||
|
|
||||||
|
inline void mouseHook(int (*funct_ptr)(const char*, void*), void* param) noexcept;
|
||||||
|
inline void keyHook(int (*funct_ptr)(const char*, void*), void* param) noexcept;
|
||||||
|
inline void exposeHook(int (*funct_ptr)(const char*, void*), void* param) noexcept;
|
||||||
|
|
||||||
inline constexpr void enableAutoRepeat() noexcept;
|
inline constexpr void enableAutoRepeat() noexcept;
|
||||||
inline constexpr void disableAutoRepeat() noexcept;
|
inline constexpr void disableAutoRepeat() noexcept;
|
||||||
|
|
||||||
|
|||||||
@@ -27,6 +27,21 @@ namespace mlx::core
|
|||||||
SDL_FlushEvent(SDL_MOUSEMOTION);
|
SDL_FlushEvent(SDL_MOUSEMOTION);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Application::mouseHook(int (*funct_ptr)(const char*, void*), void* param) noexcept
|
||||||
|
{
|
||||||
|
_in.mouseHook(funct_ptr, param);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Application::keyHook(int (*funct_ptr)(const char*, void*), void* param) noexcept
|
||||||
|
{
|
||||||
|
_in.keyHook(funct_ptr, param);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Application::exposeHook(int (*funct_ptr)(const char*, void*), void* param) noexcept
|
||||||
|
{
|
||||||
|
_in.exposeHook(funct_ptr, param);
|
||||||
|
}
|
||||||
|
|
||||||
constexpr void Application::enableAutoRepeat() noexcept
|
constexpr void Application::enableAutoRepeat() noexcept
|
||||||
{
|
{
|
||||||
_in.enableAutoRepeat();
|
_in.enableAutoRepeat();
|
||||||
|
|||||||
@@ -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: 2023/04/06 16:09:47 by maldavid ### ########.fr */
|
/* Updated: 2023/04/11 21:42:56 by maldavid ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@@ -69,6 +69,24 @@ extern "C"
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int mlx_mouse_hook(void* mlx, int (*funct_ptr)(const char*, void*), void* param)
|
||||||
|
{
|
||||||
|
static_cast<mlx::core::Application*>(mlx)->mouseHook(funct_ptr, param);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int mlx_key_hook(void* mlx, int (*funct_ptr)(const char*, void*), void* param)
|
||||||
|
{
|
||||||
|
static_cast<mlx::core::Application*>(mlx)->keyHook(funct_ptr, param);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int mlx_expose_hook(void* mlx, int (*funct_ptr)(const char*, void*), void* param)
|
||||||
|
{
|
||||||
|
static_cast<mlx::core::Application*>(mlx)->exposeHook(funct_ptr, param);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int mlx_do_key_autorepeaton(void* mlx)
|
int mlx_do_key_autorepeaton(void* mlx)
|
||||||
{
|
{
|
||||||
static_cast<mlx::core::Application*>(mlx)->enableAutoRepeat();
|
static_cast<mlx::core::Application*>(mlx)->enableAutoRepeat();
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
/* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */
|
/* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2022/10/05 16:30:19 by maldavid #+# #+# */
|
/* Created: 2022/10/05 16:30:19 by maldavid #+# #+# */
|
||||||
/* Updated: 2023/04/03 12:40:10 by maldavid ### ########.fr */
|
/* Updated: 2023/04/11 21:32:43 by maldavid ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@@ -36,10 +36,33 @@ namespace mlx
|
|||||||
|
|
||||||
switch(_event.type)
|
switch(_event.type)
|
||||||
{
|
{
|
||||||
case SDL_KEYDOWN: _keys[_event.key.keysym.scancode] = static_cast<uint8_t>(action::down); break;
|
case SDL_KEYDOWN:
|
||||||
case SDL_KEYUP: _keys[_event.key.keysym.scancode] = static_cast<uint8_t>(action::up); break;
|
{
|
||||||
case SDL_MOUSEBUTTONDOWN: _mouse[_event.button.button] = static_cast<uint8_t>(action::down); break;
|
_keys[_event.key.keysym.scancode] = static_cast<uint8_t>(action::down);
|
||||||
case SDL_MOUSEBUTTONUP: _mouse[_event.button.button] = static_cast<uint8_t>(action::up); break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case SDL_KEYUP:
|
||||||
|
{
|
||||||
|
_keys[_event.key.keysym.scancode] = static_cast<uint8_t>(action::up);
|
||||||
|
if(_key_hook.hook)
|
||||||
|
_key_hook.hook(SDL_GetScancodeName(_event.key.keysym.scancode), _key_hook.param);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case SDL_MOUSEBUTTONDOWN:
|
||||||
|
{
|
||||||
|
_mouse[_event.button.button] = static_cast<uint8_t>(action::down);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case SDL_MOUSEBUTTONUP:
|
||||||
|
{
|
||||||
|
_mouse[_event.button.button] = static_cast<uint8_t>(action::up);
|
||||||
|
if(_mouse_hook.hook)
|
||||||
|
_mouse_hook.hook(std::string("mouse").c_str(), _mouse_hook.param);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
/* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */
|
/* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2022/10/05 16:27:35 by maldavid #+# #+# */
|
/* Created: 2022/10/05 16:27:35 by maldavid #+# #+# */
|
||||||
/* Updated: 2023/04/03 14:19:11 by maldavid ### ########.fr */
|
/* Updated: 2023/04/11 21:41:33 by maldavid ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@@ -14,6 +14,7 @@
|
|||||||
#include <memory>
|
#include <memory>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
#include <functional>
|
||||||
#include <SDL2/SDL.h>
|
#include <SDL2/SDL.h>
|
||||||
|
|
||||||
#include "window.h"
|
#include "window.h"
|
||||||
@@ -22,6 +23,12 @@ namespace mlx
|
|||||||
{
|
{
|
||||||
enum class action : uint8_t { up = (1 << 1), down = (1 << 2) };
|
enum class action : uint8_t { up = (1 << 1), down = (1 << 2) };
|
||||||
|
|
||||||
|
struct Hook
|
||||||
|
{
|
||||||
|
std::function<int(const char*, void*)> hook;
|
||||||
|
void* param = nullptr;
|
||||||
|
};
|
||||||
|
|
||||||
class Input
|
class Input
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -46,13 +53,21 @@ namespace mlx
|
|||||||
inline constexpr void enableAutoRepeat() noexcept { _auto_repeat = true; }
|
inline constexpr void enableAutoRepeat() noexcept { _auto_repeat = true; }
|
||||||
inline constexpr void disableAutoRepeat() noexcept { _auto_repeat = false; }
|
inline constexpr void disableAutoRepeat() noexcept { _auto_repeat = false; }
|
||||||
|
|
||||||
|
inline void mouseHook(int (*funct_ptr)(const char*, void*), void* param) noexcept { _mouse_hook.hook = funct_ptr; _mouse_hook.param = param; }
|
||||||
|
inline void keyHook(int (*funct_ptr)(const char*, void*), void* param) noexcept { _key_hook.hook = funct_ptr; _key_hook.param = param; }
|
||||||
|
inline void exposeHook(int (*funct_ptr)(const char*, void*), void* param) noexcept { _expose_hook.hook = funct_ptr; _expose_hook.param = param; }
|
||||||
|
|
||||||
~Input() = default;
|
~Input() = default;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
SDL_Event _event;
|
|
||||||
std::array<uint8_t, SDL_NUM_SCANCODES> _keys;
|
std::array<uint8_t, SDL_NUM_SCANCODES> _keys;
|
||||||
|
SDL_Event _event;
|
||||||
std::array<uint8_t, 8> _mouse;
|
std::array<uint8_t, 8> _mouse;
|
||||||
|
|
||||||
|
Hook _mouse_hook;
|
||||||
|
Hook _key_hook;
|
||||||
|
Hook _expose_hook;
|
||||||
|
|
||||||
int _x = 0;
|
int _x = 0;
|
||||||
int _y = 0;
|
int _y = 0;
|
||||||
int _xRel = 0;
|
int _xRel = 0;
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
/* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */
|
/* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2023/04/06 16:41:13 by maldavid #+# #+# */
|
/* Created: 2023/04/06 16:41:13 by maldavid #+# #+# */
|
||||||
/* Updated: 2023/04/11 19:16:08 by maldavid ### ########.fr */
|
/* Updated: 2023/04/11 23:27:45 by maldavid ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@@ -23,8 +23,6 @@
|
|||||||
|
|
||||||
namespace mlx
|
namespace mlx
|
||||||
{
|
{
|
||||||
uint8_t tmp_bitmap[512 * 512];
|
|
||||||
|
|
||||||
TextDrawData::TextDrawData(std::string text, int _color, int _x, int _y, TextLibrary& library, std::array<stbtt_bakedchar, 96>& cdata) : x(_x), y(_y), color(_color)
|
TextDrawData::TextDrawData(std::string text, int _color, int _x, int _y, TextLibrary& library, std::array<stbtt_bakedchar, 96>& cdata) : x(_x), y(_y), color(_color)
|
||||||
{
|
{
|
||||||
std::vector<Vertex> vertexData;
|
std::vector<Vertex> vertexData;
|
||||||
@@ -64,8 +62,17 @@ namespace mlx
|
|||||||
void TextPutPipeline::init(Renderer* renderer) noexcept
|
void TextPutPipeline::init(Renderer* renderer) noexcept
|
||||||
{
|
{
|
||||||
_renderer = renderer;
|
_renderer = renderer;
|
||||||
|
uint8_t tmp_bitmap[512 * 512];
|
||||||
|
uint8_t vulkan_bitmap[(512 * 512) * 4];
|
||||||
stbtt_BakeFontBitmap(dogica_ttf, 0, 6.0f, tmp_bitmap, 512, 512, 32, 96, _cdata.data());
|
stbtt_BakeFontBitmap(dogica_ttf, 0, 6.0f, tmp_bitmap, 512, 512, 32, 96, _cdata.data());
|
||||||
_atlas.create(tmp_bitmap, 512, 512, VK_FORMAT_R8_UNORM);
|
for(int i = 0, j = 0; i < 512 * 512; i++, j += 4)
|
||||||
|
{
|
||||||
|
vulkan_bitmap[j + 0] = tmp_bitmap[i];
|
||||||
|
vulkan_bitmap[j + 1] = tmp_bitmap[i];
|
||||||
|
vulkan_bitmap[j + 2] = tmp_bitmap[i];
|
||||||
|
vulkan_bitmap[j + 3] = tmp_bitmap[i];
|
||||||
|
}
|
||||||
|
_atlas.create(vulkan_bitmap, 512, 512, VK_FORMAT_R8G8B8A8_UNORM);
|
||||||
_atlas.setDescriptor(renderer->getFragDescriptorSet().duplicate());
|
_atlas.setDescriptor(renderer->getFragDescriptorSet().duplicate());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
18
test/main.c
18
test/main.c
@@ -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:55:21 by maldavid #+# #+# */
|
/* Created: 2022/10/04 17:55:21 by maldavid #+# #+# */
|
||||||
/* Updated: 2023/04/11 19:15:35 by maldavid ### ########.fr */
|
/* Updated: 2023/04/11 23:33:03 by maldavid ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@@ -36,8 +36,8 @@ int update(t_mlx *mlx)
|
|||||||
i++;
|
i++;
|
||||||
if (i == 5000)
|
if (i == 5000)
|
||||||
mlx_clear_window(mlx->mlx, mlx->win);
|
mlx_clear_window(mlx->mlx, mlx->win);
|
||||||
if (i > 10000)
|
//if (i > 10000)
|
||||||
mlx_loop_end(mlx->mlx);
|
// mlx_loop_end(mlx->mlx);
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -65,6 +65,13 @@ void *create_image(t_mlx *mlx)
|
|||||||
return (img);
|
return (img);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int key_hook(const char *key, void *param)
|
||||||
|
{
|
||||||
|
(void)param;
|
||||||
|
puts(key);
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
t_mlx mlx;
|
t_mlx mlx;
|
||||||
@@ -74,12 +81,13 @@ int main(void)
|
|||||||
|
|
||||||
mlx.mlx = mlx_init();
|
mlx.mlx = mlx_init();
|
||||||
mlx.win = mlx_new_window(mlx.mlx, 400, 400, "My window");
|
mlx.win = mlx_new_window(mlx.mlx, 400, 400, "My window");
|
||||||
|
mlx_key_hook(mlx.mlx, key_hook, NULL);
|
||||||
mlx.logo = mlx_png_file_to_image(mlx.mlx, "42_logo.png", &w, &h);
|
mlx.logo = mlx_png_file_to_image(mlx.mlx, "42_logo.png", &w, &h);
|
||||||
mlx_pixel_put(mlx.mlx, mlx.win, 200, 10, 0xFFFF00FF);
|
mlx_pixel_put(mlx.mlx, mlx.win, 200, 10, 0xFFFF00FF);
|
||||||
mlx_put_image_to_window(mlx.mlx, mlx.win, mlx.logo, 200, 200);
|
mlx_put_image_to_window(mlx.mlx, mlx.win, mlx.logo, 200, 200);
|
||||||
img = create_image(&mlx);
|
img = create_image(&mlx);
|
||||||
mlx_string_put(mlx.mlx, mlx.win, 20, 20, 0xFF0000FF, "this is a text");
|
mlx_string_put(mlx.mlx, mlx.win, 20, 20, 0xFFFF2000, "this is a text");
|
||||||
mlx_string_put(mlx.mlx, mlx.win, 20, 50, 0xFFFFFFFF, "this is another text");
|
mlx_string_put(mlx.mlx, mlx.win, 20, 50, 0xFFFFFFFF, "that's another text");
|
||||||
mlx_put_image_to_window(mlx.mlx, mlx.win, img, 200, 20);
|
mlx_put_image_to_window(mlx.mlx, mlx.win, img, 200, 20);
|
||||||
mlx_loop_hook(mlx.mlx, update, &mlx);
|
mlx_loop_hook(mlx.mlx, update, &mlx);
|
||||||
mlx_loop(mlx.mlx);
|
mlx_loop(mlx.mlx);
|
||||||
|
|||||||
Reference in New Issue
Block a user