import os
from reportlab.lib import colors
from reportlab.lib.pagesizes import A4, landscape
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, HRFlowable
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm

def gerar_tabela_areas_similares(pdf_path):
    doc = SimpleDocTemplate(
        pdf_path,
        pagesize=landscape(A4),
        leftMargin=1.2*cm,
        rightMargin=1.2*cm,
        topMargin=1.2*cm,
        bottomMargin=1.2*cm
    )
    styles = getSampleStyleSheet()
    azul_brana = colors.HexColor('#002B49')
    azul_claro = colors.HexColor('#EBF3F8')
    cinza_fundo = colors.HexColor('#F4F6F8')
    cinza_borda = colors.HexColor('#D1D5DB')
    texto_escuro = colors.HexColor('#1F2937')
    vermelho = colors.HexColor('#9A3231')
    
    title_style = ParagraphStyle('DocTitle', parent=styles['Heading1'], fontName='Helvetica-Bold', fontSize=13.5, leading=16.5, textColor=azul_brana, spaceAfter=2)
    sub_style = ParagraphStyle('DocSub', parent=styles['Normal'], fontName='Helvetica', fontSize=8, leading=10.5, textColor=colors.HexColor('#4B5563'))
    h2_style = ParagraphStyle('DocH2', parent=styles['Heading2'], fontName='Helvetica-Bold', fontSize=9, leading=11.5, textColor=vermelho, spaceBefore=4, spaceAfter=2)
    body_style = ParagraphStyle('DocBody', parent=styles['Normal'], fontName='Helvetica', fontSize=7.2, leading=9.5, textColor=texto_escuro)
    table_hdr = ParagraphStyle('TableHdr', parent=styles['Normal'], fontName='Helvetica-Bold', fontSize=6.5, leading=8, textColor=colors.white, alignment=1)
    table_cell = ParagraphStyle('TableCell', parent=styles['Normal'], fontName='Helvetica', fontSize=6.5, leading=8, textColor=texto_escuro)
    table_cell_c = ParagraphStyle('TableCellC', parent=styles['Normal'], fontName='Helvetica', fontSize=6.5, leading=8, textColor=texto_escuro, alignment=1)
    table_cell_b = ParagraphStyle('TableCellB', parent=styles['Normal'], fontName='Helvetica-Bold', fontSize=6.5, leading=8, textColor=azul_brana, alignment=1)
    table_cell_grp = ParagraphStyle('TableCellG', parent=styles['Normal'], fontName='Helvetica-Bold', fontSize=6.5, leading=8, textColor=vermelho)

    story = []
    
    # Cabeçalho
    story.append(Paragraph("ESTUDO DE SIMILARES: ÁREAS DE CHAPEAMENTO, SUPERFÍCIES E GEOMETRIA DO CASCO", title_style))
    story.append(Paragraph("<b>Projeto:</b> Saveiro Tesouro da Baía (Grupo 2) | <b>Equipe:</b> Carlos Silva, Cauã e Alessandra Feitosa | <b>Brana / EEE</b>", sub_style))
    story.append(Paragraph("<b>Metodologia:</b> Integração geométrica das superfícies do casco: Fundo (Obra Viva), Costado (Bordos), Espelho de Popa, Convés e Superfície Molhada (WS).", sub_style))
    story.append(Spacer(1, 0.15*cm))
    story.append(HRFlowable(width="100%", thickness=1.2, color=azul_brana, spaceBefore=1, spaceAfter=4))
    
    headers = [
        Paragraph("<b>Parâmetro Geométrico / Área</b>", table_hdr),
        Paragraph("<b>1. Saveiro Day Use<br/>(12,0m BTS)</b>", table_hdr),
        Paragraph("<b>2. Saveiro É a Vida<br/>(12,2m Valença)</b>", table_hdr),
        Paragraph("<b>3. Island Packet 38<br/>(12,65m Cutter)</b>", table_hdr),
        Paragraph("<b>4. Shannon 38<br/>(11,51m Oceânico)</b>", table_hdr),
        Paragraph("<b>5. Dhow Tradicional<br/>(12,50m Índico)</b>", table_hdr),
        Paragraph("<b>6. Barco Rabelo<br/>(12,5m Douro)</b>", table_hdr),
        Paragraph("<b>MÉDIA DOS<br/>SIMILARES</b>", table_hdr),
        Paragraph("<b>PROJETO GRUPO 2<br/>Tesouro da Baía</b>", table_hdr)
    ]
    
    t_data = [headers]
    
    rows = [
        ("LOA (Comprimento Total)", "12,00 m", "12,20 m", "12,65 m", "11,51 m", "12,50 m", "12,50 m", "12,23 m", "12,00 m"),
        ("BOA (Boca Máxima)", "3,80 m", "3,75 m", "3,86 m", "3,51 m", "3,60 m", "3,10 m", "3,60 m", "4,36 m"),
        ("Pontal na Meia-Nau (D)", "1,75 m", "1,80 m", "1,95 m", "1,90 m", "1,85 m", "1,45 m", "1,78 m", "1,90 m"),
        ("Calado de Projeto (T)", "1,10 m", "1,15 m", "1,52 m", "1,52 m", "1,20 m", "0,85 m", "1,22 m", "0,92 m"),
        ("— ÁREAS DE CHAPEAMENTO (SUPERFÍCIES REAIS) —", "", "", "", "", "", "", "", ""),
        ("Área do Fundo do Casco (Obra Viva)", "31,50 m²", "32,80 m²", "30,50 m²", "27,20 m²", "32,00 m²", "34,20 m²", "31,37 m²", "36,00 m² (Bojo Redondo)"),
        ("Área do Costado (Bordos BB + BE)", "29,40 m²", "30,80 m²", "33,20 m²", "29,50 m²", "31,50 m²", "24,80 m²", "29,87 m²", "34,10 m² (Borda Alta)"),
        ("Área do Espelho de Popa (Transom)", "5,80 m²", "5,60 m²", "6,10 m²", "5,20 m²", "5,40 m²", "3,80 m²", "5,32 m²", "7,12 m² (Popa Larga)"),
        ("Área de Convés e Trincaniz", "16,20 m²", "16,80 m²", "22,50 m²", "19,80 m²", "17,50 m²", "21,00 m²", "18,97 m²", "18,75 m² (Tijupá/Praça)"),
        ("ÁREA TOTAL DE CHAPEAMENTO", "82,90 m²", "86,00 m²", "92,30 m²", "81,70 m²", "86,40 m²", "83,80 m²", "85,53 m²", "95,97 m² (+12,2%)"),
        ("— ÁREAS HIDRODINÂMICAS —", "", "", "", "", "", "", "", ""),
        ("Superfície Molhada (Wetted Surface)", "32,80 m²", "34,10 m²", "33,50 m²", "29,80 m²", "33,20 m²", "35,00 m²", "33,07 m²", "37,80 m² (Capacidade)"),
        ("Área do Plano de Flutuação (Awl)", "24,50 m²", "25,20 m²", "25,80 m²", "22,40 m²", "25,00 m²", "26,50 m²", "24,90 m²", "28,05 m² (Rigidez)"),
        ("Área da Seção Mestra (Am)", "1,95 m²", "2,05 m²", "2,42 m²", "2,15 m²", "2,10 m²", "1,75 m²", "2,07 m²", "2,21 m²"),
        ("Área Lateral Submersa (Alat)", "7,80 m²", "8,20 m²", "9,80 m²", "8,90 m²", "8,50 m²", "6,20 m²", "8,23 m²", "7,50 m² (Calado 0,92m)")
    ]
    
    for r in rows:
        if "—" in r[0]:
            row_cells = [Paragraph(f"<b>{r[0]}</b>", table_cell_grp)] + [Paragraph("", table_cell)]*8
            t_data.append(row_cells)
            continue
        row_cells = [Paragraph(r[0], table_cell)]
        for val in r[1:-1]:
            row_cells.append(Paragraph(val, table_cell_c))
        row_cells.append(Paragraph(r[-1], table_cell_b))
        t_data.append(row_cells)
        
    col_widths = [5.0*cm] + [2.8*cm]*7 + [2.8*cm]
    t = Table(t_data, colWidths=col_widths)
    t.setStyle(TableStyle([
        ('BACKGROUND', (0,0), (-1,0), azul_brana),
        ('GRID', (0,0), (-1,-1), 0.5, cinza_borda),
        ('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.white, cinza_fundo]),
        ('TOPPADDING', (0,0), (-1,-1), 1.5),
        ('BOTTOMPADDING', (0,0), (-1,-1), 1.5),
        ('BACKGROUND', (0,-1), (-1,-1), azul_claro),
    ]))
    
    story.append(t)
    story.append(Spacer(1, 0.2*cm))
    
    # Análise das Áreas
    story.append(Paragraph("ANÁLISE COMPARATIVA DE ÁREAS E SUPERFÍCIES DO CASCO", h2_style))
    analise_txt = (
        "• <b>Área do Espelho de Popa (7,12 m² vs. Média de 5,32 m²):</b> O Tesouro da Baía possui um espelho de popa <b>33,8% maior</b> que a média dos similares. Isso decorre da boca máxima de 4,36 m mantida com caimento suave até a alheta de popa (meia-boca no espelho de 1.537 mm). Essa área ampliada proporciona sustentação hidrodinâmica na esteira, amplo espaço para o leme tradicional e acomodação da casaria de popa (tijupá).<br/>"
        "• <b>Área do Costado (34,10 m² vs. Média de 29,87 m²):</b> Os bordos do Tesouro da Baía apresentam maior desenvolvimento de chapa devido ao pontal elevado na proa (2,79 m com tosado pronunciado) e pontal de 1,90 m na meia-nau, garantindo borda livre segura para mar grosso na Baía de Todos-os-Santos.<br/>"
        "• <b>Área de Fundo e Superfície Molhada (36,00 m² e 37,80 m²):</b> A geometria de bojo redondo com fundo wineglass distribui o volume de 14,5 t de deslocamento sem aprofundar o calado, mantendo a área molhada proporcionalmente contida para diminuir a resistência de atrito sob vela.<br/>"
        "• <b>Área de Flutuação (Awl = 28,05 m² vs. Média de 24,90 m²):</b> A grande área de plano de linha d'água confere rigidez extrema ao casco, gerando um valor de TPC (toneladas por centímetro de imersão) de 287 kg/cm e elevando a altura do metacentro transversal (KM = 2,30 m)."
    )
    story.append(Paragraph(analise_txt, body_style))
    story.append(Spacer(1, 0.15*cm))
    story.append(HRFlowable(width="100%", thickness=0.8, color=cinza_borda, spaceBefore=2, spaceAfter=4))
    story.append(Paragraph("<i>Relatório Técnico de Áreas e Superfícies Navais — Estaleiro Escola Embrião & Brana Projetos Navais.</i>", ParagraphStyle('RodFinal', parent=body_style, fontSize=7, textColor=colors.HexColor('#6B7280'), alignment=1)))
    
    doc.build(story)

if __name__ == '__main__':
    gerar_tabela_areas_similares('/home/magdalena/eee/alunos/carlos-silva/grupo-2-tesouro-da-baia/Tabela_Similares_Areas_Chapeamento_Grupo2.pdf')
