import os
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, Image as RLImage, HRFlowable, PageBreak

pdf_path = "/home/magdalena/eee/alunos/ricardo-teixeira/Sugestao_Layout_Praca_de_Cargas_Ricardo_Teixeira.pdf"

doc = SimpleDocTemplate(
    pdf_path,
    pagesize=A4,
    leftMargin=35,
    rightMargin=35,
    topMargin=35,
    bottomMargin=35
)

styles = getSampleStyleSheet()

primary_color = colors.HexColor("#1F3864")
secondary_color = colors.HexColor("#2B6CB0")
dark_neutral = colors.HexColor("#2D3748")
light_bg = colors.HexColor("#F7FAFC")
border_color = colors.HexColor("#CBD5E0")

title_style = ParagraphStyle(
    'Title',
    parent=styles['Normal'],
    fontName='Helvetica-Bold',
    fontSize=13,
    leading=16,
    textColor=colors.white,
    alignment=1
)

sub_style = ParagraphStyle(
    'Sub',
    parent=styles['Normal'],
    fontName='Helvetica',
    fontSize=9,
    leading=12,
    textColor=colors.white,
    alignment=1
)

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

body_text = ParagraphStyle(
    'Body',
    parent=styles['Normal'],
    fontName='Helvetica',
    fontSize=8.5,
    leading=12,
    textColor=dark_neutral
)

caption_style = ParagraphStyle(
    'Caption',
    parent=styles['Normal'],
    fontName='Helvetica-Oblique',
    fontSize=7.5,
    leading=10,
    textColor=colors.HexColor("#4A5568"),
    alignment=1
)

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

tbl_cell = ParagraphStyle(
    'TC',
    parent=styles['Normal'],
    fontName='Helvetica',
    fontSize=8,
    leading=10.5,
    textColor=dark_neutral
)

tbl_cell_bold = ParagraphStyle(
    'TCB',
    parent=styles['Normal'],
    fontName='Helvetica-Bold',
    fontSize=8,
    leading=10.5,
    textColor=primary_color
)

elements = []

