From ca9444778ea6c4d0dd2ddbff9bf5cb2bc869fe2f Mon Sep 17 00:00:00 2001 From: Maoake Teriierooiterai Date: Fri, 27 Mar 2026 14:35:04 +0100 Subject: [PATCH] need to test the mlx --- Makefile | 1 + a_maze_ing.py | 14 +- config.txt | 8 +- mlx/__init__.py | 2 - mlx/docs/mlx.3 | 136 ------------------- mlx/docs/mlx.h | 209 ----------------------------- mlx/docs/mlx_extra.3 | 121 ----------------- mlx/docs/mlx_loop.3 | 154 --------------------- mlx/docs/mlx_new_image.3 | 180 ------------------------- mlx/docs/mlx_new_window.3 | 79 ----------- mlx/docs/mlx_pixel_put.3 | 83 ------------ mlx/mlx.py | 268 ------------------------------------ mlx/test/Dont_panic.png | Bin 66280 -> 0 bytes mlx/test/Dont_panic.xpm | 250 ---------------------------------- mlx/test/mlxtest.py | 276 -------------------------------------- mlx/test/puffy.png | Bin 107461 -> 0 bytes mlx/test/puffy_small.png | Bin 6222 -> 0 bytes mlx/test/simple_test.py | 29 ---- src/AMazeIng.py | 1 + test.txt | 49 +++---- 20 files changed, 30 insertions(+), 1830 deletions(-) delete mode 100644 mlx/__init__.py delete mode 100644 mlx/docs/mlx.3 delete mode 100644 mlx/docs/mlx.h delete mode 100644 mlx/docs/mlx_extra.3 delete mode 100644 mlx/docs/mlx_loop.3 delete mode 100644 mlx/docs/mlx_new_image.3 delete mode 100644 mlx/docs/mlx_new_window.3 delete mode 100644 mlx/docs/mlx_pixel_put.3 delete mode 100644 mlx/mlx.py delete mode 100644 mlx/test/Dont_panic.png delete mode 100644 mlx/test/Dont_panic.xpm delete mode 100644 mlx/test/mlxtest.py delete mode 100644 mlx/test/puffy.png delete mode 100644 mlx/test/puffy_small.png delete mode 100644 mlx/test/simple_test.py diff --git a/Makefile b/Makefile index 0d575a3..ade098d 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,6 @@ install: uv sync + uv pip install mlx-2.2-py3-none-any.whl run: install uv run python3 a_maze_ing.py config.txt diff --git a/a_maze_ing.py b/a_maze_ing.py index 3f93db7..ad0e074 100644 --- a/a_maze_ing.py +++ b/a_maze_ing.py @@ -76,22 +76,22 @@ class MazeMLX: self.put_line((x0, y1), (x1, y1)) if maze[y][x].get_west(): self.put_line((x0, y0), (x0, y1)) - self.mlx.mlx_put_image_to_window( - self.mlx_ptr, self.win_ptr, self.img_ptr, 0, 0 - ) + self.mlx_ptr, self.win_ptr, self.img_ptr, 0, 0) def close_loop(self, _: Any): self.mlx.mlx_loop_exit(self.mlx_ptr) - self.mlx.mlx_destroy_window(self.mlx_ptr, self.win_ptr) def gen_maze(self, amazing: AMazeIng) -> None: - for _ in amazing.generate(): + for output in amazing.generate(): + maze = output + maze.ascii_print() + self.clear_image() self.update_maze(amazing.maze.get_maze()) - time.sleep(1) def start(self, amazing: AMazeIng) -> None: - self.mlx.mlx_loop_hook(self.mlx_ptr, self.gen_maze, amazing) + test = self.gen_maze(amazing) + # self.mlx.mlx_loop_hook(self.mlx_ptr, test, amazing) self.mlx.mlx_hook(self.win_ptr, 33, 0, self.close_loop, None) self.mlx.mlx_loop(self.mlx_ptr) diff --git a/config.txt b/config.txt index 8f3293a..8c6d50d 100644 --- a/config.txt +++ b/config.txt @@ -1,8 +1,8 @@ -WIDTH=30 -HEIGHT=30 +WIDTH=15 +HEIGHT=15 ENTRY=1,1 -EXIT=29,29 +EXIT=2,2 OUTPUT_FILE=maze.txt PERFECT=True -GENERATOR=Kruskal +GENERATOR=DFS SOLVER=AStar diff --git a/mlx/__init__.py b/mlx/__init__.py deleted file mode 100644 index e10af51..0000000 --- a/mlx/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -# src/mlx/__init__.py -from .mlx import * diff --git a/mlx/docs/mlx.3 b/mlx/docs/mlx.3 deleted file mode 100644 index d2e3155..0000000 --- a/mlx/docs/mlx.3 +++ /dev/null @@ -1,136 +0,0 @@ -.TH MiniLibX 3 "September 19, 2002" -.SH NAME -MiniLibX - Simple Window Interface Library for students -.SH SYNOPSYS -#include - -.nf -.I void * -.fi -.B mlx_init -(); - -.nf -.I int -.fi -.B mlx_release -(void *mlx_ptr); - -.SH DESCRIPTION -MiniLibX is an easy way to create graphical software, -without any X-Window/Wayland/Vulkan programming knowledge under Unix/Linux, -nor any AppKit programming knowledge under MacOS. It provides -simple window creation, a drawing tool, image and basic events -management. - -.SH Unix/Linux: HISTORICAL X-WINDOW CONCEPT - -X-Window is a network-oriented graphical system for Unix. -It is based on two main parts: -.br -On one side, your software wants to draw something on the screen and/or -get keyboard & mouse entries. -.br -On the other side, the X-Server manages the screen, keyboard and mouse -(It is often referred to as a "display"). -.br -A network connection must be established between these two entities to send -drawing orders (from the software to the X-Server), and keyboard/mouse -events (from the X-Server to the software). -.br -Nowadays, most of the time, both run on the same computer. - -.SH Unix/Linux: MODERN GRAPHICAL APPROACH - -Modern computers come with a powerful GPU that is directly accessed by applications. -Along GPU libraries like Vulkan or OpenGL, the Wayland protocol ensure communication -with the compositor program that manages the various windows on screen and the user -input events. -For your own application: -.br -The Vulkan or OpenGL library allow you to directly draw any content into your window. -.br -The Wayland compositor handles the place of your window on screen and send you back -the keyboard and mouse inputs from the user. -.br -Unfortunately, this gain of graphical power through GPU access removes the networking aspects -that exist with X-Window. It is not possible for a program to access a remote GPU and show its -window on a remote display. But current software architectures are more likely based on a local -display application that gets data in JSON through a web API. - -.SH MacOS: WINDOW SERVER AND GPU - -Your software interacts directly with the Window server who handles the -cohabitation on the screen with other software and the event system, -and interacts with the GPU to handle all drawing commands. - -.SH INCLUDE FILE -.B mlx.h -should be included for a correct use of the MiniLibX API. -It only contains function prototypes, no structure is needed. - -.SH LIBRARY FUNCTIONS -.P -First of all, you need to initialize the connection -between your software and the graphic and user sub-systems. -Once this completed, you'll be able to use other MiniLibX -functions to send and receive the messages from -the display, like "I want to draw a yellow pixel in this window" or -"did the user hit a key?". -.P -The -.B mlx_init -function will create this connection. No parameters are needed, ant it will -return a -.I "void *" -identifier, used for further calls to the library routines. The -.B mlx_release -function can be used at the end of the program to disconnect from the graphic -system and release resources. -.P -All other MiniLibX functions are described in the following man pages: - -.TP 20 -.B mlx_new_window -: manage windows -.TP 20 -.B mlx_pixel_put -: draw inside a window -.TP 20 -.B mlx_new_image -: manipulate images -.TP 20 -.B mlx_loop -: handle keyboard or mouse events -.TP 20 -.B mlx_extra -: extra functions available in the MinilibX - -.SH LINKING MiniLibX -To use MiniLibX functions, you may -or not- need to link -your software with several libraries, including the MiniLibX library itself. -On Unix/Linux, depending on the specific operating system, either just using -.B -lmlx -works, or you need to add -.B -lxcb -lxcb-keysyms -lvulkan -lz -lbsd -\&. -On MacOS, the dynamic Metal library will find on its own the missing components: -.B -lmlx -\&. - -You may also need to specify the path to these libraries, using the -.B -L -flag. - - -.SH RETURN VALUES -If -.B mlx_init() -fails to set up the connection to the display, it will return NULL, otherwise -a non-null pointer is returned as a connection identifier. - -.SH SEE ALSO -mlx_new_window(3), mlx_pixel_put(3), mlx_new_image(3), mlx_loop(3), mlx_extra(3) - -.SH AUTHOR -Copyright ol@ - 2002-2025 - Olivier Crouzet diff --git a/mlx/docs/mlx.h b/mlx/docs/mlx.h deleted file mode 100644 index baf0d12..0000000 --- a/mlx/docs/mlx.h +++ /dev/null @@ -1,209 +0,0 @@ -/* -** mlx.h for MinilibX in -** -** Made by Charlie Root -** Login -** -** Started on Mon Jul 31 16:37:50 2000 Olivier Crouzet -** Last update Tue Jun 25 16:23:28 2025 Olivier Crouzet -*/ - -/* -** MinilibX - Please report bugs -*/ - - -/* mlx_CLXV version 2.2 */ - -/* -** -** This library is a simple framework to help 42 students -** create simple graphical apps. -** It only provides the minimum functions, it's students' job -** to create the missing pieces for their own project :) -** -** Current XCB-Vulkan requirements for Linux: -** libxcb, libxcb-keysyms, libvulkan, -** libz, libbsd -** You also need glslc to re-compile shaders if needed. -** At 42, on current Ubuntu 22.04 dump in cluster, you need to get -** libxcb-keysyms source for the include file and compile the .a library. -** -** The MinilibX can load XPM and PNG images. -** Please note that both image loaders are incomplete, some -** image may not load. Also, image loaders only work for little endian hosts. -** -** Historically, the alpha byte did represent transparency -** instead of opacity. It's not the case anymore. MLX matches GPUs standards. -** -** MLX_CLXV API changes: -** - mlx_get_data_addr now provides the image format instead of the - endian, and returns an 'unsigned char' pointer. -** - 'unsigned int' replace 'int' in many calls. -** - mlx_get_color_value() is now deprecated. -** - adding mlx_loop_exit(). -** -** With recent X11 implementation and default configuration, the Expose event is only -** received once at the program launch. This is often due to X server saving the -** content of the window. -** With Wayland, there is no such thing like Expose event, and the compositor saves -** the window's content. -** -*/ - - -#ifndef MLX_H - -#define MLX_H - - -/* -** mlx_init() is needed before everything else. -** mlx_init() returns 'void *0' in case of failure. -** mlx_release() returns 0 on success. -*/ -void *mlx_init(); -int mlx_release(void *mlx_ptr); - - -/* -** Window actions -*/ -void *mlx_new_window(void *mlx_ptr, unsigned int width, - unsigned int height, const char *title); -int mlx_clear_window(void *mlx_ptr, void *win_ptr); -int mlx_pixel_put(void *mlx_ptr, void *win_ptr, - unsigned int x, unsigned int y, unsigned int color); -int mlx_destroy_window(void *mlx_ptr, void *win_ptr); -/* -** mlx_new_window() returns 'void *0' if failed. -** Other functions return 0 on success. -** Origin for x & y is top left corner of the window, y down is positive. -** x and y must fit into the size of the window, values are not controled -** Color byte order is B8G8R8A8, which could be 0xAARRGGBB or 0xBBGGRRAA -** depending on local endianess. -*/ - - -/* -** Images -*/ -void *mlx_new_image(void *mlx_ptr, unsigned int width, unsigned int height); -unsigned char *mlx_get_data_addr(void *img_ptr, unsigned int *bits_per_pixel, - unsigned int *size_line, - unsigned int *format); -int mlx_put_image_to_window(void *mlx_ptr, void *win_ptr, void *img_ptr, - int x, int y); -int mlx_destroy_image(void *mlx_ptr, void *img_ptr); -/* -** mlx_new_image() returns 'void *0' in case of failure. -** mlx_get_data_addr() returns a pointer to a height * size_line bytes buffer -** that holds the pixel values. -** Other functions return 0 on success. -** 'format' can be: 0 = B8G8R8A8; 1 = A8R8G8B8; (byte order). -** Carefully consider the format, it can be reversed in some cases, like a remote graphic server -*/ - - -/* -** deprecated function - format of image allows conversion on student's side -** unsigned int mlx_get_color_value(void *mlx_ptr, int color); -** -*/ - - -/* -** main loop & dealing with events -*/ -typedef int (*mlx_mouse_callback)(unsigned int, unsigned int, unsigned int, void*); -typedef int (*mlx_key_callback)(unsigned int, void *); -typedef int (*mlx_expose_callback)(void *); -typedef int (*mlx_loop_callback)(void *); -typedef int (*mlx_hook_callback)(void *); - -int mlx_loop(void *mlx_ptr); -int mlx_loop_exit(void *mlx_ptr); -int mlx_mouse_hook(void *win_ptr, mlx_mouse_callback funct_ptr, void *param); -int mlx_key_hook(void *win_ptr, mlx_key_callback funct_ptr, void *param); -int mlx_expose_hook(void *win_ptr, mlx_expose_callback funct_ptr, void *param); -int mlx_loop_hook(void *mlx_ptr, mlx_loop_callback funct_ptr, void *param); -/* -** Functions return 0 on success. -** Key event is triggered on KeyRelease, not KeyPressed. -** Mouse event is triggered on clic. -** -** hook functions are called as follow: -** expose_hook(void *param); -** key_hook(unsigned int keycode, void *param); -** mouse_hook(unsigned int button, unsigned int x, unsigned int y, -** void *param); -** loop_hook(void *param); -*/ - -/* -** Generic hook system for all events, and minilibX functions that -** can be hooked. Some macro and defines from X11/X.h are needed here. -** Warning: you may need to cast your function pointer for key and mouse events -** as there will be extra parameters. -*/ -int mlx_hook(void *win_ptr, unsigned int x_event, unsigned int x_mask, - mlx_hook_callback funct_ptr, void *param); - - -/* -** Convenience functions -** mlx_string_put() display may vary in size between OS and between -** mlx implementations -** mlx_string_put() returns 0 on success. -** Other functions return an image (like mlx_new_image()) or 'void *0'. -** -*/ -int mlx_string_put(void *mlx_ptr, void *win_ptr, - unsigned int x, unsigned int y, - unsigned int color, char *string); -void *mlx_xpm_to_image(void *mlx_ptr, const char **xpm_data, - unsigned int *width, unsigned int *height); -void *mlx_xpm_file_to_image(void *mlx_ptr, const char *filename, - unsigned int *width, unsigned int *height); -void *mlx_png_file_to_image(void *mlx_ptr, const char *filename, - unsigned int *width, unsigned int *height); - - - -/* -** Convenience functions -** All functions return 0 on success. -*/ -int mlx_mouse_hide(void *mlx_ptr); -int mlx_mouse_show(void *mlx_ptr); -int mlx_mouse_move(void *win_ptr, int x, int y); -int mlx_mouse_get_pos(void *win_ptr, int *x, int *y); -int mlx_do_key_autorepeatoff(void *mlx_ptr); -int mlx_do_key_autorepeaton(void *mlx_ptr); -int mlx_get_screen_size(void *mlx_ptr, - unsigned int *width, unsigned int *height); - - -/* -** Flush & Sync -*/ -int mlx_do_sync(void *mlx_ptr); -#define MLX_SYNC_IMAGE_WRITABLE 1 -#define MLX_SYNC_WIN_FLUSH 2 -#define MLX_SYNC_WIN_COMPLETED 3 -int mlx_sync(void *mlx_ptr, int cmd, void *param); -/* -** Functions return 0 on success. -** mlx_do_sync() will *flush* (not sync) all requests and wait for completion. -** Note: mlx_loop() always flush requests. -** mlx_sync() 'cmd' commands are: -** - 'image_writable' returns when image data can be written again. -** - 'win_flush' returns when all pending requests are sent to server. -** - 'win_completed' returns after flush and completion. -** 'param' is image pointer or window pointer, according to the command. -** mlx_do_sync() equals 'win_flush' for all windows. -** -*/ - - -#endif /* MLX_H */ diff --git a/mlx/docs/mlx_extra.3 b/mlx/docs/mlx_extra.3 deleted file mode 100644 index 7849011..0000000 --- a/mlx/docs/mlx_extra.3 +++ /dev/null @@ -1,121 +0,0 @@ -.TH MiniLibX 3 "September 19, 2002" -.SH NAME -MiniLibX - Extra functions -.SH SYNOPSYS - -.nf -.I int -.fi -.B mlx_mouse_hide -( -.I void *mlx_ptr -); - -.nf -.I int -.fi -.B mlx_mouse_show -( -.I void *mlx_ptr -); - -.nf -.I int -.fi -.B mlx_mouse_move -( -.I void *mlx_ptr, int x, int y -); - -.nf -.I int -.fi -.B mlx_mouse_get_pos -( -.I void *win_ptr, int *x, int *y -); - -.nf -.I int -.fi -.B mlx_do_key_autorepeatoff -( -.I void *mlx_ptr -); - -.nf -.I int -.fi -.B mlx_do_key_autorepeaton -( -.I void *mlx_ptr -); - -.nf -.I int -.fi -.B mlx_get_screen_size -( -.I void *mlx_ptr, unsigned int *width, unsigned int *height -); - -.nf -.I int -.fi -.B mlx_do_sync -( -.I void *mlx_ptr -); - -.nf -.I int -.fi -.B mlx_sync -( -.I void *mlx_ptr, int cmd, void *param -); - -.SH MOUSE EXTRA FUNCTIONS - -It is possible to show / hide the mouse, and get its current position without user click or -force its position inside a window. - -.SH KEYBOARD EXTRA FUNCTIONS - -The auto-repeat mode of the keyboard can be controlled. By default, auto-repeat is on: -multiple "key pressed" events are generated every second until the key is released. - -.SH SCREEN EXTRA FUNCTION - -It is possible to retrieve the size of the current screen, even before the first -window is created. - -.SH FLUSH AND SYNC FUNCTIONS - -The -.B mlx_do_sync -function will flush the pending commands to the graphic subsystems, ensuring nothing -is cached on your software's side. On return, there is no guarantee that your -commands have been processed. -.br -With -.B mlx_sync -you have more detailed control over the synchronisation mechanisms. Three different commands -are available: -.br -#define MLX_SYNC_IMAGE_WRITABLE 1 -.br -#define MLX_SYNC_WIN_FLUSH 2 -.br -#define MLX_SYNC_WIN_COMPLETED 3 -.br -The third parameter -.I param -can be either the image identifier (command #1) or the window identifier (commands #2 and #3). - - -.SH SEE ALSO -mlx(3), mlx_new_window(3), mlx_pixel_put(3), mlx_new_image(3), mlx_loop(3) - -.SH AUTHOR -Copyright ol@ - 2002-2025 - Olivier Crouzet diff --git a/mlx/docs/mlx_loop.3 b/mlx/docs/mlx_loop.3 deleted file mode 100644 index 7ac4d77..0000000 --- a/mlx/docs/mlx_loop.3 +++ /dev/null @@ -1,154 +0,0 @@ -.TH MiniLibX 3 "September 19, 2002" -.SH NAME -MiniLibX - Handle events -.SH SYNOPSYS - -.nf -.I int -.fi -.B mlx_loop -( -.I void *mlx_ptr -); - -.nf -.I int -.fi -.B mlx_key_hook -( -.I void *win_ptr, int (*funct_ptr)(), void *param -); - -.nf -.I int -.fi -.B mlx_mouse_hook -( -.I void *win_ptr, int (*funct_ptr)(), void *param -); - -.nf -.I int -.fi -.B mlx_expose_hook -( -.I void *win_ptr, int (*funct_ptr)(), void *param -); - -.nf -.I int -.fi -.B mlx_loop_hook -( -.I void *mlx_ptr, int (*funct_ptr)(), void *param -); - -.nf -.I int -.fi -.B mlx_loop_exit -( -.I void *mlx_ptr -); - -.SH EVENTS - -The graphical system is bi-directional. On one hand, the program sends orders to -the screen to display pixels, images, and so on. On the other hand, -it can get information from the keyboard and mouse associated to -the screen. To do so, the program receives "events" from the keyboard or the -mouse. - -.SH DESCRIPTION - -To receive events, you must use -.B mlx_loop -(). This function never returns, unless -.B mlx_loop_exit -is called. It is an -infinite loop that waits for an event, and then calls a user-defined -function associated with this event. A single parameter is needed, -the connection identifier -.I mlx_ptr -(see the -.B mlx manual). - -You can assign different functions to the three following events: -.br -- A key is released -.br -- The mouse button is pressed -.br -- A part of the window should be re-drawn -(this is called an "expose" event, and it is your program's job to handle it in the -Unix/Linux X11 environment, but at the opposite it never happens on Unix/Linux Wayland-Vulkan nor on MacOS). -.br - -Each window can define a different function for the same event. - -The three functions -.B mlx_key_hook -(), -.B mlx_mouse_hook -() and -.B mlx_expose_hook -() work exactly the same way. -.I funct_ptr -is a pointer to the function you want to be called -when an event occurs. This assignment is specific to the window defined by the -.I win_ptr -identifier. The -.I param -address will be passed back to your function every time it is called, and should be -used to store the parameters it might need. - -The syntax for the -.B mlx_loop_hook -() function is similar to the previous ones, but the given function will be -called when no event occurs, and is not bound to a specific window. - -When it catches an event, the MiniLibX calls the corresponding function -with fixed parameters: -.nf - - expose_hook(void *param); - key_hook(unsigned int keycode, void *param); - mouse_hook(unsigned int button, unsigned int x, unsigned int y, void *param); - loop_hook(void *param); - -.fi -These function names are arbitrary. They here are used to distinguish -parameters according to the event. These functions are NOT part of the -MiniLibX. - -.I param -is the address specified in the mlx_*_hook calls. This address is never -used nor modified by the MiniLibX. On key and mouse events, additional -information is passed: -.I keycode -tells you which key is pressed (just try to find out :) ), -( -.I x -, -.I y -) are the coordinates of the mouse click in the window, and -.I button -tells you which mouse button was pressed. - -.SH GOING FURTHER WITH EVENTS -The MiniLibX provides a much generic access to other available events. The -.I mlx.h -include define -.B mlx_hook() -in the same manner mlx_*_hook functions work. The event and mask values -will be taken from the historical X11 include file "X.h". Some Wayland and MacOS events are mapped -to these values when it makes sense, and the mask may not be used in some configurations. - -See source code of the MiniLibX to find out how it will -call your own function for a specific event. - -.SH SEE ALSO -mlx(3), mlx_new_window(3), mlx_pixel_put(3), mlx_new_image(3), mlx_extra(3) - -.SH AUTHOR -Copyright ol@ - 2002-2025 - Olivier Crouzet diff --git a/mlx/docs/mlx_new_image.3 b/mlx/docs/mlx_new_image.3 deleted file mode 100644 index 0d5eccd..0000000 --- a/mlx/docs/mlx_new_image.3 +++ /dev/null @@ -1,180 +0,0 @@ -.TH MiniLibX 3 "September 19, 2002" -.SH NAME -MiniLibX - Manipulating images -.SH SYNOPSYS - -.nf -.I void * -.fi -.B mlx_new_image -( -.I void *mlx_ptr, unsigned int width, unsigned int height -); - -.nf -.I unsigned char * -.fi -.B mlx_get_data_addr -( -.I void *img_ptr, unsigned int *bits_per_pixel, unsigned int *size_line, unsigned int *format -); - -.nf -.I int -.fi -.B mlx_put_image_to_window -( -.I void *mlx_ptr, void *win_ptr, void *img_ptr, int x, int y -); - -.nf -.I void * -.fi -.B mlx_xpm_to_image -( -.I void *mlx_ptr, const char **xpm_data, unsigned int *width, unsigned int *height -); - -.nf -.I void * -.fi -.B mlx_xpm_file_to_image -( -.I void *mlx_ptr, const char *filename, unsigned int *width, unsigned int *height -); - -.nf -.I void * -.fi -.B mlx_png_file_to_image -( -.I void *mlx_ptr, const char *filename, unsigned int *width, unsigned int *height -); - -.nf -.I int -.fi -.B mlx_destroy_image -( -.I void *mlx_ptr, void *img_ptr -); - - -.SH DESCRIPTION - -.B mlx_new_image -() creates a new image in memory. It returns a -.I void * -identifier needed to manipulate this image later. It only needs -the size of the image to be created, using the -.I width -and -.I height -parameters, and the -.I mlx_ptr -connection identifier (see the -.B mlx -manual). - -The user can draw inside the image (see below), and -can dump the image inside a specified window at any time to -display it on the screen. This is done using -.B mlx_put_image_to_window -(). Three identifiers are needed here, for the connection to the -display, the window to use, and the image (respectively -.I mlx_ptr -, -.I win_ptr -and -.I img_ptr -). The ( -.I x -, -.I y -) coordinates define where the image should be placed in the window. - -.B mlx_get_data_addr -() returns information about the created image, allowing a user -to modify it later. The -.I img_ptr -parameter specifies the image to use. The three next parameters should -be the addresses of three different valid unsigned integers. -.I bits_per_pixel -will be filled with the number of bits needed to represent a pixel colour -(also called the depth of the image). -.I size_line -is the number of bytes used to store one line of the image in memory. -This information is needed to move from one line to another in the image. -.I format -tells you how each pixel colour in the image is structured. Currently only 2 values are defined: -.P -0 means format B8G8R8A8 -.P -1 means format A8R8G8B8 - -.B mlx_get_data_addr -returns an -.I unsigned char * -address that represents the beginning of the memory area where the image -is stored. From this address, the first -.I bits_per_pixel -bits represent the colour of the first pixel in the first line of -the image. The second group of -.I bits_per_pixel -bits represent the second pixel of the first line, and so on. -Add -.I size_line -to the address to get the beginning of the second line. You can reach any -pixels of the image that way. - -.B mlx_destroy_image -destroys the given image ( -.I img_ptr -). - -.SH STORING COLOURS INSIDE IMAGES - -Depending on the graphic system, the number of bits used to store a pixel colour -used to be different from one hardware to another. Today, the way the user usually -represents a colour, in the ARGB mode, almost always matches the hardware capabilities -on modern computers. - -Keep in mind that packing the 4-byte ARGB into an unsigned int depends on the local -computer's endian. Adjust your code accordingly. - -.SH XPM AND PNG IMAGES - -The -.B mlx_xpm_to_image -() , -.B mlx_xpm_file_to_image -() and -.B mlx_png_file_to_image -() functions will create a new image the same way. -They will fill it using the specified -.I xpm_data -or -.I filename -, depending on which function is used. -Note that MiniLibX does not use the standard -Xpm and png libraries to deal with xpm and png images. You may not be able to -read all types of xpm and png images. It however handles transparency. - -.SH RETURN VALUES -The four functions that create images, -.B mlx_new_image() -, -.B mlx_xpm_to_image() -, -.B mlx_xpm_file_to_image() -and -.B mlx_png_file_to_image() -, will return NULL if an error occurs. Otherwise they return a non-null pointer -as an image identifier. - - -.SH SEE ALSO -mlx(3), mlx_new_window(3), mlx_pixel_put(3), mlx_loop(3), mlx_extra(3) - -.SH AUTHOR -Copyright ol@ - 2002-2025 - Olivier Crouzet diff --git a/mlx/docs/mlx_new_window.3 b/mlx/docs/mlx_new_window.3 deleted file mode 100644 index 5619965..0000000 --- a/mlx/docs/mlx_new_window.3 +++ /dev/null @@ -1,79 +0,0 @@ -.TH MiniLibX 3 "September 19, 2002" -.SH NAME -MiniLibX - Managing windows -.SH SYNOPSYS - -.nf -.I void * -.fi -.B mlx_new_window -( -.I void *mlx_ptr, unsigned int width, unsigned int height, const char *title -); - -.nf -.I int -.fi -.B mlx_clear_window -( -.I void *mlx_ptr, void *win_ptr -); - -.nf -.I int -.fi -.B mlx_destroy_window -( -.I void *mlx_ptr, void *win_ptr -); - - -.SH DESCRIPTION -The -.B mlx_new_window -() function creates a new window on the screen, using the -.I width -and -.I height -parameters to determine its size, and -.I title -as the text that should be displayed in the window's title bar. -The -.I mlx_ptr -parameter is the connection identifier returned by -.B mlx_init -() (see the -.B mlx -man page). -.B mlx_new_window -() returns a -.I void * -window identifier that can be used by other MiniLibX calls. -Note that the MiniLibX -can handle an arbitrary number of separate windows. - -.B mlx_clear_window -() and -.B mlx_destroy_window -() respectively clear (in black) and destroy the given window. They both have -the same parameters: -.I mlx_ptr -is the screen connection identifier, and -.I win_ptr -is a window identifier. - -.SH RETURN VALUES -If -.B mlx_new_window() -fails to create a new window (whatever the reason), it will return NULL, -otherwise a non-null pointer is returned as a window identifier. -.B mlx_clear_window -and -.B mlx_destroy_window -return nothing. - -.SH SEE ALSO -mlx(3), mlx_pixel_put(3), mlx_new_image(3), mlx_loop(3), mlx_extra(3) - -.SH AUTHOR -Copyright ol@ - 2002-2025 - Olivier Crouzet diff --git a/mlx/docs/mlx_pixel_put.3 b/mlx/docs/mlx_pixel_put.3 deleted file mode 100644 index 6aed6e9..0000000 --- a/mlx/docs/mlx_pixel_put.3 +++ /dev/null @@ -1,83 +0,0 @@ -.TH MiniLibX 3 "September 19, 2002" -.SH NAME -MiniLibX - Drawing inside windows -.SH SYNOPSYS - -.nf -.I int -.fi -.B mlx_pixel_put -( -.I void *mlx_ptr, void *win_ptr, unsigned int x, unsigned int y, unsigned int color -); - -.nf -.I int -.fi -.B mlx_string_put -( -.I void *mlx_ptr, void *win_ptr, unsigned int x, unsigned int y, unsigned int color, char *string -); - - -.SH DESCRIPTION -The -.B mlx_pixel_put -() function draws a defined pixel in the window -.I win_ptr -using the ( -.I x -, -.I y -) coordinates, and the specified -.I color -\&. The origin (0,0) is the upper left corner of the window, the x and y axis -respectively pointing right and down. The connection -identifier, -.I mlx_ptr -, is needed (see the -.B mlx -man page). - -Parameters for -.B mlx_string_put -() have the same meaning. Instead of a simple pixel, the specified -.I string -will be displayed at ( -.I x -, -.I y -). - -Both functions will discard any display outside the window. This makes -.B mlx_pixel_put -slow. Consider using images instead. - -.SH COLOUR MANAGEMENT -The -.I color -parameter has an unsigned integer type. The displayed colour needs to be encoded -in this integer, following a defined scheme. All displayable colours -can be split in 3 basic colours: red, green and blue. Three associated -values, in the 0-255 range, represent how much of each colour is mixed up -to create the original colour. The fourth byte represent transparency, -where 0 is fully transparent and 255 opaque. Theses four values must be set inside the -unsigned integer to display the right colour. The bytes of -this integer are filled as shown in the picture below: - -.nf - | B | G | R | A | colour integer - +---+---+---+---+ -.fi - -While filling the integer, make sure you avoid endian problems. Example: -the "blue" byte will be the least significant byte inside the integer on a -little endian machine. - - -.SH SEE ALSO -mlx(3), mlx_new_window(3), mlx_new_image(3), mlx_loop(3), mlx_extra(3) - - -.SH AUTHOR -Copyright ol@ - 2002-2025 - Olivier Crouzet diff --git a/mlx/mlx.py b/mlx/mlx.py deleted file mode 100644 index 2b79693..0000000 --- a/mlx/mlx.py +++ /dev/null @@ -1,268 +0,0 @@ -# MLX python wrapper for Mlx C library -# See mlx manuals and mlx.h from C library for function usage -# C Functions that require addresses to pass back info are converted to -# Pythod methods that return a tuple - - -from ctypes import * -import os - -class Mlx: - - def __init__(self): - module_dir = os.path.dirname(os.path.abspath(__file__)) - self.so_file = os.path.join(module_dir, "libmlx.so") - self.mlx_func = CDLL(self.so_file) - self._python_ref_std = {} - self._python_ref_gen = {} - self._img_height = {} - -# Initialisation - def mlx_init(self): - self.mlx_func.mlx_init.restype = c_void_p - return self.mlx_func.mlx_init() - - def mlx_release(self, mlx_ptr): - self.mlx_func.mlx_release.argtypes = [c_void_p] - self.mlx_func.mlx_release.restypes = [c_int] - return self.mlx_func.mlx_release(mlx_ptr) - -# Windows - def mlx_new_window(self, mlx_ptr, width, height, title): - self.mlx_func.mlx_new_window.argtypes = [c_void_p, c_uint, c_uint, c_char_p] - self.mlx_func.mlx_new_window.restype = c_void_p - return self.mlx_func.mlx_new_window(mlx_ptr, width, height, title.encode('utf-8')) - - def mlx_clear_window(self, mlx_ptr, win_ptr): - self.mlx_func.mlx_clear_window.argtypes = [c_void_p, c_void_p] - self.mlx_func.mlx_clear_window.restype = c_int - return self.mlx_func.mlx_clear_window(mlx_ptr, win_ptr) - - def mlx_pixel_put(self, mlx_ptr, win_ptr, x, y, color): - self.mlx_func.mlx_pixel_put.argtypes = [c_void_p, c_void_p, c_uint, c_uint, c_uint] - self.mlx_func.mlx_pixel_put.restype = c_int - return self.mlx_func.mlx_pixel_put(mlx_ptr, win_ptr, x, y, color) - - def mlx_destroy_window(self, mlx_ptr, win_ptr): - self.mlx_func.mlx_destroy_window.argtypes = [c_void_p, c_void_p] - self.mlx_func.mlx_destroy_window.restype = c_int - return self.mlx_func.mlx_destroy_window(mlx_ptr, win_ptr) - -# Images - def mlx_new_image(self, mlx_ptr, width, height): - self.mlx_func.mlx_new_image.argtypes = [c_void_p, c_uint, c_uint] - self.mlx_func.mlx_new_image.restype = c_void_p - ret = self.mlx_func.mlx_new_image(mlx_ptr, width, height) - if ret is not None: - self._img_height[str(ret)] = height - return ret - -# API break, returns tuple - def mlx_get_data_addr(self, img_ptr): - bits_per_pixel = c_uint() - size_line = c_uint() - theformat = c_uint() - data = POINTER(c_char) - self.mlx_func.mlx_get_data_addr.argtypes = [c_void_p, POINTER(c_uint), POINTER(c_uint), POINTER(c_uint)] - self.mlx_func.mlx_get_data_addr.restype = POINTER(c_char) - data = self.mlx_func.mlx_get_data_addr(img_ptr, byref(bits_per_pixel), byref(size_line), byref(theformat)) - data_array = c_char * (self._img_height[str(img_ptr)] * size_line.value) - data_view = data_array.from_address(addressof(data.contents)) - return (memoryview(data_view).cast('B'), bits_per_pixel.value, size_line.value, theformat.value) - - def mlx_put_image_to_window(self, mlx_ptr, win_ptr, img_ptr, x, y): - self.mlx_func.mlx_put_image_to_window.argtypes = [c_void_p, c_void_p, c_void_p, c_int, c_int] - self.mlx_func.mlx_put_image_to_window.restype = c_int - return self.mlx_func.mlx_put_image_to_window(mlx_ptr, win_ptr, img_ptr, x, y) - - def mlx_destroy_image(self, mlx_ptr, img_ptr): - self._img_height.pop(str(img_ptr)) - self.mlx_func.mlx_destroy_image.argtypes = [c_void_p, c_void_p] - self.mlx_func.mlx_destroy_image.restype = c_int - return self.mlx_func.mlx_destroy_image(mlx_ptr, img_ptr) - -# Events & main loop -# Note: Python can't catch C^-C from keyboard during mlx_loop execution. -# Use C^-\ to kill your program. - - def mlx_loop(self, mlx_ptr): - self.mlx_func.mlx_loop.argtypes = [c_void_p] - self.mlx_func.mlx_loop.restype = c_int - return self.mlx_func.mlx_loop(mlx_ptr) - - def mlx_loop_exit(self, mlx_ptr): - self.mlx_func.mlx_loop_exit.argtypes = [c_void_p] - self.mlx_func.mlx_loop_exit.restype = c_int - return self.mlx_func.mlx_loop_exit(mlx_ptr) - - def mlx_mouse_hook(self, win_ptr, callback, param): - self.mlx_func.mlx_mouse_hook.restype = c_int - if not callback: - self._python_ref_std[str(win_ptr)+"_mouse_f"] = None - self._python_ref_std[str(win_ptr)+"_mouse_p"] = None - self.mlx_func.mlx_mouse_hook.argtypes = [c_void_p, c_void_p, c_void_p] - return self.mlx_func.mlx_mouse_hook(win_ptr, None, None) - callback_type = CFUNCTYPE(None, c_uint, c_uint, c_uint, py_object) - self.mlx_func.mlx_mouse_hook.argtypes = [c_void_p, callback_type, py_object] - callback_ref = callback_type(callback) - self._python_ref_std[str(win_ptr)+"_mouse_f"] = callback_ref - self._python_ref_std[str(win_ptr)+"_mouse_p"] = param - return self.mlx_func.mlx_mouse_hook(win_ptr, callback_ref, param) - - def mlx_key_hook(self, win_ptr, callback, param): - self.mlx_func.mlx_key_hook.restype = c_int - if not callback: - self._python_ref_std[str(win_ptr)+"_key_f"] = None - self._python_ref_std[str(win_ptr)+"_key_p"] = None - self.mlx_func.mlx_key_hook.argtypes = [c_void_p, c_void_p, c_void_p] - return self.mlx_func.mlx_key_hook(win_ptr, None, None) - callback_type = CFUNCTYPE(None, c_uint, py_object) - self.mlx_func.mlx_key_hook.argtypes = [c_void_p, callback_type, py_object] - callback_ref = callback_type(callback) - self._python_ref_std[str(win_ptr)+"_key_f"] = callback_ref - self._python_ref_std[str(win_ptr)+"_key_p"] = param - return self.mlx_func.mlx_key_hook(win_ptr, callback_ref, param) - - def mlx_expose_hook(self, win_ptr, callback, param): - self.mlx_func.mlx_expose_hook.restype = c_int - if not callback: - self._python_ref_std[str(win_ptr)+"_expose_f"] = None - self._python_ref_std[str(win_ptr)+"_expose_p"] = None - self.mlx_func.mlx_expose_hook.argtypes = [c_void_p, c_void_p, c_void_p] - return self.mlx_func.mlx_expose_hook(win_ptr, None, None) - callback_type = CFUNCTYPE(None, py_object) - self.mlx_func.mlx_expose_hook.argtypes = [c_void_p, callback_type, py_object] - callback_ref = callback_type(callback) - self._python_ref_std[str(win_ptr)+"_expose_f"] = callback_ref - self._python_ref_std[str(win_ptr)+"_expose_p"] = param - return self.mlx_func.mlx_expose_hook(win_ptr, callback_ref, param) - - def mlx_loop_hook(self, mlx_ptr, callback, param): - self.mlx_func.mlx_loop_hook.restype = c_int - if not callback: - self._python_ref_std["loop_f"] = None - self._python_ref_std["loop_p"] = None - self.mlx_func.mlx_loop_hook.argtypes = [c_void_p, c_void_p, c_void_p] - return self.mlx_func.mlx_loop_hook(mlx_ptr, None, None) - callback_type = CFUNCTYPE(None, py_object) - self.mlx_func.mlx_loop_hook.argtypes = [c_void_p, callback_type, py_object] - callback_ref = callback_type(callback) - self._python_ref_std["loop_f"] = callback_ref - self._python_ref_std["loop_p"] = param - return self.mlx_func.mlx_loop_hook(mlx_ptr, callback_ref, param) - - def mlx_hook(self, win_ptr, x_event, x_mask, callback, param): - x_event_key = [2, 3] - x_event_mouse = [4, 5] - x_event_motion = [6] - self.mlx_func.mlx_hook.restype = c_int - if not callback: - self._python_ref_gen[str(win_ptr)+"_f_"+str(x_event)] = None - self._python_ref_gen[str(win_ptr)+"_p_"+str(x_event)] = None - self.mlx_func.mlx_hook.argtypes = [c_void_p, c_uint, c_uint, c_void_p, c_void_p] - return self.mlx_func.mlx_hook(win_ptr, 0, 0, None, None) - if x_event in x_event_key: - callback_type = CFUNCTYPE(None, c_uint, py_object) - elif x_event in x_event_mouse: - callback_type = CFUNCTYPE(None, c_uint, c_uint, c_uint, py_object) - elif x_event in x_event_motion: - callback_type = CFUNCTYPE(None, c_uint, c_uint, py_object) - else: - callback_type = CFUNCTYPE(None, py_object) - - self.mlx_func.mlx_hook.argtypes = [c_void_p, c_uint, c_uint, callback_type, py_object] - callback_ref = callback_type(callback) - self._python_ref_gen[str(win_ptr)+"_f_"+str(x_event)] = callback_ref - self._python_ref_gen[str(win_ptr)+"_p_"+str(x_event)] = param - return self.mlx_func.mlx_hook(win_ptr, x_event, x_mask, callback_ref, param) - -# Misc. - - def mlx_string_put(self, mlx_ptr, win_ptr, x, y, color, string): - self.mlx_func.mlx_string_put.argtypes = [c_void_p, c_void_p, c_uint, c_uint, c_uint, c_char_p] - self.mlx_func.mlx_string_put.restype = c_int - return self.mlx_func.mlx_string_put(mlx_ptr, win_ptr, x, y, color, string.encode('utf-8')) - -# API break, returns tuple - def mlx_xpm_file_to_image(self, mlx_ptr, filename): - width = c_uint() - height = c_uint() - self.mlx_func.mlx_xpm_file_to_image.argtypes = [c_void_p, c_char_p, c_void_p, c_void_p] - self.mlx_func.mlx_xpm_file_to_image.restype = c_void_p - img = self.mlx_func.mlx_xpm_file_to_image(mlx_ptr, filename.encode('utf8'), byref(width), byref(height)) - if img is not None: - self._img_height[str(img)] = height.value - return (img, width.value, height.value) - -# API break, returns tuple - def mlx_png_file_to_image(self, mlx_ptr, filename): - width = c_uint() - height = c_uint() - self.mlx_func.mlx_png_file_to_image.argtypes = [c_void_p, c_char_p, c_void_p, c_void_p] - self.mlx_func.mlx_png_file_to_image.restype = c_void_p - img = self.mlx_func.mlx_png_file_to_image(mlx_ptr, filename.encode('utf8'), byref(width), byref(height)) - if img is not None: - self._img_height[str(img)] = height.value - return (img, width.value, height.value) - -# not really usefull in Python context -#void *mlx_xpm_to_image(void *mlx_ptr, const char **xpm_data, -# unsigned int *width, unsigned int *height); - - def mlx_mouse_hide(self, mlx_ptr): - self.mlx_func.mlx_mouse_hide.argtypes = [c_void_p] - self.mlx_func.mlx_mouse_hide.restype = c_int - return self.mlx_func.mlx_mouse_hide(mlx_ptr) - - def mlx_mouse_show(self, mlx_ptr): - self.mlx_func.mlx_mouse_show.argtypes = [c_void_p] - self.mlx_func.mlx_mouse_show.restype = c_int - return self.mlx_func.mlx_mouse_show(mlx_ptr) - - def mlx_mouse_move(self, mlx_ptr, x, y): - self.mlx_func.mlx_mouse_move.argtypes = [c_void_p, c_int, c_int] - self.mlx_func.mlx_mouse_move.restype = c_int - return self.mlx_func.mlx_mouse_move(mlx_ptr, x, y) - -# API break, returns tuple - def mlx_mouse_get_pos(self, mlx_ptr): - x = c_int() - y = c_int() - self.mlx_func.mlx_mouse_get_pos.argtypes = [c_void_p, c_void_p, c_void_p] - self.mlx_func.mlx_mouse_get_pos.restype = c_int - val = self.mlx_func.mlx_mouse_get_pos(mlx_ptr, byref(x), byref(y)) - return (val, x.value, y.value) - - def mlx_do_key_autorepeatoff(self, mlx_ptr): - self.mlx_func.mlx_do_key_autorepeatoff.argtypes = [c_void_p] - self.mlx_func.mlx_do_key_autorepeatoff.restype = c_int - return self.mlx_func.mlx_do_key_autorepeatoff(mlx_ptr) - - def mlx_do_key_autorepeaton(self, mlx_ptr): - self.mlx_func.mlx_do_key_autorepeaton.argtypes = [c_void_p] - self.mlx_func.mlx_do_key_autorepeaton.restype = c_int - return self.mlx_func.mlx_do_key_autorepeaton(mlx_ptr) - -# API break, returns tuple - def mlx_get_screen_size(self, mlx_ptr): - w = c_uint() - h = c_uint() - self.mlx_func.mlx_get_screen_size.argtypes = [c_void_p, POINTER(c_uint), POINTER(c_uint)] - self.mlx_func.mlx_get_screen_size.restype = c_int - val = self.mlx_func.mlx_get_screen_size(mlx_ptr, byref(w), byref(h)) - return (val, w.value, h.value) - -# Sync funct - def mlx_do_sync(self, mlx_ptr): - self.mlx_func.mlx_do_sync.argtypes = [c_void_p] - self.mlx_func.mlx_do_sync.restype = c_int - return self.mlx_func.mlx_do_sync(mlx_ptr) - - def mlx_sync(self, mlx_ptr, cmd, img_or_win_ptr): - self.mlx_func.mlx_sync.argtypes = [c_void_p, c_int, c_void_p] - self.mlx_func.mlx_sync.restype = c_int - return self.mlx_func.mlx_sync(mlx_ptr, cmd, img_or_win_ptr) - - SYNC_IMAGE_WRITABLE = 1 - SYNC_WIN_FLUSH = 2 - SYNC_WIN_COMPLETED = 3 diff --git a/mlx/test/Dont_panic.png b/mlx/test/Dont_panic.png deleted file mode 100644 index f823ff8d639512f80034fc13e48755bd7d2bf8d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66280 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 c #20201B", -", c #37372D", -"< c #3E3E33", -"1 c #4E1205", -"2 c #5E1706", -"3 c #691A07", -"4 c #73240F", -"5 c #034A0B", -"6 c #005C0B", -"7 c #01640D", -"8 c #006E0D", -"9 c #15670D", -"0 c #00710D", -"q c #096815", -"w c #047512", -"e c #097A16", -"r c #0D7D1A", -"t c #077414", -"y c #107D1C", -"u c #11681B", -"i c #1B4420", -"p c #057E25", -"a c #0A7B22", -"s c #05772A", -"d c #057A2B", -"f c #047723", -"g c #197B24", -"h c #276E2E", -"j c #49580C", -"k c #6A4D0D", -"l c #53601A", -"z c #44443C", -"x c #4B4C3D", -"c c #504F41", -"v c #535345", -"b c #58584D", -"n c #5C5C53", -"m c #5C6153", -"M c #666859", -"N c #7B7B6C", -"B c #767764", -"V c #AE3A0E", -"C c #B9370E", -"Z c #C52F0C", -"A c #C6300D", -"S c #C8320E", -"D c #CB3511", -"F c #CF3A14", -"G c #C93C18", -"H c #D33C16", -"J c #D23E18", -"K c #B65726", -"L c #98662B", -"P c #D3431C", -"I c #DC451C", -"U c #DC491E", -"Y c #D54C1E", -"T c #E14A1F", -"R c #DC4C24", -"E c #D94C26", -"W c #DC5A33", -"Q c #E14D22", -"! c #E05A32", -"~ c #DF6039", -"^ c #E3643D", -"/ c #E56B43", -"( c #E5724A", -") c #05861E", -"_ c #0F801B", -"` c #068A1C", -"' c #068F1A", -"] c #11821E", -"[ c #07921B", -"{ c #08941D", -"} c #058322", -"| c #068922", -" . c #098D24", -".. c #05842C", -"X. c #068B2C", -"o. c #088426", -"O. c #158421", -"+. c #198926", -"@. c #1D8D29", -"#. c #1A8626", -"$. c #0A9224", -"%. c #0D952A", -"&. c #0E9A2C", -"*. c #0A9528", -"=. c #109C2E", -"-. c #068D31", -";. c #068730", -":. c #069433", -">. c #069A35", -",. c #079E38", -"<. c #119D32", -"1. c #22882D", -"2. c #22922E", -"3. c #269532", -"4. c #299435", -"5. c #299936", -"6. c #2D9D39", -"7. c #2B9739", -"8. c #308A3A", -"9. c #07A63B", -"0. c #14A235", -"q. c #15A339", -"w. c #32A23E", -"e. c #36A541", -"r. c #3AA746", -"t. c #3AA946", -"y. c #3EAD49", -"u. c #63985E", -"i. c #40AE4B", -"p. c #43A64E", -"a. c #43B24E", -"s. c #46B451", -"d. c #49B654", -"f. c #4AB956", -"g. c #4EBD59", -"h. c #50BF5B", -"j. c #50B158", -"k. c #6F9266", -"l. c #61A862", -"z. c #63B667", -"x. c #66B76B", -"c. c #52C15E", -"v. c #56C461", -"b. c #58C763", -"n. c #5BC966", -"m. c #5ECD69", -"M. c #61CF6C", -"N. c #64C66C", -"B. c #63D16E", -"V. c #76C57B", -"C. c #66D471", -"Z. c #68D773", -"A. c #6BD976", -"S. c #6EDC79", -"D. c #70DE7B", -"F. c #72E07D", -"G. c #8D927F", -"H. c #7FC381", -"J. c #76E481", -"K. c #79E783", -"L. c #7CEA86", -"P. c #7FEC89", -"I. c #969986", -"U. c #8BBF8C", -"Y. c #9BAF93", -"T. c #A8AA9A", -"R. c #A3B59A", -"E. c #ADB1A2", -"W. c #B5B7A9", -"Q. c #83C286", -"!. c #96C998", -"~. c #81EE8B", -"^. c #84F28F", -"/. c #86F491", -"(. c #8CF996", -"). c #8BF895", -"_. c #ABC9A8", -"`. c #C5C6BB", -"'. c #CACAC0", -"]. c None", -/* pixels */ -"].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].", -"].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].", -"].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].", -"].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].", -"].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].", -"].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].", -"].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].", -"].].].].].].].].].].].].].].;.].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].", -"].].].].].].].].].].].].].,.>.].-.;.].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].", -"].].].].].].].].]...].].-.,.].-.,.].]...].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].", -"].].].].].].].].].:.].]...X.].-.-.].:.:.].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].", -"].].].].].].].].].o.].].} p p o.p ].>.-.].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].", -"].].].].].].].].].p ].} ) ].} p ].p ..].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].", -"].].].].].].].].].) | ) ) ) ) } p p ].].].].].].].].].].@.3.3.4.7.].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].", -"].].].].].].].].]. .&.<.%.` ) ) } p ].].].].].].].+.@.3.3.5.6.6.e.e.e.e.e.].].].].].].].].].].].].].].].].].].].].].].].].].].].", -"].].].].].].].].| <.q.<.0.&.) ) | ].].].].].g +.@.2.3.5.6.6.e.t.e.t.t.t.y.y.t.].].].].].].].].].].].].].].].].].].].].].].].].].", -"].].].].].].].]. .<.<.[ $.0.$.) ].].].].].] +.@.@.5.6.6.e.e.y.y.y.a.a.s.s.s.a.a.i.].].].].].].].].].].].].].].].].].].].].].].].", -"].].].].].].].].| <.<.' [ =.$.` | >.>.].O.+.@.2.5.5.w.e.t.y.y.y.s.d.f.f.f.f.f.f.s.s.].].].].].].].].].].].].].].].].].].].].].].", -"].].].].].].].].| %.q.<.0.0. .) | o.o.O.+.@.2.5.6.w.e.y.y.s.s.f.g.c.c.c.c.c.c.h.g.g.d.].].].].].].].].].].].].].].].].].].].].].", -"].].].].].].].].].| .&.&.` ` ].].e r O.+.2.3.5.w.e.y.y.s.f.g.c.v.v.b.n.n.n.b.b.v.c.h.f.].].].].].].].].].].].].].].].].].].].].", -"].].].].].].].].].| | ) ` ].].].].r ] +.@.3.5.6.e.y.y.s.f.g.v.v.n.m.M.B.B.M.M.m.n.b.v.h.d.].].].].].].].].].].].].].].].].].].].", -"].].].].].].].].].o.} ].].].].].e _ O.@.2.5.6.e.y.y.s.g.g.v.b.m.B.B.C.Z.A.Z.Z.C.M.m.n.v.h.d.].].].].].].].].].].].].].].].].].].", -"].].].].].].].].X.-.].].].].].].e ] +.@.3.5.w.e.y.y.d.g.v.b.m.B.Z.A.S.D.D.D.S.A.Z.B.m.n.v.g.].].].].].].].].].].].].].].].].].].", -"].].].].].].].].:.].].].].].].t r O.+.2.3.6.w.t.y.s.g.c.b.m.C.Z.S.F.J.J.K.J.J.D.S.Z.B.m.b.c.d.].].].].].].].].].].].].].].].].].", -"].].].].].].].:.-.].].].].].].t _ O.@.2.7.6.e.t.s.d.g.v.b.B.C.A.F.J.L.P.~.P.K.J.F.A.C.M.n.v.g.].].].].].].].].].].].].].].].].].", -"].].].].].].:.:.].].].].].].w e ] O.@.2.7.w.e.y.s.d.c.v.m.C.Z.F.J.L.~././.^.~.L.J.S.Z.B.n.v.g.].].].].].].].].].].].].].].].].].", -"].].].].].;.-.d ].].].].].].w e ] +.@.1.4.w.r.y.s.f.c.v.m.C.A.F.J.P./.).(.).^.P.J.D.A.B.m.v.h.d.].].].].].].].].].].].].].].].].", -"].].].]...-.d ].].].].].].].w e ] u = + @ h r.y.s.f.v.v.m.C.A.F.K.~./.).(./.^.L.J.D.Z.B.n.v.h.d.].].].].].].].].].].].].].].].].", -"].].].].d d d d ;.:.9.9.,.e w e q + o M U.y.s.d.c.v.m.B.Z.F.J.P.^.^./.^.P.K.F.S.Z.M.n.c.g.d.].].].].].].].].].].].].].].].].", -"].].].].d d s d d d ;.-.:.d w e - X B E.l.y.d.c.v.m.B.Z.S.F.J.K.P.~.P.K.J.D.A.C.m.b.c.g.s.].].].].].].].].].].].].].].].].", -"].].].].].].].].].d s d d f w t + $ v I.x.s.g.c.b.m.C.Z.S.F.J.J.J.J.F.D.A.C.M.n.v.h.f.a.].].].].].].].].].].].].].].].].", -"].].].].].].].].].].].].].8 w 7 . c `._.f.f.c.v.b.B.B.A.A.S.D.D.D.A.A.C.M.m.v.c.g.s.i.].].].].].].].:.-.].].].].].].].", -"].].].].].].].].].].].].].].w 7 . $ B N u.d.g.c.c.n.B.B.C.C.C.A.C.C.B.m.n.v.c.g.f.s.y.].].].].].].;.9.].].-.].].].].].", -"].].].].].].].].].].].].].].8 8 + o o , E.Q.j.c.c.c.c.n.m.M.M.M.N.V.H.z.h.c.g.f.a.y.e.].].].].].].X.;.].:.,.].].].].].", -"].].].].].].].].].].].].].].0 0 * z `._.u.j.f.c.c.c.b.n.M.U.k.W.`.m i p.f.a.y.t.e.].].].].].p p ]...:.:.].].].].].", -"].].].].].].].].].].].].].].0 0 5 # n b v R.!.l.z.V.x.u.R.T.c M m $ i a.y.t.w.5.o.:.].].p } ].p ....].>.:.].].].", -"].].].].].].].].].].].].].].8 0 8 @ < T.E.M G.`.I., v x X . 8.t.e.6.].].X.X.].) } ) p p ]...:.].].].].", -"].].].].].].].].].].].].].].].0 0 5 X < < # x N x o h w.6.7.].].} } ) ) ) ) ) ].p p p ].].].].", -"].].].].].].].].].].].].].].].8 0 8 * o X o 1.5.5.].].].| | %.%.` ` ) ) } o.].].].].].", -"].].].].].].].].].].].].].].].].0 0 8 & : 3.3.2.].].].| <.0.0.<. .` ) } ].].].].].].", -"].].].].].].].].].].].].].].].].8 8 0 7 @ = g 3.@.].].].]. .0.&.{ =.<.| ) ].| :.-.].].].", -"].].].].].].].].].].].].].].].].].8 0 0 7 & = g 2.#.].].].].].$.0.*.' [ 0.&.) } X.>.].].].].", -"].].].].].].].].].].].].].].].].].].8 0 0 8 - + o 5 g +.O.O.].].].].]. .&.$.' ' =.<.| } ].].].].].].", -"].].].].].].].].].].].].].].].].].].].0 0 0 0 6 * O 1 3 3 3 3 % . = u O.] ] y ].].].].].].| ) ) ' ' ` .].].].].].].].].", -"].].].].].].].].].].].].].].].].].].].].8 0 0 0 0 9 k C P E J G 4 O * 5 q y _ a a a ].].].].].].].| | ) ` ` ].].].].].].].].].].", -"].].].].].].].].].].].].].].].].].].].].].].8 0 0 0 8 j G / ^ R ~ l w e e e t f d ;.].].].].].].X.o.].].].].].].].].].].].].].].", -"].].].].].].].].].].].].].].].].].].].].].].].].8 0 0 9 V W / R ^ L 0 w 0 0 ].].d -.:.].].].].:...].].].].].].].].].].].].].].].", -"].].].].].].].].].].].].].].].].].].].].].].].].].].0 9 V J Q U E K 9 ].].].].].d ..,.].].].>.;.].].].].].].].].].].].].].].].].", -"].].].].].].].].].].].].].].].].].].].].].].].].].].].].S H I T Y I ].].].].].].].d :.,.].].;.d ].].].].].].].].].].].].].].].].", -"].].].].].].].].].].].].].].].].].].].].].].].].].].].].A S I T Y I ].].].].].].].s d -.]...d ].].].].].].].].].].].].].].].].].", -"].].].].].].].].].].].].].].].].].].].].].].].].].].].].Z S J Q E U ].].].].].].].].s d d d d ].].].].].].].].].].].].].].].].].", -"].].].].].].].].].].].].].].].].].].].].].].].].].].].].Z Z H I U U I ].].].].].].].].d d d ].].].].].].].].].].].].].].].].].].", -"].].].].].].].].].].].].].].].].].].].].].].].].].].].].Z Z S J I T R P ].].].].].].].d s s ].].].].].].].].].].].].].].].].].].", -"].].].].].].].].].].].].].].].].].].].].].].].].].].].].Z Z Z H R R ! ! G ].].].].].].].d ].].].].].].].].].].].].].].].].].].].", -"].].].].].].].].].].].].].].].].].].].].].].].].].].].].].Z Z D E ^ ( W D ].].].].].].].].].].].].].].].].].].].].].].].].].].].", -"].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].Z Z A F J D Z ].].].].].].].].].].].].].].].].].].].].].].].].].].].", -"].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].Z Z S ].].].].].].].].].].].].].].].].].].].].].].].].].].].].].", -"].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].", -"].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].", -"].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].", -"].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].", -"].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].", -"].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].", -"].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].]." -}; diff --git a/mlx/test/mlxtest.py b/mlx/test/mlxtest.py deleted file mode 100644 index b146e6a..0000000 --- a/mlx/test/mlxtest.py +++ /dev/null @@ -1,276 +0,0 @@ -# Mlx large test - -import sys -from mlx import Mlx # Import Mlx class - -class ImgData: - """Structure for image data""" - def __init__(self): - self.img = None - self.width = 0 - self.height = 0 - self.data = None - self.sl = 0 # size line - self.bpp = 0 # bits per pixel - self.iformat = 0 - -class XVar: - """Structure for main vars""" - def __init__(self): - self.mlx = None - self.mlx_ptr = None - self.screen_w = 0 - self.screen_h = 0 - self.win_1 = None - self.win_2 = None - self.img_1 = ImgData() - self.img_2 = ImgData() - self.img_png = ImgData() - self.img_xpm = ImgData() - self.imgidx = 0 - -def draw_colormap(xvar): - """Draw the colormap""" - print("Drawing colormap...") - for i in range(400): - for j in range(400): - r = int((0xFF * i) / 400) - g = int((0xFF * j) / 400) - b = int((0xFF * (400 - (i + j) // 2)) / 400) - col = 0xFF000000 | (r << 16) | (g << 8) | b - xvar.mlx.mlx_pixel_put(xvar.mlx_ptr, xvar.win_1, i, j, col) - -def gere_key_press(key, xvar): - print(f"Pressed key {key}") - -def gere_key(key, xvar): - print(f"Got key {key}: ", end="") - - if key == 113: # 'q' - xvar.mlx.mlx_do_key_autorepeatoff(xvar.mlx_ptr) - print("key repeat off") - return 0 - elif key == 119: # 'w' - xvar.mlx.mlx_do_key_autorepeaton(xvar.mlx_ptr) - print("key repeat on") - return 0 - elif key == 101: # 'e' - draw_colormap(xvar) - print("colormap") - return 0 - elif key == 114: # 'r' - xvar.mlx.mlx_mouse_hide(xvar.mlx_ptr) - print("mouse hide") - return 0 - elif key == 116: # 't' - xvar.mlx.mlx_mouse_show(xvar.mlx_ptr) - print("mouse show") - return 0 - elif key == 121: # 'y' - xvar.mlx.mlx_mouse_move(xvar.win_1, 200, 200) - print("mouse move") - return 0 - elif key == 117: # 'u' - ret, x, y = xvar.mlx.mlx_mouse_get_pos(xvar.win_1) - print(f"current mouse pos is {x} x {y}") - return 0 - elif key == 105: # 'i' - xvar.mlx.mlx_sync(xvar.mlx_ptr, Mlx.SYNC_IMAGE_WRITABLE, xvar.img_2.img) - # fill image in white - for offset in range(0, xvar.img_2.sl * 100, 4): - xvar.img_2.data[offset:offset+4] = (0xFFFFFFFF).to_bytes(4, 'little') - - xvar.mlx.mlx_put_image_to_window(xvar.mlx_ptr, xvar.win_1, xvar.img_2.img, 50, 50) - - # update in red - for offset in range(0, xvar.img_2.sl * 100, 4): - xvar.img_2.data[offset:offset+4] = (0xFFFF0000).to_bytes(4, 'little') - - xvar.mlx.mlx_put_image_to_window(xvar.mlx_ptr, xvar.win_1, xvar.img_2.img, 250, 250) - print("update image without sync - most likely 2 red squares") - return 0 - elif key == 111: # 'o' - xvar.mlx.mlx_sync(xvar.mlx_ptr, Mlx.SYNC_IMAGE_WRITABLE, xvar.img_2.img) - # fill image in white - for offset in range(0, xvar.img_2.sl * 100, 4): - xvar.img_2.data[offset:offset+4] = (0xFFFFFFFF).to_bytes(4, 'little') - - xvar.mlx.mlx_put_image_to_window(xvar.mlx_ptr, xvar.win_1, xvar.img_2.img, 50, 50) - xvar.mlx.mlx_sync(xvar.mlx_ptr, Mlx.SYNC_IMAGE_WRITABLE, xvar.img_2.img) - - # update in red - for offset in range(0, xvar.img_2.sl * 100, 4): - xvar.img_2.data[offset:offset+4] = (0xFFFF0000).to_bytes(4, 'little') - - xvar.mlx.mlx_put_image_to_window(xvar.mlx_ptr, xvar.win_1, xvar.img_2.img, 250, 250) - print("update image with sync - white and red squares") - return 0 - - # Default - print("clear and string put") - xvar.mlx.mlx_clear_window(xvar.mlx_ptr, xvar.win_1) - xvar.mlx.mlx_string_put(xvar.mlx_ptr, xvar.win_1, 20, 20, 0xFFFF00FF, "Hello MLX!") - - -def gere_expose(xvar): - print("Expose !") - xvar.mlx.mlx_put_image_to_window(xvar.mlx_ptr, xvar.win_1, xvar.img_1.img, 0, 0) - xvar.mlx.mlx_put_image_to_window(xvar.mlx_ptr, xvar.win_1, xvar.img_1.img, 201, 201) - -def gere_mouse(button, x, y, xvar, win): - print(f"Got mouse : {button} at {x}x{y}") - - if button == 1: - xvar.mlx.mlx_put_image_to_window(xvar.mlx_ptr, win, xvar.img_1.img, 100, 100) - return 0 - - if button == 3: # right click - if xvar.imgidx % 2: - xvar.mlx.mlx_put_image_to_window(xvar.mlx_ptr, win, xvar.img_png.img, x, y) - else: - xvar.mlx.mlx_put_image_to_window(xvar.mlx_ptr, win, xvar.img_xpm.img, x, y) - xvar.imgidx += 1 - -def gere_mouse_1(button, x, y, xvar): - gere_mouse(button, x, y, xvar, xvar.win_1) - -def gere_mouse_2(button, x, y, xvar): - gere_mouse(button, x, y, xvar, xvar.win_2) - -def gere_close_1(xvar): - xvar.mlx.mlx_loop_exit(xvar.mlx_ptr) - -def gere_close_2(xvar): - xvar.mlx.mlx_destroy_window(xvar.mlx_ptr, xvar.win_2) - xvar.win_2 = None - -def main(): - xvar = XVar() - # Mlx Initialisation - try: - xvar.mlx = Mlx() - except Exception as e: - print(f"Error: Can't initialize MLX: {e}", file=sys.stderr) - sys.exit(1) - - xvar.mlx_ptr = xvar.mlx.mlx_init() - - ret, xvar.screen_w, xvar.screen_h = xvar.mlx.mlx_get_screen_size(xvar.mlx_ptr) - print(f"Screen size: {xvar.screen_w} x {xvar.screen_h}") - - # Windows creation - try: - xvar.win_1 = xvar.mlx.mlx_new_window(xvar.mlx_ptr, 400, 400, "MLX main win") - if not xvar.win_1: - raise Exception("Can't create main window") - - xvar.win_2 = xvar.mlx.mlx_new_window(xvar.mlx_ptr, 150, 150, "Secondary window") - if not xvar.win_2: - raise Exception("Can't create secondary window") - except Exception as e: - print(f"Error Win create: {e}", file=sys.stderr) - sys.exit(1) - - # Image #1 - xvar.img_1.img = xvar.mlx.mlx_new_image(xvar.mlx_ptr, 200, 200) - if not xvar.img_1.img: - raise Exception("Can't create image 1") - - xvar.img_1.width = 200 - xvar.img_1.height = 200 - xvar.img_1.data, xvar.img_1.bpp, xvar.img_1.sl, xvar.img_1.iformat = \ - xvar.mlx.mlx_get_data_addr(xvar.img_1.img) - - # Fill image #1 - for i in range(xvar.img_1.sl * 200): - xvar.img_1.data[i] = 0x80 - - for i in range(xvar.img_1.sl * 100): - xvar.img_1.data[i] = 0xFF - - try: - # Add some red pixels - pixel_positions = [ - 0 * 200 * 4, # top left - (1 * 200 + 1) * 4, # top left + 1 - (199 * 200 + 199) * 4, # bottom right - (198 * 200 + 198) * 4 # bottom right - 1 - ] - - for pos in pixel_positions: - if pos < len(xvar.img_1.data) - 3: - xvar.img_1.data[pos:pos+4] = (0xFFFF0000).to_bytes(4, 'little') - except Exception as e: - print(f"Error img1: {e}", file=sys.stderr) - sys.exit(1) - - # Image #2 - try: - xvar.img_2.img = xvar.mlx.mlx_new_image(xvar.mlx_ptr, 100, 100) - if not xvar.img_2.img: - raise Exception("Can't create image 2") - - xvar.img_2.width = 100 - xvar.img_2.height = 100 - xvar.img_2.data, xvar.img_2.bpp, xvar.img_2.sl, xvar.img_2.iformat = \ - xvar.mlx.mlx_get_data_addr(xvar.img_2.img) - except Exception as e: - print(f"Error img2: {e}", file=sys.stderr) - sys.exit(1) - - # Load PNG & XPM - result = xvar.mlx.mlx_png_file_to_image(xvar.mlx_ptr, "puffy_small.png") - if not result: - raise Exception("Can't load PNG") - xvar.img_png.img, xvar.img_png.width, xvar.img_png.height = result - if not xvar.img_png.img: - raise Exception("Can't create png") - xvar.img_png.data, xvar.img_png.bpp, xvar.img_png.sl, xvar.img_png.iformat = \ - xvar.mlx.mlx_get_data_addr(xvar.img_png.img) - - result = xvar.mlx.mlx_xpm_file_to_image(xvar.mlx_ptr, "Dont_panic.xpm") - if not result: - raise Exception("Can't load XPM") - xvar.img_xpm.img, xvar.img_xpm.width, xvar.img_xpm.height = result - xvar.img_xpm.data, xvar.img_xpm.bpp, xvar.img_xpm.sl, xvar.img_xpm.iformat = \ - xvar.mlx.mlx_get_data_addr(xvar.img_xpm.img) - - # event hooks - xvar.mlx.mlx_key_hook(xvar.win_1, gere_key, xvar) - xvar.mlx.mlx_hook(xvar.win_2, 2, 1, gere_key_press, xvar) # KeyPress event - xvar.mlx.mlx_expose_hook(xvar.win_1, gere_expose, xvar) - xvar.mlx.mlx_mouse_hook(xvar.win_1, gere_mouse_1, xvar) - xvar.mlx.mlx_mouse_hook(xvar.win_2, gere_mouse_2, xvar) - xvar.mlx.mlx_hook(xvar.win_1, 33, 0, gere_close_1, xvar) # WM_DELETE_WINDOW - xvar.mlx.mlx_hook(xvar.win_2, 33, 0, gere_close_2, xvar) # WM_DELETE_WINDOW - - # User Instructions - print("On main window:") - print(" mouse button 1: place white/gray image in 0x0 and 200x200") - print(" mouse button 2: place png image and xpm image, alternatively") - print(" try keys QWERTYUIO and others") - print(" click window's X button to end the program") - print("On secondary window (smaller):") - print(" show key pressed for auto repeat") - print(" click window's X button to close it") - - # Main loop - xvar.mlx.mlx_loop(xvar.mlx_ptr) - - # Cleaning resources - print("destroy xpm") - xvar.mlx.mlx_destroy_image(xvar.mlx_ptr, xvar.img_xpm.img) - print("destroy png") - xvar.mlx.mlx_destroy_image(xvar.mlx_ptr, xvar.img_png.img) - print("destroy imgs") - xvar.mlx.mlx_destroy_image(xvar.mlx_ptr, xvar.img_1.img) - xvar.mlx.mlx_destroy_image(xvar.mlx_ptr, xvar.img_2.img) - print("destroy win(s)") - xvar.mlx.mlx_destroy_window(xvar.mlx_ptr, xvar.win_1) - if xvar.win_2: - xvar.mlx.mlx_destroy_window(xvar.mlx_ptr, xvar.win_2) - print("destroy mlx") - xvar.mlx.mlx_release(xvar.mlx_ptr) - -if __name__ == "__main__": - main() diff --git a/mlx/test/puffy.png b/mlx/test/puffy.png deleted file mode 100644 index eb2eec65f4e31fff8c9c59f33b72c2b688a5d1c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 107461 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

