Konstantin Zakablukovsky 9 years ago
parent
commit
62c017e05a

+ 10 - 0
include/nitro.hrl

@@ -260,7 +260,17 @@
 -record(missing_glyph, {?ELEMENT_BASE(element_missingglyph), d, horiz_adv_x, vert_origin_x, vert_origin_y, vert_adv_y, ?SVG_CORE, ?SVG_PRESENTATION}).
 -record(mpath, {?ELEMENT_BASE(element_mpath), externalResourcesRequired, ?SVG_CORE, ?SVG_XLINK}).
 -record(path, {?ELEMENT_BASE(element_path), d, pathLength, transform, externalResourcesRequired,  ?SVG_CONDITIONAL_PROCESSING, ?SVG_CORE, ?SVG_GRAPHICAL_EVENT, ?SVG_PRESENTATION}).
+-record(pattern, {?ELEMENT_BASE(element_pattern), patternUnits, patternContentUnits, patternTransform, x, y, width, height, preserveAspectRatio, viewBox, externalResourcesRequired, ?SVG_CONDITIONAL_PROCESSING, ?SVG_CORE, ?SVG_PRESENTATION, ?SVG_XLINK}).
+-record(polygon, {?ELEMENT_BASE(element_polygon), points, transform, externalResourcesRequired, ?SVG_CONDITIONAL_PROCESSING, ?SVG_CORE, ?SVG_GRAPHICAL_EVENT, ?SVG_PRESENTATION}).
+-record(polyline, {?ELEMENT_BASE(element_polyline), points, transform, externalResourcesRequired, ?SVG_CONDITIONAL_PROCESSING, ?SVG_CORE, ?SVG_GRAPHICAL_EVENT, ?SVG_PRESENTATION}).
+-record(radialGradient, {?ELEMENT_BASE(element_radialgradient), gradientUnits, gradientTransform, cx, cy, r, fx, fy, spreadMethod, externalResourcesRequired, ?SVG_CORE, ?SVG_PRESENTATION, ?SVG_XLINK}).
 -record(rect, {?ELEMENT_BASE(element_rect), x, y, width, height, rx, ry, transform, externalResourcesRequired, ?SVG_CONDITIONAL_PROCESSING, ?SVG_CORE, ?SVG_GRAPHICAL_EVENT, ?SVG_PRESENTATION}).
+-record(svgscript, {?ELEMENT_BASE(element_svgscript), type, externalResourcesRequired, ?SVG_CORE, ?SVG_XLINK}).
+-record(set, {?ELEMENT_BASE(element_set), to, externalResourcesRequired, ?SVG_ANIMATION_EVENT, ?SVG_ANIMATION_ATTRIBUT_TARGET, ?SVG_ANIMATION_TIMING, ?SVG_CONDITIONAL_PROCESSING, ?SVG_CORE, ?SVG_XLINK}).
+-record(stop, {?ELEMENT_BASE(element_stop), offset, ?SVG_CORE, ?SVG_PRESENTATION}).
+-record(svgstyle, {?ELEMENT_BASE(element_svgstyle), type, media, ?SVG_CORE, ?SVG_XLINK}).
+-record(switch, {?ELEMENT_BASE(element_switch), allowReorderm, transform, externalResourcesRequired, ?SVG_CONDITIONAL_PROCESSING, ?SVG_CORE, ?SVG_GRAPHICAL_EVENT, ?SVG_PRESENTATION}).
+-record(symbol, {?ELEMENT_BASE(element_symbol), preserveAspectRatio, viewBox, externalResourcesRequired, ?SVG_CORE, ?SVG_GRAPHICAL_EVENT, ?SVG_PRESENTATION}).
 -record(text, {?ELEMENT_BASE(element_text), x, y, dx, dy, rotate, textLength, lengthAdjust, transform, externalResourcesRequired, ?SVG_CONDITIONAL_PROCESSING, ?SVG_CORE, ?SVG_GRAPHICAL_EVENT, ?SVG_PRESENTATION}).
 -record(tspan, {?ELEMENT_BASE(element_tspan), x, y, dx, dy, rotate, textLength, lengthAdjust, externalResourcesRequired, ?SVG_CONDITIONAL_PROCESSING, ?SVG_CORE, ?SVG_GRAPHICAL_EVENT, ?SVG_PRESENTATION}).
 -record(xlink, {?ELEMENT_BASE(element_xlink), target, transform, externalResourcesRequired, ?SVG_CONDITIONAL_PROCESSING, ?SVG_CORE, ?SVG_FILTER_PRIMITIVE, ?SVG_GRAPHICAL_EVENT, ?SVG_PRESENTATION, ?SVG_TRANSFERT_FUNCTION, ?SVG_XLINK}).

+ 0 - 1
src/elements/element_animate.erl

@@ -2,7 +2,6 @@
 -author('Konstantin Zakablukovsky').
 -include("nitro.hrl").
 -compile(export_all).
-%% -import(element_svg, [svg_conditional_processing/1, svg_core/1, svg_xlink/1]).
 
 render_element(Record) ->
 	wf_tags:emit_tag(<<"animate">>, nitro:render(Record#animate.body),

+ 116 - 0
src/elements/element_pattern.erl

@@ -0,0 +1,116 @@
+-module(element_pattern).
+-author('Konstantin Zakablukovsky').
+-include("nitro.hrl").
+-compile(export_all).
+
+render_element(Record) ->
+	wf_tags:emit_tag(<<"pattern">>, nitro:render(Record#pattern.body),
+	lists:append([
+		[
+			{<<"id">>, Record#pattern.id},
+			{<<"class">>, Record#pattern.class},
+			{<<"style">>, Record#pattern.style},
+			{<<"patternUnits">>, Record#pattern.patternUnits},
+			{<<"patternContentUnits">>, Record#pattern.patternContentUnits},
+			{<<"patternTransform">>, Record#pattern.patternTransform},
+			{<<"x">>, Record#pattern.x},
+			{<<"y">>, Record#pattern.y},
+			{<<"width">>, Record#pattern.width},
+			{<<"height">>, Record#pattern.height},
+			{<<"preserveAspectRatio">>, Record#pattern.preserveAspectRatio},
+			{<<"viewBox">>, Record#pattern.viewBox},
+			{<<"externalResourcesRequired">>, Record#pattern.externalResourcesRequired}
+		],
+		svg_conditional_processing(Record),
+		svg_core(Record),
+		svg_presentation(Record),
+		svg_xlink(Record),
+		Record#pattern.data_fields,
+		Record#pattern.aria_states
+	])).
+
+
+%% Common SVG attributes
+svg_conditional_processing(Record)-> [
+	{<<"requiredExtensions">>, Record#pattern.requiredExtensions},
+	{<<"requiredFeatures">>, Record#pattern.requiredFeatures},
+	{<<"systemLanguage">>, Record#pattern.systemLanguage}
+].
+
+svg_core(Record)-> [
+	{<<"xml:base">>, Record#pattern.xmlbase},
+	{<<"xml:lang">>, Record#pattern.xmllang},
+	{<<"xml:space">>, Record#pattern.xmlspace}
+].
+
+svg_presentation(Record)-> [
+	{<<"alignment-baseline">>, Record#pattern.alignment_baseline},
+	{<<"baseline-shift">>, Record#pattern.baseline_shift},
+	{<<"clip">>, Record#pattern.clip},
+	{<<"clip-path">>, Record#pattern.clip_path},
+	{<<"clip-rule">>, Record#pattern.clip_rule},
+	{<<"color">>, Record#pattern.color},
+	{<<"color-interpolation">>, Record#pattern.color_interpolation},
+	{<<"color-interpolation-filters">>, Record#pattern.color_interpolation_filters},
+	{<<"color-profile">>, Record#pattern.color_profile},
+	{<<"color-rendering">>, Record#pattern.color_rendering},
+	{<<"cursor">>, Record#pattern.cursor},
+	{<<"direction">>, Record#pattern.direction},
+	{<<"display">>, Record#pattern.display},
+	{<<"dominant-baseline">>, Record#pattern.dominant_baseline},
+	{<<"enable-background">>, Record#pattern.enable_background},
+	{<<"fill">>, Record#pattern.fill},
+	{<<"fill-opacity">>, Record#pattern.fill_opacity},
+	{<<"fill-rule">>, Record#pattern.fill_rule},
+	{<<"filter">>, Record#pattern.filter},
+	{<<"flood-color">>, Record#pattern.flood_color},
+	{<<"flood-opacity">>, Record#pattern.flood_opacity},
+	{<<"font-family">>, Record#pattern.font_family},
+	{<<"font-size">>, Record#pattern.font_size},
+	{<<"font-size-adjust">>, Record#pattern.font_size_adjust},
+	{<<"font-stretch">>, Record#pattern.font_stretch},
+	{<<"font-style">>, Record#pattern.font_style},
+	{<<"font-variant">>, Record#pattern.font_variant},
+	{<<"font-weight">>, Record#pattern.font_weight},
+	{<<"glyph-orientation-horizontal">>, Record#pattern.glyph_orientation_horizontal},
+	{<<"glyph-orientation-vertical">>, Record#pattern.glyph_orientation_vertical},
+	{<<"image-rendering">>, Record#pattern.image_rendering},
+	{<<"kerning">>, Record#pattern.kerning},
+	{<<"letter-spacing">>, Record#pattern.letter_spacing},
+	{<<"lighting-color">>, Record#pattern.lighting_color},
+	{<<"marker-end">>, Record#pattern.marker_end},
+	{<<"marker-mid">>, Record#pattern.marker_mid},
+	{<<"marker-start">>, Record#pattern.marker_start},
+	{<<"mask">>, Record#pattern.mask},
+	{<<"opacity">>, Record#pattern.opacity},
+	{<<"overflow">>, Record#pattern.overflow},
+	{<<"pointer-events">>, Record#pattern.pointer_events},
+	{<<"shape-rendering">>, Record#pattern.shape_rendering},
+	{<<"stop-color">>, Record#pattern.stop_color},
+	{<<"stop-opacity">>, Record#pattern.stop_opacity},
+	{<<"stroke">>, Record#pattern.stroke},
+	{<<"stroke-dasharray">>, Record#pattern.stroke_dasharray},
+	{<<"stroke-dashoffset">>, Record#pattern.stroke_dashoffset},
+	{<<"stroke-linecap">>, Record#pattern.stroke_linecap},
+	{<<"stroke-linejoin">>, Record#pattern.stroke_linejoin},
+	{<<"stroke-miterlimit">>, Record#pattern.stroke_miterlimit},
+	{<<"stroke-opacity">>, Record#pattern.stroke_opacity},
+	{<<"stroke-width">>, Record#pattern.stroke_width},
+	{<<"text-anchor">>, Record#pattern.text_anchor},
+	{<<"text-decoration">>, Record#pattern.text_decoration},
+	{<<"text-rendering">>, Record#pattern.text_rendering},
+	{<<"unicode-bidi">>, Record#pattern.unicode_bidi},
+	{<<"visibility">>, Record#pattern.visibility},
+	{<<"word-spacing">>, Record#pattern.word_spacing},
+	{<<"writing-mode">>, Record#pattern.writing_mode}
+].
+
+svg_xlink(Record)-> [
+	{<<"xlink:href">>, Record#pattern.xlinkhref},
+	{<<"xlink:type">>, Record#pattern.xlinktype},
+	{<<"xlink:role">>, Record#pattern.xlinkrole},
+	{<<"xlink:arcrole">>, Record#pattern.xlinkarcrole},
+	{<<"xlink:title">>, Record#pattern.xlinktitle},
+	{<<"xlink:show">>, Record#pattern.xlinkshow},
+	{<<"xlink:actuate">>, Record#pattern.xlinkactuate}
+].

+ 112 - 0
src/elements/element_polygon.erl

@@ -0,0 +1,112 @@
+-module(element_polygon).
+-author('Konstantin Zakablukovsky').
+-include("nitro.hrl").
+-compile(export_all).
+
+render_element(Record) ->
+	wf_tags:emit_tag(<<"polygon">>, nitro:render(Record#polygon.body),
+	lists:append([
+		[
+			{<<"id">>, Record#polygon.id},
+			{<<"class">>, Record#polygon.class},
+			{<<"style">>, Record#polygon.style},
+			{<<"points">>, Record#polygon.points},
+			{<<"transform">>, Record#polygon.transform},
+			{<<"externalResourcesRequired">>, Record#polygon.externalResourcesRequired}
+		],
+		svg_conditional_processing(Record),
+		svg_core(Record),
+		svg_graphical_event(Record),
+		svg_presentation(Record),
+		Record#polygon.data_fields,
+		Record#polygon.aria_states
+	])).
+
+
+%% Common SVG attributes
+svg_conditional_processing(Record)-> [
+	{<<"requiredExtensions">>, Record#polygon.requiredExtensions},
+	{<<"requiredFeatures">>, Record#polygon.requiredFeatures},
+	{<<"systemLanguage">>, Record#polygon.systemLanguage}
+].
+
+svg_core(Record)-> [
+	{<<"xml:base">>, Record#polygon.xmlbase},
+	{<<"xml:lang">>, Record#polygon.xmllang},
+	{<<"xml:space">>, Record#polygon.xmlspace}
+].
+
+svg_graphical_event(Record)-> [
+	{<<"onactivate">>, Record#polygon.onactivate},
+	{<<"onclick">>, Record#polygon.onclick},
+	{<<"onfocusin">>, Record#polygon.onfocusin},
+	{<<"onfocusout">>, Record#polygon.onfocusout},
+	{<<"onload">>, Record#polygon.onload_graphical},
+	{<<"onmousedown">>, Record#polygon.onmousedown},
+	{<<"onmousemove">>, Record#polygon.onmousemove},
+	{<<"onmouseout">>, Record#polygon.onmouseout},
+	{<<"onmouseover">>, Record#polygon.onmouseover},
+	{<<"onmouseup">>, Record#polygon.onmouseup}
+].
+
+svg_presentation(Record)-> [
+	{<<"alignment-baseline">>, Record#polygon.alignment_baseline},
+	{<<"baseline-shift">>, Record#polygon.baseline_shift},
+	{<<"clip">>, Record#polygon.clip},
+	{<<"clip-path">>, Record#polygon.clip_path},
+	{<<"clip-rule">>, Record#polygon.clip_rule},
+	{<<"color">>, Record#polygon.color},
+	{<<"color-interpolation">>, Record#polygon.color_interpolation},
+	{<<"color-interpolation-filters">>, Record#polygon.color_interpolation_filters},
+	{<<"color-profile">>, Record#polygon.color_profile},
+	{<<"color-rendering">>, Record#polygon.color_rendering},
+	{<<"cursor">>, Record#polygon.cursor},
+	{<<"direction">>, Record#polygon.direction},
+	{<<"display">>, Record#polygon.display},
+	{<<"dominant-baseline">>, Record#polygon.dominant_baseline},
+	{<<"enable-background">>, Record#polygon.enable_background},
+	{<<"fill">>, Record#polygon.fill},
+	{<<"fill-opacity">>, Record#polygon.fill_opacity},
+	{<<"fill-rule">>, Record#polygon.fill_rule},
+	{<<"filter">>, Record#polygon.filter},
+	{<<"flood-color">>, Record#polygon.flood_color},
+	{<<"flood-opacity">>, Record#polygon.flood_opacity},
+	{<<"font-family">>, Record#polygon.font_family},
+	{<<"font-size">>, Record#polygon.font_size},
+	{<<"font-size-adjust">>, Record#polygon.font_size_adjust},
+	{<<"font-stretch">>, Record#polygon.font_stretch},
+	{<<"font-style">>, Record#polygon.font_style},
+	{<<"font-variant">>, Record#polygon.font_variant},
+	{<<"font-weight">>, Record#polygon.font_weight},
+	{<<"glyph-orientation-horizontal">>, Record#polygon.glyph_orientation_horizontal},
+	{<<"glyph-orientation-vertical">>, Record#polygon.glyph_orientation_vertical},
+	{<<"image-rendering">>, Record#polygon.image_rendering},
+	{<<"kerning">>, Record#polygon.kerning},
+	{<<"letter-spacing">>, Record#polygon.letter_spacing},
+	{<<"lighting-color">>, Record#polygon.lighting_color},
+	{<<"marker-end">>, Record#polygon.marker_end},
+	{<<"marker-mid">>, Record#polygon.marker_mid},
+	{<<"marker-start">>, Record#polygon.marker_start},
+	{<<"mask">>, Record#polygon.mask},
+	{<<"opacity">>, Record#polygon.opacity},
+	{<<"overflow">>, Record#polygon.overflow},
+	{<<"pointer-events">>, Record#polygon.pointer_events},
+	{<<"shape-rendering">>, Record#polygon.shape_rendering},
+	{<<"stop-color">>, Record#polygon.stop_color},
+	{<<"stop-opacity">>, Record#polygon.stop_opacity},
+	{<<"stroke">>, Record#polygon.stroke},
+	{<<"stroke-dasharray">>, Record#polygon.stroke_dasharray},
+	{<<"stroke-dashoffset">>, Record#polygon.stroke_dashoffset},
+	{<<"stroke-linecap">>, Record#polygon.stroke_linecap},
+	{<<"stroke-linejoin">>, Record#polygon.stroke_linejoin},
+	{<<"stroke-miterlimit">>, Record#polygon.stroke_miterlimit},
+	{<<"stroke-opacity">>, Record#polygon.stroke_opacity},
+	{<<"stroke-width">>, Record#polygon.stroke_width},
+	{<<"text-anchor">>, Record#polygon.text_anchor},
+	{<<"text-decoration">>, Record#polygon.text_decoration},
+	{<<"text-rendering">>, Record#polygon.text_rendering},
+	{<<"unicode-bidi">>, Record#polygon.unicode_bidi},
+	{<<"visibility">>, Record#polygon.visibility},
+	{<<"word-spacing">>, Record#polygon.word_spacing},
+	{<<"writing-mode">>, Record#polygon.writing_mode}
+].

+ 112 - 0
src/elements/element_polyline.erl

@@ -0,0 +1,112 @@
+-module(element_polyline).
+-author('Konstantin Zakablukovsky').
+-include("nitro.hrl").
+-compile(export_all).
+
+render_element(Record) ->
+	wf_tags:emit_tag(<<"polyline">>, nitro:render(Record#polyline.body),
+	lists:append([
+		[
+			{<<"id">>, Record#polyline.id},
+			{<<"class">>, Record#polyline.class},
+			{<<"style">>, Record#polyline.style},
+			{<<"points">>, Record#polyline.points},
+			{<<"transform">>, Record#polyline.transform},
+			{<<"externalResourcesRequired">>, Record#polyline.externalResourcesRequired}
+		],
+		svg_conditional_processing(Record),
+		svg_core(Record),
+		svg_graphical_event(Record),
+		svg_presentation(Record),
+		Record#polyline.data_fields,
+		Record#polyline.aria_states
+	])).
+
+
+%% Common SVG attributes
+svg_conditional_processing(Record)-> [
+	{<<"requiredExtensions">>, Record#polyline.requiredExtensions},
+	{<<"requiredFeatures">>, Record#polyline.requiredFeatures},
+	{<<"systemLanguage">>, Record#polyline.systemLanguage}
+].
+
+svg_core(Record)-> [
+	{<<"xml:base">>, Record#polyline.xmlbase},
+	{<<"xml:lang">>, Record#polyline.xmllang},
+	{<<"xml:space">>, Record#polyline.xmlspace}
+].
+
+svg_graphical_event(Record)-> [
+	{<<"onactivate">>, Record#polyline.onactivate},
+	{<<"onclick">>, Record#polyline.onclick},
+	{<<"onfocusin">>, Record#polyline.onfocusin},
+	{<<"onfocusout">>, Record#polyline.onfocusout},
+	{<<"onload">>, Record#polyline.onload_graphical},
+	{<<"onmousedown">>, Record#polyline.onmousedown},
+	{<<"onmousemove">>, Record#polyline.onmousemove},
+	{<<"onmouseout">>, Record#polyline.onmouseout},
+	{<<"onmouseover">>, Record#polyline.onmouseover},
+	{<<"onmouseup">>, Record#polyline.onmouseup}
+].
+
+svg_presentation(Record)-> [
+	{<<"alignment-baseline">>, Record#polyline.alignment_baseline},
+	{<<"baseline-shift">>, Record#polyline.baseline_shift},
+	{<<"clip">>, Record#polyline.clip},
+	{<<"clip-path">>, Record#polyline.clip_path},
+	{<<"clip-rule">>, Record#polyline.clip_rule},
+	{<<"color">>, Record#polyline.color},
+	{<<"color-interpolation">>, Record#polyline.color_interpolation},
+	{<<"color-interpolation-filters">>, Record#polyline.color_interpolation_filters},
+	{<<"color-profile">>, Record#polyline.color_profile},
+	{<<"color-rendering">>, Record#polyline.color_rendering},
+	{<<"cursor">>, Record#polyline.cursor},
+	{<<"direction">>, Record#polyline.direction},
+	{<<"display">>, Record#polyline.display},
+	{<<"dominant-baseline">>, Record#polyline.dominant_baseline},
+	{<<"enable-background">>, Record#polyline.enable_background},
+	{<<"fill">>, Record#polyline.fill},
+	{<<"fill-opacity">>, Record#polyline.fill_opacity},
+	{<<"fill-rule">>, Record#polyline.fill_rule},
+	{<<"filter">>, Record#polyline.filter},
+	{<<"flood-color">>, Record#polyline.flood_color},
+	{<<"flood-opacity">>, Record#polyline.flood_opacity},
+	{<<"font-family">>, Record#polyline.font_family},
+	{<<"font-size">>, Record#polyline.font_size},
+	{<<"font-size-adjust">>, Record#polyline.font_size_adjust},
+	{<<"font-stretch">>, Record#polyline.font_stretch},
+	{<<"font-style">>, Record#polyline.font_style},
+	{<<"font-variant">>, Record#polyline.font_variant},
+	{<<"font-weight">>, Record#polyline.font_weight},
+	{<<"glyph-orientation-horizontal">>, Record#polyline.glyph_orientation_horizontal},
+	{<<"glyph-orientation-vertical">>, Record#polyline.glyph_orientation_vertical},
+	{<<"image-rendering">>, Record#polyline.image_rendering},
+	{<<"kerning">>, Record#polyline.kerning},
+	{<<"letter-spacing">>, Record#polyline.letter_spacing},
+	{<<"lighting-color">>, Record#polyline.lighting_color},
+	{<<"marker-end">>, Record#polyline.marker_end},
+	{<<"marker-mid">>, Record#polyline.marker_mid},
+	{<<"marker-start">>, Record#polyline.marker_start},
+	{<<"mask">>, Record#polyline.mask},
+	{<<"opacity">>, Record#polyline.opacity},
+	{<<"overflow">>, Record#polyline.overflow},
+	{<<"pointer-events">>, Record#polyline.pointer_events},
+	{<<"shape-rendering">>, Record#polyline.shape_rendering},
+	{<<"stop-color">>, Record#polyline.stop_color},
+	{<<"stop-opacity">>, Record#polyline.stop_opacity},
+	{<<"stroke">>, Record#polyline.stroke},
+	{<<"stroke-dasharray">>, Record#polyline.stroke_dasharray},
+	{<<"stroke-dashoffset">>, Record#polyline.stroke_dashoffset},
+	{<<"stroke-linecap">>, Record#polyline.stroke_linecap},
+	{<<"stroke-linejoin">>, Record#polyline.stroke_linejoin},
+	{<<"stroke-miterlimit">>, Record#polyline.stroke_miterlimit},
+	{<<"stroke-opacity">>, Record#polyline.stroke_opacity},
+	{<<"stroke-width">>, Record#polyline.stroke_width},
+	{<<"text-anchor">>, Record#polyline.text_anchor},
+	{<<"text-decoration">>, Record#polyline.text_decoration},
+	{<<"text-rendering">>, Record#polyline.text_rendering},
+	{<<"unicode-bidi">>, Record#polyline.unicode_bidi},
+	{<<"visibility">>, Record#polyline.visibility},
+	{<<"word-spacing">>, Record#polyline.word_spacing},
+	{<<"writing-mode">>, Record#polyline.writing_mode}
+].

+ 108 - 0
src/elements/element_radialgradient.erl

@@ -0,0 +1,108 @@
+-module(element_radialgradient).
+-author('Konstantin Zakablukovsky').
+-include("nitro.hrl").
+-compile(export_all).
+
+render_element(Record) ->
+	wf_tags:emit_tag(<<"radialGradient">>, nitro:render(Record#radialGradient.body),
+	lists:append([
+		[
+			{<<"id">>, Record#radialGradient.id},
+			{<<"class">>, Record#radialGradient.class},
+			{<<"style">>, Record#radialGradient.style},
+			{<<"gradientUnits">>, Record#radialGradient.gradientUnits},
+			{<<"gradientTransform">>, Record#radialGradient.gradientTransform},
+			{<<"cx">>, Record#radialGradient.cx},
+			{<<"cy">>, Record#radialGradient.cy},
+			{<<"r">>, Record#radialGradient.r},
+			{<<"fx">>, Record#radialGradient.fx},
+			{<<"fy">>, Record#radialGradient.fy},
+			{<<"spreadMethod">>, Record#radialGradient.spreadMethod},
+			{<<"externalResourcesRequired">>, Record#radialGradient.externalResourcesRequired}
+		],
+		svg_core(Record),
+		svg_presentation(Record),
+		svg_xlink(Record),
+		Record#radialGradient.data_fields,
+		Record#radialGradient.aria_states
+	])).
+
+
+%% Common SVG attributes
+svg_core(Record)-> [
+	{<<"xml:base">>, Record#radialGradient.xmlbase},
+	{<<"xml:lang">>, Record#radialGradient.xmllang},
+	{<<"xml:space">>, Record#radialGradient.xmlspace}
+].
+
+svg_presentation(Record)-> [
+	{<<"alignment-baseline">>, Record#radialGradient.alignment_baseline},
+	{<<"baseline-shift">>, Record#radialGradient.baseline_shift},
+	{<<"clip">>, Record#radialGradient.clip},
+	{<<"clip-path">>, Record#radialGradient.clip_path},
+	{<<"clip-rule">>, Record#radialGradient.clip_rule},
+	{<<"color">>, Record#radialGradient.color},
+	{<<"color-interpolation">>, Record#radialGradient.color_interpolation},
+	{<<"color-interpolation-filters">>, Record#radialGradient.color_interpolation_filters},
+	{<<"color-profile">>, Record#radialGradient.color_profile},
+	{<<"color-rendering">>, Record#radialGradient.color_rendering},
+	{<<"cursor">>, Record#radialGradient.cursor},
+	{<<"direction">>, Record#radialGradient.direction},
+	{<<"display">>, Record#radialGradient.display},
+	{<<"dominant-baseline">>, Record#radialGradient.dominant_baseline},
+	{<<"enable-background">>, Record#radialGradient.enable_background},
+	{<<"fill">>, Record#radialGradient.fill},
+	{<<"fill-opacity">>, Record#radialGradient.fill_opacity},
+	{<<"fill-rule">>, Record#radialGradient.fill_rule},
+	{<<"filter">>, Record#radialGradient.filter},
+	{<<"flood-color">>, Record#radialGradient.flood_color},
+	{<<"flood-opacity">>, Record#radialGradient.flood_opacity},
+	{<<"font-family">>, Record#radialGradient.font_family},
+	{<<"font-size">>, Record#radialGradient.font_size},
+	{<<"font-size-adjust">>, Record#radialGradient.font_size_adjust},
+	{<<"font-stretch">>, Record#radialGradient.font_stretch},
+	{<<"font-style">>, Record#radialGradient.font_style},
+	{<<"font-variant">>, Record#radialGradient.font_variant},
+	{<<"font-weight">>, Record#radialGradient.font_weight},
+	{<<"glyph-orientation-horizontal">>, Record#radialGradient.glyph_orientation_horizontal},
+	{<<"glyph-orientation-vertical">>, Record#radialGradient.glyph_orientation_vertical},
+	{<<"image-rendering">>, Record#radialGradient.image_rendering},
+	{<<"kerning">>, Record#radialGradient.kerning},
+	{<<"letter-spacing">>, Record#radialGradient.letter_spacing},
+	{<<"lighting-color">>, Record#radialGradient.lighting_color},
+	{<<"marker-end">>, Record#radialGradient.marker_end},
+	{<<"marker-mid">>, Record#radialGradient.marker_mid},
+	{<<"marker-start">>, Record#radialGradient.marker_start},
+	{<<"mask">>, Record#radialGradient.mask},
+	{<<"opacity">>, Record#radialGradient.opacity},
+	{<<"overflow">>, Record#radialGradient.overflow},
+	{<<"pointer-events">>, Record#radialGradient.pointer_events},
+	{<<"shape-rendering">>, Record#radialGradient.shape_rendering},
+	{<<"stop-color">>, Record#radialGradient.stop_color},
+	{<<"stop-opacity">>, Record#radialGradient.stop_opacity},
+	{<<"stroke">>, Record#radialGradient.stroke},
+	{<<"stroke-dasharray">>, Record#radialGradient.stroke_dasharray},
+	{<<"stroke-dashoffset">>, Record#radialGradient.stroke_dashoffset},
+	{<<"stroke-linecap">>, Record#radialGradient.stroke_linecap},
+	{<<"stroke-linejoin">>, Record#radialGradient.stroke_linejoin},
+	{<<"stroke-miterlimit">>, Record#radialGradient.stroke_miterlimit},
+	{<<"stroke-opacity">>, Record#radialGradient.stroke_opacity},
+	{<<"stroke-width">>, Record#radialGradient.stroke_width},
+	{<<"text-anchor">>, Record#radialGradient.text_anchor},
+	{<<"text-decoration">>, Record#radialGradient.text_decoration},
+	{<<"text-rendering">>, Record#radialGradient.text_rendering},
+	{<<"unicode-bidi">>, Record#radialGradient.unicode_bidi},
+	{<<"visibility">>, Record#radialGradient.visibility},
+	{<<"word-spacing">>, Record#radialGradient.word_spacing},
+	{<<"writing-mode">>, Record#radialGradient.writing_mode}
+].
+
+svg_xlink(Record)-> [
+	{<<"xlink:href">>, Record#radialGradient.xlinkhref},
+	{<<"xlink:type">>, Record#radialGradient.xlinktype},
+	{<<"xlink:role">>, Record#radialGradient.xlinkrole},
+	{<<"xlink:arcrole">>, Record#radialGradient.xlinkarcrole},
+	{<<"xlink:title">>, Record#radialGradient.xlinktitle},
+	{<<"xlink:show">>, Record#radialGradient.xlinkshow},
+	{<<"xlink:actuate">>, Record#radialGradient.xlinkactuate}
+].

+ 71 - 0
src/elements/element_set.erl

@@ -0,0 +1,71 @@
+-module(element_set).
+-author('Konstantin Zakablukovsky').
+-include("nitro.hrl").
+-compile(export_all).
+
+render_element(Record) ->
+	wf_tags:emit_tag(<<"set">>, nitro:render(Record#set.body),
+	lists:append([
+		[
+			{<<"id">>, Record#set.id},
+			{<<"class">>, Record#set.class},
+			{<<"style">>, Record#set.style},
+			{<<"to">>, Record#set.to},
+			{<<"externalResourcesRequired">>, Record#set.externalResourcesRequired}
+		],
+		svg_animation_event(Record),
+		svg_animation_attribut_target(Record),
+		svg_animation_timing(Record),
+		svg_conditional_processing(Record),
+		svg_core(Record),
+		svg_xlink(Record),
+		Record#set.data_fields,
+		Record#set.aria_states
+	])).
+
+svg_conditional_processing(Record)-> [
+	{<<"requiredExtensions">>, Record#set.requiredExtensions},
+	{<<"requiredFeatures">>, Record#set.requiredFeatures},
+	{<<"systemLanguage">>, Record#set.systemLanguage}
+].
+
+svg_core(Record)-> [
+	{<<"xml:base">>, Record#set.xmlbase},
+	{<<"xml:lang">>, Record#set.xmllang},
+	{<<"xml:space">>, Record#set.xmlspace}
+].
+
+svg_xlink(Record)-> [
+	{<<"xlink:href">>, Record#set.xlinkhref},
+	{<<"xlink:type">>, Record#set.xlinktype},
+	{<<"xlink:role">>, Record#set.xlinkrole},
+	{<<"xlink:arcrole">>, Record#set.xlinkarcrole},
+	{<<"xlink:title">>, Record#set.xlinktitle},
+	{<<"xlink:show">>, Record#set.xlinkshow},
+	{<<"xlink:actuate">>, Record#set.xlinkactuate}
+].
+
+% Common SVG animate attributes
+svg_animation_event(Record) -> [
+	{<<"onbegin">>, Record#set.onbegin},
+	{<<"onend">>, Record#set.onend},
+	{<<"onload">>, Record#set.onload_animation},
+	{<<"onrepeat">>, Record#set.onrepeat}
+].
+
+svg_animation_attribut_target(Record) -> [
+	{<<"attributeType">>, Record#set.attributeType},
+	{<<"attributeName">>, Record#set.attributeName}
+].
+
+svg_animation_timing(Record) -> [
+	{<<"begin">>, Record#set.svgbegin},
+	{<<"dur">>, Record#set.dur},
+	{<<"end">>, Record#set.svgend},
+	{<<"min">>, Record#set.min},
+	{<<"max">>, Record#set.max},
+	{<<"restart">>, Record#set.restart},
+	{<<"repeatCount">>, Record#set.repeatCount},
+	{<<"repeatDur">>, Record#set.repeatDur},
+	{<<"fill">>, Record#set.fill}
+].

+ 89 - 0
src/elements/element_stop.erl

@@ -0,0 +1,89 @@
+-module(element_stop).
+-author('Konstantin Zakablukovsky').
+-include("nitro.hrl").
+-compile(export_all).
+
+render_element(Record) ->
+	wf_tags:emit_tag(<<"stop">>, nitro:render(Record#stop.body),
+	lists:append([
+		[
+			{<<"id">>, Record#stop.id},
+			{<<"class">>, Record#stop.class},
+			{<<"style">>, Record#stop.style},
+			{<<"offset">>, Record#stop.offset}
+		],
+		svg_core(Record),
+		svg_presentation(Record),
+		Record#stop.data_fields,
+		Record#stop.aria_states
+	])).
+
+
+%% Common SVG attributes
+svg_core(Record)-> [
+	{<<"xml:base">>, Record#stop.xmlbase},
+	{<<"xml:lang">>, Record#stop.xmllang},
+	{<<"xml:space">>, Record#stop.xmlspace}
+].
+
+svg_presentation(Record)-> [
+	{<<"alignment-baseline">>, Record#stop.alignment_baseline},
+	{<<"baseline-shift">>, Record#stop.baseline_shift},
+	{<<"clip">>, Record#stop.clip},
+	{<<"clip-path">>, Record#stop.clip_path},
+	{<<"clip-rule">>, Record#stop.clip_rule},
+	{<<"color">>, Record#stop.color},
+	{<<"color-interpolation">>, Record#stop.color_interpolation},
+	{<<"color-interpolation-filters">>, Record#stop.color_interpolation_filters},
+	{<<"color-profile">>, Record#stop.color_profile},
+	{<<"color-rendering">>, Record#stop.color_rendering},
+	{<<"cursor">>, Record#stop.cursor},
+	{<<"direction">>, Record#stop.direction},
+	{<<"display">>, Record#stop.display},
+	{<<"dominant-baseline">>, Record#stop.dominant_baseline},
+	{<<"enable-background">>, Record#stop.enable_background},
+	{<<"fill">>, Record#stop.fill},
+	{<<"fill-opacity">>, Record#stop.fill_opacity},
+	{<<"fill-rule">>, Record#stop.fill_rule},
+	{<<"filter">>, Record#stop.filter},
+	{<<"flood-color">>, Record#stop.flood_color},
+	{<<"flood-opacity">>, Record#stop.flood_opacity},
+	{<<"font-family">>, Record#stop.font_family},
+	{<<"font-size">>, Record#stop.font_size},
+	{<<"font-size-adjust">>, Record#stop.font_size_adjust},
+	{<<"font-stretch">>, Record#stop.font_stretch},
+	{<<"font-style">>, Record#stop.font_style},
+	{<<"font-variant">>, Record#stop.font_variant},
+	{<<"font-weight">>, Record#stop.font_weight},
+	{<<"glyph-orientation-horizontal">>, Record#stop.glyph_orientation_horizontal},
+	{<<"glyph-orientation-vertical">>, Record#stop.glyph_orientation_vertical},
+	{<<"image-rendering">>, Record#stop.image_rendering},
+	{<<"kerning">>, Record#stop.kerning},
+	{<<"letter-spacing">>, Record#stop.letter_spacing},
+	{<<"lighting-color">>, Record#stop.lighting_color},
+	{<<"marker-end">>, Record#stop.marker_end},
+	{<<"marker-mid">>, Record#stop.marker_mid},
+	{<<"marker-start">>, Record#stop.marker_start},
+	{<<"mask">>, Record#stop.mask},
+	{<<"opacity">>, Record#stop.opacity},
+	{<<"overflow">>, Record#stop.overflow},
+	{<<"pointer-events">>, Record#stop.pointer_events},
+	{<<"shape-rendering">>, Record#stop.shape_rendering},
+	{<<"stop-color">>, Record#stop.stop_color},
+	{<<"stop-opacity">>, Record#stop.stop_opacity},
+	{<<"stroke">>, Record#stop.stroke},
+	{<<"stroke-dasharray">>, Record#stop.stroke_dasharray},
+	{<<"stroke-dashoffset">>, Record#stop.stroke_dashoffset},
+	{<<"stroke-linecap">>, Record#stop.stroke_linecap},
+	{<<"stroke-linejoin">>, Record#stop.stroke_linejoin},
+	{<<"stroke-miterlimit">>, Record#stop.stroke_miterlimit},
+	{<<"stroke-opacity">>, Record#stop.stroke_opacity},
+	{<<"stroke-width">>, Record#stop.stroke_width},
+	{<<"text-anchor">>, Record#stop.text_anchor},
+	{<<"text-decoration">>, Record#stop.text_decoration},
+	{<<"text-rendering">>, Record#stop.text_rendering},
+	{<<"unicode-bidi">>, Record#stop.unicode_bidi},
+	{<<"visibility">>, Record#stop.visibility},
+	{<<"word-spacing">>, Record#stop.word_spacing},
+	{<<"writing-mode">>, Record#stop.writing_mode}
+].

+ 38 - 0
src/elements/element_svgscript.erl

@@ -0,0 +1,38 @@
+-module(element_svgscript).
+-author('Konstantin Zakablukovsky').
+-include("nitro.hrl").
+-compile(export_all).
+
+render_element(Record) ->
+	wf_tags:emit_tag(<<"svgscript">>, nitro:render(Record#svgscript.body),
+	lists:append([
+		[
+			{<<"id">>, Record#svgscript.id},
+			{<<"class">>, Record#svgscript.class},
+			{<<"style">>, Record#svgscript.style},
+			{<<"type">>, Record#svgscript.type},
+			{<<"externalResourcesRequired">>, Record#svgscript.externalResourcesRequired}
+		],
+		svgscript_core(Record),
+		svgscript_xlink(Record),
+		Record#svgscript.data_fields,
+		Record#svgscript.aria_states
+	])).
+
+
+%% Common SVG attributes
+svgscript_core(Record)-> [
+	{<<"xml:base">>, Record#svgscript.xmlbase},
+	{<<"xml:lang">>, Record#svgscript.xmllang},
+	{<<"xml:space">>, Record#svgscript.xmlspace}
+].
+
+svgscript_xlink(Record)-> [
+	{<<"xlink:href">>, Record#svgscript.xlinkhref},
+	{<<"xlink:type">>, Record#svgscript.xlinktype},
+	{<<"xlink:role">>, Record#svgscript.xlinkrole},
+	{<<"xlink:arcrole">>, Record#svgscript.xlinkarcrole},
+	{<<"xlink:title">>, Record#svgscript.xlinktitle},
+	{<<"xlink:show">>, Record#svgscript.xlinkshow},
+	{<<"xlink:actuate">>, Record#svgscript.xlinkactuate}
+].

+ 39 - 0
src/elements/element_svgstyle.erl

@@ -0,0 +1,39 @@
+-module(element_svgstyle).
+-author('Konstantin Zakablukovsky').
+-include("nitro.hrl").
+-compile(export_all).
+
+render_element(Record) ->
+	wf_tags:emit_tag(<<"svgstyle">>, nitro:render(Record#svgstyle.body),
+	lists:append([
+		[
+			{<<"id">>, Record#svgstyle.id},
+			{<<"class">>, Record#svgstyle.class},
+			{<<"style">>, Record#svgstyle.style},
+			{<<"type">>, Record#svgstyle.type},
+			{<<"media">>, Record#svgstyle.media},
+			{<<"title">>, Record#svgstyle.title}
+		],
+		svgstyle_core(Record),
+		svgstyle_xlink(Record),
+		Record#svgstyle.data_fields,
+		Record#svgstyle.aria_states
+	])).
+
+
+%% Common SVG attributes
+svgstyle_core(Record)-> [
+	{<<"xml:base">>, Record#svgstyle.xmlbase},
+	{<<"xml:lang">>, Record#svgstyle.xmllang},
+	{<<"xml:space">>, Record#svgstyle.xmlspace}
+].
+
+svgstyle_xlink(Record)-> [
+	{<<"xlink:href">>, Record#svgstyle.xlinkhref},
+	{<<"xlink:type">>, Record#svgstyle.xlinktype},
+	{<<"xlink:role">>, Record#svgstyle.xlinkrole},
+	{<<"xlink:arcrole">>, Record#svgstyle.xlinkarcrole},
+	{<<"xlink:title">>, Record#svgstyle.xlinktitle},
+	{<<"xlink:show">>, Record#svgstyle.xlinkshow},
+	{<<"xlink:actuate">>, Record#svgstyle.xlinkactuate}
+].

+ 112 - 0
src/elements/element_switch.erl

@@ -0,0 +1,112 @@
+-module(element_switch).
+-author('Konstantin Zakablukovsky').
+-include("nitro.hrl").
+-compile(export_all).
+
+render_element(Record) ->
+	wf_tags:emit_tag(<<"switch">>, nitro:render(Record#switch.body),
+	lists:append([
+		[
+			{<<"id">>, Record#switch.id},
+			{<<"class">>, Record#switch.class},
+			{<<"style">>, Record#switch.style},
+			{<<"allowReorderm">>, Record#switch.allowReorderm},
+			{<<"transform">>, Record#switch.transform},
+			{<<"externalResourcesRequired">>, Record#switch.externalResourcesRequired}
+		],
+		svg_conditional_processing(Record),
+		svg_core(Record),
+		svg_graphical_event(Record),
+		svg_presentation(Record),
+		Record#switch.data_fields,
+		Record#switch.aria_states
+	])).
+
+
+%% Common SVG attributes
+svg_conditional_processing(Record)-> [
+	{<<"requiredExtensions">>, Record#switch.requiredExtensions},
+	{<<"requiredFeatures">>, Record#switch.requiredFeatures},
+	{<<"systemLanguage">>, Record#switch.systemLanguage}
+].
+
+svg_core(Record)-> [
+	{<<"xml:base">>, Record#switch.xmlbase},
+	{<<"xml:lang">>, Record#switch.xmllang},
+	{<<"xml:space">>, Record#switch.xmlspace}
+].
+
+svg_graphical_event(Record)-> [
+	{<<"onactivate">>, Record#switch.onactivate},
+	{<<"onclick">>, Record#switch.onclick},
+	{<<"onfocusin">>, Record#switch.onfocusin},
+	{<<"onfocusout">>, Record#switch.onfocusout},
+	{<<"onload">>, Record#switch.onload_graphical},
+	{<<"onmousedown">>, Record#switch.onmousedown},
+	{<<"onmousemove">>, Record#switch.onmousemove},
+	{<<"onmouseout">>, Record#switch.onmouseout},
+	{<<"onmouseover">>, Record#switch.onmouseover},
+	{<<"onmouseup">>, Record#switch.onmouseup}
+].
+
+svg_presentation(Record)-> [
+	{<<"alignment-baseline">>, Record#switch.alignment_baseline},
+	{<<"baseline-shift">>, Record#switch.baseline_shift},
+	{<<"clip">>, Record#switch.clip},
+	{<<"clip-path">>, Record#switch.clip_path},
+	{<<"clip-rule">>, Record#switch.clip_rule},
+	{<<"color">>, Record#switch.color},
+	{<<"color-interpolation">>, Record#switch.color_interpolation},
+	{<<"color-interpolation-filters">>, Record#switch.color_interpolation_filters},
+	{<<"color-profile">>, Record#switch.color_profile},
+	{<<"color-rendering">>, Record#switch.color_rendering},
+	{<<"cursor">>, Record#switch.cursor},
+	{<<"direction">>, Record#switch.direction},
+	{<<"display">>, Record#switch.display},
+	{<<"dominant-baseline">>, Record#switch.dominant_baseline},
+	{<<"enable-background">>, Record#switch.enable_background},
+	{<<"fill">>, Record#switch.fill},
+	{<<"fill-opacity">>, Record#switch.fill_opacity},
+	{<<"fill-rule">>, Record#switch.fill_rule},
+	{<<"filter">>, Record#switch.filter},
+	{<<"flood-color">>, Record#switch.flood_color},
+	{<<"flood-opacity">>, Record#switch.flood_opacity},
+	{<<"font-family">>, Record#switch.font_family},
+	{<<"font-size">>, Record#switch.font_size},
+	{<<"font-size-adjust">>, Record#switch.font_size_adjust},
+	{<<"font-stretch">>, Record#switch.font_stretch},
+	{<<"font-style">>, Record#switch.font_style},
+	{<<"font-variant">>, Record#switch.font_variant},
+	{<<"font-weight">>, Record#switch.font_weight},
+	{<<"glyph-orientation-horizontal">>, Record#switch.glyph_orientation_horizontal},
+	{<<"glyph-orientation-vertical">>, Record#switch.glyph_orientation_vertical},
+	{<<"image-rendering">>, Record#switch.image_rendering},
+	{<<"kerning">>, Record#switch.kerning},
+	{<<"letter-spacing">>, Record#switch.letter_spacing},
+	{<<"lighting-color">>, Record#switch.lighting_color},
+	{<<"marker-end">>, Record#switch.marker_end},
+	{<<"marker-mid">>, Record#switch.marker_mid},
+	{<<"marker-start">>, Record#switch.marker_start},
+	{<<"mask">>, Record#switch.mask},
+	{<<"opacity">>, Record#switch.opacity},
+	{<<"overflow">>, Record#switch.overflow},
+	{<<"pointer-events">>, Record#switch.pointer_events},
+	{<<"shape-rendering">>, Record#switch.shape_rendering},
+	{<<"stop-color">>, Record#switch.stop_color},
+	{<<"stop-opacity">>, Record#switch.stop_opacity},
+	{<<"stroke">>, Record#switch.stroke},
+	{<<"stroke-dasharray">>, Record#switch.stroke_dasharray},
+	{<<"stroke-dashoffset">>, Record#switch.stroke_dashoffset},
+	{<<"stroke-linecap">>, Record#switch.stroke_linecap},
+	{<<"stroke-linejoin">>, Record#switch.stroke_linejoin},
+	{<<"stroke-miterlimit">>, Record#switch.stroke_miterlimit},
+	{<<"stroke-opacity">>, Record#switch.stroke_opacity},
+	{<<"stroke-width">>, Record#switch.stroke_width},
+	{<<"text-anchor">>, Record#switch.text_anchor},
+	{<<"text-decoration">>, Record#switch.text_decoration},
+	{<<"text-rendering">>, Record#switch.text_rendering},
+	{<<"unicode-bidi">>, Record#switch.unicode_bidi},
+	{<<"visibility">>, Record#switch.visibility},
+	{<<"word-spacing">>, Record#switch.word_spacing},
+	{<<"writing-mode">>, Record#switch.writing_mode}
+].

+ 105 - 0
src/elements/element_symbol.erl

@@ -0,0 +1,105 @@
+-module(element_symbol).
+-author('Konstantin Zakablukovsky').
+-include("nitro.hrl").
+-compile(export_all).
+
+render_element(Record) ->
+	wf_tags:emit_tag(<<"symbol">>, nitro:render(Record#symbol.body),
+	lists:append([
+		[
+			{<<"id">>, Record#symbol.id},
+			{<<"class">>, Record#symbol.class},
+			{<<"style">>, Record#symbol.style},
+			{<<"preserveAspectRatio">>, Record#symbol.preserveAspectRatio},
+			{<<"viewBox">>, Record#symbol.viewBox},
+			{<<"externalResourcesRequired">>, Record#symbol.externalResourcesRequired}
+		],
+		svg_core(Record),
+		svg_graphical_event(Record),
+		svg_presentation(Record),
+		Record#symbol.data_fields,
+		Record#symbol.aria_states
+	])).
+
+
+%% Common SVG attributes
+svg_core(Record)-> [
+	{<<"xml:base">>, Record#symbol.xmlbase},
+	{<<"xml:lang">>, Record#symbol.xmllang},
+	{<<"xml:space">>, Record#symbol.xmlspace}
+].
+
+svg_graphical_event(Record)-> [
+	{<<"onactivate">>, Record#symbol.onactivate},
+	{<<"onclick">>, Record#symbol.onclick},
+	{<<"onfocusin">>, Record#symbol.onfocusin},
+	{<<"onfocusout">>, Record#symbol.onfocusout},
+	{<<"onload">>, Record#symbol.onload_graphical},
+	{<<"onmousedown">>, Record#symbol.onmousedown},
+	{<<"onmousemove">>, Record#symbol.onmousemove},
+	{<<"onmouseout">>, Record#symbol.onmouseout},
+	{<<"onmouseover">>, Record#symbol.onmouseover},
+	{<<"onmouseup">>, Record#symbol.onmouseup}
+].
+
+svg_presentation(Record)-> [
+	{<<"alignment-baseline">>, Record#symbol.alignment_baseline},
+	{<<"baseline-shift">>, Record#symbol.baseline_shift},
+	{<<"clip">>, Record#symbol.clip},
+	{<<"clip-path">>, Record#symbol.clip_path},
+	{<<"clip-rule">>, Record#symbol.clip_rule},
+	{<<"color">>, Record#symbol.color},
+	{<<"color-interpolation">>, Record#symbol.color_interpolation},
+	{<<"color-interpolation-filters">>, Record#symbol.color_interpolation_filters},
+	{<<"color-profile">>, Record#symbol.color_profile},
+	{<<"color-rendering">>, Record#symbol.color_rendering},
+	{<<"cursor">>, Record#symbol.cursor},
+	{<<"direction">>, Record#symbol.direction},
+	{<<"display">>, Record#symbol.display},
+	{<<"dominant-baseline">>, Record#symbol.dominant_baseline},
+	{<<"enable-background">>, Record#symbol.enable_background},
+	{<<"fill">>, Record#symbol.fill},
+	{<<"fill-opacity">>, Record#symbol.fill_opacity},
+	{<<"fill-rule">>, Record#symbol.fill_rule},
+	{<<"filter">>, Record#symbol.filter},
+	{<<"flood-color">>, Record#symbol.flood_color},
+	{<<"flood-opacity">>, Record#symbol.flood_opacity},
+	{<<"font-family">>, Record#symbol.font_family},
+	{<<"font-size">>, Record#symbol.font_size},
+	{<<"font-size-adjust">>, Record#symbol.font_size_adjust},
+	{<<"font-stretch">>, Record#symbol.font_stretch},
+	{<<"font-style">>, Record#symbol.font_style},
+	{<<"font-variant">>, Record#symbol.font_variant},
+	{<<"font-weight">>, Record#symbol.font_weight},
+	{<<"glyph-orientation-horizontal">>, Record#symbol.glyph_orientation_horizontal},
+	{<<"glyph-orientation-vertical">>, Record#symbol.glyph_orientation_vertical},
+	{<<"image-rendering">>, Record#symbol.image_rendering},
+	{<<"kerning">>, Record#symbol.kerning},
+	{<<"letter-spacing">>, Record#symbol.letter_spacing},
+	{<<"lighting-color">>, Record#symbol.lighting_color},
+	{<<"marker-end">>, Record#symbol.marker_end},
+	{<<"marker-mid">>, Record#symbol.marker_mid},
+	{<<"marker-start">>, Record#symbol.marker_start},
+	{<<"mask">>, Record#symbol.mask},
+	{<<"opacity">>, Record#symbol.opacity},
+	{<<"overflow">>, Record#symbol.overflow},
+	{<<"pointer-events">>, Record#symbol.pointer_events},
+	{<<"shape-rendering">>, Record#symbol.shape_rendering},
+	{<<"stop-color">>, Record#symbol.stop_color},
+	{<<"stop-opacity">>, Record#symbol.stop_opacity},
+	{<<"stroke">>, Record#symbol.stroke},
+	{<<"stroke-dasharray">>, Record#symbol.stroke_dasharray},
+	{<<"stroke-dashoffset">>, Record#symbol.stroke_dashoffset},
+	{<<"stroke-linecap">>, Record#symbol.stroke_linecap},
+	{<<"stroke-linejoin">>, Record#symbol.stroke_linejoin},
+	{<<"stroke-miterlimit">>, Record#symbol.stroke_miterlimit},
+	{<<"stroke-opacity">>, Record#symbol.stroke_opacity},
+	{<<"stroke-width">>, Record#symbol.stroke_width},
+	{<<"text-anchor">>, Record#symbol.text_anchor},
+	{<<"text-decoration">>, Record#symbol.text_decoration},
+	{<<"text-rendering">>, Record#symbol.text_rendering},
+	{<<"unicode-bidi">>, Record#symbol.unicode_bidi},
+	{<<"visibility">>, Record#symbol.visibility},
+	{<<"word-spacing">>, Record#symbol.word_spacing},
+	{<<"writing-mode">>, Record#symbol.writing_mode}
+].