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
|
||||
// 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.
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Reference in a new issue