bn5SEdLU7{$oy*7 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 Cc9B1XZ?8(Pp+LuLH=vwTV$7YD(e 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 UUNy5ZX$BDtk!E^jI?j*&4c*;BzW@LL diff --git a/mlx/test/puffy_small.png b/mlx/test/puffy_small.png deleted file mode 100644 index d70dfeb3c09842eaffb7cb7dabb6176e25414bb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6222 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 diff --git a/mlx/test/simple_test.py b/mlx/test/simple_test.py deleted file mode 100644 index f0607db..0000000 --- a/mlx/test/simple_test.py +++ /dev/null @@ -1,29 +0,0 @@ - -from mlx import Mlx - -def mymouse(button, x, y, mystuff): - print(f"Got mouse event! button {button} at {x},{y}.") - -def mykey(keynum, mystuff): - print(f"Got key {keynum}, and got my stuff back:") - print(mystuff) - if keynum == 32: - m.mlx_mouse_hook(win_ptr, None, None) - -def gere_close(dummy): - m.mlx_loop_exit(mlx_ptr) - -m = Mlx() -mlx_ptr = m.mlx_init() -win_ptr = m.mlx_new_window(mlx_ptr, 200, 200, "win title") -m.mlx_clear_window(mlx_ptr, win_ptr) -m.mlx_string_put(mlx_ptr, win_ptr, 20, 20, 255, "Hello PyMlx!") -(ret, w, h) = m.mlx_get_screen_size(mlx_ptr) -print(f"Got screen size: {w} x {h} .") - -stuff = [1, 2] -m.mlx_mouse_hook(win_ptr, mymouse, None) -m.mlx_key_hook(win_ptr, mykey, stuff) -m.mlx_hook(win_ptr, 33, 0, gere_close, None) - -m.mlx_loop(mlx_ptr) diff --git a/src/AMazeIng.py b/src/AMazeIng.py index 3e1f951..64047c0 100644 --- a/src/AMazeIng.py +++ b/src/AMazeIng.py @@ -30,6 +30,7 @@ class AMazeIng(BaseModel): for array in self.generator.generator(self.height, self.width): self.maze.set_maze(array) yield self.maze + return def solve_path(self) -> str: return self.solver.solve(self.maze) diff --git a/test.txt b/test.txt index bb53950..2abf10a 100644 --- a/test.txt +++ b/test.txt @@ -1,34 +1,19 @@ -BB93B9793D555157D3BD117D3B9793 -C42EAC3EC517BC3BD2856EB9442D2E -D1016D07BBAD2BA852A93D2ABBA92B -BEAC3D450469446ED2C2A92EA80286 -87A947BD417C15797ABAC2ED2AEA87 -87EC53AD54516D3AB82C7AD3807E87 -85397AC3951297AC4283D29468796B -ABC4145007AE87C17AAAD407BED2D2 -A8512B9687C7C39412E8114147D47A -A87EEAC78151382D2EBEEAD0553D12 -EABD3C17EED2C6AB87C17EBA95696E -9447816D393C3BC2C5387D46C7D297 -C179687942C3EC507D6A917D153AC3 -D0387EBA92BAF952FFF82C156BAA92 -92C41106AEAEFED457FEC7C7D0406A -AEBD6AAD03C3FFFBFFFD155154787E -83AD5687AA9457FAFD5503D6D512BB -EC2917ED6C2B97FAFFFBAE95396AC2 -D3C68517B9006D16B95407EBAE9452 -D07D6D2B86AABBA946B9697A8787BE -905397C6A96C04407D287878452D03 -AC784153EC57C7B83BC4387A9547EA -857EBA92D511392AAC3BAAD2C15156 -85392EEED56EC2C6EB86EC16D692BB -EB8285151539143BBAA9796BD16802 -942EEBAD03EEA9682C2C54387E96AE -87AD14696C7D687AC56D17845387AB -E96BA91017B952B85153C5057EED6A -D056EEEEA902B846D2D2D5295113BA -D455557D46EEC47D56D47D447EEC46 +D39393951579553 +BAAC6AE96956952 +AAA97C383C396D2 +86AC156E83AC53E +A943C553EC453C3 +AE96FB96FFFBC3A +C56BFC4157FA96A +9516FFFAFFF86BA +C3C513FAFD52D2A +94796AFAFFFA92A +A93C3ABC3D546EA +AAA96C2BC555552 +EA8693C43B91796 +96E96A93C6AC3AB +C5547C6C5547C46 1,1 -29,29 -SEESESESWSEESSWSWWWSSSWSESESEEEEENNEESWSSESSESESSEEEENEENEEENNNEEEEENEESSSSWSSWWWSSSWSWSESSSSENEEEESEN +2,2 +ES