empty_dvd_cover.py revision 8ac705ee842a9087042c9ed7d126f39cadac9cec
#!/usr/bin/env python
# Written by Tavmjong Bah
import inkex
class C(inkex.Effect):
def __init__(self):
inkex.Effect.__init__(self)
self.OptionParser.add_option("-s", "--spine", action="store", type="string", dest="dvd_cover_spine", default="normal", help="Dvd spine width")
self.OptionParser.add_option("-b", "--bleed", action="store", type="float", dest="dvd_cover_bleed", default="3", help="Bleed (extra area around image")
def create_horizontal_guideline(self, name, position):
self.create_guideline(name, "0,1", 0, position)
def create_vertical_guideline(self, name, position):
self.create_guideline(name, "1,0", position, 0)
def create_guideline(self, label, orientation, x,y):
namedview = self.root.find(inkex.addNS('namedview', 'sodipodi'))
guide = inkex.etree.SubElement(namedview, inkex.addNS('guide', 'sodipodi'))
guide.set("orientation", orientation)
guide.set("position", str(x)+","+str(y))
# No need to set label (causes translation problems, etc.)
# guide.set(inkex.addNS('label', 'inkscape'), label)
def effect(self):
# Dimensions in mm
width = 259.0 # Before adding spine width or bleed
height = 183.0 # Before adding bleed
bleed = self.options.dvd_cover_bleed
spine = float( self.options.dvd_cover_spine )
width += spine
width += 2.0 * bleed
height += 2.0 * bleed
self.root = self.document.getroot()
self.root.set("id", "SVGRoot")
self.root.set("width", str(width) + 'mm')
self.root.set("height", str(height) + 'mm')
self.root.set("viewBox", "0 0 " + str(width) + " " + str(height) )
namedview = self.root.find(inkex.addNS('namedview', 'sodipodi'))
if namedview is None:
namedview = inkex.etree.SubElement( self.root, inkex.addNS('namedview', 'sodipodi') );
namedview.set(inkex.addNS('document-units', 'inkscape'), "mm")
# Until units are supported in 'cx', etc.
namedview.set(inkex.addNS('cx', 'inkscape'), str(self.uutounit( width, 'px' )/2.0 ) )
namedview.set(inkex.addNS('cy', 'inkscape'), str(self.uutounit( height, 'px' )/2.0 ) )
self.create_horizontal_guideline("bottom", str(self.uutounit( bleed, 'px' )) )
self.create_horizontal_guideline("top", str(self.uutounit( height-bleed, 'px' )) )
self.create_vertical_guideline("left edge", str(self.uutounit( bleed, 'px' )) )
self.create_vertical_guideline("left spline", str(self.uutounit( (width-spine)/2.0,'px' )) )
self.create_vertical_guideline("right spline", str(self.uutounit( (width+spine)/2.0,'px' )) )
self.create_vertical_guideline("left edge", str(self.uutounit( width-bleed, 'px' )) )
c = C()
c.affect()