Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void aff_color(int r, int g, int b, t_objet *rgb)
- {
- rgb->r = r;
- rgb->g = g;
- rgb->b = b;
- }
- void recup_point(void *img_ptr, int x, int y, t_objet *rgb)
- {
- char *data_ptr;
- int index;
- int bpp;
- int sizeline;
- int endian;
- data_ptr= mlx_get_data_addr(img_ptr, &bpp, &sizeline, &endian);
- index = (x * (bpp/8) + y * sizeline);
- rgb->r = data_ptr[index + 2];
- rgb->g = data_ptr[index + 1];
- rgb->b = data_ptr[index + 0];
- if (rgb->r < 0)
- rgb->r += 256;
- if (rgb->g < 0)
- rgb->g += 256;
- if (rgb->b < 0)
- rgb->b += 256;
- }
- struct s_objet calc_color(t_objet *tmpnoire, t_objet *tmprouge, t_objet *tmpjaune, t_objet *tmporange)
- {
- t_objet new_color;
- tmpnoire->r = tmpnoire->r / 2;
- tmpnoire->g = tmpnoire->g / 2;
- tmpnoire->b = tmpnoire->b / 2;
- tmpjaune->r = tmpjaune->r / 2;
- new_color.r = (tmpnoire->r + tmprouge->r + tmpjaune->r + tmporange->r) / 3;
- new_color.g = (tmpnoire->g + tmprouge->g + tmpjaune->g + tmporange->g) / 3;
- new_color.b = (tmpnoire->b + tmprouge->b + tmpjaune->b + tmporange->b) / 3;
- return (new_color);
- }
- void mon_carre(void *img_ptr)
- {
- int x;
- int y;
- int nbr;
- t_objet noire;
- t_objet rouge;
- t_objet jaune;
- t_objet orange;
- t_objet tmpnoire;
- t_objet tmprouge;
- t_objet tmpjaune;
- t_objet tmporange;
- t_objet new_color;
- aff_color(0, 0, 0, &noire);
- aff_color(255, 0, 0, &rouge);
- aff_color(255, 255, 0, &jaune);
- aff_color(255, 69, 0, &orange);
- y = Y - 2;
- while (y >= 0)
- {
- x= 0;
- while (x <= X)
- {
- recup_point(img_ptr, (x > 0) ? x - 1 : 0, y + 1, &tmpnoire);
- recup_point(img_ptr, x , y + 1, &tmprouge);
- recup_point(img_ptr, (x > X) ? X : x + 1, y + 1, &tmpjaune);
- recup_point(img_ptr, x , y + 2, &tmporange);
- new_color = calc_color(&tmpnoire, &tmprouge, &tmpjaune, &tmporange);
- aff_point(img_ptr, x, y, &new_color);
- x++;
- }
- y--;
- }
- }
- int main()
- {
- struct my_param param;
- param.mlx_ptr = mlx_init();
- param.win_ptr = mlx_new_window(param.mlx_ptr, X, Y, "Fenetre de base");
- param.img_ptr = mlx_new_image(param.mlx_ptr, X, Y);
- mon_carre(param.img_ptr);
- mlx_put_image_to_window(param.mlx_ptr, param.win_ptr, param.img_ptr, 0, 0);
- mlx_key_hook(param.win_ptr, gere_key, (void *)¶m);
- mlx_expose_hook(param.win_ptr, gere_expose, (void *)¶m);
- mlx_loop(param.mlx_ptr);
- return (0);
- }
Add Comment
Please, Sign In to add comment