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_Similar_Perfil_Downeast_Cruiser_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
)

bullet_style = ParagraphStyle(
    'BulletDark',
    parent=body_style,
    leftIndent=8,
    firstLineIndent=-6,
    spaceAfter=1.5
)

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 PERFIL E SIMILARIDADE: DOWNEAST PILOTHOUSE CRUISER 8,50 m", title_style))
story.append(Paragraph("<b>Conexão Direta entre a Vista Lateral e a Planta Baixa — Casco Semi-Deslocamento/Planeio com Motor de Popa</b> | Aluno: Alberico | Brana / EEE", subtitle_style))
story.append(HRFlowable(width="100%", thickness=1.2, color=secondary_color, spaceAfter=4))

# 1. Arquitetura
story.append(Paragraph("1. Arquitetura do Perfil Lateral (Análise da Imagem de Referência)", section_heading))
story.append(Paragraph(
    "A nova imagem de perfil lateral enviada pelo aluno é a <b>elevação externa exata que corresponde à planta baixa de arranjo geral</b> enviada na etapa anterior. "
    "Trata-se de um <b>Downeast Pilothouse Cruiser / Lobster Pocket Cruiser</b> de <b>8,50 m de comprimento (28 pés) por 2,90 m de boca</b>, "
    "caracterizado por sua casaria rígida (*pilothouse*) com teto em balanço (*overhang*), para-brisa frontal ligeiramente inclinado e ampla visibilidade lateral. "
    "A cabine de proa rebaixada em degrau possui duas vigias ovais clássicas para ventilação da cama em V, enquanto a praça de popa rebaixada acolhe um motor de popa potente montado diretamente no espelho:",
    body_style
))

# 2. Tabela de Especificações
table_data = [
    [
        Paragraph("Parâmetro de Projeto", table_header_style),
        Paragraph("Dimensão Métrica", table_header_style),
        Paragraph("Dimensão Imperial", table_header_style),
        Paragraph("Correspondência Técnica na Imagem e Comportamento Náutico", table_header_style)
    ],
    [
        Paragraph("Comprimento Total (LOA)", table_body_bold),
        Paragraph("<b>8,50 metros</b>", table_body_style),
        Paragraph("27' 11\" (28 ft)", table_body_style),
        Paragraph("Comprimento total da roda de proa até o espelho de popa (sem contar a rabeta do motor de popa).", table_body_left)
    ],
    [
        Paragraph("Comprimento Linha d'Água (LWL)", table_body_bold),
        Paragraph("<b>7,65 metros</b>", table_body_style),
        Paragraph("25' 1\"", table_body_style),
        Paragraph("Entrada de água fina na proa que se abre em um fundo em V moderado com chine marcado até a popa.", table_body_left)
    ],
    [
        Paragraph("Boca Máxima Moldada (B)", table_body_bold),
        Paragraph("<b>2,90 metros</b>", table_body_style),
        Paragraph("9' 6\"", table_body_style),
        Paragraph("Proporção clássica 3:1 que confere excelente estabilidade estática e espaço interno de circulação.", table_body_left)
    ],
    [
        Paragraph("Calado de Casco (T)", table_body_bold),
        Paragraph("<b>0,48 metro</b>", table_body_style),
        Paragraph("1' 7\"", table_body_style),
        Paragraph("Calado reduzido típico de motor de popa, permitindo aproximação de praias e fundeios rasos na baía.", table_body_left)
    ],
    [
        Paragraph("Pontal / Altura de Proa", table_body_bold),
        Paragraph("<b>1,35 metro</b> (+1,35 m da WL)", table_body_style),
        Paragraph("4' 5\"", table_body_style),
        Paragraph("Proa lançada (*flared bow*) que corta as ondas e desvia o spray d'água para longe do convés.", table_body_left)
    ],
    [
        Paragraph("Borda Livre na Popa", table_body_bold),
        Paragraph("<b>0,75 metro</b> (+0,75 m da WL)", table_body_style),
        Paragraph("2' 6\"", table_body_style),
        Paragraph("Altura ergonômica perfeita na cintura para embarque, pescaria e manuseio de cabos.", table_body_left)
    ],
    [
        Paragraph("Pé-Direito na Casaria", table_body_bold),
        Paragraph("<b>1,92 metro</b> (Pilothouse)", table_body_style),
        Paragraph("6' 4\"", table_body_style),
        Paragraph("Excelente altura interna sob o teto rígido, permitindo pilotar e cozinhar confortavelmente em pé.", table_body_left)
    ],
    [
        Paragraph("Motorização de Popa", table_body_bold),
        Paragraph("1x 115 a 150 HP (ou 2x 70 HP)", table_body_style),
        Paragraph("Gasolina 4 Tempos", table_body_style),
        Paragraph("Motor montado no espelho de popa com rabeta longa (25\"); velocidade de cruzeiro de 18 nós e máxima de 26 nós.", table_body_left)
    ],
    [
        Paragraph("Tanques e Autonomia", table_body_bold),
        Paragraph("Gasolina: 250 L | Água: 150 L", table_body_style),
        Paragraph("66 gal / 40 gal", table_body_style),
        Paragraph("Autonomia para mais de 160 milhas náuticas em velocidade de cruzeiro econômica.", table_body_left)
    ]
]

t_comp = Table(
    table_data,
    colWidths=[1.8*inch, 1.8*inch, 1.4*inch, 5.0*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 da Conexão Perfil vs Planta Baixa
story.append(Paragraph("2. A Conexão Perfeita entre a Vista Lateral e a Planta Baixa de Convés", section_heading))
story.append(Paragraph(
    "• <b>Cockpit Aberto de Popa (2,60 m):</b> No perfil, vê-se a amurada com borda na altura da cintura (0,75 m) e o piso rebaixado. Na planta baixa, corresponde à praça revestida em teca, totalmente livre para pesca e convívio.<br/>"
    "• <b>Casaria Principal Fechada (2,60 m):</b> No perfil, destaca-se o para-brisa frontal inclinado e a janela lateral panorâmica de dois panos com beiral superior no teto. Na planta baixa, abriga o posto de comando interno à ré do para-brisa, a cozinha e a dinete em U.<br/>"
    "• <b>Cabine de Proa com Degrau (3,30 m):</b> No perfil, o teto desce suavemente para frente da casaria (*trunk cabin*), destacando as duas vigias ovais. Na planta baixa, acomoda com total privacidade o banheiro fechado (WC) e a cama de casal triangular em V (*V-berth*).",
    body_style
))

doc.build(story)
print("PDF Similar Perfil Downeast gerado com sucesso!")
