#! /usr/bin/python3 -t

PROG_DESC = "Outputs an SVG 'roadkill' diagram for said molecule"

import math; from math import sqrt,sin,cos,pi
import rn
import sys, os, re
import mformula
import mformula_oxocarbon; from mformula_oxocarbon import build_formula_COO_1neg
import mformula_svg



def image_name(style):
  fname = __file__
  imgname = re.sub(r'.*[/]', "", fname[0:-3]) + \
    "_style" + style
  return imgname

def image_descr(style):
  fname = __file__
  imgname = re.sub(r'.*[/]', "", fname[0:-3])
  descr = "Structural formula of " + re.sub(r'[_]', " ", imgname)
  descr += "\n" + \
    "\n" + \
    mformula_svg.style_descr(style)
  return descr

def build_formula(svg):

  fm = mformula.obj()

  fh = build_formula_half(svg)

  k0 = fm.add_subformula(fh, 0,   0, [0,0]) # Left half
  k1 = fm.add_subformula(fh, 0, 180, [0,0]) # Right half
  fm.add_bond(k0+0,k1+0,1.0)

  return fm

def image_name(style):
  fname = __file__
  imgname = re.sub(r'.*[/]', "", fname[0:-3]) + \
    "_style" + style
  return imgname

def image_descr(style):
  fname = __file__
  imgname = re.sub(r'.*[/]', "", fname[0:-3])
  descr = "Structural formula of " + re.sub(r'[_]', " ", imgname)
  descr += "\n" + \
    "\n" + \
    mformula_svg.style_descr(style)
  return descr

def build_formula_half(svg) :

  fh = mformula.obj()
  c30 = cos(30*pi/180)
  s30 = sin(30*pi/180)

  av = 1.0                 # Valence of bond from C to OO.
  ab = svg.rel_bond_length(av)  # Relative length of bond from C to OO.

  ev = 1.0                 # Valence of O-O bond.
  eb = svg.rel_bond_length(ev)  # Relative length of O-O bond.

  # Atom centers:
  p0 = rn.scale(eb, [+0.5*c30, +0.5*s30])       # Peroxo oxygen.
  p1 = rn.add(p0, rn.scale(ab, [+c30, -s30]))   # Carbon.

  k0 = fh.add_atom("O", p0, 0,0)

  fg = build_formula_COO_1neg(svg,120)
  k1 = fh.add_subformula(fg, 0, -30, p1)

  fh.add_bond(k0,k1,av)

  return fh


