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

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

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

styles = getSampleStyleSheet()

primary_color = colors.HexColor("#0F2B48")
secondary_color = colors.HexColor("#B45309")
dark_neutral = colors.HexColor("#1E293B")
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.5,
    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 CONCEITUAL — LOBSTER BOAT MONOCASCO 8,50 m", title_style))
story.append(Paragraph("<b>Embarcação Pesqueira Clássica Downeast (Talude / 400 m)</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. Descrição
story.append(Paragraph("1. Arquitetura do Lobster Monocasco Clássico", section_heading))
story.append(Paragraph(
    "Embarcação pesqueira monocasco em fibra de vidro (PRFV) de <b>8,50 m de comprimento</b> e <b>2,90 m de boca</b>, inspirada nos autênticos barcos de pesca de lagosta e espinhel do Maine (<i>Downeast Lobster Boats</i>). Possui <b>proa alta e lançada com bico afilado</b> para cortar mar agitado, <b>quilha corrida com falso quilhão (*skeg*)</b> para proteção total do hélice e leme contra cabos e pedras, e uma <b>enorme praça de ré aberta</b> com borda ergonômica na altura da cintura (~0,75 m) para manuseio do espinhel e armadilhas.",
    body_style
))

# 2. Dimensões
story.append(Paragraph("2. Dimensões Principais e Hidrostática", section_heading))

dim_data = [
    [Paragraph("Parâmetro", table_header_style), Paragraph("Símbolo", table_header_style), Paragraph("Valor", table_header_style), Paragraph("Função / 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("Excelente porte para mar aberto costeiro e manobra em porto.", table_body_style)],
    [Paragraph("Comprimento Linha d'Água", table_body_bold), Paragraph("LWL", table_body_style), Paragraph("7,80 m", table_body_style), Paragraph("Velocidade de casco em deslocamento de ~7,2 nós; semi-planeio até 14-16 nós.", table_body_style)],
    [Paragraph("Boca Máxima", table_body_bold), Paragraph("B", table_body_style), Paragraph("2,90 m", table_body_style), Paragraph("Proporção clássica (LOA/B ≈ 2,93) — firmeza lateral e praça desimpedida.", table_body_style)],
    [Paragraph("Pontal Moldado", table_body_bold), Paragraph("D", table_body_style), Paragraph("1,45 m", table_body_style), Paragraph("Garante excelente borda livre na proa (+1,35 m) e segurança em mar grosso.", table_body_style)],
    [Paragraph("Calado de Projeto", table_body_bold), Paragraph("T", table_body_style), Paragraph("0,75 m", table_body_style), Paragraph("Calado moderado com quilha protetora de eixo e hélice.", table_body_style)],
    [Paragraph("Deslocamento Carregado", table_body_bold), Paragraph("Δ", table_body_style), Paragraph("~4,8 a 5,2 t", table_body_style), Paragraph("Casco PRFV + motor diesel central + 1t peixe + 1,1t gelo + óleo/água.", 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
story.append(Paragraph("3. Arranjo de Convés e Praça de Pesca", section_heading))
story.append(Paragraph("• <b>Praça de Popa (12 m² livres):</b> Área plana e aberta com borda baixa (0,75 m), mesa de evisceração na popa e guincho de espinhel no bordo de boreste com tomada de força hidráulica (PTO).", bullet_style))
story.append(Paragraph("• <b>Porão Térmico Central:</b> Localizado exatamente na meia-nau sobre o centro de gravidade (LCG), com volume de <b>3,5 m³</b> isolado em poliuretano (PUR 80 mm) para 1.000 kg de peixe + 1.100 kg de gelo.", bullet_style))
story.append(Paragraph("• <b>Posto de Comando (Boreste):</b> Piloto com visão direta da água e do guincho, abrigado sob para-brisa facetado e teto rígido (hardtop).", bullet_style))
story.append(Paragraph("• <b>Cabine de Vante (Cuddy Cabin):</b> 2 a 3 beliches em V na proa, sanitário químico/marítimo e armários para rancho e mantimentos de 5 dias.", bullet_style))
story.append(Spacer(1, 3))

# 4. Propulsão
story.append(Paragraph("4. Motorização e Autonomia", section_heading))
story.append(Paragraph("• <b>Motor Principal:</b> Diesel Marítimo de Centro de <b>90 a 130 HP</b> a 2.500 rpm com reversor-redutor (2,5:1), linha de eixo e hélice de 4 pás protegido por skeg de quilha.", bullet_style))
story.append(Paragraph("• <b>Tanques:</b> 350 Litros de diesel (~50 horas de autonomia em regime de faina/cruzeiro) e 300 Litros de água doce.", bullet_style))

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