import os
from reportlab.lib.pagesizes import letter, landscape
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_Veleiro_Cruzeiro_Quilha_Corrida_8_5m.pdf"

doc = SimpleDocTemplate(
    pdf_path,
    pagesize=landscape(letter),
    rightMargin=30,
    leftMargin=30,
    topMargin=26,
    bottomMargin=26
)

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=13,
    leading=17,
    textColor=primary_color,
    alignment=1,
    spaceAfter=2
)

subtitle_style = ParagraphStyle(
    'DocSubtitle',
    parent=styles['Normal'],
    fontName='Helvetica',
    fontSize=8.5,
    leading=11,
    textColor=secondary_color,
    alignment=1,
    spaceAfter=5
)

section_heading = ParagraphStyle(
    'SectionHeading',
    parent=styles['Heading2'],
    fontName='Helvetica-Bold',
    fontSize=9.5,
    leading=12,
    textColor=primary_color,
    spaceBefore=4,
    spaceAfter=2
)

body_style = ParagraphStyle(
    'BodyDark',
    parent=styles['Normal'],
    fontName='Helvetica',
    fontSize=7.5,
    leading=10,
    textColor=dark_neutral,
    spaceAfter=2
)

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

table_body_style = ParagraphStyle(
    'TableBody',
    parent=styles['Normal'],
    fontName='Helvetica',
    fontSize=6.5,
    leading=8.2,
    textColor=dark_neutral,
    alignment=1
)

table_body_left = ParagraphStyle(
    'TableBodyLeft',
    parent=table_body_style,
    alignment=0
)

table_body_bold = ParagraphStyle(
    'TableBodyBold',
    parent=styles['Normal'],
    fontName='Helvetica-Bold',
    fontSize=6.5,
    leading=8.2,
    textColor=primary_color,
    alignment=1
)

story = []

# Cabeçalho
story.append(Paragraph("PROJETO EXECUTIVO DE ARRANJO GERAL: VELEIRO DE CRUZEIRO OCEÂNICO CLÁSSICO (8,50 m / 28 ft)", title_style))
story.append(Paragraph("<b>Corte Longitudinal (Inboard Profile) e Planta Baixa — Casco com Quilha Corrida (Full Keel)</b> | Aluno: Alberico | Brana / EEE", subtitle_style))
story.append(HRFlowable(width="100%", thickness=1.2, color=secondary_color, spaceAfter=4))

# 1. Arquitetura do Barco
story.append(Paragraph("1. Arquitetura Naval do Veleiro Clássico de Quilha Corrida (Full Keel)", section_heading))
story.append(Paragraph(
    "A representação técnica reproduz fielmente a arquitetura da imagem enviada pelo aluno: um <b>veleiro de cruzeiro oceânico tradicional (*blue water cruiser*)</b> "
    "de <b>8,50 m de comprimento (28 pés) por 2,80 m de boca</b>, consagrado por projetistas como Carl Alberg, Bill Luders e Lyle Hess. "
    "Suas marcas registradas são a <b>quilha corrida contínua com lastro de chumbo integrado no fundo</b>, <b>leme protegido no calcanhar da quilha (*keel-hung rudder*)</b>, "
    "<b>mastro passante apoiado diretamente sobre a quilha (*keel-stepped mast*)</b> e casaria com degrau clássico (*stepped trunk cabin*) garantindo excelente pé-direito interno.",
    body_style
))

