#include "GrawEditor.h"
#include <iostream>
int main() {
// Création d'une instance de GrawEditor
GrawEditor editor;
// Création de quelques formes à l'aide des méthodes du GrawEditor
editor.getNewCircle({100, 100}, 50, Color::red);
editor.getNewCircle({200, 200}, 30, Color::blue);
const std::initializer_list<Geom2D::Point<int>> points = { {50, 50}, {150, 50}, {150, 150}, {50, 150} }; // Suppression du dernier point car la polyline se refermera automatiquement
editor.getNewPolygon(points, Color::green); // Appel à la méthode getNewPolygon avec le vecteur de points et la couleur
editor.getNewDisk({300, 300}, 80, Color::yellow);
const std::initializer_list<Geom2D::Point<int>> points2 = { {250, 250}, {350, 250}, {350, 350}, {250, 350} };
editor.getNewPolygon(points2, Color::cyan);
editor.getNewTriangle({400, 400}, 100, Color::orange);
editor.getNewRectangle({100, 300}, 120, 80, Color::brown);
// Export du canevas au format SVG
editor.exportSVG("test_en_beton.html");
// Affichage d'un message pour demander à l'utilisateur d'appuyer sur Entrée
std::cout << "Appuyez sur Entrée pour recadrer le canevas..." << std::endl;
std::cin.get(); // Utilisation de cin.get() pour attendre que l'utilisateur appuie sur Entrée
// Appliquer le recadrage sur le canevas
// (vous devez remplacer les paramètres ci-dessous par ceux appropriés pour votre cas)
printf("About to crop\n");
editor.crop(250, 250);
// Affichage d'un message pour demander à l'utilisateur d'appuyer sur Entrée
std::cout << "Appuyez sur Entrée pour recadrer le canevas..." << std::endl;
std::cin.get(); // Utilisation de cin.get() pour attendre que l'utilisateur appuie sur Entrée
// Undo
printf("About to undo\n");
editor.undo();
// Affichage d'un message pour demander à l'utilisateur d'appuyer sur Entrée
std::cout << "Appuyez sur Entrée pour recadrer le canevas..." << std::endl;
std::cin.get(); // Utilisation de cin.get() pour attendre que l'utilisateur appuie sur Entrée
// Redo
printf("About to redo\n");
printf("width: %d, height: %d\n", editor.getCanvas().getWidth(), editor.getCanvas().getHeight());
editor.redo();
printf("width: %d, height: %d\n", editor.getCanvas().getWidth(), editor.getCanvas().getHeight());
// Affichage d'un message pour demander à l'utilisateur d'appuyer sur Entrée
std::cout << "Appuyez sur Entrée pour recadrer le canevas..." << std::endl;
std::cin.get(); // Utilisation de cin.get() pour attendre que l'utilisateur appuie sur Entrée
// Sélectionner quelques formes
editor.selectShape(editor.getCanvas().getShapes()[0]); // Sélectionner le premier cercle
editor.selectShape(editor.getCanvas().getShapes()[3]); // Sélectionner le premier disque
// Imprimer les formes sélectionnées
printf("\n");
editor.Print(editor.getSelectedShapes<int>());
// Imprimer toutes les formes
printf("\n");
editor.Print(editor.getCanvas().getShapes());
// Exporter en SVG seulement les formes sélectionnées
editor.exportSVG("test_en_beton.html", editor.getSelectedShapes<int>());
return 0;
}