Guest User

Untitled

a guest
Oct 22nd, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.53 KB | None | 0 0
  1. void aff_color(int r, int g, int b, t_objet *rgb)
  2. {
  3. rgb->r = r;
  4. rgb->g = g;
  5. rgb->b = b;
  6. }
  7.  
  8.  
  9. void recup_point(void *img_ptr, int x, int y, t_objet *rgb)
  10. {
  11. char *data_ptr;
  12. int index;
  13. int bpp;
  14. int sizeline;
  15. int endian;
  16.  
  17. data_ptr= mlx_get_data_addr(img_ptr, &bpp, &sizeline, &endian);
  18. index = (x * (bpp/8) + y * sizeline);
  19. rgb->r = data_ptr[index + 2];
  20. rgb->g = data_ptr[index + 1];
  21. rgb->b = data_ptr[index + 0];
  22. if (rgb->r < 0)
  23. rgb->r += 256;
  24. if (rgb->g < 0)
  25. rgb->g += 256;
  26. if (rgb->b < 0)
  27. rgb->b += 256;
  28.  
  29. }
  30. struct s_objet calc_color(t_objet *tmpnoire, t_objet *tmprouge, t_objet *tmpjaune, t_objet *tmporange)
  31. {
  32. t_objet new_color;
  33.  
  34. tmpnoire->r = tmpnoire->r / 2;
  35. tmpnoire->g = tmpnoire->g / 2;
  36. tmpnoire->b = tmpnoire->b / 2;
  37. tmpjaune->r = tmpjaune->r / 2;
  38.  
  39. new_color.r = (tmpnoire->r + tmprouge->r + tmpjaune->r + tmporange->r) / 3;
  40. new_color.g = (tmpnoire->g + tmprouge->g + tmpjaune->g + tmporange->g) / 3;
  41. new_color.b = (tmpnoire->b + tmprouge->b + tmpjaune->b + tmporange->b) / 3;
  42.  
  43. return (new_color);
  44. }
  45.  
  46.  
  47.  
  48. void mon_carre(void *img_ptr)
  49. {
  50.  
  51. int x;
  52. int y;
  53. int nbr;
  54. t_objet noire;
  55. t_objet rouge;
  56. t_objet jaune;
  57. t_objet orange;
  58. t_objet tmpnoire;
  59. t_objet tmprouge;
  60. t_objet tmpjaune;
  61. t_objet tmporange;
  62. t_objet new_color;
  63.  
  64. aff_color(0, 0, 0, &noire);
  65. aff_color(255, 0, 0, &rouge);
  66. aff_color(255, 255, 0, &jaune);
  67. aff_color(255, 69, 0, &orange);
  68.  
  69.  
  70. y = Y - 2;
  71. while (y >= 0)
  72. {
  73. x= 0;
  74. while (x <= X)
  75. {
  76. recup_point(img_ptr, (x > 0) ? x - 1 : 0, y + 1, &tmpnoire);
  77. recup_point(img_ptr, x , y + 1, &tmprouge);
  78. recup_point(img_ptr, (x > X) ? X : x + 1, y + 1, &tmpjaune);
  79. recup_point(img_ptr, x , y + 2, &tmporange);
  80. new_color = calc_color(&tmpnoire, &tmprouge, &tmpjaune, &tmporange);
  81. aff_point(img_ptr, x, y, &new_color);
  82. x++;
  83. }
  84. y--;
  85. }
  86. }
  87. int main()
  88. {
  89. struct my_param param;
  90.  
  91. param.mlx_ptr = mlx_init();
  92. param.win_ptr = mlx_new_window(param.mlx_ptr, X, Y, "Fenetre de base");
  93. param.img_ptr = mlx_new_image(param.mlx_ptr, X, Y);
  94. mon_carre(param.img_ptr);
  95. mlx_put_image_to_window(param.mlx_ptr, param.win_ptr, param.img_ptr, 0, 0);
  96. mlx_key_hook(param.win_ptr, gere_key, (void *)&param);
  97. mlx_expose_hook(param.win_ptr, gere_expose, (void *)&param);
  98. mlx_loop(param.mlx_ptr);
  99. return (0);
  100. }
Add Comment
Please, Sign In to add comment