part: implement mlx_xpm_file_to_image()
This commit is contained in:
parent
8649e86eaa
commit
9264c47494
4 changed files with 318 additions and 20 deletions
266
assets/snas.xpm
Normal file
266
assets/snas.xpm
Normal file
|
@ -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 ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" "
|
||||||
|
};
|
|
@ -75,7 +75,7 @@ t_image mlx_xpm_to_image(t_mlx mlx_ptr, const char **xpm_data,
|
||||||
|
|
||||||
// ??? TODO docs xpm_file_to_image
|
// ??? TODO docs xpm_file_to_image
|
||||||
// width & height CAN be null (check please :3)
|
// 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);
|
int *width, int *height);
|
||||||
|
|
||||||
/// @brief Destroy an image to avoid leaks.
|
/// @brief Destroy an image to avoid leaks.
|
||||||
|
|
|
@ -47,7 +47,7 @@ int main(void) {
|
||||||
// MENU
|
// MENU
|
||||||
{
|
{
|
||||||
switch (uc_menu_quick("pixels", "images", "xpm", "files",
|
switch (uc_menu_quick("pixels", "images", "xpm", "files",
|
||||||
"navigate", "assets", "quit", NULL))
|
"navigate", "assets", "xpm files", "quit", NULL))
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
goto pixels;
|
goto pixels;
|
||||||
|
@ -67,6 +67,9 @@ int main(void) {
|
||||||
case 5:
|
case 5:
|
||||||
goto assets;
|
goto assets;
|
||||||
break;
|
break;
|
||||||
|
case 6:
|
||||||
|
goto xpm_files;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
@ -551,6 +554,34 @@ assets:
|
||||||
}
|
}
|
||||||
goto end;
|
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:
|
end:
|
||||||
cout << "Exit..." << endl;
|
cout << "Exit..." << endl;
|
||||||
uc_pause();
|
uc_pause();
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
#include "mlx_int.h"
|
#include "mlx_int.h"
|
||||||
#include "mlx.h"
|
#include "mlx.h"
|
||||||
#include "mlx_internal.h"
|
#include "mlx_internal.h"
|
||||||
|
#include "mlx3ds.h"
|
||||||
|
|
||||||
extern struct s_col_name mlx_col_name[];
|
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);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* [USED]
|
// [USED]
|
||||||
t_image mlx_xpm_file_to_image(t_mlx xvar,char *file,int *width,int *height)
|
t_image mlx_xpm_file_to_image(t_mlx xvar, const char *file,int *width,int *height)
|
||||||
{
|
{
|
||||||
int fd;
|
const t_embeddedasset *asset;
|
||||||
int size;
|
|
||||||
char *ptr;
|
char *ptr;
|
||||||
t_internal_image *img;
|
t_internal_image *img;
|
||||||
|
|
||||||
fd = -1;
|
// fd = -1;
|
||||||
if ((fd = open(file,O_RDONLY))==-1 || (size = lseek(fd,0,SEEK_END))==-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))==
|
// (ptr = mmap(0,size,PROT_WRITE|PROT_READ,MAP_PRIVATE,fd,0))==
|
||||||
(void *)MAP_FAILED)
|
// (void *)MAP_FAILED)
|
||||||
{
|
// {
|
||||||
if (fd>=0)
|
// if (fd>=0)
|
||||||
close(fd);
|
// close(fd);
|
||||||
return ((void *)0);
|
// return ((void *)0);
|
||||||
}
|
// }
|
||||||
mlx_int_file_get_rid_comment(ptr, size);
|
asset = mlx3ds_assets_get(file);
|
||||||
if (img = mlx_int_parse_xpm(xvar,ptr,size,mlx_int_get_line))
|
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;
|
*width = img->width;
|
||||||
*height = img->height;
|
*height = img->height;
|
||||||
}
|
}
|
||||||
munmap(ptr,size);
|
|
||||||
close(fd);
|
|
||||||
return (img);
|
return (img);
|
||||||
}
|
}
|
||||||
//*/
|
|
||||||
|
|
||||||
// [USED] [FULL]
|
// [USED] [FULL]
|
||||||
t_image mlx_xpm_to_image(t_mlx mlx_ptr, const char **xpm_data,int *width,int *height)
|
t_image mlx_xpm_to_image(t_mlx mlx_ptr, const char **xpm_data,int *width,int *height)
|
||||||
|
|
Loading…
Add table
Reference in a new issue