Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Source file svg_f.ml
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138(* TyXML
* http://www.ocsigen.org/tyxml
* Copyright (C) 2010 by Simon Castellan
* Copyright (C) 2010 by Cecile Herbelin
* Copyright (C) 2010 by Vincent Balat
*
* This program 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, with linking exception;
* either version 2.1 of the License, or (at your option) any later version.
*
* This program 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 this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1301, USA.
*)(** Type instantiations for SVG *)(** This module defines basic data types for data, attributes
and element occurring in SVG documents.
It is based on the specification available at http://www.w3.org/TR/SVG/.
This module is experimental, it may lack of some attributes,
and the interface is very low level and do not take deeply into account
the needs of SVG elements. *)openSvg_typesopenUnitletstring_of_irix=Printf.sprintf"url(%s)"xmoduleUnit=struct(* let rel x = (x, None) *)(* let deg x = (x, Some `Deg) *)(* let grad x = (x, Some `Grad) *)(* let rad x = (x, Some `Rad) *)(* let ms x = (x, Some `Ms) *)(* let s x = (x, Some `S) *)(* let em x = (x, Some `Em) *)(* let ex x = (x, Some `Ex) *)(* let px x = (x, Some `Px) *)(* let in_ x = (x, Some `In) *)(* let cm x = (x, Some `Cm) *)(* let mm x = (x, Some `Mm) *)(* let pt x = (x, Some `Pt) *)(* let pc x = (x, Some `Pc) *)(* let percent x = (x, Some `Percent) *)(* let hz x = (x, Some `Hz) *)(* let khz x = (x, Some `KHz) *)letto_stringf(n,unit)=Printf.sprintf"%g%s"nbeginmatchunitwith|Someunit->funit|None->""endletangle_names=function`Deg->"deg"|`Grad->"grad"|`Rad->"rad"letstring_of_anglea=to_stringangle_namesa(* let time_names = function `Ms -> "ms" | `S -> "s" *)(* let string_of_time a = to_string time_names a *)letlength_names=function|`Em->"em"|`Ex->"ex"|`Px->"px"|`In->"in"|`Cm->"cm"|`Mm->"mm"|`Pt->"pt"|`Pc->"pc"|`Percent->"%"letstring_of_length(a:length)=to_stringlength_namesa(* let freq_names = function `Hz -> "Hz" | `KHz -> "kHz" *)(* let string_of_freq a = to_string freq_names a *)endopenUnitletopt_concat?(sep=" ")sf=function|Somex->s^sep^(fx)|None->sletlist?(sep=" ")fl=String.concatsep(List.mapfl)letstring_of_colors=s(* For now just string, we may want something better in the future. *)letstring_of_icccolors=sletstring_of_paint_whitout_icc=function|`None->"none"|`CurrentColor->"currentColor"|`Color(c,icc)->opt_concat(string_of_colorc)string_of_icccoloriccletstring_of_paint=function|`Icc(iri,None)->string_of_iriiri|`Icc(iri,Someb)->(string_of_iriiri)^" "^(string_of_paint_whitout_iccb)|#paint_whitout_iccasc->string_of_paint_whitout_icccmoduleMake_with_wrapped_functions(Xml:Xml_sigs.T)(C:Svg_sigs.Wrapped_functionswithmoduleXml=Xml)=structmoduleXml=XmlmoduleW=Xml.WmoduleInfo=structletcontent_type="image/svg+xml"letalternative_content_types=[]letemptytags=[]letversion="SVG 1.1"letstandard="http://www.w3.org/TR/svg11/"letnamespace="http://www.w3.org/2000/svg"letdoctype=Xml_print.compose_doctype"svg"["-//W3C//DTD SVG 1.1//EN";"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"]endtypeuri=Xml.uriletstring_of_uri=Xml.string_of_urileturi_of_string=Xml.uri_of_string(* Mandatory XML stuff. *)type'aattrib=Xml.attribtype+'aelt=Xml.elttype'awrap='aW.ttype'alist_wrap='aW.tlisttype('a,'b)nullary=?a:(('aattrib)list)->unit->'belttype('a,'b,'c)unary=?a:(('aattrib)list)->'beltwrap->'celttype('a,'b,'c)star=?a:(('aattrib)list)->('belt)list_wrap->'celtlettotx=xlettotlx=xlettoeltx=xlettoeltlx=xletto_attribx=xletnullarytag?a()=Xml.node?atag(W.nil())letunarytag?aelt=Xml.node?atag(W.singletonelt)letstartag?aelts=Xml.node?atageltstypealtglyphdef_content=[`Refof(glyphrefelt)list|`Itemof(altglyphitemelt)list]letto_xmlattribsx=xletfloat_attrib=Xml.float_attribletstring_attrib=Xml.string_attrib(* wrap C module functions *)letstring_of_coord=C.string_of_lengthletstring_of_length=C.string_of_lengthletstring_of_lengths=C.string_of_lengths(* Custom XML attributes *)letuser_attribfnamev=Xml.string_attribname(W.fmapfv)letnumber_attrib=float_attrib(* for now string_attrib, we may want something better in the
future. *)letcolor_attrib=Xml.string_attrib(* SVG attributes *)letmetadata?achildren=Xml.node?a"metadata"childrenletforeignObject?achildren=Xml.node?a"foreignObject"childrenlettxts=Xml.pcdatasletpcdata=txt(* generated *)leta_version=string_attrib"version"leta_baseProfile=string_attrib"baseProfile"leta_x=user_attribstring_of_coord"x"leta_y=user_attribstring_of_coord"y"leta_width=user_attribstring_of_length"width"leta_height=user_attribstring_of_length"height"leta_preserveAspectRatio=string_attrib"preserveAspectRatio"leta_contentScriptType=string_attrib"contentScriptType"leta_contentStyleType=string_attrib"contentStyleType"leta_zoomAndPanx=user_attribC.string_of_big_variant"zoomAndSpan"xleta_href=string_attrib"href"leta_xlink_href=string_attrib"xlink:href"leta_requiredFeatures=Xml.space_sep_attrib"requiredFeatures"leta_requiredExtensions=Xml.space_sep_attrib"requiredExtension"leta_systemLanguage=Xml.comma_sep_attrib"systemLanguage"leta_externalRessourcesRequired=user_attribC.string_of_bool"externalRessourcesRequired"leta_id=string_attrib"id"leta_user_dataname=string_attrib("data-"^name)leta_xml_base=string_attrib"xml:base"leta_xml_lang=string_attrib"xml:lang"leta_xml_spacex=user_attribC.string_of_big_variant"xml:space"xleta_type=string_attrib"type"leta_media=Xml.comma_sep_attrib"media"leta_xlink_title=string_attrib"xlink:title"leta_class=Xml.space_sep_attrib"class"leta_style=string_attrib"style"leta_transform=user_attribC.string_of_transforms"transform"leta_viewBox=user_attribC.string_of_fourfloats"viewBox"leta_d=string_attrib"d"leta_pathLength=number_attrib"pathLength"leta_rx=user_attribstring_of_length"rx"leta_ry=user_attribstring_of_length"ry"leta_cx=user_attribstring_of_length"cx"leta_cy=user_attribstring_of_length"cy"leta_r=user_attribstring_of_length"r"leta_x1=user_attribstring_of_coord"x1"leta_y1=user_attribstring_of_coord"y1"leta_x2=user_attribstring_of_coord"x2"leta_y2=user_attribstring_of_coord"y2"leta_points=user_attribC.string_of_coords"points"leta_x_list=user_attribstring_of_lengths"x"leta_y_list=user_attribstring_of_lengths"y"leta_dx=user_attribC.string_of_number"dx"leta_dy=user_attribC.string_of_number"dy"leta_dx_list=user_attribstring_of_lengths"dx"leta_dy_list=user_attribstring_of_lengths"dy"leta_lengthAdjustx=user_attribC.string_of_big_variant"lengthAdjust"xleta_textLength=user_attribstring_of_length"textLength"leta_text_anchorx=user_attribC.string_of_big_variant"text-anchor"xleta_text_decorationx=user_attribC.string_of_big_variant"text-decoration"xleta_text_renderingx=user_attribC.string_of_big_variant"text-rendering"xleta_rotate=user_attribC.string_of_numbers"rotate"leta_startOffset=user_attribstring_of_length"startOffset"leta_methodx=user_attribC.string_of_big_variant"method"xleta_spacingx=user_attribC.string_of_big_variant"spacing"xleta_glyphRef=string_attrib"glyphRef"leta_format=string_attrib"format"leta_markerUnitsx=user_attribC.string_of_big_variant"markerUnits"xleta_refX=user_attribstring_of_coord"refX"leta_refY=user_attribstring_of_coord"refY"leta_markerWidth=user_attribstring_of_length"markerWidth"leta_markerHeight=user_attribstring_of_length"markerHeight"leta_orientx=user_attribC.string_of_orient"orient"xleta_local=string_attrib"local"leta_rendering_intentx=user_attribC.string_of_big_variant"rendering-intent"xleta_gradientUnitsx=user_attribC.string_of_big_variant"gradientUnits"xleta_gradientTransform=user_attribC.string_of_transforms"gradientTransform"leta_spreadMethodx=user_attribC.string_of_big_variant"spreadMethod"xleta_fx=user_attribstring_of_coord"fx"leta_fy=user_attribstring_of_coord"fy"leta_offsetx=user_attribC.string_of_offset"offset"xleta_patternUnitsx=user_attribC.string_of_big_variant"patternUnits"xleta_patternContentUnitsx=user_attribC.string_of_big_variant"patternContentUnits"xleta_patternTransformx=user_attribC.string_of_transforms"patternTransform"xleta_clipPathUnitsx=user_attribC.string_of_big_variant"clipPathUnits"xleta_maskUnitsx=user_attribC.string_of_big_variant"maskUnits"xleta_maskContentUnitsx=user_attribC.string_of_big_variant"maskContentUnits"xleta_primitiveUnitsx=user_attribC.string_of_big_variant"primitiveUnits"xleta_filterRes=user_attribC.string_of_number_optional_number"filterResUnits"leta_result=string_attrib"result"leta_inx=user_attribC.string_of_in_value"in"xleta_in2x=user_attribC.string_of_in_value"in2"xleta_azimuth=number_attrib"azimuth"leta_elevation=number_attrib"elevation"leta_pointsAtX=number_attrib"pointsAtX"leta_pointsAtY=number_attrib"pointsAtY"leta_pointsAtZ=number_attrib"pointsAtZ"leta_specularExponent=number_attrib"specularExponent"leta_specularConstant=number_attrib"specularConstant"leta_limitingConeAngle=number_attrib"limitingConeAngle"leta_modex=user_attribC.string_of_big_variant"mode"xleta_feColorMatrix_typex=user_attribC.string_of_big_variant"type"xleta_values=user_attribC.string_of_numbers"values"leta_transfer_typex=user_attribC.string_of_big_variant"type"xleta_tableValues=user_attribC.string_of_numbers"tableValues"leta_intercept=user_attribC.string_of_number"intercept"leta_amplitude=user_attribC.string_of_number"amplitude"leta_exponent=user_attribC.string_of_number"exponent"leta_transfer_offset=user_attribC.string_of_number"offset"leta_feComposite_operatorx=user_attribC.string_of_big_variant"operator"xleta_k1=user_attribC.string_of_number"k1"leta_k2=user_attribC.string_of_number"k2"leta_k3=user_attribC.string_of_number"k3"leta_k4=user_attribC.string_of_number"k4"leta_order=user_attribC.string_of_number_optional_number"order"leta_kernelMatrix=user_attribC.string_of_numbers"kernelMatrix"leta_divisor=user_attribC.string_of_number"divisor"leta_bias=user_attribC.string_of_number"bias"leta_kernelUnitLength=user_attribC.string_of_number_optional_number"kernelUnitLength"leta_targetX=user_attribC.string_of_int"targetX"leta_targetY=user_attribC.string_of_int"targetY"leta_edgeModex=user_attribC.string_of_big_variant"targetY"xleta_preserveAlpha=user_attribC.string_of_bool"preserveAlpha"leta_surfaceScale=user_attribC.string_of_number"surfaceScale"leta_diffuseConstant=user_attribC.string_of_number"diffuseConstant"leta_scale=user_attribC.string_of_number"scale"leta_xChannelSelectorx=user_attribC.string_of_big_variant"xChannelSelector"xleta_yChannelSelectorx=user_attribC.string_of_big_variant"yChannelSelector"xleta_stdDeviation=user_attribC.string_of_number_optional_number"stdDeviation"leta_feMorphology_operatorx=user_attribC.string_of_big_variant"operator"xleta_radius=user_attribC.string_of_number_optional_number"radius"leta_baseFrenquency=user_attribC.string_of_number_optional_number"baseFrequency"leta_numOctaves=user_attribC.string_of_int"numOctaves"leta_seed=user_attribC.string_of_number"seed"leta_stitchTilesx=user_attribC.string_of_big_variant"stitchTiles"xleta_feTurbulence_typex=user_attribC.string_of_big_variant"type"xleta_xlink_showx=user_attribC.string_of_big_variant"xlink:show"xleta_xlink_actuatex=user_attribC.string_of_big_variant"xlink:actuate"xleta_target=string_attrib"xlink:target"leta_viewTarget=string_attrib"viewTarget"leta_attributeName=string_attrib"attributeName"leta_attributeTypex=user_attribC.string_of_big_variant"attributeType"xleta_begin=string_attrib"begin"leta_dur=string_attrib"dur"leta_min=string_attrib"min"leta_max=string_attrib"max"leta_restartx=user_attribC.string_of_big_variant"restart"xleta_repeatCount=string_attrib"repeatCount"leta_repeatDur=string_attrib"repeatDur"leta_fill=user_attribC.string_of_paint"fill"leta_animation_fillx=user_attribC.string_of_big_variant"fill"xleta_calcModex=user_attribC.string_of_big_variant"calcMode"xleta_animation_values=Xml.comma_sep_attrib"values"leta_keyTimes=Xml.comma_sep_attrib"keyTimes"leta_keySplines=Xml.comma_sep_attrib"keySplines"leta_from=string_attrib"from"leta_to=string_attrib"to"leta_by=string_attrib"by"leta_additivex=user_attribC.string_of_big_variant"additive"xleta_accumulatex=user_attribC.string_of_big_variant"accumulate"xleta_keyPoints=user_attribC.string_of_numbers_semicolon"keyPoints"leta_path=string_attrib"path"leta_animateTransform_type=user_attribC.string_of_big_variant"type"leta_horiz_origin_x=user_attribC.string_of_number"horiz-origin-x"leta_horiz_origin_y=user_attribC.string_of_number"horiz-origin-y"leta_horiz_adv_x=user_attribC.string_of_number"horiz-adv-x"leta_vert_origin_x=user_attribC.string_of_number"vert-origin-x"leta_vert_origin_y=user_attribC.string_of_number"vert-origin-y"leta_vert_adv_y=user_attribC.string_of_number"vert-adv-y"leta_unicode=string_attrib"unicode"leta_glyph_name=string_attrib"glyphname"leta_orientationx=user_attribC.string_of_big_variant"orientation"xleta_arabic_formx=user_attribC.string_of_big_variant"arabic-form"xleta_lang=string_attrib"lang"leta_u1=string_attrib"u1"leta_u2=string_attrib"u2"leta_g1=string_attrib"g1"leta_g2=string_attrib"g2"leta_k=string_attrib"k"leta_font_family=string_attrib"font-family"leta_font_style=string_attrib"font-style"leta_font_variant=string_attrib"font-variant"leta_font_weight=string_attrib"font-weight"leta_font_stretch=string_attrib"font-stretch"leta_font_size=string_attrib"font-size"leta_unicode_range=string_attrib"unicode-range"leta_units_per_em=string_attrib"units-per-em"leta_stemv=user_attribC.string_of_number"stemv"leta_stemh=user_attribC.string_of_number"stemh"leta_slope=user_attribC.string_of_number"slope"leta_cap_height=user_attribC.string_of_number"cap-height"leta_x_height=user_attribC.string_of_number"x-height"leta_accent_height=user_attribC.string_of_number"accent-height"leta_ascent=user_attribC.string_of_number"ascent"leta_widths=string_attrib"widths"leta_bbox=string_attrib"bbox"leta_ideographic=user_attribC.string_of_number"ideographic"leta_alphabetic=user_attribC.string_of_number"alphabetic"leta_mathematical=user_attribC.string_of_number"mathematical"leta_hanging=user_attribC.string_of_number"hanging"leta_videographic=user_attribC.string_of_number"v-ideographic"leta_v_alphabetic=user_attribC.string_of_number"v-alphabetic"leta_v_mathematical=user_attribC.string_of_number"v-mathematical"leta_v_hanging=user_attribC.string_of_number"v-hanging"leta_underline_position=user_attribC.string_of_number"underline-position"leta_underline_thickness=user_attribC.string_of_number"underline-thickness"leta_strikethrough_position=user_attribC.string_of_number"strikethrough-position"leta_strikethrough_thickness=user_attribC.string_of_number"strikethrough-thickness"leta_overline_position=user_attribC.string_of_number"overline-position"leta_overline_thickness=user_attribC.string_of_number"overline-thickness"leta_string=string_attrib"string"leta_name=string_attrib"name"leta_alignment_baselinex=user_attribC.string_of_alignment_baseline"alignment-baseline"xleta_dominant_baselinex=user_attribC.string_of_dominant_baseline"dominant-baseline"x(** Javascript events *)leta_onabort=Xml.event_handler_attrib"onabort"leta_onactivate=Xml.event_handler_attrib"onactivate"leta_onbegin=Xml.event_handler_attrib"onbegin"leta_onend=Xml.event_handler_attrib"onend"leta_onerror=Xml.event_handler_attrib"onerror"leta_onfocusin=Xml.event_handler_attrib"onfocusin"leta_onfocusout=Xml.event_handler_attrib"onfocusout"leta_onload=Xml.event_handler_attrib"onload"leta_onrepeat=Xml.event_handler_attrib"onrepeat"leta_onresize=Xml.event_handler_attrib"onresize"leta_onscroll=Xml.event_handler_attrib"onscroll"leta_onunload=Xml.event_handler_attrib"onunload"leta_onzoom=Xml.event_handler_attrib"onzoom"(** Javascript mouse events *)leta_onclick=Xml.mouse_event_handler_attrib"onclick"leta_onmousedown=Xml.mouse_event_handler_attrib"onmousedown"leta_onmouseup=Xml.mouse_event_handler_attrib"onmouseup"leta_onmouseover=Xml.mouse_event_handler_attrib"onmouseover"leta_onmouseout=Xml.mouse_event_handler_attrib"onmouseout"leta_onmousemove=Xml.mouse_event_handler_attrib"onmousemove"(** Javascript touch events *)leta_ontouchstart=Xml.touch_event_handler_attrib"ontouchstart"leta_ontouchend=Xml.touch_event_handler_attrib"ontouchend"leta_ontouchmove=Xml.touch_event_handler_attrib"ontouchmove"leta_ontouchcancel=Xml.touch_event_handler_attrib"ontouchcancel"leta_stop_color=color_attrib"stop-color"leta_stop_opacity=user_attribC.string_of_number"stop-opacity"leta_stroke=user_attribC.string_of_paint"stroke"leta_stroke_width=user_attribC.string_of_length"stroke-width"leta_stroke_linecapx=user_attribC.string_of_big_variant"stroke-linecap"xleta_stroke_linejoinx=user_attribC.string_of_big_variant"stroke-linejoin"xleta_stroke_miterlimit=user_attribC.string_of_number"stroke-miterlimit"leta_stroke_dasharrayx=user_attribC.string_of_strokedasharray"stroke-dasharray"xleta_stroke_dashoffset=user_attribC.string_of_length"stroke-dashoffset"leta_stroke_opacity=user_attribC.string_of_number"stroke-opacity"(* xlink namespace given a nickname since some attributes mandated by
the svg standard such as xlink:href live in that namespace, and we
refer to them as "xlink:whatever" (see a_xlink_href or a_xlinkshow)
*)letsvg?(a=[])children=letattribs=string_attrib"xmlns"(W.return"http://www.w3.org/2000/svg")::string_attrib"xmlns:xlink"(W.return"http://www.w3.org/1999/xlink")::to_xmlattribsainstar~a:(attribs)"svg"children(* also generated *)letg=star"g"letdefs=star"defs"letdesc=unary"desc"lettitle=unary"title"letsymbol=star"symbol"letuse=star"use"letimage=star"image"letswitch=star"switch"letstyle=unary"style"letpath=star"path"letrect=star"rect"letcircle=star"circle"letellipse=star"ellipse"letline=star"line"letpolyline=star"polyline"letpolygon=star"polygon"lettext=star"text"lettspan=star"tspan"lettref=star"tref"lettextPath=star"textPath"letaltGlyph=unary"altGlyph"letaltGlyphDef=unary"altGlyphDef"letaltGlyphItem=star"altGlyphItem"letglyphRef=nullary"glyphRef"letmarker=star"marker"letcolor_profile=star"color-profile"letlinearGradient=star"linearGradient"letradialGradient=star"radialGradient"letstop=star"stop"letpattern=star"pattern"letclipPath=star"clipPath"letfilter=star"filter"letfeDistantLight=star"feDistantLight"letfePointLight=star"fePointLight"letfeSpotLight=star"feSpotLight"letfeBlend=star"feBlend"letfeColorMatrix=star"feColorMatrix"letfeComponentTransfer=star"feComponentTransfer"letfeFuncA=star"feFuncA"letfeFuncG=star"feFuncG"letfeFuncB=star"feFuncB"letfeFuncR=star"feFuncR"letfeComposite=star"feComposite"letfeConvolveMatrix=star"feConvolveMatrix"letfeDiffuseLighting=star"feDiffuseLighting"letfeDisplacementMap=star"feDisplacementMap"letfeFlood=star"feFlood"letfeGaussianBlur=star"feGaussianBlur"letfeImage=star"feImage"letfeMerge=star"feMerge"letfeMorphology=star"feMorphology"letfeOffset=star"feOffset"letfeSpecularLighting=star"feSpecularLighting"letfeTile=star"feTile"letfeTurbulence=star"feTurbulence"letcursor=star"cursor"leta=star"a"letview=star"view"letscript=unary"script"letanimation=star"animate"letset=star"set"letanimateMotion=star"animateMotion"letmpath=star"mpath"letanimateColor=star"animateColor"letanimateTransform=star"animateTransform"letfont=star"font"letglyph=star"glyph"letmissing_glyph=star"missing-glyph"lethkern=nullary"hkern"letvkern=nullary"vkern"letfont_face=nullary"font-face"letfont_face_src=star"font-face-src"letfont_face_uri=star"font-face-uri"letfont_face_format=nullary"font-face-uri"letfont_face_name=nullary"font-face-name"typedoc=[`Svg]eltletdoc_toeltx=xmoduleI=Xml_stream.Import(Xml)letof_seqs=totl@@I.of_seqsmoduleUnsafe=structletdatas=Xml.encodedpcdatasletleaftag?a()=Xml.leaf?atagletnodetag?aelts=Xml.node?atageltsletcoerce_eltx=xletfloat_attrib=Xml.float_attribletint_attrib=Xml.int_attribletstring_attrib=Xml.string_attribleturi_attribas=Xml.uri_attribasletspace_sep_attrib=Xml.space_sep_attribletcomma_sep_attrib=Xml.comma_sep_attribendendmoduleWrapped_functions(Xml:Xml_sigs.Twithtype('a,'b)W.ft='a->'b)=structmoduleXml=Xmlletstring_of_alignment_baseline=function|`Auto->"auto"|`Baseline->"baseline"|`Before_edge->"before-edge"|`Text_before_edge->"text-before-edge"|`Middle->"middle"|`Central->"central"|`After_edge->"after-edge"|`Text_after_edge->"text-after-edge"|`Ideographic->"ideographic"|`Alphabetic->"alphabetic"|`Hanging->"hanging"|`Mathematical->"mathematical"|`Inherit->"inherit"letstring_of_big_variant=function|`A->"a"|`Absolute_colorimetric->"absolute_colorimetric"|`Align->""|`Always->"always"|`Atop->"atop"|`Arithmetic->"arithmetic"|`Auto->"auto"|`B->"b"|`Bever->"bevel"|`Blink->"blink"|`Butt->"butt"|`CSS->"CSS"|`Darken->"darken"|`Default->"default"|`Dilate->"dilate"|`Disable->"disable"|`Discrete->"discrete"|`Duplicate->"duplicate"|`End->"end"|`Erode->"erode"|`Exact->"exact"|`FractalNoise->"fractalNoise"|`Freeze->"freeze"|`HueRotate->"hueRotate"|`G->"g"|`Gamma->"gamma"|`GeometricPrecision->"geometricPrecision"|`H->"h"|`Identity->"identity"|`In->"in"|`Inherit->"inherit"|`Initial->"initial"|`Isolated->"isolated"|`Lighten->"lighten"|`Line_through->"line-through"|`Linear->"linear"|`LuminanceToAlpha->"luminanceToAlpha"|`Magnify->"magnify"|`Matrix->"matrix"|`Medial->"medial"|`Middle->"middle"|`Miter->"miter"|`Multiply->"multiply"|`Never->"never"|`New->"new"|`None->"none"|`Normal->"normal"|`NoStitch->"noStitch"|`ObjectBoundingBox->"objectBoundingBox"|`OnLoad->"onLoad"|`OnRequest->"onRequest"|`OptimizeLegibility->"optimizeLegibility"|`OptimizeSpeed->"optimizeSpeed"|`Other->"other"|`Out->"out"|`Over->"over"|`Overline->"overline"|`Paced->"paced"|`Pad->"pad"|`Perceptual->"perceptual"|`Preserve->"preserve"|`R->"r"|`Reflect->"reflect"|`Remove->"remove"|`Repeat->"repeat"|`Replace->"replace"|`Relative_colorimetric->"relative_colorimetric"|`Rotate->"rotate"|`Round->"round"|`Saturate->"saturate"|`Saturation->"saturation"|`Scale->"scale"|`Screen->"screen"|`SkewX->"skewX"|`SkewY->"skewY"|`Spacing->"spacing"|`SpacingAndGlyphs->"spacingAndGlyphs"|`Spline->"spline"|`Square->"square"|`Start->"start"|`Stitch->"stitch"|`Stretch->"stretch"|`StrokeWidth->"stroke-width"|`Sum->"sum"|`Table->"table"|`Terminal->"terminal"|`Translate->"translate"|`Turbulence->"turbulence"|`Underline->"underline"|`UserSpaceOnUse->"userSpaceOnUse"|`V->"v"|`WhenNotActive->"whenNotActive"|`Wrap->"wrap"|`XML->"XML"|`Xor->"xor"letstring_of_bool=string_of_boolletstring_of_coords=list(fun(a,b)->Printf.sprintf"%g, %g"ab)letstring_of_dominant_baseline=function|`Auto->"auto"|`Use_script->"usescript"|`No_change->"nochange"|`Reset_size->"resetsize"|`Ideographic->"ideographic"|`Alphabetic->"alphabetic"|`Hanging->"hanging"|`Mathematical->"mathematical"|`Central->"central"|`Middle->"middle"|`Text_after_edge->"textafteredge"|`Text_before_edge->"textbeforeedge"|`Inherit->"inherit"letstring_of_in_value=function|`SourceGraphic->"sourceGraphic"|`SourceAlpha->"sourceAlpha"|`BackgroundImage->"backgroundImage"|`BackgroundAlpha->"backgroundAlpha"|`FillPaint->"fillPaint"|`StrokePaint->"strokePaint"|`Ref_svg->_svgletstring_of_int=string_of_intletstring_of_length=Unit.string_of_lengthletstring_of_lengths=liststring_of_lengthletstring_of_number=Xml_print.string_of_numberletstring_of_percentagex=(string_of_numberx)^"%"letstring_of_fourfloats(a,b,c,d)=Printf.sprintf"%s %s %s %s"(string_of_numbera)(string_of_numberb)(string_of_numberc)(string_of_numberd)letstring_of_number_optional_number=function|x,Somey->Printf.sprintf"%g, %g"xy|x,None->Printf.sprintf"%g"xletstring_of_numbers=liststring_of_numberletstring_of_numbers_semicolon=list~sep:"; "string_of_numberletstring_of_offset=function|`Numberx->string_of_numberx|`Percentagex->string_of_percentagexletstring_of_orient=function|None->"auto"|Some__svg->string_of_angle__svgletstring_of_paint=string_of_paintletstring_of_strokedasharray=function|[]->"none"|l->liststring_of_lengthlletstring_of_transform=function|`Matrix(a,b,c,d,e,f)->Printf.sprintf"matrix(%g %g %g %g %g %g)"abcdef|`Translatex->Printf.sprintf"translate(%s)"(string_of_number_optional_numberx)|`Scalex->Printf.sprintf"scale(%s)"(string_of_number_optional_numberx)|`Rotate((angle,x))->Printf.sprintf"rotate(%s %s)"(string_of_angleangle)(matchxwith|Some((x,y))->Printf.sprintf"%g %g"xy|None->"")|`SkewXangle->Printf.sprintf"skewX(%s)"(string_of_angleangle)|`SkewYangle->Printf.sprintf"skewY(%s)"(string_of_angleangle)letstring_of_transformsl=String.concat" "(List.mapstring_of_transforml)endmoduleMake(Xml:Xml_sigs.Twithtype('a,'b)W.ft=('a->'b))=Make_with_wrapped_functions(Xml)(Wrapped_functions(Xml))