''' This module consists of classes specific to HTML5-SVG Elements. In general this module does not include - Elements that are not specific to SVG (eg. ) - Elements that are deprecated ''' from dominate.tags import html_tag from dominate.dom_tag import dom_tag import numbers __license__ = ''' This file is part of Dominate. Dominate is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Dominate is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with Dominate. If not, see . ''' # Tag attributes _ATTR_GLOBAL = set([ 'accesskey', 'class', 'class', 'contenteditable', 'contextmenu', 'dir', 'draggable', 'id', 'item', 'hidden', 'lang', 'itemprop', 'spellcheck', 'style', 'subject', 'tabindex', 'title' ]) # https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/Events#Attributes _ATTR_EVENTS = set([ 'onbegin', 'onend', 'onrepeat', 'onabort', 'onerror', 'onresize', 'onscroll', 'onunload', 'oncopy', 'oncut', 'onpaste', 'oncancel', 'oncanplay', 'oncanplaythrough', 'onchange', 'onclick', 'onclose', 'oncuechange', 'ondblclick', 'ondrag', 'ondragend', 'ondragenter', 'ondragexit', 'ondragleave', 'ondragover', 'ondragstart', 'ondrop', 'ondurationchange', 'onemptied', 'onended', 'onerror', 'onfocus', 'oninput', 'oninvalid', 'onkeydown', 'onkeypress', 'onkeyup', 'onload', 'onloadeddata', 'onloadedmetadata','onloadstart', 'onmousedown', 'onmouseenter', 'onmouseleave', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onmousewheel', 'onpause', 'onplay', 'onplaying', 'onprogress', 'onratechange', 'onreset', 'onresize', 'onscroll', 'onseeked', 'onseeking', 'onselect', 'onshow', 'onstalled', 'onsubmit', 'onsuspend', 'ontimeupdate', 'ontoggle', 'onvolumechange', 'onwaiting' ]) DASHED_ATTRIBUTES = set([ 'accent', 'alignment', 'arabic', 'baseline', 'cap', 'clip', 'color', 'dominant', 'enable', 'fill', 'flood', 'font', 'glyph', 'horiz', 'image', 'letter', 'lighting', 'marker', 'overline', 'paint', 'panose', 'pointer', 'rendering', 'shape', 'stop', 'strikethrough', 'stroke', 'text', 'underline', 'unicode', 'units', 'v', 'vector', 'vert', 'word', 'writing', 'x' ]) # https://developer.mozilla.org/en-US/docs/Web/SVG/Element/svg class svg_tag(html_tag): @staticmethod def clean_attribute(attribute): attribute = html_tag.clean_attribute(attribute) words = attribute.split('_') if words[0] in DASHED_ATTRIBUTES: return attribute.replace('_', '-') return attribute class svg(svg_tag): pass class animate(svg_tag): ''' The animate SVG element is used to animate an attribute or property of an element over time. It's normally inserted inside the element or referenced by the href attribute of the target element. ''' pass class animateMotion(svg_tag): ''' The element causes a referenced element to move along a motion path. ''' pass class animateTransform(svg_tag): ''' The animateTransform element animates a transformation attribute on its target element, thereby allowing animations to control translation, scaling, rotation, and/or skewing. ''' is_single = True class circle(svg_tag): ''' The SVG element is an SVG basic shape, used to draw circles based on a center point and a radius. ''' pass class clipPath(svg_tag): ''' The SVG element defines a clipping path, to be used used by the clip-path property. ''' pass class defs(svg_tag): ''' The element is used to store graphical objects that will be used at a later time. Objects created inside a element are not rendered directly. To display them you have to reference them (with a element for example). ''' pass class desc(svg_tag): ''' The element provides an accessible, long-text description of any SVG container element or graphics element. ''' pass class ellipse(svg_tag): ''' An ellipse element for svg containers ''' pass # (Note, filters are at the bottom of this file) class g(svg_tag): ''' The SVG element is a container used to group other SVG elements. ''' pass class image(svg_tag): ''' The SVG element includes images inside SVG documents. It can display raster image files or other SVG files. ''' pass class line(svg_tag): ''' The element is an SVG basic shape used to create a line connecting two points. ''' pass class linearGradient(svg_tag): ''' The element lets authors define linear gradients that can be applied to fill or stroke of graphical elements. ''' pass class marker(svg_tag): ''' The element defines the graphic that is to be used for drawing arrowheads or polymarkers on a given , , or element. ''' pass class mask(svg_tag): ''' The element defines an alpha mask for compositing the current object into the background. A mask is used/referenced using the mask property. ''' pass class mpath(svg_tag): ''' The sub-element for the element provides the ability to reference an external element as the definition of a motion path. ''' pass class pattern(svg_tag): ''' The element defines a graphics object which can be redrawn at repeated x and y-coordinate intervals ("tiled") to cover an area. ''' pass class polygon(svg_tag): ''' A polygon element for svg containers ''' pass class polyline(svg_tag): ''' A polyline element for svg containers ''' pass class radialGradient(svg_tag): ''' The element lets authors define radial gradients that can be applied to fill or stroke of graphical elements. ''' pass class path(svg_tag): ''' A path element for svg containers ''' pass class rect(svg_tag): ''' A rectangle element for svg containers ''' pass class stop(svg_tag): ''' The SVG element defines a color and its position to use on a gradient. This element is always a child of a or element. ''' pass class switch(svg_tag): ''' The SVG element evaluates any requiredFeatures, requiredExtensions and systemLanguage attributes on its direct child elements in order, and then renders the first child where these attributes evaluate to true. Other direct children will be bypassed and therefore not rendered. If a child element is a container element, like , then its subtree is also processed/rendered or bypassed/not rendered. ''' pass class symbol(svg_tag): ''' The use of symbol elements for graphics that are used multiple times in the same document adds structure and semantics. Documents that are rich in structure may be rendered graphically, as speech, or as Braille, and thus promote accessibility. ''' pass class text(svg_tag): ''' The SVG element draws a graphics element consisting of text. It's possible to apply a gradient, pattern, clipping path, mask, or filter to , like any other SVG graphics element. ''' pass class textPath(svg_tag): ''' To render text along the shape of a , enclose the text in a element that has an href attribute with a reference to the element. ''' pass class title(svg_tag): ''' The element provides an accessible, short-text description of any SVG container element or graphics element. ''' pass class tspan(svg_tag): ''' The SVG <tspan> element define a subtext within a <text> element or another <tspan> element. It allows to adjust the style and/or position of that subtext as needed. ''' pass class use(svg_tag): ''' The <use> element takes nodes from within the SVG document, and duplicates them somewhere else. ''' pass class view(svg_tag): ''' A view is a defined way to view the image, like a zoom level or a detail view. ''' pass # FILTERS class filter(svg_tag): pass class feBlend(svg_tag): pass class feColorMatrix(svg_tag): pass class feComponentTransfer(svg_tag): pass class feComposite(svg_tag): pass class feConvolveMatrix(svg_tag): pass class feDiffuseLighting(svg_tag): pass class feDisplacementMap(svg_tag): pass class feFlood(svg_tag): pass class feGaussianBlur(svg_tag): pass class feImage(svg_tag): pass class feMerge(svg_tag): pass class feMorphology(svg_tag): pass class feOffset(svg_tag): pass class feSpecularLighting(svg_tag): pass class feTile(svg_tag): pass class feTurbulence(svg_tag): pass class feDistantLight(svg_tag): pass class fePointLight(svg_tag): pass class feSpotLight(svg_tag): pass