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_Executivo_Arranjo_Geral_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=6
)

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.6,
    leading=10.2,
    textColor=dark_neutral,
    spaceAfter=2
)

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,
    leading=8.5,
    textColor=colors.white,
    alignment=1
)

table_body_style = ParagraphStyle(
    'TableBody',
    parent=styles['Normal'],
    fontName='Helvetica',
    fontSize=6.8,
    leading=8.5,
    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.8,
    leading=8.5,
    textColor=primary_color,
    alignment=1
)

story = []

# Cabeçalho
story.append(Paragraph("PROJETO EXECUTIVO DE ARRANJO GERAL INTERNO (GENERAL ARRANGEMENT)", title_style))
story.append(Paragraph("<b>Layout Completo Colorido com 2 Quarter Berths — 8,50 m × 2,85 m (28 pés)</b> | Aluno: Alberico | Brana / EEE", subtitle_style))
story.append(HRFlowable(width="100%", thickness=1.2, color=secondary_color, spaceAfter=4))

# 1. Introdução
story.append(Paragraph("1. Conceito do Arranjo Geral Otimizado para Pernoite (5 a 6 Pessoas)", section_heading))
story.append(Paragraph(
    "A planta baixa reproduz a distribuição exata da imagem enviada pelo aluno, com código de cores padronizado para cada setor funcional da embarcação. "
    "O grande diferencial deste layout para um barco de <b>8,50 m (28 pés) por 2,85 m de boca</b> é o aproveitamento máximo dos volumes de popa com <b>dois beliches de quarto (*quarter berths*)</b> "
    "ladeando a praça de máquinas e a descida da escada, permitindo pernoite confortável para até 6 tripulantes:",
    body_style
))

# 2. Tabela dos Compartimentos
table_data = [
    [
        Paragraph("Setor / Cor", table_header_style),
        Paragraph("Compartimento", table_header_style),
        Paragraph("Dimensão (x)", table_header_style),
        Paragraph("Mobiliário e Equipamentos Instalados", table_header_style),
        Paragraph("Capacidade de Pernoite / Função", table_header_style)
    ],
    [
        Paragraph("■ VERDE", table_body_bold),
        Paragraph("Camarote de Proa<br/>(V-Berth)", table_body_bold),
        Paragraph("<b>2,50 m</b><br/>(x = 6,00 a 8,50 m)", table_body_style),
        Paragraph("Cama de casal triangular em 'V' com estofamento naval de 10 cm, paiol de amarras na proa e gavetões sob o leito.", table_body_left),
        Paragraph("<b>2 adultos</b> com total privacidade e escotilha de ventilação no teto.", table_body_left)
    ],
    [
        Paragraph("■ ROSA", table_body_bold),
        Paragraph("Banheiro (WC) &<br/>Armário Closet", table_body_bold),
        Paragraph("<b>0,90 m</b><br/>(x = 5,10 a 6,00 m)", table_body_style),
        Paragraph("Boreste: Vaso sanitário marítimo, cuba de inox e ducha.<br/>Bombordo: Armário fechado com cabideiro para roupas de tempo úmido (*hanging locker*).", table_body_left),
        Paragraph("Higiene e guarda de roupas entre a proa e o salão com portas articuladas.", table_body_left)
    ],
    [
        Paragraph("■ AMARELO", table_body_bold),
        Paragraph("Salão Principal<br/>(Dinete Central)", table_body_bold),
        Paragraph("<b>1,90 m</b><br/>(x = 3,20 a 5,10 m)", table_body_style),
        Paragraph("Mesa de refeições central com abas dobráveis ao redor do pilar do mastro; sofá em U a bombordo e sofá reto a boreste.", table_body_left),
        Paragraph("Convivência para 6 pessoas sentadas; <b>2 camas de solteiro de mar (*sea berths*)</b>.", table_body_left)
    ],
    [
        Paragraph("■ CINZA", table_body_bold),
        Paragraph("Cozinha (Galley) &<br/>Mesa de Navegação", table_body_bold),
        Paragraph("<b>1,10 m</b><br/>(x = 2,10 a 3,20 m)", table_body_style),
        Paragraph("Bombordo: Pia de inox, torneira pressurizada, fogão náutico cardan de 2 bocas e caixa de gelo.<br/>Boreste: Mesa de cartas de navegação com painel elétrico 12V/110V e rádio VHF.", table_body_left),
        Paragraph("Preparo de alimentos e comando de navegação/comunicação da embarcação.", table_body_left)
    ],
    [
        Paragraph("■ AZUL", table_body_bold),
        Paragraph("2 Camas de Popa<br/>(Quarter Berths)", table_body_bold),
        Paragraph("<b>2,10 m</b><br/>(x = 0,00 a 2,10 m)", table_body_style),
        Paragraph("Dois leitos individuais estendidos sob os bancos do cockpit (um a boreste e um a bombordo), com estofados de 2,00 m × 0,75 m.", table_body_left),
        Paragraph("<b>2 pessoas deitadas</b>. São as camas mais estáveis do barco em mar grosso.", table_body_left)
    ],
    [
        Paragraph("■ LARANJA", table_body_bold),
        Paragraph("Praça de Máquinas<br/>& Escada de Acesso", table_body_bold),
        Paragraph("<b>0,80 m</b><br/>(x = 1,30 a 2,10 m)", table_body_style),
        Paragraph("Caixa isolada termoacusticamente com motor diesel de centro (15 a 25 CV); escada de descida da cabine articulada.", table_body_left),
        Paragraph("Acesso seguro de entrada/saída e facilidade total de manutenção do motor.", table_body_left)
    ]
]

t_comp = Table(
    table_data,
    colWidths=[1.1*inch, 1.5*inch, 1.4*inch, 3.8*inch, 2.7*inch]
)

t_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_comp)
story.append(Spacer(1, 4))

# 3. Análise dos Quarter Berths
story.append(Paragraph("2. Por que os 'Quarter Berths' (Camas Azuis de Popa) são tão Valorizados em Projeto Naval?", section_heading))
story.append(Paragraph(
    "• <b>Mínimo Movimento de Caturro (Pitching):</b> Em mar aberto, a proa é a parte do barco que mais sobe e desce ao cortar as ondas. Os *quarter berths* de popa ficam posicionados rente ao centro de gravidade longitudinal (LCG), onde o movimento vertical do casco é praticamente nulo, proporcionando o melhor sono e descanso em travessias noturnas.<br/>"
    "• <b>Proximidade com o Timoneiro:</b> O marinheiro que está de folga dorme a poucos centímetros da descida da escada do cockpit, podendo saltar para o leme em segundos caso o capitão precise de auxílio em manobras.<br/>"
    "• <b>Aproveitamento Espacial Inteligente:</b> As pernas de quem dorme ficam no vão que normalmente seria espaço perdido debaixo dos assentos do cockpit externo, liberando todo o salão central para convívio social diurno.",
    body_style
))

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