<divid=Content><divclass="CClass"><divclass=CTopicid=MainTopic><h1class=CTitle><aname="SvgCanvas"></a>SvgCanvas</h1><divclass=CBody><p>The main SvgCanvas class that manages all SVG-related functions</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>container</td><tdclass=CDLDescription>The container HTML element that should hold the SVG root element</td></tr><tr><tdclass=CDLEntry>config</td><tdclass=CDLDescription>An object that contains configuration data</td></tr></table><!--START_ND_SUMMARY--><divclass=Summary><divclass=STitle>Summary</div><divclass=SBorder><tableborder=0cellspacing=0cellpadding=0class=STable><trclass="SMain"><tdclass=SEntry><ahref="#SvgCanvas">SvgCanvas</a></td><tdclass=SDescription>The main SvgCanvas class that manages all SVG-related functions</td></tr><trclass="SFunction SIndent1 SMarked"><tdclass=SEntry><ahref="#SvgCanvas.toXml"id=link1onMouseOver="ShowTip(event, 'tt1', 'link1')"onMouseOut="HideTip('tt1')">toXml</a></td><tdclass=SDescription>Converts characters in a string to XML-friendly entities.</td></tr><trclass="SFunction SIndent1"><tdclass=SEntry><ahref="#SvgCanvas.fromXml"id=link2onMouseOver="ShowTip(event, 'tt2', 'link2')"onMouseOut="HideTip('tt2')">fromXml</a></td><tdclass=SDescription>Converts XML entities in a string to single characters. </td></tr><trclass="SGroup SIndent1"><tdclass=SEntry><ahref="#SvgCanvas.Unit_conversion_functions">Unit conversion functions</a></td><tdclass=SDescription></td></tr><trclass="SFunction SIndent2 SMarked"><tdclass=SEntry><ahref="#SvgCanvas.convertToNum"id=link3onMouseOver="ShowTip(event, 'tt3', 'link3')"onMouseOut="HideTip('tt3')">convertToNum</a></td><tdclass=SDescription>Converts given values to numbers. </td></tr><trclass="SFunction SIndent2"><tdclass=SEntry><ahref="#SvgCanvas.setUnitAttr"id=link4onMouseOver="ShowTip(event, 'tt4', 'link4')"onMouseOut="HideTip('tt4')">setUnitAttr</a></td><tdclass=SDescription>Sets an element’s attribute based on the unit in its current value.</td></tr><trclass="SFunction SIndent2 SMarked"><tdclass=SEntry><ahref="#SvgCanvas.isValidUnit"id=link5onMouseOver="ShowTip(event, 'tt5', 'link5')"onMouseOut="HideTip('tt5')">isValidUnit</a></td><tdclass=SDescription>Check if an attribute’s value is in a valid format</td></tr><trclass="SGroup SIndent1"><tdclass=SEntry><ahref="#SvgCanvas.Undo/Redo_history_management">Undo/<wbr>Redo history management</a></td><tdclass=SDescription></td></tr><trclass="SFunction SIndent2 SMarked"><tdclass=SEntry><ahref="#SvgCanvas.ChangeElementCommand"id=link6onMouseOver="ShowTip(event, 'tt6', 'link6')"onMouseOut="HideTip('tt6')">ChangeElementCommand</a></td><tdclass=SDescription>History command to make a change to an element. </td></tr><trclass="SFunction SIndent2"><tdclass=SEntry><ahref="#SvgCanvas.ChangeElementCommand.apply">ChangeElementCommand.<wbr>apply</a></td><tdclass=SDescription>Performs the stored change action</td></tr><trclass="SFunction SIndent2 SMarked"><tdclass=SEntry><ahref="#SvgCanvas.ChangeElementCommand.unapply">ChangeElementCommand.<wbr>unapply</a></td><tdclass=SDescription>Reverses the stored change action</td></tr><trclass="SFunction SIndent2"><tdclass=SEntry><ahref="#SvgCanvas.ChangeElementCommand.elements">ChangeElementCommand.<wbr>elements</a></td><tdclass=SDescription>Returns array with element associated with this command</td></tr><trclass="SFunction SIndent2 SMarked"><tdclass=SEntry><ahref="#SvgCanvas.InsertElementCommand"id=link7onMouseOver="ShowTip(event, 'tt7', 'link7')"onMouseOut="HideTip('tt7')">InsertElementCommand</a></td><tdclass=SDescription>History command for an element that was added to the DOM</td></tr><trclass="SFunction SIndent2"><tdclass=SEntry><ahref="#SvgCanvas.InsertElementCommand.apply">InsertElementCommand.<wbr>apply</a></td><tdclass=SDescription>Re-Inserts the new element</td></tr><trclass="SFunction SIndent2 SMarked"><tdclass=SEntry><ahref="#SvgCanvas.InsertEl
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SvgCanvas.toXml"></a>toXml</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>toXml = function(</td><tdclass=PParameternowrap>str</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Converts characters in a string to XML-friendly entities.</p><p>Example: “&” becomes “&amp;”</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>str</td><tdclass=CDLDescription>The string to be converted</td></tr></table><h4class=CHeading>Returns</h4><p>The converted string</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SvgCanvas.fromXml"></a>fromXml</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>fromXml = function(</td><tdclass=PParameternowrap>str</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Converts XML entities in a string to single characters. Example: “&amp;” becomes “&”</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>str</td><tdclass=CDLDescription>The string to be converted</td></tr></table><h4class=CHeading>Returns</h4><p>The converted string</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SvgCanvas.convertToNum"></a>convertToNum</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>convertToNum = function(</td><tdclass=PParameternowrap>attr,</td></tr><tr><td></td><tdclass=PParameternowrap>val</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Converts given values to numbers. Attributes must be supplied in case a percentage is given</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>attr</td><tdclass=CDLDescription>String with the name of the attribute associated with the value</td></tr><tr><tdclass=CDLEntry>val</td><tdclass=CDLDescription>String with the attribute value to convert</td></tr></table></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SvgCanvas.setUnitAttr"></a>setUnitAttr</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>setUnitAttr = function(</td><tdclass=PParameternowrap>elem,</td></tr><tr><td></td><tdclass=PParameternowrap>attr,</td></tr><tr><td></td><tdclass=PParameternowrap>val</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Sets an element’s attribute based on the unit in its current value.</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>elem</td><tdclass=CDLDescription>DOM element to be changed</td></tr><tr><tdclass=CDLEntry>attr</td><tdclass=CDLDescription>String with the name of the attribute associated with the value</td></tr><tr><tdclass=CDLEntry>val</td><tdclass=CDLDescription>String with the attribute value to convert</td></tr></table></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SvgCanvas.isValidUnit"></a>isValidUnit</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>canvas.isValidUnit = function(</td><tdclass=PParameternowrap>attr,</td></tr><tr><td></td><tdclass=PParameternowrap>val</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Check if an attribute’s value is in a valid format</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>attr</td><tdclass=CDLDescription>String with the name of the attribute associated with the value</td></tr><tr><tdclass=CDLEntry>val</td><tdclass=CDLDescription>String with the attribute value to check</td></tr></table></div></div></div>
<divclass="CGroup"><divclass=CTopic><h3class=CTitle><aname="SvgCanvas.Undo/Redo_history_management"></a>Undo/<wbr>Redo history management</h3></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SvgCanvas.ChangeElementCommand"></a>ChangeElementCommand</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>var ChangeElementCommand = this.undoCmd.changeElement = function(</td><tdclass=PParameternowrap>elem,</td></tr><tr><td></td><tdclass=PParameternowrap>attrs,</td></tr><tr><td></td><tdclass=PParameternowrap>text</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>History command to make a change to an element. Usually an attribute change, but can also be textcontent.</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>elem</td><tdclass=CDLDescription>The DOM element that was changed</td></tr><tr><tdclass=CDLEntry>attrs</td><tdclass=CDLDescription>An object with the attributes to be changed and the values they had <b>before</b> the change</td></tr><tr><tdclass=CDLEntry>text</td><tdclass=CDLDescription>An optional string visible to user related to this change</td></tr></table></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SvgCanvas.ChangeElementCommand.apply"></a>ChangeElementCommand.<wbr>apply</h3><divclass=CBody><p>Performs the stored change action</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SvgCanvas.ChangeElementCommand.unapply"></a>ChangeElementCommand.<wbr>unapply</h3><divclass=CBody><p>Reverses the stored change action</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SvgCanvas.ChangeElementCommand.elements"></a>ChangeElementCommand.<wbr>elements</h3><divclass=CBody><p>Returns array with element associated with this command</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SvgCanvas.InsertElementCommand"></a>InsertElementCommand</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>var InsertElementCommand = this.undoCmd.insertElement = function(</td><tdclass=PParameternowrap>elem,</td></tr><tr><td></td><tdclass=PParameternowrap>text</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>History command for an element that was added to the DOM</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>elem</td><tdclass=CDLDescription>The newly added DOM element</td></tr><tr><tdclass=CDLEntry>text</td><tdclass=CDLDescription>An optional string visible to user related to this change</td></tr></table></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SvgCanvas.InsertElementCommand.apply"></a>InsertElementCommand.<wbr>apply</h3><divclass=CBody><p>Re-Inserts the new element</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SvgCanvas.InsertElementCommand.unapply"></a>InsertElementCommand.<wbr>unapply</h3><divclass=CBody><p>Removes the element</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SvgCanvas.InsertElementCommand.elements"></a>InsertElementCommand.<wbr>elements</h3><divclass=CBody><p>Returns array with element associated with this command</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SvgCanvas.RemoveElementCommand"></a>RemoveElementCommand</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>var RemoveElementCommand = this.undoCmd.removeElement = function(</td><tdclass=PParameternowrap>elem,</td></tr><tr><td></td><tdclass=PParameternowrap>parent,</td></tr><tr><td></td><tdclass=PParameternowrap>text</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>History command for an element removed from the DOM</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>elem</td><tdclass=CDLDescription>The removed DOM element</td></tr><tr><tdclass=CDLEntry>parent</td><tdclass=CDLDescription>The DOM element’s parent</td></tr><tr><tdclass=CDLEntry>text</td><tdclass=CDLDescription>An optional string visible to user related to this change</td></tr></table></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SvgCanvas.RemoveElementCommand.apply"></a>RemoveElementCommand.<wbr>apply</h3><divclass=CBody><p>Re-removes the new element</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SvgCanvas.RemoveElementCommand.unapply"></a>RemoveElementCommand.<wbr>unapply</h3><divclass=CBody><p>Re-adds the new element</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SvgCanvas.RemoveElementCommand.elements"></a>RemoveElementCommand.<wbr>elements</h3><divclass=CBody><p>Returns array with element associated with this command</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SvgCanvas.MoveElementCommand"></a>MoveElementCommand</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>var MoveElementCommand = this.undoCmd.moveElement = function(</td><tdclass=PParameternowrap>elem,</td></tr><tr><td></td><tdclass=PParameternowrap>oldNextSibling,</td></tr><tr><td></td><tdclass=PParameternowrap>oldParent,</td></tr><tr><td></td><tdclass=PParameternowrap>text</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>History command for an element that had its DOM position changed</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>elem</td><tdclass=CDLDescription>The DOM element that was moved</td></tr><tr><tdclass=CDLEntry>oldNextSibling</td><tdclass=CDLDescription>The element’s next sibling before it was moved</td></tr><tr><tdclass=CDLEntry>oldParent</td><tdclass=CDLDescription>The element’s parent before it was moved</td></tr><tr><tdclass=CDLEntry>text</td><tdclass=CDLDescription>An optional string visible to user related to this change</td></tr></table></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SvgCanvas.MoveElementCommand.unapply"></a>MoveElementCommand.<wbr>unapply</h3><divclass=CBody><p>Re-positions the element</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SvgCanvas.MoveElementCommand.unapply"></a>MoveElementCommand.<wbr>unapply</h3><divclass=CBody><p>Positions the element back to its original location</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SvgCanvas.MoveElementCommand.elements"></a>MoveElementCommand.<wbr>elements</h3><divclass=CBody><p>Returns array with element associated with this command</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SvgCanvas.BatchCommand"></a>BatchCommand</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>var BatchCommand = this.undoCmd.batch = function(</td><tdclass=PParameternowrap>text</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>History command that can contain/execute multiple other commands</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>text</td><tdclass=CDLDescription>An optional string visible to user related to this change</td></tr></table></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SvgCanvas.BatchCommand.apply"></a>BatchCommand.<wbr>apply</h3><divclass=CBody><p>Runs “apply” on all subcommands</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SvgCanvas.BatchCommand.unapply"></a>BatchCommand.<wbr>unapply</h3><divclass=CBody><p>Runs “unapply” on all subcommands</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SvgCanvas.BatchCommand.elements"></a>BatchCommand.<wbr>elements</h3><divclass=CBody><p>Iterate through all our subcommands and returns all the elements we are changing</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SvgCanvas.BatchCommand.addSubCommand"></a>BatchCommand.<wbr>addSubCommand</h3><divclass=CBody><p>Adds a given command to the history stack</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>cmd</td><tdclass=CDLDescription>The undo command object to add</td></tr></table></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SvgCanvas.BatchCommand.isEmpty"></a>BatchCommand.<wbr>isEmpty</h3><divclass=CBody><p>Returns a boolean indicating whether or not the batch command is empty</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SvgCanvas.resetUndoStack"></a>resetUndoStack</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td>resetUndoStack = function()</td></tr></table></blockquote><p>Resets the undo stack, effectively clearing the undo/redo history</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SvgCanvas.undoMgr.getUndoStackSize"></a>undoMgr.<wbr>getUndoStackSize</h3><divclass=CBody><h4class=CHeading>Returns</h4><p>Integer with the current size of the undo history stack</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SvgCanvas.undoMgr.getRedoStackSize"></a>undoMgr.<wbr>getRedoStackSize</h3><divclass=CBody><h4class=CHeading>Returns</h4><p>Integer with the current size of the redo history stack</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SvgCanvas.undoMgr.getNextUndoCommandText"></a>undoMgr.<wbr>getNextUndoCommandText</h3><divclass=CBody><h4class=CHeading>Returns</h4><p>String associated with the next undo command</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SvgCanvas.undoMgr.getNextRedoCommandText"></a>undoMgr.<wbr>getNextRedoCommandText</h3><divclass=CBody><h4class=CHeading>Returns</h4><p>String associated with the next redo command</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SvgCanvas.undoMgr.undo"></a>undoMgr.undo</h3><divclass=CBody><p>Performs an undo step</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SvgCanvas.undoMgr.redo"></a>undoMgr.redo</h3><divclass=CBody><p>Performs a redo step</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SvgCanvas.addCommandToHistory"></a>addCommandToHistory</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>addCommandToHistory = c.undoCmd.add = function(</td><tdclass=PParameternowrap>cmd</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Adds a command object to the undo history stack</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>cmd</td><tdclass=CDLDescription>The command object to add</td></tr></table></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SvgCanvas.beginUndoableChange"></a>beginUndoableChange</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>c.beginUndoableChange = function(</td><tdclass=PParameternowrap>attrName,</td></tr><tr><td></td><tdclass=PParameternowrap>elems</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>This function tells the canvas to remember the old values of the attrName attribute for each element sent in. The elements and values are stored on a stack, so the next call to finishUndoableChange() will pop the elements and old values off the stack, gets the current values from the DOM and uses all of these to construct the undo-able command.</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>attrName</td><tdclass=CDLDescription>The name of the attribute being changed</td></tr><tr><tdclass=CDLEntry>elems</td><tdclass=CDLDescription>Array of DOM elements being changed</td></tr></table></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SvgCanvas.finishUndoableChange"></a>finishUndoableChange</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td>c.finishUndoableChange = function()</td></tr></table></blockquote><p>This function returns a BatchCommand object which summarizes the change since beginUndoableChange was called. The command can then be added to the command history</p><h4class=CHeading>Returns</h4><p>Batch command object with resulting changes</p></div></div></div>
<divclass="CInterface"><divclass=CTopic><h2class=CTitle><aname="Selector"></a>Selector</h2><divclass=CBody><p>Private class for DOM element selection boxes</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>id</td><tdclass=CDLDescription>integer to internally indentify the selector</td></tr><tr><tdclass=CDLEntry>elem</td><tdclass=CDLDescription>DOM element associated with this selector</td></tr></table><!--START_ND_SUMMARY--><divclass=Summary><divclass=STitle>Summary</div><divclass=SBorder><tableborder=0cellspacing=0cellpadding=0class=STable><trclass="SGroup"><tdclass=SEntry><ahref="#Selector.Functions">Functions</a></td><tdclass=SDescription></td></tr><trclass="SFunction SIndent1 SMarked"><tdclass=SEntry><ahref="#Selector.Selector.reset">Selector.<wbr>reset</a></td><tdclass=SDescription>Used to reset the id and element that the selector is attached to</td></tr><trclass="SFunction SIndent1"><tdclass=SEntry><ahref="#Selector.Selector.showGrips">Selector.<wbr>showGrips</a></td><tdclass=SDescription>Show the resize grips of this selector</td></tr><trclass="SFunction SIndent1 SMarked"><tdclass=SEntry><ahref="#Selector.Selector.updateGripCursors">Selector.<wbr>updateGripCursors</a></td><tdclass=SDescription>Updates cursors for corner grips on rotation so arrows point the right way</td></tr><trclass="SFunction SIndent1"><tdclass=SEntry><ahref="#Selector.Selector.resize">Selector.<wbr>resize</a></td><tdclass=SDescription>Updates the selector to match the element’s size</td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="Selector.Selector.reset"></a>Selector.<wbr>reset</h3><divclass=CBody><p>Used to reset the id and element that the selector is attached to</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>e</td><tdclass=CDLDescription>DOM element associated with this selector</td></tr></table></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="Selector.Selector.showGrips"></a>Selector.<wbr>showGrips</h3><divclass=CBody><p>Show the resize grips of this selector</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>show</td><tdclass=CDLDescription>boolean indicating whether grips should be shown or not</td></tr></table></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="Selector.Selector.updateGripCursors"></a>Selector.<wbr>updateGripCursors</h3><divclass=CBody><p>Updates cursors for corner grips on rotation so arrows point the right way</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>angle</td><tdclass=CDLDescription>Float indicating current rotation angle in degrees</td></tr></table></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="Selector.Selector.resize"></a>Selector.<wbr>resize</h3><divclass=CBody><p>Updates the selector to match the element’s size</p></div></div></div>
<divclass="CInterface"><divclass=CTopic><h2class=CTitle><aname="SelectorManager"></a>SelectorManager</h2><divclass=CBody><p>Public class to manage all selector objects (selection boxes)</p><!--START_ND_SUMMARY--><divclass=Summary><divclass=STitle>Summary</div><divclass=SBorder><tableborder=0cellspacing=0cellpadding=0class=STable><trclass="SFunction"><tdclass=SEntry><ahref="#SelectorManager.SelectorManager.initGroup">SelectorManager.<wbr>initGroup</a></td><tdclass=SDescription>Resets the parent selector group element</td></tr><trclass="SFunction SMarked"><tdclass=SEntry><ahref="#SelectorManager.SelectorManager.requestSelector">SelectorManager.<wbr>requestSelector</a></td><tdclass=SDescription>Returns the selector based on the given element</td></tr><trclass="SFunction"><tdclass=SEntry><ahref="#SelectorManager.SelectorManager.releaseSelector">SelectorManager.<wbr>releaseSelector</a></td><tdclass=SDescription>Removes the selector of the given element (hides selection box)</td></tr><trclass="SFunction SMarked"><tdclass=SEntry><ahref="#SelectorManager.SelectorManager.getRubberBandBox">SelectorManager.<wbr>getRubberBandBox</a></td><tdclass=SDescription>Returns the rubberBandBox DOM element. </td></tr><trclass="SGroup"><tdclass=SEntry><ahref="#SelectorManager.Helper_functions">Helper functions</a></td><tdclass=SDescription></td></tr><trclass="SFunction SIndent1 SMarked"><tdclass=SEntry><ahref="#SelectorManager.walkTree"id=link75onMouseOver="ShowTip(event, 'tt15', 'link75')"onMouseOut="HideTip('tt15')">walkTree</a></td><tdclass=SDescription>Walks the tree and executes the callback on each element in a top-down fashion</td></tr><trclass="SFunction SIndent1"><tdclass=SEntry><ahref="#SelectorManager.walkTreePost"id=link76onMouseOver="ShowTip(event, 'tt16', 'link76')"onMouseOut="HideTip('tt16')">walkTreePost</a></td><tdclass=SDescription>Walks the tree and executes the callback on each element in a depth-first fashion</td></tr><trclass="SFunction SIndent1 SMarked"><tdclass=SEntry><ahref="#SelectorManager.assignAttributes"id=link77onMouseOver="ShowTip(event, 'tt17', 'link77')"onMouseOut="HideTip('tt17')">assignAttributes</a></td><tdclass=SDescription>Assigns multiple attributes to an element.</td></tr><trclass="SFunction SIndent1"><tdclass=SEntry><ahref="#SelectorManager.cleanupElement"id=link78onMouseOver="ShowTip(event, 'tt18', 'link78')"onMouseOut="HideTip('tt18')">cleanupElement</a></td><tdclass=SDescription>Remove unneeded (default) attributes, makes resulting SVG smaller</td></tr><trclass="SFunction SIndent1 SMarked"><tdclass=SEntry><ahref="#SelectorManager.addSvgElementFromJson"id=link79onMouseOver="ShowTip(event, 'tt19', 'link79')"onMouseOut="HideTip('tt19')">addSvgElementFromJson</a></td><tdclass=SDescription>Create a new SVG element based on the given object keys/values and add it to the current layer The element will be ran through cleanupElement before being returned</td></tr><trclass="SFunction SIndent1"><tdclass=SEntry><ahref="#SelectorManager.shortFloat"id=link80onMouseOver="ShowTip(event, 'tt20', 'link80')"onMouseOut="HideTip('tt20')">shortFloat</a></td><tdclass=SDescription>Rounds a given value to a float with number of digits defined in save_options</td></tr><trclass="SFunction SIndent1 SMarked"><tdclass=SEntry><ahref="#SelectorManager.getId"id=link81onMouseOver="ShowTip(event, 'tt21', 'link81')"onMouseOut="HideTip('tt21')">getId</a></td><tdclass=SDescription>Returns the last created DOM element ID string</td></tr><trclass="SFunction SIndent1"><tdclass=SEntry><ahref="#SelectorManager.getNextId"id=link82onMouseOver="ShowTip(event, 'tt22', 'link82')"onMouseOut="HideTip('tt22')">getNextId</a></td><tdclass=SDescription>Creates and returns a unique ID string for a DOM element</td></tr><trclass="SFunction SIndent1 SMarked"><tdclass=SEntry><ahref="#SelectorManager.bind"id=link83onMouseOver="ShowTip(event, 'tt23', 'link83')"onMouseOut="HideTip('tt23')">bind</a></td><tdclass=SDescription>Attaches a callback function to an eve
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SelectorManager.SelectorManager.initGroup"></a>SelectorManager.<wbr>initGroup</h3><divclass=CBody><p>Resets the parent selector group element</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SelectorManager.SelectorManager.requestSelector"></a>SelectorManager.<wbr>requestSelector</h3><divclass=CBody><p>Returns the selector based on the given element</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>elem</td><tdclass=CDLDescription>DOM element to get the selector for</td></tr></table></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SelectorManager.SelectorManager.releaseSelector"></a>SelectorManager.<wbr>releaseSelector</h3><divclass=CBody><p>Removes the selector of the given element (hides selection box)</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>elem</td><tdclass=CDLDescription>DOM element to remove the selector for</td></tr></table></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SelectorManager.SelectorManager.getRubberBandBox"></a>SelectorManager.<wbr>getRubberBandBox</h3><divclass=CBody><p>Returns the rubberBandBox DOM element. This is the rectangle drawn by the user for selecting/zooming</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SelectorManager.walkTree"></a>walkTree</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>function walkTree(</td><tdclass=PParameternowrap>elem,</td></tr><tr><td></td><tdclass=PParameternowrap>cbFn</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Walks the tree and executes the callback on each element in a top-down fashion</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>elem</td><tdclass=CDLDescription>DOM element to traverse</td></tr><tr><tdclass=CDLEntry>cbFn</td><tdclass=CDLDescription>Callback function to run on each element</td></tr></table></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SelectorManager.walkTreePost"></a>walkTreePost</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>function walkTreePost(</td><tdclass=PParameternowrap>elem,</td></tr><tr><td></td><tdclass=PParameternowrap>cbFn</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Walks the tree and executes the callback on each element in a depth-first fashion</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>elem</td><tdclass=CDLDescription>DOM element to traverse</td></tr><tr><tdclass=CDLEntry>cbFn</td><tdclass=CDLDescription>Callback function to run on each element</td></tr></table></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SelectorManager.assignAttributes"></a>assignAttributes</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>var assignAttributes = this.assignAttributes = function(</td><tdclass=PParameternowrap>node,</td></tr><tr><td></td><tdclass=PParameternowrap>attrs,</td></tr><tr><td></td><tdclass=PParameternowrap>suspendLength,</td></tr><tr><td></td><tdclass=PParameternowrap>unitCheck</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Assigns multiple attributes to an element.</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>node</td><tdclass=CDLDescription>DOM element to apply new attribute values to</td></tr><tr><tdclass=CDLEntry>attrs</td><tdclass=CDLDescription>Object with attribute keys/values</td></tr><tr><tdclass=CDLEntry>suspendLength</td><tdclass=CDLDescription>Optional integer of milliseconds to suspend redraw</td></tr><tr><tdclass=CDLEntry>unitCheck</td><tdclass=CDLDescription>Boolean to indicate the need to use setUnitAttr</td></tr></table></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SelectorManager.cleanupElement"></a>cleanupElement</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>var cleanupElement = this.cleanupElement = function(</td><tdclass=PParameternowrap>element</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Remove unneeded (default) attributes, makes resulting SVG smaller</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>element</td><tdclass=CDLDescription>DOM element to clean up</td></tr></table></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SelectorManager.addSvgElementFromJson"></a>addSvgElementFromJson</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>var addSvgElementFromJson = this.addSvgElementFromJson = function(</td><tdclass=PParameternowrap>data</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Create a new SVG element based on the given object keys/values and add it to the current layer The element will be ran through cleanupElement before being returned</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>data</td><tdclass=CDLDescription>Object with the following keys/values:</td></tr></table><ul><li>element - DOM element to create</li><li>attr - Object with attributes/values to assign to the new element</li><li>curStyles - Boolean indicating that current style attributes should be applied first</li></ul><p>Returns: The new element</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SelectorManager.shortFloat"></a>shortFloat</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>var shortFloat = function(</td><tdclass=PParameternowrap>val</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Rounds a given value to a float with number of digits defined in save_options</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>val</td><tdclass=CDLDescription>The value as a String, Number or Array of two numbers to be rounded</td></tr></table><h4class=CHeading>Returns</h4><p>If a string/number was given, returns a Float. If an array, return a string with comma-seperated floats</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SelectorManager.getId"></a>getId</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td>getId = c.getId = function()</td></tr></table></blockquote><p>Returns the last created DOM element ID string</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SelectorManager.getNextId"></a>getNextId</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td>getNextId = c.getNextId = function()</td></tr></table></blockquote><p>Creates and returns a unique ID string for a DOM element</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SelectorManager.bind"></a>bind</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>c.bind = function(</td><tdclass=PParameternowrap>event,</td></tr><tr><td></td><tdclass=PParameternowrap>f</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Attaches a callback function to an event</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>event</td><tdclass=CDLDescription>String indicating the name of the event</td></tr><tr><tdclass=CDLEntry>f</td><tdclass=CDLDescription>The callback function to bind to the event</td></tr></table><h4class=CHeading>Return</h4><p>The previous event</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SelectorManager.setIdPrefix"></a>setIdPrefix</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>c.setIdPrefix = function(</td><tdclass=PParameternowrap>p</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Changes the ID prefix to the given value</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>p</td><tdclass=CDLDescription>String with the new prefix</td></tr></table></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SelectorManager.sanitizeSvg"></a>sanitizeSvg</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>var sanitizeSvg = this.sanitizeSvg = function(</td><tdclass=PParameternowrap>node</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Sanitizes the input node and its children It only keeps what is allowed from our whitelist defined above</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>node</td><tdclass=CDLDescription>The DOM element to be checked, will also check its children</td></tr></table></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SelectorManager.getUrlFromAttr"></a>getUrlFromAttr</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>var getUrlFromAttr = this.getUrlFromAttr = function(</td><tdclass=PParameternowrap>attrVal</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Extracts the URL from the url(...) syntax of some attributes. Three variants:</p><ul><li><circle fill=”url(someFile.svg#foo)” /></li><li><circle fill=”url(‘someFile.svg#foo’)” /></li><li><circle fill=’url(“someFile.svg#foo”)’ /></li></ul><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>attrVal</td><tdclass=CDLDescription>The attribute value as a string</td></tr></table><h4class=CHeading>Returns</h4><p>String with just the URL, like someFile.svg#foo</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SelectorManager.recalculateAllSelectedDimensions"></a>recalculateAllSelectedDimensions</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td>var recalculateAllSelectedDimensions = this.recalculateAllSelectedDimensions = function()</td></tr></table></blockquote><p>Runs recalculateDimensions on the selected elements, adding the changes to a single batch command</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SelectorManager.remapElement"></a>remapElement</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>var remapElement = this.remapElement = function(</td><tdclass=PParameternowrap>selected,</td></tr><tr><td></td><tdclass=PParameternowrap>changes,</td></tr><tr><td></td><tdclass=PParameternowrap>m</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Applies coordinate changes to an element based on the given matrix</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>selected</td><tdclass=CDLDescription>DOM element to be changed</td></tr><tr><tdclass=CDLEntry>changes</td><tdclass=CDLDescription>Object with changes to be remapped</td></tr><tr><tdclass=CDLEntry>m</td><tdclass=CDLDescription>Matrix object to use for remapping coordinates</td></tr></table></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SelectorManager.recalculateDimensions"></a>recalculateDimensions</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>var recalculateDimensions = this.recalculateDimensions = function(</td><tdclass=PParameternowrap>selected</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Decides the course of action based on the element’s transform list</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>selected</td><tdclass=CDLDescription>The DOM element to recalculate</td></tr></table><h4class=CHeading>Returns</h4><p>Undo command object with the resulting change</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SelectorManager.transformPoint"></a>transformPoint</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>var transformPoint = function(</td><tdclass=PParameternowrap>x,</td></tr><tr><td></td><tdclass=PParameternowrap>y,</td></tr><tr><td></td><tdclass=PParameternowrap>m</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>A (hopefully) quicker function to transform a point by a matrix (this function avoids any DOM calls and just does the math)</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>x</td><tdclass=CDLDescription>Float representing the x coordinate</td></tr><tr><tdclass=CDLEntry>y</td><tdclass=CDLDescription>Float representing the y coordinate</td></tr><tr><tdclass=CDLEntry>m</td><tdclass=CDLDescription>Matrix object to transform the point with Returns a x,y object representing the transformed point</td></tr></table></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SelectorManager.isIdentity"></a>isIdentity</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>var isIdentity = function(</td><tdclass=PParameternowrap>m</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Helper function to check if the matrix performs no actual transform (i.e. exists for identity purposes)</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>m</td><tdclass=CDLDescription>The matrix object to check</td></tr></table><h4class=CHeading>Returns</h4><p>Boolean indicating whether or not the matrix is 1,0,0,1,0,0</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SelectorManager.matrixMultiply"></a>matrixMultiply</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td>var matrixMultiply = this.matrixMultiply = function()</td></tr></table></blockquote><p>This function tries to return a SVGMatrix that is the multiplication m1*m2. We also round to zero when it’s near zero</p><h4class=CHeading>Parameters</h4><blockquote><pre>= 2 Matrix objects to multiply</pre></blockquote><h4class=CHeading>Returns</h4><p>The matrix object resulting from the calculation</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SelectorManager.transformListToTransform"></a>transformListToTransform</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>var transformListToTransform = this.transformListToTransform = function(</td><tdclass=PParameternowrap>tlist,</td></tr><tr><td></td><tdclass=PParameternowrap>min,</td></tr><tr><td></td><tdclass=PParameternowrap>max</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>This returns a single matrix Transform for a given Transform List (this is the equivalent of SVGTransformList.consolidate() but unlike that method, this one does not modify the actual SVGTransformList) This function is very liberal with its min,max arguments</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>tlist</td><tdclass=CDLDescription>The transformlist object</td></tr><tr><tdclass=CDLEntry>min</td><tdclass=CDLDescription>Optional integer indicating start transform position</td></tr><tr><tdclass=CDLEntry>max</td><tdclass=CDLDescription>Optional integer indicating end transform position</td></tr></table><h4class=CHeading>Returns</h4><p>A single matrix transform object</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SelectorManager.hasMatrixTransform"></a>hasMatrixTransform</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>var hasMatrixTransform = this.hasMatrixTransform = function(</td><tdclass=PParameternowrap>tlist</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>See if the given transformlist includes a non-indentity matrix transform</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>tlist</td><tdclass=CDLDescription>The transformlist to check</td></tr></table><h4class=CHeading>Returns</h4><p>Boolean on whether or not a matrix transform was found</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SelectorManager.getMatrix"></a>getMatrix</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>var getMatrix = function(</td><tdclass=PParameternowrap>elem</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Get the matrix object for a given element</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>elem</td><tdclass=CDLDescription>The DOM element to check</td></tr></table><h4class=CHeading>Returns</h4><p>The matrix object associated with the element’s transformlist</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SelectorManager.transformBox"></a>transformBox</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>var transformBox = this.transformBox = function(</td><tdclass=PParameternowrap>l,</td></tr><tr><td></td><tdclass=PParameternowrap>t,</td></tr><tr><td></td><tdclass=PParameternowrap>w,</td></tr><tr><td></td><tdclass=PParameternowrap>h,</td></tr><tr><td></td><tdclass=PParameternowrap>m</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Transforms a rectangle based on the given matrix</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>l</td><tdclass=CDLDescription>Float with the box’s left coordinate</td></tr><tr><tdclass=CDLEntry>t</td><tdclass=CDLDescription>Float with the box’s top coordinate</td></tr><tr><tdclass=CDLEntry>w</td><tdclass=CDLDescription>Float with the box width</td></tr><tr><tdclass=CDLEntry>h</td><tdclass=CDLDescription>Float with the box height</td></tr><tr><tdclass=CDLEntry>m</td><tdclass=CDLDescription>Matrix object to transform the box by</td></tr></table><h4class=CHeading>Returns</h4><p>An object with the following values:</p><ul><li>tl - The top left coordinate (x,y object)</li><li>tr - The top right coordinate (x,y object)</li><li>bl - The bottom left coordinate (x,y object)</li><li>br - The bottom right coordinate (x,y object)</li><li>aabox - Object with the following values:</li><li>Float with the axis-aligned x coordinate</li><li>Float with the axis-aligned y coordinate</li><li>Float with the axis-aligned width coordinate</li><li>Float with the axis-aligned height coordinate</li></ul></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SelectorManager.clearSelection"></a>clearSelection</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>this.clearSelection = function(</td><tdclass=PParameternowrap>noCall</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Clears the selection. The ‘selected’ handler is then called. Parameters: noCall - Optional boolean that when true does not call the “selected” handler</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SelectorManager.addToSelection"></a>addToSelection</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>this.addToSelection = function(</td><tdclass=PParameternowrap>elemsToAdd,</td></tr><tr><td></td><tdclass=PParameternowrap>showGrips</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Adds a list of elements to the selection. The ‘selected’ handler is then called.</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>elemsToAdd</td><tdclass=CDLDescription>an array of DOM elements to add to the selection</td></tr><tr><tdclass=CDLEntry>showGrips</td><tdclass=CDLDescription>a boolean flag indicating whether the resize grips should be shown</td></tr></table></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SelectorManager.removeFromSelection"></a>removeFromSelection</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>this.removeFromSelection = function(</td><tdclass=PParameternowrap>elemsToRemove</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Removes elements from the selection.</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>elemsToRemove</td><tdclass=CDLDescription>an array of elements to remove from selection</td></tr></table></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SelectorManager.selectAllInCurrentLayer"></a>selectAllInCurrentLayer</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td>this.selectAllInCurrentLayer = function()</td></tr></table></blockquote><p>Clears the selection, then adds all elements in the current layer to the selection. This function then fires the selected event.</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SelectorManager.smoothControlPoints"></a>smoothControlPoints</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>var smoothControlPoints = this.smoothControlPoints = function(</td><tdclass=PParameternowrap>ct1,</td></tr><tr><td></td><tdclass=PParameternowrap>ct2,</td></tr><tr><td></td><tdclass=PParameternowrap>pt</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Takes three points and creates a smoother line based on them</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>ct1</td><tdclass=CDLDescription>Object with x and y values (first control point)</td></tr><tr><tdclass=CDLEntry>ct2</td><tdclass=CDLDescription>Object with x and y values (second control point)</td></tr><tr><tdclass=CDLEntry>pt</td><tdclass=CDLDescription>Object with x and y values (third point)</td></tr></table><h4class=CHeading>Returns</h4><p>Array of two “smoothed” point objects</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="SelectorManager.getMouseTarget"></a>getMouseTarget</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>var getMouseTarget = this.getMouseTarget = function(</td><tdclass=PParameternowrap>evt</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Gets the desired element from a mouse event</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>evt</td><tdclass=CDLDescription>Event object from the mouse event</td></tr></table><h4class=CHeading>Returns</h4><p>DOM element we want</p></div></div></div>
<divclass="CInterface"><divclass=CTopic><h2class=CTitle><aname="textActions"></a>textActions</h2><divclass=CBody><p>Functions relating to editing text elements</p></div></div></div>
<divclass="CInterface"><divclass=CTopic><h2class=CTitle><aname="pathActions"></a>pathActions</h2><divclass=CBody><p>Functions relating to editing path elements</p><!--START_ND_SUMMARY--><divclass=Summary><divclass=STitle>Summary</div><divclass=SBorder><tableborder=0cellspacing=0cellpadding=0class=STable><trclass="SGroup"><tdclass=SEntry><ahref="#pathActions.Serialization">Serialization</a></td><tdclass=SDescription></td></tr><trclass="SFunction SIndent1 SMarked"><tdclass=SEntry><ahref="#pathActions.removeUnusedDefElems"id=link103onMouseOver="ShowTip(event, 'tt43', 'link103')"onMouseOut="HideTip('tt43')">removeUnusedDefElems</a></td><tdclass=SDescription>Looks at DOM elements inside the <defs> to see if they are referred to, removes them from the DOM if they are not.</td></tr><trclass="SFunction SIndent1"><tdclass=SEntry><ahref="#pathActions.svgCanvasToString"id=link104onMouseOver="ShowTip(event, 'tt44', 'link104')"onMouseOut="HideTip('tt44')">svgCanvasToString</a></td><tdclass=SDescription>Main function to set up the SVG content for output</td></tr><trclass="SFunction SIndent1 SMarked"><tdclass=SEntry><ahref="#pathActions.svgToString"id=link105onMouseOver="ShowTip(event, 'tt45', 'link105')"onMouseOut="HideTip('tt45')">svgToString</a></td><tdclass=SDescription>Sub function ran on each SVG element to convert it to a string as desired</td></tr><trclass="SFunction SIndent1"><tdclass=SEntry><ahref="#pathActions.embedImage"id=link106onMouseOver="ShowTip(event, 'tt46', 'link106')"onMouseOut="HideTip('tt46')">embedImage</a></td><tdclass=SDescription>Converts a given image file to a data URL when possible, then runs a given callback</td></tr><trclass="SFunction SIndent1 SMarked"><tdclass=SEntry><ahref="#pathActions.save"id=link107onMouseOver="ShowTip(event, 'tt47', 'link107')"onMouseOut="HideTip('tt47')">save</a></td><tdclass=SDescription>Serializes the current drawing into SVG XML text and returns it to the ‘saved’ handler. </td></tr><trclass="SFunction SIndent1"><tdclass=SEntry><ahref="#pathActions.rasterExport"id=link108onMouseOver="ShowTip(event, 'tt48', 'link108')"onMouseOut="HideTip('tt48')">rasterExport</a></td><tdclass=SDescription>Generates a PNG Data URL based on the current image, then calls “exported” with an object including the string and any issues found</td></tr><trclass="SFunction SIndent1 SMarked"><tdclass=SEntry><ahref="#pathActions.getSvgString"id=link109onMouseOver="ShowTip(event, 'tt49', 'link109')"onMouseOut="HideTip('tt49')">getSvgString</a></td><tdclass=SDescription>Returns the current drawing as raw SVG XML text.</td></tr><trclass="SFunction SIndent1"><tdclass=SEntry><ahref="#pathActions.setSvgString"id=link110onMouseOver="ShowTip(event, 'tt50', 'link110')"onMouseOut="HideTip('tt50')">setSvgString</a></td><tdclass=SDescription>This function sets the current drawing as the input SVG XML.</td></tr><trclass="SFunction SIndent1 SMarked"><tdclass=SEntry><ahref="#pathActions.importSvgString"id=link111onMouseOver="ShowTip(event, 'tt51', 'link111')"onMouseOut="HideTip('tt51')">importSvgString</a></td><tdclass=SDescription>This function imports the input SVG XML into the current layer in the drawing</td></tr><trclass="SGroup"><tdclass=SEntry><ahref="#pathActions.Layers">Layers</a></td><tdclass=SDescription></td></tr><trclass="SFunction SIndent1 SMarked"><tdclass=SEntry><ahref="#pathActions.identifyLayers"id=link112onMouseOver="ShowTip(event, 'tt52', 'link112')"onMouseOut="HideTip('tt52')">identifyLayers</a></td><tdclass=SDescription>Updates layer system</td></tr><trclass="SFunction SIndent1"><tdclass=SEntry><ahref="#pathActions.createLayer"id=link113onMouseOver="ShowTip(event, 'tt53', 'link113')"onMouseOut="HideTip('tt53')">createLayer</a></td><tdclass=SDescription>Creates a new top-level layer in the drawing with the given name, sets the current layer to it, and then clears the selection This function then calls the ‘changed’ handler. </td></tr><trclass="SFunctionSInden
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="pathActions.removeUnusedDefElems"></a>removeUnusedDefElems</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td>var removeUnusedDefElems = this.removeUnusedDefElems = function()</td></tr></table></blockquote><p>Looks at DOM elements inside the <defs> to see if they are referred to, removes them from the DOM if they are not.</p><h4class=CHeading>Returns</h4><p>The amount of elements that were removed</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="pathActions.svgCanvasToString"></a>svgCanvasToString</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td>var svgCanvasToString = this.svgCanvasToString = function()</td></tr></table></blockquote><p>Main function to set up the SVG content for output</p><h4class=CHeading>Returns</h4><p>String containing the SVG image for output</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="pathActions.svgToString"></a>svgToString</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>var svgToString = this.svgToString = function(</td><tdclass=PParameternowrap>elem,</td></tr><tr><td></td><tdclass=PParameternowrap>indent</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Sub function ran on each SVG element to convert it to a string as desired</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>elem</td><tdclass=CDLDescription>The SVG element to convert</td></tr><tr><tdclass=CDLEntry>indent</td><tdclass=CDLDescription>Integer with the amount of spaces to indent this tag</td></tr></table><h4class=CHeading>Returns</h4><p>String with the given element as an SVG tag</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="pathActions.embedImage"></a>embedImage</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>this.embedImage = function(</td><tdclass=PParameternowrap>val,</td></tr><tr><td></td><tdclass=PParameternowrap>callback</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Converts a given image file to a data URL when possible, then runs a given callback</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>val</td><tdclass=CDLDescription>String with the path/URL of the image</td></tr><tr><tdclass=CDLEntry>callback</td><tdclass=CDLDescription>Optional function to run when image data is found, supplies the result (data URL or false) as first parameter.</td></tr></table></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="pathActions.save"></a>save</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>this.save = function(</td><tdclass=PParameternowrap>opts</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Serializes the current drawing into SVG XML text and returns it to the ‘saved’ handler. This function also includes the XML prolog. Clients of the SvgCanvas bind their save function to the ‘saved’ event.</p><h4class=CHeading>Returns</h4><p>Nothing</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="pathActions.rasterExport"></a>rasterExport</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td>this.rasterExport = function()</td></tr></table></blockquote><p>Generates a PNG Data URL based on the current image, then calls “exported” with an object including the string and any issues found</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="pathActions.getSvgString"></a>getSvgString</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td>this.getSvgString = function()</td></tr></table></blockquote><p>Returns the current drawing as raw SVG XML text.</p><h4class=CHeading>Returns</h4><p>The current drawing as raw SVG XML text.</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="pathActions.setSvgString"></a>setSvgString</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>this.setSvgString = function(</td><tdclass=PParameternowrap>xmlString</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>This function sets the current drawing as the input SVG XML.</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>xmlString</td><tdclass=CDLDescription>The SVG as XML text.</td></tr></table><h4class=CHeading>Returns</h4><p>This function returns false if the set was unsuccessful, true otherwise.</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="pathActions.importSvgString"></a>importSvgString</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>this.importSvgString = function(</td><tdclass=PParameternowrap>xmlString</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>This function imports the input SVG XML into the current layer in the drawing</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>xmlString</td><tdclass=CDLDescription>The SVG as XML text.</td></tr></table><h4class=CHeading>Returns</h4><p>This function returns false if the import was unsuccessful, true otherwise. TODO:</p><ul><li>properly handle if namespace is introduced by imported content (must add to svgcontent and update all prefixes in the imported node)</li><li>properly handle recalculating dimensions, recalculateDimensions() doesn’t handle arbitrary transform lists, but makes some assumptions about how the transform list was obtained</li><li>import should happen in top-left of current zoomed viewport</li><li>create a new layer for the imported SVG</li></ul></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="pathActions.createLayer"></a>createLayer</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>this.createLayer = function(</td><tdclass=PParameternowrap>name</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Creates a new top-level layer in the drawing with the given name, sets the current layer to it, and then clears the selection This function then calls the ‘changed’ handler. This is an undoable action.</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>name</td><tdclass=CDLDescription>The given name</td></tr></table></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="pathActions.deleteCurrentLayer"></a>deleteCurrentLayer</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td>this.deleteCurrentLayer = function()</td></tr></table></blockquote><p>Deletes the current layer from the drawing and then clears the selection. This function then calls the ‘changed’ handler. This is an undoable action.</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="pathActions.getNumLayers"></a>getNumLayers</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td>this.getNumLayers = function()</td></tr></table></blockquote><p>Returns the number of layers in the current drawing.</p><h4class=CHeading>Returns</h4><p>The number of layers in the current drawing.</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="pathActions.getLayer"></a>getLayer</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>this.getLayer = function(</td><tdclass=PParameternowrap>i</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Returns the name of the ith layer. If the index is out of range, an empty string is returned.</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>i</td><tdclass=CDLDescription>the zero-based index of the layer you are querying.</td></tr></table><h4class=CHeading>Returns</h4><p>The name of the ith layer</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="pathActions.getCurrentLayer"></a>getCurrentLayer</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td>this.getCurrentLayer = function()</td></tr></table></blockquote><p>Returns the name of the currently selected layer. If an error occurs, an empty string is returned.</p><h4class=CHeading>Returns</h4><p>The name of the currently active layer.</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="pathActions.setCurrentLayer"></a>setCurrentLayer</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>this.setCurrentLayer = function(</td><tdclass=PParameternowrap>name</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Sets the current layer. If the name is not a valid layer name, then this function returns false. Otherwise it returns true. This is not an undo-able action.</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>name</td><tdclass=CDLDescription>the name of the layer you want to switch to.</td></tr></table><h4class=CHeading>Returns</h4><p>true if the current layer was switched, otherwise false</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="pathActions.renameCurrentLayer"></a>renameCurrentLayer</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>this.renameCurrentLayer = function(</td><tdclass=PParameternowrap>newname</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Renames the current layer. If the layer name is not valid (i.e. unique), then this function does nothing and returns false, otherwise it returns true. This is an undo-able action.</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>newname</td><tdclass=CDLDescription>the new name you want to give the current layer. This name must be unique among all layer names.</td></tr></table><h4class=CHeading>Returns</h4><p>true if the rename succeeded, false otherwise.</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="pathActions.setCurrentLayerPosition"></a>setCurrentLayerPosition</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>this.setCurrentLayerPosition = function(</td><tdclass=PParameternowrap>newpos</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Changes the position of the current layer to the new value. If the new index is not valid, this function does nothing and returns false, otherwise it returns true. This is an undo-able action.</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>newpos</td><tdclass=CDLDescription>The zero-based index of the new position of the layer. This should be between</td></tr><tr><tdclass=CDLEntry>0 and (number of layers</td><tdclass=CDLDescription>1)</td></tr></table><h4class=CHeading>Returns</h4><p>true if the current layer position was changed, false otherwise.</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="pathActions.getLayerVisibility"></a>getLayerVisibility</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>this.getLayerVisibility = function(</td><tdclass=PParameternowrap>layername</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Returns whether the layer is visible. If the layer name is not valid, then this function returns false.</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>layername</td><tdclass=CDLDescription>the name of the layer which you want to query.</td></tr></table><h4class=CHeading>Returns</h4><p>The visibility state of the layer, or false if the layer name was invalid.</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="pathActions.setLayerVisibility"></a>setLayerVisibility</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>this.setLayerVisibility = function(</td><tdclass=PParameternowrap>layername,</td></tr><tr><td></td><tdclass=PParameternowrap>bVisible</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Sets the visibility of the layer. If the layer name is not valid, this function return false, otherwise it returns true. This is an undo-able action.</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>layername</td><tdclass=CDLDescription>the name of the layer to change the visibility</td></tr><tr><tdclass=CDLEntry>bVisible</td><tdclass=CDLDescription>true/false, whether the layer should be visible</td></tr></table><h4class=CHeading>Returns</h4><p>true if the layer’s visibility was set, false otherwise</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="pathActions.moveSelectedToLayer"></a>moveSelectedToLayer</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>this.moveSelectedToLayer = function(</td><tdclass=PParameternowrap>layername</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Moves the selected elements to layername. If the name is not a valid layer name, then false is returned. Otherwise it returns true. This is an undo-able action.</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>layername</td><tdclass=CDLDescription>the name of the layer you want to which you want to move the selected elements</td></tr></table><h4class=CHeading>Returns</h4><p>true if the selected elements were moved to the layer, false otherwise.</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="pathActions.getLayerOpacity"></a>getLayerOpacity</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>this.getLayerOpacity = function(</td><tdclass=PParameternowrap>layername</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Returns the opacity of the given layer. If the input name is not a layer, null is returned.</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>layername</td><tdclass=CDLDescription>name of the layer on which to get the opacity</td></tr></table><h4class=CHeading>Returns</h4><p>The opacity value of the given layer. This will be a value between 0.0 and 1.0, or null if layername is not a valid layer</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="pathActions.setLayerOpacity"></a>setLayerOpacity</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>this.setLayerOpacity = function(</td><tdclass=PParameternowrap>layername,</td></tr><tr><td></td><tdclass=PParameternowrap>opacity</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Sets the opacity of the given layer. If the input name is not a layer, nothing happens. This is not an undo-able action. NOTE: this function exists solely to apply a highlighting/de-emphasis effect to a layer, when it is possible for a user to affect the opacity of a layer, we will need to allow this function to produce an undo-able action. If opacity is not a value between 0.0 and 1.0, then nothing happens.</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>layername</td><tdclass=CDLDescription>name of the layer on which to set the opacity</td></tr><tr><tdclass=CDLEntry>opacity</td><tdclass=CDLDescription>a float value in the range 0.0-1.0</td></tr></table></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="pathActions.clear"></a>clear</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td>this.clear = function()</td></tr></table></blockquote><p>Clears the current document. This is not an undoable action.</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="pathActions.getContentElem"></a>getContentElem</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td>this.getContentElem = function()</td></tr></table></blockquote><p>Returns the content DOM element</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="pathActions.getRootElem"></a>getRootElem</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td>this.getRootElem = function()</td></tr></table></blockquote><p>Returns the root DOM element</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="pathActions.getSelectedElems"></a>getSelectedElems</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td>this.getSelectedElems = function()</td></tr></table></blockquote><p>Returns the array with selected DOM elements</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="pathActions.getResolution"></a>getResolution</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td>this.getResolution = function()</td></tr></table></blockquote><p>Returns the current dimensions and zoom level in an object</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="pathActions.getDocumentTitle"></a>getDocumentTitle</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td>this.getDocumentTitle = function()</td></tr></table></blockquote><p>Returns the current document title or an empty string if not found</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="pathActions.setDocumentTitle"></a>setDocumentTitle</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>this.setDocumentTitle = function(</td><tdclass=PParameternowrap>newtitle</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Adds/updates a title element for the document with the given name. This is an undoable action</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>newtitle</td><tdclass=CDLDescription>String with the new title</td></tr></table></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="pathActions.convertToPath"></a>convertToPath</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>this.convertToPath = function(</td><tdclass=PParameternowrap>elem,</td></tr><tr><td></td><tdclass=PParameternowrap>getBBox</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote><p>Convert selected element to a path, or get the BBox of an element-as-path</p><h4class=CHeading>Parameters</h4><tableborder=0cellspacing=0cellpadding=0class=CDescriptionList><tr><tdclass=CDLEntry>elem</td><tdclass=CDLDescription>The DOM element to be converted</td></tr><tr><tdclass=CDLEntry>getBBox</td><tdclass=CDLDescription>Boolean on whether or not to only return the path’s BBox</td></tr></table><h4class=CHeading>Returns</h4><p>If the getBBox flag is true, the resulting path’s bounding box object. Otherwise the resulting path element is returned.</p></div></div></div>
<divclass="CFunction"><divclass=CTopic><h3class=CTitle><aname="pathActions.getVersion"></a>getVersion</h3><divclass=CBody><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td>this.getVersion = function()</td></tr></table></blockquote><p>Returns a string which describes the revision number of SvgCanvas.</p></div></div></div>
<divclass=CToolTipid="tt1"><divclass=CFunction><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>toXml = function(</td><tdclass=PParameternowrap>str</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote>Converts characters in a string to XML-friendly entities.</div></div><divclass=CToolTipid="tt2"><divclass=CFunction><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>fromXml = function(</td><tdclass=PParameternowrap>str</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote>Converts XML entities in a string to single characters. </div></div><divclass=CToolTipid="tt3"><divclass=CFunction><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>convertToNum = function(</td><tdclass=PParameternowrap>attr,</td></tr><tr><td></td><tdclass=PParameternowrap>val</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote>Converts given values to numbers. </div></div><divclass=CToolTipid="tt4"><divclass=CFunction><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>setUnitAttr = function(</td><tdclass=PParameternowrap>elem,</td></tr><tr><td></td><tdclass=PParameternowrap>attr,</td></tr><tr><td></td><tdclass=PParameternowrap>val</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote>Sets an element’s attribute based on the unit in its current value.</div></div><divclass=CToolTipid="tt5"><divclass=CFunction><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>canvas.isValidUnit = function(</td><tdclass=PParameternowrap>attr,</td></tr><tr><td></td><tdclass=PParameternowrap>val</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote>Check if an attribute’s value is in a valid format</div></div><divclass=CToolTipid="tt6"><divclass=CFunction><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>var ChangeElementCommand = this.undoCmd.changeElement = function(</td><tdclass=PParameternowrap>elem,</td></tr><tr><td></td><tdclass=PParameternowrap>attrs,</td></tr><tr><td></td><tdclass=PParameternowrap>text</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote>History command to make a change to an element. </div></div><divclass=CToolTipid="tt7"><divclass=CFunction><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>var InsertElementCommand = this.undoCmd.insertElement = function(</td><tdclass=PParameternowrap>elem,</td></tr><tr><td></td><tdclass=PParameternowrap>text</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote>History command for an element that was added to the DOM</div></div><divclass=CToolTipid="tt8"><divclass=CFunction><blockquote><tableborder=0cellspacing=0cellpadding=0class=Prototype><tr><td><tableborder=0cellspacing=0cellpadding=0><tr><tdclass=PBeforeParametersnowrap>var RemoveElementCommand = this.undoCmd.removeElement = function(</td><tdclass=PParameternowrap>elem,</td></tr><tr><td></td><tdclass=PParameternowrap>parent,</td></tr><tr><td></td><tdclass=PParameternowrap>text</td><tdclass=PAfterParametersnowrap>)</td></tr></table></td></tr></table></blockquote>History command for an element removed from the DOM</div></div><divclass=CToolTipid="tt9"><divclass=CFunct