diff options
Diffstat (limited to 'share/extensions')
| -rw-r--r-- | share/extensions/empty_business_card.inx | 32 | ||||
| -rw-r--r-- | share/extensions/empty_business_card.py | 45 | ||||
| -rw-r--r-- | share/extensions/empty_desktop.inx | 39 | ||||
| -rw-r--r-- | share/extensions/empty_desktop.py | 46 | ||||
| -rw-r--r-- | share/extensions/empty_dvd_cover.inx | 31 | ||||
| -rw-r--r-- | share/extensions/empty_dvd_cover.py | 64 | ||||
| -rw-r--r-- | share/extensions/empty_generic.inx | 47 | ||||
| -rw-r--r-- | share/extensions/empty_generic.py | 82 | ||||
| -rw-r--r-- | share/extensions/empty_icon.inx | 24 | ||||
| -rw-r--r-- | share/extensions/empty_icon.py | 36 | ||||
| -rw-r--r-- | share/extensions/empty_page.inx | 21 | ||||
| -rw-r--r-- | share/extensions/empty_page.py | 101 | ||||
| -rw-r--r-- | share/extensions/empty_video.inx | 35 | ||||
| -rw-r--r-- | share/extensions/empty_video.py | 46 | ||||
| -rw-r--r-- | share/extensions/setup_typography_canvas.inx | 10 | ||||
| -rwxr-xr-x | share/extensions/setup_typography_canvas.py | 7 |
16 files changed, 625 insertions, 41 deletions
diff --git a/share/extensions/empty_business_card.inx b/share/extensions/empty_business_card.inx new file mode 100644 index 000000000..1513ebf26 --- /dev/null +++ b/share/extensions/empty_business_card.inx @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> +<inkscape-extension xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"> + <_name>Business Card</_name> + <id>org.inkscape.render.empty_business_card</id> + <dependency type="executable" location="extensions">business_card.py</dependency> + <dependency type="executable" location="extensions">inkex.py</dependency> + + <param name="size" _gui-text="Business card size:" type="enum"> + <item value="74mmx52mm">74mm x 52mm (A8)</item> + <item value="85mmx55mm">85mm x 55mm (Europe)</item> + <item value="90mmx55mm">90mm x 55mm (Australia, India, ...)</item> + <item value="91mmx55mm">91mm x 55mm (Japan)</item> + <item value="90mmx54mm">90mm x 54mm (China, ...)</item> + <item value="90mmx50mm">90mm x 50mm (India, Russia, ...)</item> + <item value="3.5inx2in">3.5in x 2in (United States, Canada)</item> + </param> + + <effect needs-live-preview="false"> + <object-type>all</object-type> + <effects-menu hidden="true" /> + </effect> + <inkscape:_templateinfo> + <inkscape:_name>Business Card...</inkscape:_name> + <inkscape:author>Tavmjong Bah</inkscape:author> + <inkscape:_shortdesc>Business card of chosen size.</inkscape:_shortdesc> + <inkscape:date>2014-10-09</inkscape:date> + <inkscape:_keywords>business card</inkscape:_keywords> + </inkscape:_templateinfo> + <script> + <command reldir="extensions" interpreter="python">business_card.py</command> + </script> +</inkscape-extension> diff --git a/share/extensions/empty_business_card.py b/share/extensions/empty_business_card.py new file mode 100644 index 000000000..586c37abc --- /dev/null +++ b/share/extensions/empty_business_card.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python + +# Written by Tavmjong Bah + +import inkex +import re + +class C(inkex.Effect): + def __init__(self): + inkex.Effect.__init__(self) + self.OptionParser.add_option("-s", "--size", action="store", type="string", dest="card_size", default="90mmx55mm", help="Business card size") + + def effect(self): + + size = self.options.card_size + + p = re.compile('([0-9.]*)([a-z][a-z])x([0-9.]*)([a-z][a-z])') + m = p.match( size ) + width = m.group(1) + width_unit = m.group(2) + height = m.group(3) + height_unit = m.group(4) + + root = self.document.getroot() + root.set("id", "SVGRoot") + root.set("width", width + width_unit) + root.set("height", height + height_unit) + root.set("viewBox", "0 0 " + width + " " + height ) + + namedview = root.find(inkex.addNS('namedview', 'sodipodi')) + if namedview is None: + namedview = inkex.etree.SubElement( root, inkex.addNS('namedview', 'sodipodi') ); + + namedview.set(inkex.addNS('document-units', 'inkscape'), width_unit) + + width_int = int(self.uutounit(float(width), 'px')) + height_int = int(self.uutounit(float(height), 'px')) + + namedview.set(inkex.addNS('zoom', 'inkscape'), str(2) ) + namedview.set(inkex.addNS('cx', 'inkscape'), str(width_int/2.0) ) + namedview.set(inkex.addNS('cy', 'inkscape'), str(height_int/2.0) ) + + +c = C() +c.affect() diff --git a/share/extensions/empty_desktop.inx b/share/extensions/empty_desktop.inx new file mode 100644 index 000000000..75762b660 --- /dev/null +++ b/share/extensions/empty_desktop.inx @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="UTF-8"?> +<inkscape-extension xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"> + <_name>Desktop</_name> + <id>org.inkscape.render.empty_desktop</id> + <dependency type="executable" location="extensions">empty_desktop.py</dependency> + <dependency type="executable" location="extensions">inkex.py</dependency> + + <param name="size" _gui-text="Desktop size:" type="enum"> + <item value="Custom">Custom</item> + <item value="640x480">640x480 (VGA)</item> + <item value="800x600">800x600 (SVGA)</item> + <item value="1024x768">1024x768 (XGA)</item> + <item value="1366x768">1366x768 (HD)</item> + <item value="1600x900">1600x900 (HD+)</item> + <item value="1600x1200">1600x1200 (UXGA)</item> + <item value="1920x1080">1920x1080 (FHD)</item> + <item value="1920x1200">1920x1200 (WUXGA)</item> + <item value="2560x1600">2560x1600 (WQXGA)</item> + </param> + + <!-- Maximum size is '16k' --> + <param name="width" _gui-text="Custom Width:" type="int" min="240" max="15360">1920</param> + <param name="height" _gui-text="Custom Height:" type="int" min="160" max="8640">1080</param> + + <effect needs-live-preview="false"> + <object-type>all</object-type> + <effects-menu hidden="true" /> + </effect> + <inkscape:_templateinfo> + <inkscape:_name>Desktop...</inkscape:_name> + <inkscape:author>Tavmjong Bah</inkscape:author> + <inkscape:_shortdesc>Empty desktop of chosen size.</inkscape:_shortdesc> + <inkscape:date>2014-10-09</inkscape:date> + <inkscape:_keywords>empty desktop</inkscape:_keywords> + </inkscape:_templateinfo> + <script> + <command reldir="extensions" interpreter="python">empty_desktop.py</command> + </script> +</inkscape-extension> diff --git a/share/extensions/empty_desktop.py b/share/extensions/empty_desktop.py new file mode 100644 index 000000000..31cb35f9d --- /dev/null +++ b/share/extensions/empty_desktop.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python + +# Written by Tavmjong Bah + +import inkex +import re + +class C(inkex.Effect): + def __init__(self): + inkex.Effect.__init__(self) + self.OptionParser.add_option("-s", "--size", action="store", type="string", dest="desktop_size", default="16", help="Desktop size") + + self.OptionParser.add_option("-w", "--width", action="store", type="int", dest="desktop_width", default="1920", help="Custom width") + self.OptionParser.add_option("-z", "--height", action="store", type="int", dest="desktop_height", default="1080", help="Custom height") + + def effect(self): + + size = self.options.desktop_size + width = self.options.desktop_width + height = self.options.desktop_height + + if size != "Custom": + p = re.compile('([0-9]*)x([0-9]*)') + m = p.match( size ) + width = int(m.group(1)) + height = int(m.group(2)) + + + root = self.document.getroot() + root.set("id", "SVGRoot") + root.set("width", str(width) + 'px') + root.set("height", str(height) + 'px') + root.set("viewBox", "0 0 " + str(width) + " " + str(height) ) + + namedview = root.find(inkex.addNS('namedview', 'sodipodi')) + if namedview is None: + namedview = inkex.etree.SubElement( root, inkex.addNS('namedview', 'sodipodi') ); + + namedview.set(inkex.addNS('document-units', 'inkscape'), 'px') + + namedview.set(inkex.addNS('cx', 'inkscape'), str(width/2.0) ) + namedview.set(inkex.addNS('cy', 'inkscape'), str(height/2.0) ) + + +c = C() +c.affect() diff --git a/share/extensions/empty_dvd_cover.inx b/share/extensions/empty_dvd_cover.inx new file mode 100644 index 000000000..facb523d1 --- /dev/null +++ b/share/extensions/empty_dvd_cover.inx @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<inkscape-extension xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"> + <_name>DVD Cover</_name> + <id>org.inkscape.render.empty_dvd_cover</id> + <dependency type="executable" location="extensions">empty_dvd_cover.py</dependency> + <dependency type="executable" location="extensions">inkex.py</dependency> + + <param name="spine" _gui-text="DVD spine width:" type="enum"> + <item value="14">Normal (14mm)</item> + <item value="9">Slim (9mm)</item> + <item value="7">Super Slim (7mm)</item> + <item value="5">Ultra Slim (5mm)</item> + </param> + + <param name="bleed" _gui-text="DVD cover bleed (mm):" type="float" min="0" max="25">3</param> + + <effect needs-live-preview="false"> + <object-type>all</object-type> + <effects-menu hidden="true" /> + </effect> + <inkscape:_templateinfo> + <inkscape:_name>DVD Cover...</inkscape:_name> + <inkscape:author>Tavmjong Bah</inkscape:author> + <inkscape:_shortdesc>DVD cover of chosen size.</inkscape:_shortdesc> + <inkscape:date>2014-10-10</inkscape:date> + <inkscape:_keywords>dvd cover</inkscape:_keywords> + </inkscape:_templateinfo> + <script> + <command reldir="extensions" interpreter="python">empty_dvd_cover.py</command> + </script> +</inkscape-extension> diff --git a/share/extensions/empty_dvd_cover.py b/share/extensions/empty_dvd_cover.py new file mode 100644 index 000000000..1456de51d --- /dev/null +++ b/share/extensions/empty_dvd_cover.py @@ -0,0 +1,64 @@ +#!/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() diff --git a/share/extensions/empty_generic.inx b/share/extensions/empty_generic.inx new file mode 100644 index 000000000..b430cfba5 --- /dev/null +++ b/share/extensions/empty_generic.inx @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="UTF-8"?> +<inkscape-extension xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"> + <_name>Generic Canvas</_name> + <id>org.inkscape.render.empty_generic_canvas</id> + <dependency type="executable" location="extensions">empty_generic.py</dependency> + <dependency type="executable" location="extensions">inkex.py</dependency> + + <param name="width" _gui-text="Custom Width:" type="float" min="1" max="15360">800</param> + <param name="height" _gui-text="Custom Height:" type="float" min="1" max="8640">600</param> + + <param name="unit" _gui-text="SVG Unit:" type="enum"> + <item value="px">'px'</item> + <item value="in">'in'</item> + <item value="mm">'mm'</item> + <item value="cm">'cm'</item> + <item value="pc">'pc'</item> + <item value="pt">'pt'</item> + </param> + + <param name="background" _gui-text="Canvas background:" type="enum"> + <item value="normal">Normal</item> + <item value="black">Black Opaque</item> + <item value="gray">Gray Opaque</item> + <item value="white">White Opaque</item> + </param> + + <param name="noborder" type="boolean" _gui-text="Hide border">false</param> + + <!-- + <param name="layer" type="boolean" _gui-text="Include default layer">true</param> + --> + + <effect needs-live-preview="false"> + <object-type>all</object-type> + <effects-menu hidden="true" /> + </effect> + <inkscape:_templateinfo> + <inkscape:_name>Generic canvas...</inkscape:_name> + <inkscape:author>Tavmjong Bah</inkscape:author> + <inkscape:_shortdesc>Genric canvas of choosen size.</inkscape:_shortdesc> + <inkscape:date>2014-10-09</inkscape:date> + <inkscape:_keywords>empty generic canvas</inkscape:_keywords> + </inkscape:_templateinfo> + <script> + <command reldir="extensions" interpreter="python">empty_generic.py</command> + </script> +</inkscape-extension> diff --git a/share/extensions/empty_generic.py b/share/extensions/empty_generic.py new file mode 100644 index 000000000..62e27d220 --- /dev/null +++ b/share/extensions/empty_generic.py @@ -0,0 +1,82 @@ +#!/usr/bin/env python + +# Written by Tavmjong Bah + +import inkex +import re + +class C(inkex.Effect): + def __init__(self): + inkex.Effect.__init__(self) + self.OptionParser.add_option("-w", "--width", action="store", type="int", dest="generic_width", default="1920", help="Custom width") + self.OptionParser.add_option("-z", "--height", action="store", type="int", dest="generic_height", default="1080", help="Custom height") + self.OptionParser.add_option("-u", "--unit", action="store", type="string", dest="generic_unit", default="px", help="SVG Unit") + self.OptionParser.add_option("-b", "--background", action="store", type="string", dest="generic_background", default="normal", help="Canvas background") + self.OptionParser.add_option("-n", "--noborder", action="store", type="inkbool", dest="generic_noborder", default=False) + # self.OptionParser.add_option("-l", "--layer", action="store", type="inkbool", dest="generic_layer", default=True) + + def effect(self): + + width = self.options.generic_width + height = self.options.generic_height + unit = self.options.generic_unit + + root = self.document.getroot() + root.set("id", "SVGRoot") + root.set("width", str(width) + unit) + root.set("height", str(height) + unit) + root.set("viewBox", "0 0 " + str(width) + " " + str(height) ) + + namedview = root.find(inkex.addNS('namedview', 'sodipodi')) + if namedview is None: + namedview = inkex.etree.SubElement( root, inkex.addNS('namedview', 'sodipodi') ); + + namedview.set(inkex.addNS('document-units', 'inkscape'), unit) + + # Until units are supported in 'cx', etc. + namedview.set(inkex.addNS('zoom', 'inkscape'), str(512.0/self.uutounit( width, 'px' )) ) + 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 ) ) + + if self.options.generic_background == "white": + namedview.set( 'pagecolor', "#ffffff" ) + namedview.set( 'bordercolor', "#666666" ) + namedview.set(inkex.addNS('pageopacity', 'inkscape'), "1.0" ) + namedview.set(inkex.addNS('pageshadow', 'inkscape'), "0" ) + + if self.options.generic_background == "gray": + namedview.set( 'pagecolor', "#808080" ) + namedview.set( 'bordercolor', "#444444" ) + namedview.set(inkex.addNS('pageopacity', 'inkscape'), "1.0" ) + namedview.set(inkex.addNS('pageshadow', 'inkscape'), "0" ) + + if self.options.generic_background == "black": + namedview.set( 'pagecolor', "#000000" ) + namedview.set( 'bordercolor', "#999999" ) + namedview.set(inkex.addNS('pageopacity', 'inkscape'), "1.0" ) + namedview.set(inkex.addNS('pageshadow', 'inkscape'), "0" ) + + if self.options.generic_noborder: + pagecolor = namedview.get( 'pagecolor' ) + namedview.set( 'bordercolor', pagecolor ) + namedview.set( 'borderopacity', "0" ) + + # This nees more thought... we need to set "Current layer" to (root), how? + # if self.options.generic_layer: + # # Add layer + # inkex.debug( "We want a layer" ) + # else: + # # Remove layer id default document (assuming only one) + # inkex.debug( "We don't want a layer" ) + # layer_node = self.current_layer + # if layer_node is not None: + # inkex.debug( "We have layer" ) + # root.remove(layer_node) + # try: + # del namedview.attrib[ inkex.addNS('current-layer', 'inkscape') ] + # except: + # pass + + +c = C() +c.affect() diff --git a/share/extensions/empty_icon.inx b/share/extensions/empty_icon.inx new file mode 100644 index 000000000..9e36b9d20 --- /dev/null +++ b/share/extensions/empty_icon.inx @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<inkscape-extension xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"> + <_name>Icon</_name> + <id>org.inkscape.render.empty_icon</id> + <dependency type="executable" location="extensions">empty_icon.py</dependency> + <dependency type="executable" location="extensions">inkex.py</dependency> + + <param name="size" _gui-text="Icon size:" type="int" min="8" max="256">16</param> + + <effect needs-live-preview="false"> + <object-type>all</object-type> + <effects-menu hidden="true" /> + </effect> + <inkscape:_templateinfo> + <inkscape:_name>Icon...</inkscape:_name> + <inkscape:author>Tavmjong Bah</inkscape:author> + <inkscape:_shortdesc>Empty icon of chosen size.</inkscape:_shortdesc> + <inkscape:date>2014-10-09</inkscape:date> + <inkscape:_keywords>empty icon</inkscape:_keywords> + </inkscape:_templateinfo> + <script> + <command reldir="extensions" interpreter="python">empty_icon.py</command> + </script> +</inkscape-extension> diff --git a/share/extensions/empty_icon.py b/share/extensions/empty_icon.py new file mode 100644 index 000000000..979edbae4 --- /dev/null +++ b/share/extensions/empty_icon.py @@ -0,0 +1,36 @@ +#!/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", "--size", action="store", type="int", dest="icon_size", default="16", help="Icon size") + + def effect(self): + + size = self.options.icon_size + + root = self.document.getroot() + root.set("id", "SVGRoot") + root.set("width", str(size) + 'px') + root.set("height", str(size) + 'px') + root.set("viewBox", "0 0 " + str(size) + " " + str(size) ) + + namedview = root.find(inkex.addNS('namedview', 'sodipodi')) + if namedview is None: + namedview = inkex.etree.SubElement( root, inkex.addNS('namedview', 'sodipodi') ); + + namedview.set(inkex.addNS('document-units', 'inkscape'), 'px') + + namedview.set(inkex.addNS('zoom', 'inkscape'), str(256.0/size) ) + namedview.set(inkex.addNS('cx', 'inkscape'), str(size/2.0) ) + namedview.set(inkex.addNS('cy', 'inkscape'), str(size/2.0) ) + namedview.set(inkex.addNS('grid-bbox', 'inkscape'), "true" ) + + + +c = C() +c.affect() diff --git a/share/extensions/empty_page.inx b/share/extensions/empty_page.inx index f3f60f796..6882b7273 100644 --- a/share/extensions/empty_page.inx +++ b/share/extensions/empty_page.inx @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <inkscape-extension xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"> - <_name>Empty Page</_name> + <_name>Page</_name> <id>org.inkscape.render.empty_page</id> <dependency type="executable" location="extensions">empty_page.py</dependency> <dependency type="executable" location="extensions">inkex.py</dependency> @@ -16,17 +16,26 @@ <item value="horizontal">Horizontal</item> <item value="vertical">Vertical</item> </param> - + + <param name="background" _gui-text="Page background:" type="enum"> + <item value="normal">Normal</item> + <item value="black">Black Opaque</item> + <item value="gray">Gray Opaque</item> + <item value="white">White Opaque</item> + </param> + + <param name="noborder" type="boolean" _gui-text="Hide border">false</param> + <effect needs-live-preview="false"> <object-type>all</object-type> <effects-menu hidden="true" /> </effect> <inkscape:_templateinfo> - <inkscape:_name>Empty page</inkscape:_name> - <inkscape:author>Jan Darowski</inkscape:author> + <inkscape:_name>Page...</inkscape:_name> + <inkscape:author>Jan Darowski, updated by Tavmjong Bah</inkscape:author> <inkscape:_shortdesc>Empty page of chosen size.</inkscape:_shortdesc> - <inkscape:date>2013-09-10</inkscape:date> - <inkscape:_keywords>empty sheet a4 a3 a5 letter</inkscape:_keywords> + <inkscape:date>2014-10-06</inkscape:date> + <inkscape:_keywords>empty sheet a4 a3 a5 letter black white opaque</inkscape:_keywords> </inkscape:_templateinfo> <script> <command reldir="extensions" interpreter="python">empty_page.py</command> diff --git a/share/extensions/empty_page.py b/share/extensions/empty_page.py index dc16bab97..3c1f67041 100644 --- a/share/extensions/empty_page.py +++ b/share/extensions/empty_page.py @@ -1,5 +1,7 @@ #!/usr/bin/env python +# Rewritten by Tavmjong Bah to add correct viewBox, inkscape:cx, etc. attributes + import inkex class C(inkex.Effect): @@ -7,38 +9,77 @@ class C(inkex.Effect): inkex.Effect.__init__(self) self.OptionParser.add_option("-s", "--size", action="store", type="string", dest="page_size", default="a4", help="Page size") self.OptionParser.add_option("-o", "--orientation", action="store", type="string", dest="page_orientation", default="vertical", help="Page orientation") + self.OptionParser.add_option("-b", "--background", action="store", type="string", dest="page_background", default="normal", help="Page background") + self.OptionParser.add_option("-n", "--noborder", action="store", type="inkbool", dest="page_noborder", default=False) + + def effect(self): + + width = 300 + height = 300 + units = 'px' + + if self.options.page_size == "a5": + width = 148 + height= 210 + units = 'mm' + + if self.options.page_size == "a4": + width = 210 + height= 297 + units = 'mm' + + if self.options.page_size == "a3": + width = 297 + height= 420 + units = 'mm' + + if self.options.page_size == "letter": + width = 8.5 + height = 11 + units = 'in' + + if self.options.page_orientation == "horizontal": + width, height = height, width - def effect(self): root = self.document.getroot() - root.set("width", "12in") - root.set("height", "12in") - if self.options.page_size == "a4" and self.options.page_orientation == "vertical": - root.set("width", "210mm") - root.set("height", "297mm") - if self.options.page_size == "a4" and self.options.page_orientation == "horizontal": - root.set("height", "210mm") - root.set("width", "297mm") - - if self.options.page_size == "a5" and self.options.page_orientation == "vertical": - root.set("width", "148mm") - root.set("height", "210mm") - if self.options.page_size == "a5" and self.options.page_orientation == "horizontal": - root.set("width", "210mm") - root.set("height", "148mm") - - if self.options.page_size == "a3" and self.options.page_orientation == "vertical": - root.set("width", "297mm") - root.set("height", "420mm") - if self.options.page_size == "a3" and self.options.page_orientation == "horizontal": - root.set("width", "420mm") - root.set("height", "297mm") - - if self.options.page_size == "letter" and self.options.page_orientation == "vertical": - root.set("width", "8.5in") - root.set("height", "11in") - if self.options.page_size == "letter" and self.options.page_orientation == "horizontal": - root.set("width", "11in") - root.set("height", "8.5in") + root.set("id", "SVGRoot") + root.set("width", str(width) + units) + root.set("height", str(height) + units) + root.set("viewBox", "0 0 " + str(width) + " " + str(height) ) + + namedview = root.find(inkex.addNS('namedview', 'sodipodi')) + if namedview is None: + namedview = inkex.etree.SubElement( root, inkex.addNS('namedview', 'sodipodi') ); + + namedview.set(inkex.addNS('document-units', 'inkscape'), units) + + # 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 ) ) + + + if self.options.page_background == "white": + namedview.set( 'pagecolor', "#ffffff" ) + namedview.set( 'bordercolor', "#666666" ) + namedview.set(inkex.addNS('pageopacity', 'inkscape'), "1.0" ) + namedview.set(inkex.addNS('pageshadow', 'inkscape'), "0" ) + + if self.options.page_background == "gray": + namedview.set( 'pagecolor', "#808080" ) + namedview.set( 'bordercolor', "#444444" ) + namedview.set(inkex.addNS('pageopacity', 'inkscape'), "1.0" ) + namedview.set(inkex.addNS('pageshadow', 'inkscape'), "0" ) + + if self.options.page_background == "black": + namedview.set( 'pagecolor', "#000000" ) + namedview.set( 'bordercolor', "#999999" ) + namedview.set(inkex.addNS('pageopacity', 'inkscape'), "1.0" ) + namedview.set(inkex.addNS('pageshadow', 'inkscape'), "0" ) + + if self.options.page_noborder: + pagecolor = namedview.get( 'pagecolor' ) + namedview.set( 'bordercolor', pagecolor ) + namedview.set( 'borderopacity', "0" ) c = C() c.affect() diff --git a/share/extensions/empty_video.inx b/share/extensions/empty_video.inx new file mode 100644 index 000000000..8ca148cfc --- /dev/null +++ b/share/extensions/empty_video.inx @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="UTF-8"?> +<inkscape-extension xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"> + <_name>Video Screen</_name> + <id>org.inkscape.render.empty_video</id> + <dependency type="executable" location="extensions">empty_video.py</dependency> + <dependency type="executable" location="extensions">inkex.py</dependency> + + <param name="size" _gui-text="Video size:" type="enum"> + <item value="Custom">Custom</item> + <item value="720x486">720x486 (NTSC)</item> + <item value="720x576">720x576 (PAL)</item> + <item value="1920x1080">1920x1080 (HDTV)</item> + <item value="3840x2160">3840x2160 (4K)</item> + <item value="7680x4320">7680x4320 (8K)</item> + </param> + + <!-- Maximum size is '16k' --> + <param name="width" _gui-text="Custom Width:" type="int" min="240" max="15360">1920</param> + <param name="height" _gui-text="Custom Height:" type="int" min="160" max="8640">1080</param> + + <effect needs-live-preview="false"> + <object-type>all</object-type> + <effects-menu hidden="true" /> + </effect> + <inkscape:_templateinfo> + <inkscape:_name>Video...</inkscape:_name> + <inkscape:author>Tavmjong Bah</inkscape:author> + <inkscape:_shortdesc>Video screen of chosen size.</inkscape:_shortdesc> + <inkscape:date>2014-10-09</inkscape:date> + <inkscape:_keywords>empty video</inkscape:_keywords> + </inkscape:_templateinfo> + <script> + <command reldir="extensions" interpreter="python">empty_video.py</command> + </script> +</inkscape-extension> diff --git a/share/extensions/empty_video.py b/share/extensions/empty_video.py new file mode 100644 index 000000000..4b440704c --- /dev/null +++ b/share/extensions/empty_video.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python + +# Written by Tavmjong Bah + +import inkex +import re + +class C(inkex.Effect): + def __init__(self): + inkex.Effect.__init__(self) + self.OptionParser.add_option("-s", "--size", action="store", type="string", dest="video_size", default="16", help="Video size") + + self.OptionParser.add_option("-w", "--width", action="store", type="int", dest="video_width", default="1920", help="Custom width") + self.OptionParser.add_option("-z", "--height", action="store", type="int", dest="video_height", default="1080", help="Custom height") + + def effect(self): + + size = self.options.video_size + width = self.options.video_width + height = self.options.video_height + + if size != "Custom": + p = re.compile('([0-9]*)x([0-9]*)') + m = p.match( size ) + width = int(m.group(1)) + height = int(m.group(2)) + + + root = self.document.getroot() + root.set("id", "SVGRoot") + root.set("width", str(width) + 'px') + root.set("height", str(height) + 'px') + root.set("viewBox", "0 0 " + str(width) + " " + str(height) ) + + namedview = root.find(inkex.addNS('namedview', 'sodipodi')) + if namedview is None: + namedview = inkex.etree.SubElement( root, inkex.addNS('namedview', 'sodipodi') ); + + namedview.set(inkex.addNS('document-units', 'inkscape'), 'px') + + namedview.set(inkex.addNS('cx', 'inkscape'), str(width/2.0) ) + namedview.set(inkex.addNS('cy', 'inkscape'), str(height/2.0) ) + + +c = C() +c.affect() diff --git a/share/extensions/setup_typography_canvas.inx b/share/extensions/setup_typography_canvas.inx index 332a14ade..8e7739b5c 100644 --- a/share/extensions/setup_typography_canvas.inx +++ b/share/extensions/setup_typography_canvas.inx @@ -4,11 +4,11 @@ <id>org.inkscape.typography.setuptypographycanvas</id> <dependency type="executable" location="extensions">inkex.py</dependency> <dependency type="executable" location="extensions">setup_typography_canvas.py</dependency> - <param name="emsize" type="int" _gui-text="Em-size:" min="10" max="2000">1000</param> - <param name="ascender" type="int" _gui-text="Ascender:" min="0" max="2000">750</param> - <param name="caps" type="int" _gui-text="Caps Height:" min="0" max="2000">700</param> - <param name="xheight" type="int" _gui-text="X-Height:" min="0" max="2000">500</param> - <param name="descender" type="int" _gui-text="Descender:" min="0" max="1000">250</param> + <param name="emsize" type="int" _gui-text="Em-size:" min="10" max="2048">1000</param> + <param name="ascender" type="int" _gui-text="Ascender:" min="0" max="2048">750</param> + <param name="caps" type="int" _gui-text="Caps Height:" min="0" max="2048">700</param> + <param name="xheight" type="int" _gui-text="X-Height:" min="0" max="2048">500</param> + <param name="descender" type="int" _gui-text="Descender:" min="0" max="1024">250</param> <effect> <object-type>all</object-type> <effects-menu> diff --git a/share/extensions/setup_typography_canvas.py b/share/extensions/setup_typography_canvas.py index 197aeb77e..a1000f2d1 100755 --- a/share/extensions/setup_typography_canvas.py +++ b/share/extensions/setup_typography_canvas.py @@ -69,6 +69,7 @@ class SetupTypographyCanvas(inkex.Effect): self.svg = self.document.getroot() self.svg.set("width", str(emsize)) self.svg.set("height", str(emsize)) + self.svg.set("viewBox", "0 0 " + str(emsize) + " " + str(emsize) ) baseline = descender # Create guidelines @@ -78,6 +79,12 @@ class SetupTypographyCanvas(inkex.Effect): self.create_horizontal_guideline("xheight", baseline+xheight) self.create_horizontal_guideline("descender", baseline-descender) + namedview = self.svg.find(inkex.addNS('namedview', 'sodipodi')) + namedview.set(inkex.addNS('document-units', 'inkscape'), 'px') + namedview.set(inkex.addNS('cx', 'inkscape'), str(emsize/2.0 )) + namedview.set(inkex.addNS('cy', 'inkscape'), str(emsize/2.0 )) + + if __name__ == '__main__': e = SetupTypographyCanvas() e.affect() |
