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

pdf_path = "/home/magdalena/eee/alunos/rafael-rosa-batista/Estudo_de_Similares_Saveiro_Ciclone_2.pdf"

doc = SimpleDocTemplate(
    pdf_path,
    pagesize=landscape(A4),
    leftMargin=1.5*cm,
    rightMargin=1.5*cm,
    topMargin=1.5*cm,
    bottomMargin=1.5*cm
)

styles = getSampleStyleSheet()

primary_color = colors.HexColor("#1A365D")
secondary_color = colors.HexColor("#2B6CB0")
dark_neutral = colors.HexColor("#2D3748")
table_header_bg = colors.HexColor("#1A365D")

title_style = ParagraphStyle(
    'DocTitle',
    parent=styles['Normal'],
    fontName='Helvetica-Bold',
    fontSize=16,
    leading=20,
    textColor=primary_color,
    spaceAfter=3
)

subtitle_style = ParagraphStyle(
    'DocSubTitle',
    parent=styles['Normal'],
    fontName='Helvetica',
    fontSize=10,
    leading=13,
    textColor=secondary_color,
    spaceAfter=8
)

h1_style = ParagraphStyle(
    'Heading1_Custom',
    parent=styles['Normal'],
    fontName='Helvetica-Bold',
    fontSize=11,
    leading=14,
    textColor=primary_color,
    spaceBefore=6,
    spaceAfter=4
)

body_style = ParagraphStyle(
    'Body_Custom',
    parent=styles['Normal'],
    fontName='Helvetica',
    fontSize=8,
    leading=11,
    textColor=dark_neutral,
    spaceAfter=2
)

table_header_style = ParagraphStyle(
    'TableHeader',
    parent=styles['Normal'],
    fontName='Helvetica-Bold',
    fontSize=8,
    leading=10,
    textColor=colors.white,
    alignment=1
)

table_body_center = ParagraphStyle(
    'TableBodyCenter',
    parent=styles['Normal'],
    fontName='Helvetica',
    fontSize=7.8,
    leading=10,
    textColor=dark_neutral,
    alignment=1
)

table_body_left = ParagraphStyle(
    'TableBodyLeft',
    parent=styles['Normal'],
    fontName='Helvetica',
    fontSize=7.8,
    leading=10,
    textColor=dark_neutral,
    alignment=0
)

project_body_left = ParagraphStyle(
    'ProjectBodyLeft',
    parent=styles['Normal'],
    fontName='Helvetica-Bold',
    fontSize=8,
    leading=10,
    textColor=colors.HexColor("#1A365D"),
    alignment=0
)

project_body_center = ParagraphStyle(
    'ProjectBodyCenter',
    parent=styles['Normal'],
    fontName='Helvetica-Bold',
    fontSize=8,
    leading=10,
    textColor=colors.HexColor("#1A365D"),
    alignment=1
)

bullet_style = ParagraphStyle(
    'Bullet_Custom',
    parent=styles['Normal'],
    fontName='Helvetica',
    fontSize=8.5,
    leading=12,
    textColor=dark_neutral,
    leftIndent=10,
    spaceAfter=2
)

story = []

# Title & Subtitle
story.append(Paragraph("ESTUDO DE SIMILARES: SAVEIRO CICLONE 2 (7,0 M)", title_style))
story.append(Paragraph("<b>Análise Comparativa de Arquitetura Naval e Coeficientes de Forma</b><br/><b>Aluno / Projetista:</b> Rafael Rosa Batista | <b>Orientação:</b> Profa. Magdalena (Mada) - Brana / EEE", subtitle_style))
story.append(HRFlowable(width="100%", thickness=1.2, color=secondary_color, spaceBefore=0, spaceAfter=6))

# Tabela de Similares
data_table = [
    [
        Paragraph("<b>Embarcação / Modelo</b>", table_header_style),
        Paragraph("<b>Tipo / Origem</b>", table_header_style),
        Paragraph("<b>LOA (m)</b>", table_header_style),
        Paragraph("<b>Boca (m)</b>", table_header_style),
        Paragraph("<b>Calado (m)</b>", table_header_style),
        Paragraph("<b>L/B</b>", table_header_style),
        Paragraph("<b>B/T</b>", table_header_style),
        Paragraph("<b>Desloc. (kg)</b>", table_header_style),
        Paragraph("<b>Área Vélica</b>", table_header_style),
        Paragraph("<b>Motor Aux.</b>", table_header_style),
        Paragraph("<b>Lot.</b>", table_header_style),
        Paragraph("<b>Material</b>", table_header_style),
        Paragraph("<b>Observações Técnicas / Aplicação</b>", table_header_style),
    ],
    [
        Paragraph("<b>Saveiro Ciclone 2</b><br/>(Projeto em estudo)", project_body_left),
        Paragraph("Saveiro BTS / Recreio & Pesca", project_body_left),
        Paragraph("<b>7,00</b>", project_body_center),
        Paragraph("<b>2,50</b>", project_body_center),
        Paragraph("<b>0,60</b>", project_body_center),
        Paragraph("<b>2,80</b>", project_body_center),
        Paragraph("<b>4,17</b>", project_body_center),
        Paragraph("<b>~2.100</b>", project_body_center),
        Paragraph("<b>30 m²</b>", project_body_center),
        Paragraph("<b>15-20 HP</b>", project_body_center),
        Paragraph("<b>5</b>", project_body_center),
        Paragraph("Madeira Nobre (Jaqueira)", project_body_left),
        Paragraph("Excelente boca gerando estabilidade inicial alta; calado ideal para acessar Mar Grande e baixios da BTS.", project_body_left),
    ],
    [
        Paragraph("Saveiro Tradicional BTS", table_body_left),
        Paragraph("Tradicional Baiano (Recôncavo)", table_body_left),
        Paragraph("7,20", table_body_center),
        Paragraph("2,45", table_body_center),
        Paragraph("0,65", table_body_center),
        Paragraph("2,94", table_body_center),
        Paragraph("3,77", table_body_center),
        Paragraph("~2.300", table_body_center),
        Paragraph("32 m²", table_body_center),
        Paragraph("18 HP Diesel", table_body_center),
        Paragraph("6", table_body_center),
        Paragraph("Madeira Maciça", table_body_left),
        Paragraph("Referência histórica direta. Casco potente que aguenta vento forte e mar batido na BTS.", table_body_left),
    ],
    [
        Paragraph("Cornish Crabber 22", table_body_left),
        Paragraph("Gaff Cutter Britânico", table_body_left),
        Paragraph("6,70", table_body_center),
        Paragraph("2,52", table_body_center),
        Paragraph("0,70", table_body_center),
        Paragraph("2,66", table_body_center),
        Paragraph("3,60", table_body_center),
        Paragraph("~2.050", table_body_center),
        Paragraph("29,5 m²", table_body_center),
        Paragraph("14 HP Diesel", table_body_center),
        Paragraph("5", table_body_center),
        Paragraph("PRFV / Madeira", table_body_left),
        Paragraph("Proporções muito próximas ao Ciclone 2. Cockpit confortável para lazer e estabilidade em mar costeiro.", table_body_left),
    ],
    [
        Paragraph("Canoa de Voga / Saveiro Pesca", table_body_left),
        Paragraph("Tradicional Itaparica / BTS", table_body_left),
        Paragraph("6,80", table_body_center),
        Paragraph("2,30", table_body_center),
        Paragraph("0,55", table_body_center),
        Paragraph("2,96", table_body_center),
        Paragraph("4,18", table_body_center),
        Paragraph("~1.750", table_body_center),
        Paragraph("26 m²", table_body_center),
        Paragraph("15 HP Popa", table_body_center),
        Paragraph("4", table_body_center),
        Paragraph("Madeira (Jaqueira)", table_body_left),
        Paragraph("Casco muito ágil para navegar entre os corais de Mar Grande com baixo atrito e fácil encalhe.", table_body_left),
    ],
    [
        Paragraph("Cape Cutter 19", table_body_left),
        Paragraph("Gaff Cutter Moderno", table_body_left),
        Paragraph("5,80", table_body_center),
        Paragraph("2,20", table_body_center),
        Paragraph("0,45", table_body_center),
        Paragraph("2,64", table_body_center),
        Paragraph("4,89", table_body_center),
        Paragraph("~1.150", table_body_center),
        Paragraph("22 m²", table_body_center),
        Paragraph("6 HP Popa", table_body_center),
        Paragraph("4", table_body_center),
        Paragraph("Compósito / Madeira", table_body_left),
        Paragraph("Modelo compacto com excelente flutuabilidade de forma para passeios com praia rasa.", table_body_left),
    ]
]

col_w = [3.4*cm, 3.2*cm, 1.4*cm, 1.4*cm, 1.5*cm, 1.2*cm, 1.2*cm, 1.8*cm, 1.8*cm, 2.0*cm, 1.0*cm, 2.8*cm, 5.0*cm]
t = Table(data_table, colWidths=col_w)
t.setStyle(TableStyle([
    ('BACKGROUND', (0, 0), (-1, 0), table_header_bg),
    ('GRID', (0, 0), (-1, -1), 0.5, colors.HexColor("#CBD5E0")),
    ('VALIGN', (0, 0), (-1, -1), 'MIDDLE'),
    ('BACKGROUND', (0, 1), (-1, 1), colors.HexColor("#EBF8FF")),
    ('TOPPADDING', (0, 0), (-1, -1), 3),
    ('BOTTOMPADDING', (0, 0), (-1, -1), 3),
]))
story.append(t)

# Conclusões do Estudo
story.append(Spacer(1, 6))
story.append(Paragraph("Conclusões e Validação dos Coeficientes de Projeto para o Saveiro Ciclone 2:", h1_style))
story.append(Paragraph("1. <b>Razão Comprimento / Boca (L/B = 2,80):</b> Fica exatamente na média ideal dos saveiros e *working boats* tradicionais (2,60 a 3,00). Isso confere ao Ciclone 2 excelente rigidez à vela (o barco aderna pouco) e amplo espaço de convés para 5 pessoas.", bullet_style))
story.append(Paragraph("2. <b>Razão Boca / Calado (B/T = 4,17):</b> Relação elevada típica de embarcações de baía abrigada e estuário. Garante que o centro de flutuação (BM) seja alto, permitindo navegar com apenas 0,60 m de calado em Mar Grande sem perder estabilidade.", bullet_style))
story.append(Paragraph("3. <b>Área Vélica (30 m²):</b> Proporção equilibrada para o deslocamento de ~2,1 ton. Garante velocidade de cruzeiro de 5 a 6,5 nós com os ventos típicos da BTS (10 a 16 nós).", bullet_style))

doc.build(story)
print("PDF Similares Ciclone 2 built.")
