main.cpp 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #include <QApplication>
  2. #include <iostream>
  3. #include <stdlib.h>
  4. #include <cstring>
  5. #include "Window.hpp"
  6. #include "Image.hpp"
  7. const char* colorspace[20]={"CMY","CMYK","GRAY","HSB","HSL","HWB","LAB","LOG","OHTA","REC601YCBCR","REC709YCBCR","RGB","SRGB","TRANSPARENT","XYZ","YCBCR","YCC","YIQ","YPBPR","YUV"};
  8. void usage(char* nom_prog)
  9. {
  10. cout << "usage : " << nom_prog <<" <fichier image> <colorspace1> <colorspace2> ..." << endl;
  11. cout << "Les valeurs possibles des parametres <colorspace> sont les suivantes :"<< endl;
  12. for(int i=0;i<20;i++)
  13. cout << colorspace[i] << endl;
  14. }
  15. using namespace std;
  16. int main(int argc, char *argv[])
  17. {
  18. if(argc<3)
  19. {
  20. usage(argv[0]);
  21. return EXIT_FAILURE;
  22. }
  23. /*On verifie que le fichier passé en parametre existe bien*/
  24. ifstream is_image(argv[1]);
  25. if(is_image.fail())
  26. {
  27. cout << "fichier " << argv[1] << " introuvable" << endl;
  28. return EXIT_FAILURE;
  29. }
  30. else
  31. is_image.close();
  32. /*TODO VERIFIER LES EPSACES DE COULEURS*/
  33. for(int i=0;i<argc-2;i++)
  34. {
  35. for(unsigned int j=0;j<strlen(argv[i+2]);j++)
  36. if(argv[i+2][j]<='z' && argv[i+2][j]>='a')
  37. argv[i+2][j]=argv[i+2][j]-32;
  38. string c(argv[i+2]);
  39. bool trouve=false;
  40. for(int j=0;j<20;j++)
  41. if(!c.compare(colorspace[j]))
  42. trouve=true;
  43. if(!trouve)
  44. {
  45. cout << "l'espace de couleur " << argv[i+2] << " n'est pas autorise" << endl;
  46. usage(argv[0]);
  47. return EXIT_FAILURE;
  48. }
  49. }
  50. /*extraction de l'espace de couleur si nécessaire*/
  51. for(int i=0;i<argc-2;i++)
  52. {
  53. /*test ouverture pour savoir si le fichier existe deja*/
  54. //char* nom_fichier=my_strcat(my_strcat(argv[1],"."),argv[i+2]);
  55. string nom_fichier(string(argv[1]).append(".").append(argv[i+2]));
  56. ifstream is_colorspace(nom_fichier.c_str());
  57. if(is_colorspace.fail())
  58. {
  59. string command(string("./extract_colorspace ").append(argv[1]).append(" ").append(argv[i+2]));
  60. system(command.c_str());
  61. }
  62. else
  63. is_colorspace.close();
  64. }
  65. Image *tabim[argc-2];
  66. string chemin(argv[1]);
  67. chemin.append(".");
  68. for(int i=2;i<argc;i++)
  69. {
  70. string chemincomplet(chemin);
  71. chemincomplet.append(argv[i]);
  72. cout << "Ouverture du fichier " << chemincomplet << endl;
  73. tabim[i-2]=new Image(chemincomplet);
  74. }
  75. QApplication app(argc, argv);
  76. Window window(argv[1],argv+2,tabim,argc-2);
  77. window.show();
  78. return app.exec();
  79. }