package View;

import javax.swing.*;
import java.awt.*;

public class TitreView {
    private ContourLabel titre;

    public TitreView() {
        // Créer une instance de ContourLabel avec le texte souhaité
        titre = new ContourLabel("Dorfromantik");

        // Définir la police et les couleurs
        titre.setFont(new Font("Algerian", Font.BOLD, 70));
        titre.setForeground(Color.WHITE); // Couleur du texte principal
        titre.setContourColor(Color.BLACK); // Couleur du contour
        titre.setContourThickness(4); // Épaisseur du contour
    }

    public JLabel getTitre() {
        return titre;
    }

    // Classe interne pour gérer le contour autour du texte
    private static class ContourLabel extends JLabel {
        private Color contourColor = Color.BLACK;
        private int contourThickness = 2;

        public ContourLabel(String text) {
            super(text);
        }

        public void setContourColor(Color contourColor) {
            this.contourColor = contourColor;
        }

        public void setContourThickness(int contourThickness) {
            this.contourThickness = contourThickness;
        }

        @Override
        protected void paintComponent(Graphics g) {
            Graphics2D g2d = (Graphics2D) g.create();

            // Activer l'anti-aliasing
            g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

            // Dessiner le contour
            g2d.setFont(getFont());
            g2d.setColor(contourColor);
            g2d.setStroke(new BasicStroke(contourThickness, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
            FontMetrics fm = g2d.getFontMetrics();
            int x = 0;
            int y = fm.getAscent();
            g2d.draw(getTextShape(g2d, getText(), x, y));

            // Dessiner le texte principal
            g2d.setColor(getForeground());
            g2d.fill(getTextShape(g2d, getText(), x, y));

            g2d.dispose();
        }

        private Shape getTextShape(Graphics2D g2d, String text, int x, int y) {
            return getFont().createGlyphVector(g2d.getFontRenderContext(), text).getOutline(x, y);
        }
    }
}