# 2. Tabela de Compartimentos
t_comp_data = [
    [
        Paragraph("Compartimento", table_header_style),
        Paragraph("Posição Longitudinal", table_header_style),
        Paragraph("Equipamentos e Mobiliário Integrado", table_header_style),
        Paragraph("Função Náutica e Comportamento Estrutural", table_header_style)
    ],
    [
        Paragraph("1. Paiol da Amarra<br/>(Chain Locker)", table_body_bold),
        Paragraph("Extremo de Vante<br/>(x = 7,50 a 8,50 m)", table_body_style),
        Paragraph("Guarda de corrente, amarras e cabo de âncora; delimitado por antepara estanque de colisão.", table_body_left),
        Paragraph("Reserva de flutuabilidade na proa e proteção contra alagamento em caso de impacto frontal.", table_body_left)
    ],
    [
        Paragraph("2. Camarote de Proa<br/>(V-Berth)", table_body_bold),
        Paragraph("Proa<br/>(x = 5,80 a 7,50 m)", table_body_style),
        Paragraph("Cama de casal em 'V' com estofamento naval de 10 cm; sob o leito situam-se paióis de mantimentos e tanque de água doce (120 L).", table_body_left),
        Paragraph("Pernoite confortável para 2 adultos com escotilha de teto (*hatch*) para ventilação tropical.", table_body_left)
    ],
    [
        Paragraph("3. Mastro Passante e<br/>Antepara Mestra", table_body_bold),
        Paragraph("Meia-Nau Vante<br/>(x = 5,00 a 5,20 m)", table_body_style),
        Paragraph("Mastro atravessa o convés e apoia na sobrequilha de madeira/aço (*keel-stepped*), travado por antepara de 18 mm.", table_body_left),
        Paragraph("Rigidez estrutural máxima: descarrega as forças de compressão das velas diretamente na quilha.", table_body_left)
    ],
    [
        Paragraph("4. Banheiro Fechado<br/>(Head / WC)", table_body_bold),
        Paragraph("Meia-Nau Boreste<br/>(x = 4,40 a 5,80 m)", table_body_style),
        Paragraph("Vaso sanitário marítimo manual, lavatório com pia em inox, ralo de chuveiro e armários estanques.", table_body_left),
        Paragraph("Privacidade total em navegação oceânica, localizado no ponto de menor balanço vertical do barco.", table_body_left)
    ],
    [
        Paragraph("5. Salão e Cozinha<br/>(Saloon & Galley)", table_body_bold),
        Paragraph("Centro da Cabine<br/>(x = 2,40 a 4,40 m)", table_body_style),
        Paragraph("Mesa central rebatível ladeada por 2 sofás-camas (*settee berths*); cozinha a bombordo com fogão cardan e cuba de inox.", table_body_left),
        Paragraph("Área de convívio social para 4 a 6 pessoas; oferece 2 beliches de mar seguros durante travessias.", table_body_left)
    ],
    [
        Paragraph("6. Praça de Máquinas<br/>(Engine Room)", table_body_bold),
        Paragraph("Sob a Escada / Popa<br/>(x = 1,30 a 2,10 m)", table_body_style),
        Paragraph("Motor Diesel Marítimo de 18 a 25 CV (Yanmar 3YM20 / Volvo Penta D1-20), acoplado a linha de eixo curta e hélice de 3 pás.", table_body_left),
        Paragraph("Posicionado exatamente sobre o centro de gravidade longitudinal (LCG), garantindo equilíbrio de peso.", table_body_left)
    ],
    [
        Paragraph("7. Cockpit Rebaixado<br/>(Aft Cockpit)", table_body_bold),
        Paragraph("Popa ao Ar Livre<br/>(x = 0,00 a 2,40 m)", table_body_style),
        Paragraph("Bancos ergonômicos com paióis profundos (*lazarettes*), pedestal de leme com timão de inox e drenos auto-esgotantes.", table_body_left),
        Paragraph("Posto de comando protegido pelo ressalto da casaria, seguro contra entrada de água do mar grosso.", table_body_left)
    ]
]

t_table_comp = Table(t_comp_data, colWidths=[1.6*inch, 1.4*inch, 4.4*inch, 3.4*inch])
t_table_comp.setStyle(TableStyle([
    ('BACKGROUND', (0,0), (-1,0), primary_color),
    ('ALIGN', (0,0), (-1,-1), 'CENTER'),
    ('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.5),
    ('BOTTOMPADDING', (0,0), (-1,-1), 2.5),
]))
story.append(t_table_comp)
story.append(Spacer(1, 4))

# 3. Análise Hidrodinâmica da Quilha Corrida
story.append(Paragraph("2. Vantagens Hidrodinâmicas e Comportamento Náutico da Quilha Corrida", section_heading))
story.append(Paragraph(
    "• <b>Estabilidade Direcional e Piloto Automático:</b> Diferente dos veleiros modernos de quilha fina (*fin keel*), o veleiro de quilha corrida mantém o rumo com facilidade sem precisar de correção constante no leme, permitindo que lemes de vento ou pilotos automáticos trabalhem com esforço mínimo.<br/>"
    "• <b>Segurança contra Colisão e Encalhe:</b> Se a embarcação tocar um banco de areia, recife ou tronco submerso, o fundo contínuo desliza sobre o obstáculo sem arrancar o leme nem entortar o eixo, pois o leme está fisicamente travado no calcanhar de ferro/chumbo da quilha.<br/>"
    "• <b>Conforto no Balanço (Movimento Macio):</b> O grande volume submerso e o lastro rebaixado (1.400 kg a 1,40 m de profundidade) geram um período de balanço suave e previsível, evitando solavancos bruscos e reduzindo drasticamente o enjoo da tripulação em mar aberto.",
    body_style
))

doc.build(story)
print("PDF Veleiro Quilha Corrida gerado com sucesso!")
