diff --git a/assets/snas.xpm b/assets/snas.xpm new file mode 100644 index 0000000..f27b457 --- /dev/null +++ b/assets/snas.xpm @@ -0,0 +1,266 @@ +/* XPM */ +static char *down[] = { +/* columns rows colors chars-per-pixel */ +"150 150 110 2 ", +" c #000000", +". c #00040B", +"X c #090709", +"o c #04080F", +"O c #0B0B0C", +"+ c #000611", +"@ c #030A13", +"# c #010B1C", +"$ c #0F1010", +"% c #07101D", +"& c #131314", +"* c #171518", +"= c #1C151D", +"- c #17191A", +"; c #1A1B1C", +": c #000E25", +"> c #000F28", +", c #001029", +"< c #1E1F20", +"1 c #001231", +"2 c #001639", +"3 c #00183F", +"4 c #1F2021", +"5 c #0E213B", +"6 c #232425", +"7 c #262728", +"8 c #2D212F", +"9 c #2A2B2C", +"0 c #2F3031", +"q c #323335", +"w c #373A3E", +"e c #3A3B3D", +"r c #001A44", +"t c #001C49", +"y c #002053", +"u c #00245D", +"i c #3E3F41", +"p c #002664", +"a c #00286A", +"s c #002C75", +"d c #4A364D", +"f c #533D56", +"g c #3F4145", +"h c #3F4651", +"j c #424345", +"k c #47494B", +"l c #494B4D", +"z c #4C4E50", +"x c #535457", +"c c #545659", +"v c #57595C", +"b c #595B5E", +"n c #5D4460", +"m c #5C5E61", +"M c #664B6A", +"N c #5F6164", +"B c #616366", +"V c #646669", +"C c #66696C", +"Z c #696B6F", +"A c #6F7275", +"S c #737679", +"D c #76797D", +"F c #003283", +"G c #00358A", +"H c #003894", +"J c #003EA2", +"K c #0040A7", +"L c #0041AA", +"P c #7A7D81", +"I c #004AC3", +"U c #004ECD", +"Y c #0051D5", +"T c #0056E1", +"R c #0059EB", +"E c #005DF5", +"W c #0061FF", +"Q c #826087", +"! c #906A95", +"~ c #9A71A0", +"^ c #7F8185", +"/ c #828589", +"( c #86898D", +") c #909397", +"_ c #919599", +"` c #979A9F", +"' c #989CA0", +"] c #9DA1A6", +"[ c #9FA3A8", +"{ c #A1A4A9", +"} c #A6AAAF", +"| c #AAADB3", +" . c #AEB2B7", +".. c #AFB3B8", +"X. c #B1B5BA", +"o. c #BC8AC3", +"O. c #B9BDC3", +"+. c #E3A7EB", +"@. c #ECAEF5", +"#. c #F6B5FF", +"$. c #BEC2C8", +"%. c #C1C5CB", +"&. c #C4C8CE", +"*. c #CACED5", +"=. c #D2D7DD", +"-. c #D3D8DE", +";. c #DCE1E7", +":. c #DCE1E8", +">. c #E5EAF1", +",. c white", +/* pixels */ +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" X X ", +" X $ 0 A ' *.>.>.>...S e & ", +" X 7 [ :.>.>.>.>.>.>.>.>.>.>.;.] 7 O ", +" ; ` >.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.X.9 X X ", +" O S -.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.) $ ", +" & _ >.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.$.< ", +" & %.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.=.e ", +" O _ >.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.-.7 ", +" S >.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.X.$ ", +" q >.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.S ", +" O ..>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.-.- ", +" ; >.>.>.>.>.;.) 0 & & ; b :.>.>.>.>.>.>.} e ; & e $.>.>.>.>.>.>.>.( ", +" v >.>.>.>.-.4 N >.>.>.>.>.{ X X q &.>.>.>.>.>.$.O ", +" ' >.>.>...$ X =.>.>.>.>.m - X.>.>.>.>.>.4 ", +" X =.>.>.>.m ' >.>.>.>.e X k >.>.>.>.>.k ", +" X >.>.>.>.D _ >.>.>.>.e X X 9 >.>.>.>.>.b ", +" X >.>.>.>.;.6 $.>.>.>.>.m X X c >.>.>.>.>.S X ", +" X >.>.>.>.>...7 0 >.>.>.>.>...- X b ;.>.>.>.>.>.x ", +" X j b .>.>.>.X.0 X X X $ v *.>.>.>.>.>.>.` O X O & z $.>.>.>.>.>.>.>.e X ", +" O O ` >.>.>.>.>.;.} } -.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>._ A & ", +" & %.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.e O ", +" B >.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.*.$.;.>.>.>.>.>.j X ", +" $.>.>.>.%.6 - i _ *.>.>.>.>.>.>.:.&.) A g 4 $ X 0 } >.>.>.>.C ", +" _ >.>.>.A X X X X $ & $ & O X X X X X X X X X X w >.>.>.>.^ ", +" l >.>.>.N X X O X X X X X X X X O X X 7 k O ; >.>.>.>.S ", +" & -.>.>.{ O O ^ $ X b D 7 X $ ;.>.- X i i X X S >.>.>.>.q ", +" X c >.>.>.m X $ A e X 0 >.>.7 X 9 >.>.; X & X j =.>.>.>.` X ", +" O _ >.>.=.c O X X O X < >.>.7 O z >.;.q X X 7 -.>.>.>.X.- ", +" O b -.>.>.' ; . X 9 v 0 ; q e $ X X c $.>.>.=.S O ", +" 9 [ ;.>.;._ $ X X X X X X X X X - _ >.>.>.[ 7 X ", +" $ e ( *.>.:.| c 7 - O X O 7 g _ :.:.{ l ; ", +" X - g C ^ P ^ P ^ ^ C z 0 4 ", +" X X X X X O X X . . ", +" p , : . X X X X % : t p W 3 . ", +" @ J W W W W u # z >.>.c : a W W W W W K # . ", +" K W W W W W % e >.>.i # W W W W W W I : . ", +" u W W W W W W . h >.>.^ . @ I W W W W W W I + ", +" . , R W W W W W W 0 >.>.=.X H W W W W W Y L H . ", +" . G a a Y W W W W o 7 >.>.>.O . F W W W W W K . # t ", +" : J o @ Y W W W W : X g >.>.>.& X p W W W W W I . y : ", +" . L 2 # R W W W W % X k >.>.>.; X r W W W W E I , . s ", +" . , T . + . 2 Y W W . N >.>.>.- r W W W L # . . F 1 ", +" . K a . . . , U W W X ^ >.>.>.- X 2 W W W L # . . . . 1 G ", +" , W : . + F G I W W W X X P >.>.>.; X 1 W W W R Y Y W y + W + ", +" F W o p W W W W W W . X ) :.>.>.w X , W W W W W W W H . W t ", +" U E . J W W W W W U . X $.>.>.>.k o W W W W W W W Y . . ", +" r p . T W W W W W H . X >.>.>.>./ X . W W W W W W W W X ", +" . . W W W W W W a . O >.>.>.>.O. U W W W W W W R 7 S & ", +" ; & . : 3 2 t + X X X X X , t a u r r : . O X.>.; ", +" -.:.7 o . 9 V 9 ", +" ; m x 6 O . @ % % % X X % % X O X $ X X ", +" X X X 5 5 5 5 5 5 5 # 5 5 5 5 5 5 5 r ", +" . . o o o o X @ o @ @ @ @ . ", +" ", +" X & - $ - & ; $ ", +" e >.>.D X ; >.>.>._ O ", +" N >.>.^ X - >.>.>.$.< ", +" X 8 ! Q X l >.>.D X X 4 >.>.>.Z O ; 8 X ", +" d +.#.#.n $ =.>.^ X - >.>.-.X * +.#.~ X ", +" f Q ! M n X & ; $ ; | -.S M #.@.o.= ", +" X X X X X O X X ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" " +}; diff --git a/include/mlx_image.h b/include/mlx_image.h index d2cde6a..b3b5d87 100644 --- a/include/mlx_image.h +++ b/include/mlx_image.h @@ -75,7 +75,7 @@ t_image mlx_xpm_to_image(t_mlx mlx_ptr, const char **xpm_data, // ??? TODO docs xpm_file_to_image // width & height CAN be null (check please :3) -t_image _mlx_xpm_file_to_image(t_mlx mlx_ptr, char *filename, +t_image mlx_xpm_file_to_image(t_mlx mlx_ptr, const char *filename, int *width, int *height); /// @brief Destroy an image to avoid leaks. diff --git a/source/main.cpp b/source/main.cpp index deb1b93..e8f79f7 100644 --- a/source/main.cpp +++ b/source/main.cpp @@ -47,7 +47,7 @@ int main(void) { // MENU { switch (uc_menu_quick("pixels", "images", "xpm", "files", - "navigate", "assets", "quit", NULL)) + "navigate", "assets", "xpm files", "quit", NULL)) { case 0: goto pixels; @@ -67,6 +67,9 @@ int main(void) { case 5: goto assets; break; + case 6: + goto xpm_files; + break; } goto end; } @@ -551,6 +554,34 @@ assets: } goto end; +xpm_files: + { + cout + << "Display snas.xpm from" << endl + << "mlx_xpm_file_to_image()..." << endl; + uc_pause(); + { + win = mlx_new_window(mlx, 400, 240, NULL); + if (!win) { + cout << "mlx_new_window() error :/" << endl; + goto xpm_files_end; + } + + int w, h; + t_image img = mlx_xpm_file_to_image(mlx, "snas.xpm", &w, &h); + if (!img) { + cout << "Image not found :/" << endl; + goto xpm_files_end; + } + cout << "width: " << w << ", height: " << h << endl; + mlx_put_image_to_window(mlx, win, img, 100, 100); + } + xpm_files_end: + cout << "DONE! (i hope)" << endl; + uc_pause(); + } + goto end; + end: cout << "Exit..." << endl; uc_pause(); diff --git a/source/mlx_xpm.c b/source/mlx_xpm.c index 2015d57..c7dc82c 100644 --- a/source/mlx_xpm.c +++ b/source/mlx_xpm.c @@ -18,6 +18,7 @@ #include "mlx_int.h" #include "mlx.h" #include "mlx_internal.h" +#include "mlx3ds.h" extern struct s_col_name mlx_col_name[]; @@ -271,34 +272,34 @@ int mlx_int_file_get_rid_comment(char *ptr, int size) return (0); } -/* [USED] -t_image mlx_xpm_file_to_image(t_mlx xvar,char *file,int *width,int *height) +// [USED] +t_image mlx_xpm_file_to_image(t_mlx xvar, const char *file,int *width,int *height) { - int fd; - int size; + const t_embeddedasset *asset; char *ptr; t_internal_image *img; - fd = -1; - if ((fd = open(file,O_RDONLY))==-1 || (size = lseek(fd,0,SEEK_END))==-1 || - (ptr = mmap(0,size,PROT_WRITE|PROT_READ,MAP_PRIVATE,fd,0))== - (void *)MAP_FAILED) - { - if (fd>=0) - close(fd); - return ((void *)0); - } - mlx_int_file_get_rid_comment(ptr, size); - if (img = mlx_int_parse_xpm(xvar,ptr,size,mlx_int_get_line)) + // fd = -1; + // if ((fd = open(file,O_RDONLY))==-1 || (size = lseek(fd,0,SEEK_END))==-1 || + // (ptr = mmap(0,size,PROT_WRITE|PROT_READ,MAP_PRIVATE,fd,0))== + // (void *)MAP_FAILED) + // { + // if (fd>=0) + // close(fd); + // return ((void *)0); + // } + asset = mlx3ds_assets_get(file); + if (!asset) + return (NULL); + ptr = strdup(asset->data); + mlx_int_file_get_rid_comment(ptr, asset->size); + if (img = mlx_int_parse_xpm(xvar,ptr,asset->size,mlx_int_get_line)) { *width = img->width; *height = img->height; } - munmap(ptr,size); - close(fd); return (img); } -//*/ // [USED] [FULL] t_image mlx_xpm_to_image(t_mlx mlx_ptr, const char **xpm_data,int *width,int *height)