Advertisement
Lynix

Vive le RRID

May 11th, 2018
693
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.11 KB | None | 0 0
  1. unsigned char* DrawBoDes1(unsigned int width, unsigned int height)
  2. {
  3.     assert(width > 0);
  4.     assert(height > 0);
  5.  
  6.     // Pas besoin de protéger le new ici: s'il déclenche une exception nous n'avons aucune mémoire à libérer
  7.     unsigned char* img = new unsigned char[width * height * 4];
  8.  
  9.     try
  10.     {
  11.         if (!FillImage(img, Color(135, 206, 235)))
  12.         {
  13.             delete[] img;
  14.  
  15.             return nullptr;
  16.         }
  17.     }
  18.     catch (const std::exception& e)
  19.     {
  20.         delete[] img;
  21.  
  22.         throw; //< On relance l'exception
  23.     }
  24.  
  25.     // Chargeons une image de soleil à mettre dans le coin haut-gauche
  26.     unsigned char* sunImg;
  27.     try
  28.     {
  29.         sunImg = LoadImgFromFile("sun.png");
  30.         if (!sunImg)
  31.         {
  32.             delete[] img;
  33.  
  34.             return nullptr;
  35.         }
  36.     }
  37.     catch (const std::exception& e)
  38.     {
  39.         delete[] img;
  40.  
  41.         throw;
  42.     }
  43.  
  44.     try
  45.     {
  46.         if (!BlitImage(img, sunImg, 0, 0))
  47.         {
  48.             delete[] sunImg;
  49.             delete[] img;
  50.  
  51.             return nullptr;
  52.         }
  53.     }
  54.     catch (const std::exception& e)
  55.     {
  56.         delete[] sunImg;
  57.         delete[] img;
  58.  
  59.         return nullptr;
  60.     }
  61.  
  62.     delete[] sunImg; //< Nous avons terminé avec le soleil, on le libère
  63.  
  64.     // Maintenant chargeons une image de maison
  65.     unsigned char* houseImg;
  66.     try
  67.     {
  68.         houseImg = LoadImgFromFile("sun.png");
  69.         if (!houseImg)
  70.         {
  71.             delete[] img;
  72.  
  73.             return nullptr;
  74.         }
  75.     }
  76.     catch (const std::exception& e)
  77.     {
  78.         delete[] img;
  79.  
  80.         throw;
  81.     }
  82.  
  83.     try
  84.     {
  85.         if (!BlitImage(img, houseImg, 300, 2000))
  86.         {
  87.             delete[] houseImg;
  88.             delete[] img;
  89.  
  90.             return nullptr;
  91.         }
  92.     }
  93.     catch (const std::exception& e)
  94.     {
  95.         delete[] houseImg;
  96.         delete[] img;
  97.  
  98.         return nullptr;
  99.     }
  100.  
  101.     delete[] houseImg; //< Nous avons fini avec la maison, on la libère
  102.  
  103.     // Autres opération similaires (dessin de nuages, colline, etc.)
  104.  
  105.     return img;
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement