import os
from reportlab.lib.pagesizes import letter
from reportlab.lib import colors
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, HRFlowable, Image
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import inch

pdf_path = "/home/magdalena/eee/alunos/alberico-de-carvalho-santiago/Projeto_POWERCAT_DoubleTrouble_8_5m.pdf"

doc = SimpleDocTemplate(
    pdf_path,
    pagesize=letter,
    rightMargin=36,
    leftMargin=36,
    topMargin=36,
    bottomMargin=36
)

styles = getSampleStyleSheet()

primary_color = colors.HexColor("#0F172A")   # Slate Dark
secondary_color = colors.HexColor("#DC2626") # Sport Red
accent_color = colors.HexColor("#F59E0B")    # Amber
dark_neutral = colors.HexColor("#334155")
light_neutral = colors.HexColor("#F8FAFC")
border_color = colors.HexColor("#CBD5E1")

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

subtitle_style = ParagraphStyle(
    'DocSubtitle',
    parent=styles['Normal'],
    fontName='Helvetica',
    fontSize=9.5,
    leading=13,
    textColor=secondary_color,
    alignment=1,
    spaceAfter=8
)

section_heading = ParagraphStyle(
    'SectionHeading',
    parent=styles['Heading2'],
    fontName='Helvetica-Bold',
    fontSize=10.5,
    leading=13,
    textColor=primary_color,
    spaceBefore=6,
    spaceAfter=3
)

body_style = ParagraphStyle(
    'BodyDark',
    parent=styles['Normal'],
    fontName='Helvetica',
    fontSize=8.2,
    leading=11,
    textColor=dark_neutral,
    spaceAfter=3
)

bullet_style = ParagraphStyle(
    'BulletDark',
    parent=body_style,
    leftIndent=10,
    firstLineIndent=-7,
    spaceAfter=2
)

table_header_style = ParagraphStyle(
    'TableHeader',
    parent=styles['Normal'],
    fontName='Helvetica-Bold',
    fontSize=7.8,
    leading=9.5,
    textColor=colors.white
)

table_body_style = ParagraphStyle(
    'TableBody',
    parent=styles['Normal'],
    fontName='Helvetica',
    fontSize=7.5,
    leading=9.5,
    textColor=dark_neutral
)

table_body_bold = ParagraphStyle(
    'TableBodyBold',
    parent=styles['Normal'],
    fontName='Helvetica-Bold',
    fontSize=7.5,
    leading=9.5,
    textColor=primary_color
)

story = []

# Cabeçalho
story.append(Paragraph("PROJETO TÉCNICO EXECUTIVO — POWERCAT 8,50 m", title_style))
story.append(Paragraph("<b>Catamarã a Motor Esportivo Estilo 'Double Trouble' (Andy Smith Boatworks)</b><br/><b>Aluno:</b> Alberico de Carvalho Santiago | <b>Instituição:</b> Brana / Estaleiro Escola Embrião (EEE)", subtitle_style))
story.append(HRFlowable(width="100%", thickness=1.5, color=secondary_color, spaceAfter=6))

# 1. Análise do Modelo de Referência
story.append(Paragraph("1. Conceito do Barco de Referência (Double Trouble)", section_heading))
story.append(Paragraph(
    "O projeto adota a arquitetura consagrada do <b>Double Trouble</b> (construído pela <i>Andy Smith Boatworks</i>): cascos com arestas vivas (<i>hard chine</i>), proas retas tipo <i>wave-piercing</i> (perfuradoras de onda), ponte de ligação sólida e fechada (<i>solid bridgedeck</i>), cabine central com posto de comando abrigado por para-brisa facetado e teto rígido (<i>hardtop</i>), além de arco targa esportivo para radar e antenas. Esse conjunto une alta velocidade, excelente estabilidade de plataforma e conforto operacional.",
    body_style
))

# 2. Dimensões Principais
story.append(Paragraph("2. Dimensões Principais e Hidrostática (8,50 m x 3,60 m)", section_heading))

dim_data = [
    [Paragraph("Parâmetro", table_header_style), Paragraph("Símbolo", table_header_style), Paragraph("Valor", table_header_style), Paragraph("Justificativa e Comportamento Náutico", table_header_style)],
    [Paragraph("Comprimento Total", table_body_bold), Paragraph("LOA", table_body_style), Paragraph("8,50 m (27,9 ft)", table_body_style), Paragraph("Porte ágil, veloz e de excelente navegabilidade em mar aberto.", table_body_style)],
    [Paragraph("Comprimento Linha d'Água", table_body_bold), Paragraph("LWL", table_body_style), Paragraph("8,10 m", table_body_style), Paragraph("Proa quase vertical maximiza a LWL, reduzindo a formação de ondas.", table_body_style)],
    [Paragraph("Boca Total", table_body_bold), Paragraph("B", table_body_style), Paragraph("3,60 m", table_body_style), Paragraph("Relação B/LOA = 0,42. Grande rigidez e estabilidade transversal.", table_body_style)],
    [Paragraph("Boca de Cada Semi-Casco", table_body_bold), Paragraph("b", table_body_style), Paragraph("0,82 m", table_body_style), Paragraph("Cascos esguios (L/b ≈ 9,9), excelente entrada de água e baixo arrasto.", table_body_style)],
    [Paragraph("Pontal Moldado", table_body_bold), Paragraph("D", table_body_style), Paragraph("1,50 m", table_body_style), Paragraph("Borda livre segura contra respingos e volume interno adequado.", table_body_style)],
    [Paragraph("Calado Carregado", table_body_bold), Paragraph("T", table_body_style), Paragraph("0,55 m", table_body_style), Paragraph("Baixo calado, facilita aproximação de praias e fundeios rasos.", table_body_style)],
    [Paragraph("Vão Livre do Túnel", table_body_bold), Paragraph("Hc", table_body_style), Paragraph("0,58 m", table_body_style), Paragraph("Espaço do túnel central suficiente para evitar batida de ondas (*slamming*).", table_body_style)],
    [Paragraph("Deslocamento Carregado", table_body_bold), Paragraph("Δ", table_body_style), Paragraph("~5,2 a 5,6 t", table_body_style), Paragraph("Estrutura compósita + 4 tripulantes + carga/pesca + tanques cheios.", table_body_style)]
]

t_dim = Table(dim_data, colWidths=[1.5*inch, 0.6*inch, 1.2*inch, 4.1*inch])
t_dim.setStyle(TableStyle([
    ('BACKGROUND', (0,0), (-1,0), primary_color),
    ('ALIGN', (0,0), (-1,-1), 'LEFT'),
    ('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
    ('GRID', (0,0), (-1,-1), 0.5, border_color),
    ('ROWBACKGROUNDS', (0,1), (-1,-1), [light_neutral, colors.white]),
    ('TOPPADDING', (0,0), (-1,-1), 2),
    ('BOTTOMPADDING', (0,0), (-1,-1), 2),
]))
story.append(t_dim)
story.append(Spacer(1, 3))

# 3. Arranjo Geral e Cabine Central
story.append(Paragraph("3. Cabine Central, Convés e Praça de Trabalho", section_heading))
story.append(Paragraph("• <b>Cabine Central Abrigada (Cuddy Cabin):</b> Posto de comando protegido com para-brisa facetado, volante central/boreste, instrumentos de navegação, painel elétrico e banco duplo para piloto e co-piloto.", bullet_style))
story.append(Paragraph("• <b>Hardtop e Arco Targa:</b> Teto rígido estrutural integrado a um arco targa esportivo na ré para instalação de radar náutico, luzes de navegação, antenas VHF/GPS e farol de milha.", bullet_style))
story.append(Paragraph("• <b>Convés de Proa e Borda:</b> Plataforma rígida com guarda-mancebos bipartidos em aço inox 316, caixa de âncora e cabeço de amarração duplo.", bullet_style))
story.append(Paragraph("• <b>Praça de Popa (~12 m²):</b> Amplo espaço aberto para operação de espinhel/pesca ou convivência, com fácil acesso aos motores e escada de popa.", bullet_style))
story.append(Spacer(1, 3))

# 4. Método Construtivo (Andy Smith Style)
story.append(Paragraph("4. Método Construtivo em Madeira e Epóxi / PRFV", section_heading))
story.append(Paragraph("• <b>Casca do Casco (Hard Chine):</b> Estrutura montada sobre picadeiro com compensado naval de 12–15 mm nas laterais e fundo reforçado, laminada externamente com tecidos biaxiais de fibra de vidro (600 g/m²) saturados em resina epóxi.", bullet_style))
story.append(Paragraph("• <b>Pintura e Acabamento:</b> Fundo em primer epóxi, acabamento em poliuretano (PU) automotivo/naval metálico prata de alto brilho com faixas esportivas em vermelho, laranja e amarelo.", bullet_style))
story.append(Spacer(1, 3))

# 5. Propulsão
story.append(Paragraph("5. Propulsão e Desempenho", section_heading))
story.append(Paragraph("• <b>Motorização Dupla:</b> 2 motores diesel de centro (25 a 30 HP cada) ou 2 motores de popa de 40 a 60 HP 4 tempos (para quem busca velocidades de cruzeiro superiores a 15–20 nós).", bullet_style))
story.append(Paragraph("• <b>Autonomia:</b> Tanques de 350 L de combustível e 300 L de água doce, garantindo de 3 a 5 dias de mar contínuos com ampla margem de segurança.", bullet_style))

doc.build(story)
print("PDF Double Trouble gerado com sucesso!")
