import pypdf
from reportlab.pdfgen import canvas
from reportlab.lib import colors
import io
import os

pdf_origem = '/home/magdalena/.hermes/cache/documents/doc_42c618853fd4_10_Plano-Velico__1_.pdf'
reader = pypdf.PdfReader(pdf_origem)
writer = pypdf.PdfWriter()

# Dimensões da Página 1: 841.89 x 1190.55 pt
w1 = float(reader.pages[0].mediabox.width)
h1 = float(reader.pages[0].mediabox.height)

# Coordenadas REAIS extraídas diretamente do modelo vetorial da prancha oficial:
# x_espelho_popa: 129.09 pt (Ponto Zero / Espelho de Popa do casco — sem contar com a pá do leme saliente à ré)
# x_base_mastro:  531.83 pt (Eixo longitudinal do mastro na carlinga/convés)
# x_roda_proa:    688.46 pt (Extremo de vante / Roda de proa do casco)
x_espelho_popa = 129.09
x_base_mastro  = 531.83
x_roda_proa    = 688.46

# Criar overlay gráfico com ReportLab
packet = io.BytesIO()
can = canvas.Canvas(packet, pagesize=(w1, h1))

# Nível Y para as cotas (alinhadas abaixo da cota de LOA, que está em y=184.47):
y_cota = 156.0
c_cota = colors.HexColor('#0F2D4A')
c_line = colors.HexColor('#1F4E79')
c_bg = colors.white

can.saveState()
can.setStrokeColor(c_line)
can.setFillColor(c_cota)
can.setLineWidth(0.6)

# 1. Linhas de chamada verticais tracejadas:
# Partem da base do casco / convés e descem até a linha de cota
can.setDash([2, 2])
# Chamada na Popa (Espelho de Popa real do casco):
can.line(x_espelho_popa, 184.47, x_espelho_popa, y_cota - 10)
# Chamada no Eixo do Mastro:
can.line(x_base_mastro, 335.0, x_base_mastro, y_cota - 10)
# Chamada na Roda de Proa:
can.line(x_roda_proa, 184.47, x_roda_proa, y_cota - 10)
can.setDash([])

# 2. COTA HORIZONTAL: DO ESPELHO DE POPA AO MASTRO (10,656 m)
can.line(x_espelho_popa, y_cota, x_base_mastro, y_cota)
# Ticks inclinados arquitetônicos
can.line(x_espelho_popa - 3, y_cota - 3, x_espelho_popa + 3, y_cota + 3)
can.line(x_base_mastro - 3, y_cota - 3, x_base_mastro + 3, y_cota + 3)

txt1 = "POPA AO MASTRO: 10,656 m"
can.setFont("Helvetica-Bold", 7.0)
tw1 = can.stringWidth(txt1, "Helvetica-Bold", 7.0)
cx1 = (x_espelho_popa + x_base_mastro) / 2.0
can.setFillColor(c_bg)
can.rect(cx1 - tw1/2 - 4, y_cota - 4.2, tw1 + 8, 8.4, fill=1, stroke=0)
can.setFillColor(c_cota)
can.drawCentredString(cx1, y_cota - 2.5, txt1)

# 3. COTA HORIZONTAL: DO MASTRO À RODA DE PROA (4,144 m)
can.line(x_base_mastro, y_cota, x_roda_proa, y_cota)
can.line(x_roda_proa - 3, y_cota - 3, x_roda_proa + 3, y_cota + 3)

txt2 = "MASTRO À PROA: 4,144 m"
tw2 = can.stringWidth(txt2, "Helvetica-Bold", 7.0)
cx2 = (x_base_mastro + x_roda_proa) / 2.0
can.setFillColor(c_bg)
can.rect(cx2 - tw2/2 - 4, y_cota - 4.2, tw2 + 8, 8.4, fill=1, stroke=0)
can.setFillColor(c_cota)
can.drawCentredString(cx2, y_cota - 2.5, txt2)

# 4. Inserção destacada no quadro técnico superior da prancha
can.setFont("Helvetica-Bold", 7.0)
can.setFillColor(colors.HexColor('#1A365D'))
can.drawString(37.7, 948, "POSIÇÃO DO MASTRO")
can.setFont("Helvetica", 7.0)
can.setFillColor(colors.HexColor('#2D3748'))
can.drawString(140.0, 948, "10,656 m do espelho de popa (72,0% LOA) · 4,144 m da roda de proa (28,0% LOA)")

can.restoreState()
can.save()
packet.seek(0)

overlay_pdf = pypdf.PdfReader(packet)
page0 = reader.pages[0]
page0.merge_page(overlay_pdf.pages[0])
writer.add_page(page0)

# Adiciona páginas 2 e 3 originais
for p in reader.pages[1:]:
    writer.add_page(p)

destinos = [
    "/home/magdalena/eee/grupos/grupo-3/Entrega Final/15_Balanco_Velico_Saveiro_Mestre_da_Cana_Grupo_3.pdf",
    "/home/magdalena/eee/grupos/grupo-3/15_Balanco_Velico_Saveiro_Mestre_da_Cana_Grupo_3.pdf",
    "/home/magdalena/eee/alunos/air/15_Balanco_Velico_Saveiro_Mestre_da_Cana_Grupo_3.pdf"
]

for dest in destinos:
    with open(dest, "wb") as f_out:
        writer.write(f_out)
    print(f"Atualizado com sucesso em: {dest}")