# Cabeçalho
header_data = [
    [Paragraph("<b>CURSO DE DESIGN PROFISSIONAL DE EMBARCAÇÕES</b> — BRANA & EEE", sub_style)],
    [Paragraph("SUGESTÃO DE LAYOUT DA PRAÇA DE CARGA E CONVÉS", title_style)]
]
h_table = Table(header_data, colWidths=[525])
h_table.setStyle(TableStyle([
    ('BACKGROUND', (0,0), (-1,-1), primary_color),
    ('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
    ('TOPPADDING', (0,0), (-1,-1), 4),
    ('BOTTOMPADDING', (0,0), (-1,-1), 4),
]))
elements.append(h_table)
elements.append(Spacer(1, 6))

# Meta
meta_data = [
    [Paragraph("<b>Projeto:</b> Saveiro Tradicional de Carga (7,50 m)", body_text), Paragraph("<b>Projetista:</b> Ricardo Teixeira", body_text), Paragraph("<b>Data:</b> 15/10/2026", body_text)],
    [Paragraph("<b>Capacidade de Carga:</b> 1.500 kg de hortifrúti / raízes", body_text), Paragraph("<b>Rota:</b> Maragogipe — Salvador", body_text), Paragraph("<b>Arranjo:</b> Tijupá central e paneiros", body_text)]
]
m_table = Table(meta_data, colWidths=[205, 180, 140])
m_table.setStyle(TableStyle([
    ('BACKGROUND', (0,0), (-1,-1), light_bg),
    ('BOX', (0,0), (-1,-1), 0.5, border_color),
    ('INNERGRID', (0,0), (-1,-1), 0.5, border_color),
    ('TOPPADDING', (0,0), (-1,-1), 3),
    ('BOTTOMPADDING', (0,0), (-1,-1), 3),
    ('LEFTPADDING', (0,0), (-1,-1), 5),
    ('RIGHTPADDING', (0,0), (-1,-1), 5),
]))
elements.append(m_table)
elements.append(Spacer(1, 6))

# Seção 1: Arquitetura Naval da Praça de Carga
elements.append(Paragraph("1. Dimensionamento e Arquitetura Naval da Praça de Carga", sec_title))
elements.append(HRFlowable(width="100%", thickness=1, color=secondary_color, spaceAfter=4, spaceBefore=1))

p_desc = (
    "Para transportar com segurança <b>1.500 kg de produtos agrícolas heterogêneos</b> (raízes, tubérculos, sacarias de farinha e caixas de hortifrúti) "
    "num casco de <b>LOA = 7,50 m e Boca = 2,50 m</b>, a praça de carga ocupa a faixa central do barco, entre as estações 2,00 m e 5,40 m a partir da roda de proa.<br/>"
    "• <b>Comprimento Útil da Praça:</b> 3,40 metros corridos ao longo do centro de flutuação (LCB), garantindo que a variação de carga não altere o trim.<br/>"
    "• <b>Largura Útil de Estiva:</b> 1,75 m na base (sobre os paneiros) alargando até 2,20 m sob o tijupá, preservando <b>corredores laterais de 35 a 40 cm</b> para trânsito.<br/>"
    "• <b>Volume Útil Disponível:</b> ~4,2 a 4,6 m³ (densidade média de carga hortifrúti ~350 a 400 kg/m³, estivada com excelente circulação de ar).<br/>"
    "• <b>Estrutura de Fundo (Paneiros Removíveis):</b> Estrado de ripas de madeira sobre as cavernas para criar porão seco (água de sentina corre por baixo sem tocar a carga)."
)
elements.append(Paragraph(p_desc, body_text))
elements.append(Spacer(1, 6))

# Tabela do Arranjo Longitudinal
arr_data = [
    [Paragraph("<b>Setor do Barco</b>", tbl_hdr), Paragraph("<b>Extensão (m)</b>", tbl_hdr), Paragraph("<b>Equipamentos / Ocupação</b>", tbl_hdr), Paragraph("<b>Função Operacional</b>", tbl_hdr)],
    [Paragraph("1. Castelo de Proa", tbl_cell_bold), Paragraph("0,00 a 1,80 m", tbl_cell), Paragraph("Convés fechado, cabeço de amarração, enora/carlinga do mastro de içar", tbl_cell), Paragraph("Manobra da vela, atracação e ancoragem", tbl_cell)],
    [Paragraph("2. Praça de Carga / Tijupá", tbl_cell_bold), Paragraph("1,80 a 5,40 m", tbl_cell), Paragraph("3,40 m de porão com paneiros, cobertura de tijupá, esteira de descanso à vante", tbl_cell), Paragraph("Estiva de 1,5 t de carga seca e abrigo dos pilotos", tbl_cell)],
    [Paragraph("3. Passagens Laterais", tbl_cell_bold), Paragraph("Ao longo da praça", tbl_cell), Paragraph("Bordas livres de 35 cm de cada bordo com toleteiras", tbl_cell), Paragraph("Circulação dos estivadores e remada/varejamento", tbl_cell)],
    [Paragraph("4. Carro de Popa (Poço)", tbl_cell_bold), Paragraph("5,40 a 7,50 m", tbl_cell), Paragraph("Bancada de popa, leme de cana, suporte da rabeta diesel de 13,5 HP", tbl_cell), Paragraph("Governo da embarcação e operação de máquinas", tbl_cell)],
]
t_arr = Table(arr_data, colWidths=[110, 65, 210, 140])
t_arr.setStyle(TableStyle([
    ('BACKGROUND', (0,0), (-1,0), primary_color),
    ('GRID', (0,0), (-1,-1), 0.5, border_color),
    ('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
    ('TOPPADDING', (0,0), (-1,-1), 3),
    ('BOTTOMPADDING', (0,0), (-1,-1), 3),
    ('LEFTPADDING', (0,0), (-1,-1), 4),
    ('RIGHTPADDING', (0,0), (-1,-1), 4),
]))
elements.append(t_arr)
elements.append(Spacer(1, 8))

# Seção 2: Fotos e Referências Históricas da Estiva
elements.append(Paragraph("2. Registro Fotográfico Histórico: Estiva e Operação de Descarga", sec_title))
elements.append(HRFlowable(width="100%", thickness=1, color=secondary_color, spaceAfter=4, spaceBefore=1))

# Tabela com 2 fotos históricas lado a lado
img1_path = "/home/magdalena/eee/alunos/ricardo-teixeira/arranjos/img/estiva_desembarque_salvador.jpg"
img2_path = "/home/magdalena/eee/alunos/ricardo-teixeira/arranjos/img/saveiros_rampa_mercado_modelo.jpg"

fotos_data = [
    [
        RLImage(img1_path, width=255, height=160),
        RLImage(img2_path, width=255, height=160)
    ],
    [
        Paragraph("<b>Desembarque de Cargas em Salvador:</b> Operação dos estivadores transferindo as sacarias e produtos do interior da praça central para o cais através das passagens de bordo.", caption_style),
        Paragraph("<b>Saveiros Atracados na Rampa do Mercado Modelo:</b> Observa-se a concentração da carga a meia-nau sob a cobertura do tijupá, mantendo a proa e a popa desimpedidas.", caption_style)
    ]
]
t_fotos = Table(fotos_data, colWidths=[260, 260])
t_fotos.setStyle(TableStyle([
    ('VALIGN', (0,0), (-1,-1), 'TOP'),
    ('ALIGN', (0,0), (-1,-1), 'CENTER'),
    ('LEFTPADDING', (0,0), (-1,-1), 2),
    ('RIGHTPADDING', (0,0), (-1,-1), 2),
    ('TOPPADDING', (0,0), (-1,-1), 2),
    ('BOTTOMPADDING', (0,0), (-1,-1), 2),
]))
elements.append(t_fotos)
elements.append(Spacer(1, 8))

# Seção 3: Planta Baixa e Detalhe Construtivo da Carga
elements.append(Paragraph("3. Detalhes Técnicos de Arranjo em Madeira (Referência FAO)", sec_title))
elements.append(HRFlowable(width="100%", thickness=1, color=secondary_color, spaceAfter=4, spaceBefore=1))

img3_path = "/home/magdalena/eee/alunos/ricardo-teixeira/arranjos/img/fao_74m_arranjo.jpg"
img4_path = "/home/magdalena/eee/alunos/ricardo-teixeira/arranjos/img/fao_abrigo.jpg"

fotos_data2 = [
    [
        RLImage(img3_path, width=255, height=155),
        RLImage(img4_path, width=255, height=155)
    ],
    [
        Paragraph("<b>Planta Baixa e Perfil de Embarcação Tradicional de 7,4 m (FAO):</b> Divisão das cavernas, praça central de estiva e bancadas de travamento (vaus).", caption_style),
        Paragraph("<b>Esquema de Armação do Tijupá / Toldo de Descanso:</b> Estrutura leve sobre a mastreação para abrigo contra sol, chuva e acomodação de esteiras.", caption_style)
    ]
]
t_fotos2 = Table(fotos_data2, colWidths=[260, 260])
t_fotos2.setStyle(TableStyle([
    ('VALIGN', (0,0), (-1,-1), 'TOP'),
    ('ALIGN', (0,0), (-1,-1), 'CENTER'),
    ('LEFTPADDING', (0,0), (-1,-1), 2),
    ('RIGHTPADDING', (0,0), (-1,-1), 2),
    ('TOPPADDING', (0,0), (-1,-1), 2),
    ('BOTTOMPADDING', (0,0), (-1,-1), 2),
]))
elements.append(t_fotos2)
elements.append(Spacer(1, 6))

elements.append(Paragraph("<i>Documento técnico de apoio ao projeto — Curso de Design Profissional de Embarcações — Brana & EEE.</i>", caption_style))

doc.build(elements)
print("PDF de sugestão de layout da praça de cargas gerado com sucesso!")
