#include <print>

import Rect;

// main () Funktion
int main()
{
    // Zwei Rect Objekte erstellen
    auto pFirstRect = new Rect(10,20,100,200);
    auto pSecondRect = new Rect(50,50,100,200);

    // Rechteckdaten ausgeben
    std::println("1. Rechteck:");
    pFirstRect->PrintRect();
    std::println("2. Rechteck:");
    pSecondRect->PrintRect();

    // Rechtecke vergleichen
    if (*pFirstRect == *pSecondRect)
        std::println("Rechtecke sind gleich");
    else
        std::println("Rechtecke sind unterschiedlich");

    // Neues Rechteck aus der gemeinsamen Fläche der beiden
    // Rechtecke bilden
    auto mergedRect = *pFirstRect & *pSecondRect;
    // Abprüfen, ob beide Rechtecke eine gemeinsame Fläche hatten
    if (!mergedRect)
        std::println("Keine Ueberschneidung der beiden Rechtecke!");
    else
    {
        std::println("Rechtecke ueberschneiden sich! Gemeinsame Flaeche:");
        mergedRect.PrintRect();
    }

    delete pFirstRect;
    delete pSecondRect;
}
