More optimization/docs work

git-svn-id: http://svg-edit.googlecode.com/svn/trunk@1619 eee81c28-f429-11dd-99c0-75d572ba1ddd
master
Alexis Deveria 2010-06-29 20:43:44 +00:00
parent a9b2010b28
commit 3d351fa0c7
19 changed files with 553 additions and 357 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -77,11 +77,11 @@ var indexSectionsWithContent = {
"M": false,
"N": false,
"O": false,
"P": true,
"P": false,
"Q": false,
"R": false,
"S": true,
"T": true,
"T": false,
"U": false,
"V": false,
"W": false,

View File

@ -11,7 +11,7 @@ if (browserType) {document.write("<div class=" + browserType + ">");if (browserV
<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_ChangeElementCommand><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.ChangeElementCommand" target=_parent class=ISymbol>ChangeElementCommand</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_cleanupElement><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.cleanupElement" target=_parent class=ISymbol>cleanupElement</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_clear><div class=IEntry><a href="../files/svgcanvas-js.html#pathActions.clear" target=_parent class=ISymbol>clear</a>, <span class=IParent>pathActions</span></div></div><div class=SRResult id=SR_clearSelection><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.clearSelection" target=_parent class=ISymbol>clearSelection</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_convertToNum><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.convertToNum" target=_parent class=ISymbol>convertToNum</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_convertToPath><div class=IEntry><a href="../files/svgcanvas-js.html#pathActions.convertToPath" target=_parent class=ISymbol>convertToPath</a>, <span class=IParent>pathActions</span></div></div><div class=SRResult id=SR_createLayer><div class=IEntry><a href="../files/svgcanvas-js.html#pathActions.createLayer" target=_parent class=ISymbol>createLayer</a>, <span class=IParent>pathActions</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_ChangeElementCommand><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.ChangeElementCommand" target=_parent class=ISymbol>ChangeElementCommand</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_changeSelectedAttribute><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.changeSelectedAttribute" target=_parent class=ISymbol>changeSelectedAttribute</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_changeSelectedAttributeNoUndo><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.changeSelectedAttributeNoUndo" target=_parent class=ISymbol>changeSelectedAttributeNoUndo</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_cleanupElement><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.cleanupElement" target=_parent class=ISymbol>cleanupElement</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_clear><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.clear" target=_parent class=ISymbol>clear</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_clearSelection><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.clearSelection" target=_parent class=ISymbol>clearSelection</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_convertToNum><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.convertToNum" target=_parent class=ISymbol>convertToNum</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_convertToPath><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.convertToPath" target=_parent class=ISymbol>convertToPath</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_createLayer><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.createLayer" target=_parent class=ISymbol>createLayer</a>, <span class=IParent>SelectorManager</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults", "HTML");

View File

@ -11,7 +11,7 @@ if (browserType) {document.write("<div class=" + browserType + ">");if (browserV
<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_deleteCurrentLayer><div class=IEntry><a href="../files/svgcanvas-js.html#pathActions.deleteCurrentLayer" target=_parent class=ISymbol>deleteCurrentLayer</a>, <span class=IParent>pathActions</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_deleteCurrentLayer><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.deleteCurrentLayer" target=_parent class=ISymbol>deleteCurrentLayer</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_deleteSelectedElements><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.deleteSelectedElements" target=_parent class=ISymbol>deleteSelectedElements</a>, <span class=IParent>SelectorManager</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults", "HTML");

File diff suppressed because one or more lines are too long

View File

@ -11,7 +11,7 @@ if (browserType) {document.write("<div class=" + browserType + ">");if (browserV
<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_matrixMultiply><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.matrixMultiply" target=_parent class=ISymbol>matrixMultiply</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_MoveElementCommand><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.MoveElementCommand" target=_parent class=ISymbol>MoveElementCommand</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_moveSelectedToLayer><div class=IEntry><a href="../files/svgcanvas-js.html#pathActions.moveSelectedToLayer" target=_parent class=ISymbol>moveSelectedToLayer</a>, <span class=IParent>pathActions</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_matrixMultiply><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.matrixMultiply" target=_parent class=ISymbol>matrixMultiply</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_MoveElementCommand><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.MoveElementCommand" target=_parent class=ISymbol>MoveElementCommand</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_moveSelectedElements><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.moveSelectedElements" target=_parent class=ISymbol>moveSelectedElements</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_moveSelectedToLayer><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.moveSelectedToLayer" target=_parent class=ISymbol>moveSelectedToLayer</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_moveToBottomSelectedElement><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.moveToBottomSelectedElement" target=_parent class=ISymbol>moveToBottomSelectedElement</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_moveToTopSelectedElement><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.moveToTopSelectedElement" target=_parent class=ISymbol>moveToTopSelectedElement</a>, <span class=IParent>SelectorManager</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults", "HTML");

View File

@ -11,7 +11,7 @@ if (browserType) {document.write("<div class=" + browserType + ">");if (browserV
<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_rasterExport><div class=IEntry><a href="../files/svgcanvas-js.html#pathActions.rasterExport" target=_parent class=ISymbol>rasterExport</a>, <span class=IParent>pathActions</span></div></div><div class=SRResult id=SR_recalculateAllSelectedDimensions><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.recalculateAllSelectedDimensions" target=_parent class=ISymbol>recalculateAllSelectedDimensions</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_recalculateDimensions><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.recalculateDimensions" target=_parent class=ISymbol>recalculateDimensions</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_redo><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.undoMgr.redo" target=_parent class=ISymbol>redo</a>, <span class=IParent>SvgCanvas.<wbr>undoMgr</span></div></div><div class=SRResult id=SR_releaseSelector><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.SelectorManager.releaseSelector" target=_parent class=ISymbol>releaseSelector</a>, <span class=IParent>SelectorManager.<wbr>SelectorManager</span></div></div><div class=SRResult id=SR_remapElement><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.remapElement" target=_parent class=ISymbol>remapElement</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_RemoveElementCommand><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.RemoveElementCommand" target=_parent class=ISymbol>RemoveElementCommand</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_removeFromSelection><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.removeFromSelection" target=_parent class=ISymbol>removeFromSelection</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_removeUnusedDefElems><div class=IEntry><a href="../files/svgcanvas-js.html#pathActions.removeUnusedDefElems" target=_parent class=ISymbol>removeUnusedDefElems</a>, <span class=IParent>pathActions</span></div></div><div class=SRResult id=SR_renameCurrentLayer><div class=IEntry><a href="../files/svgcanvas-js.html#pathActions.renameCurrentLayer" target=_parent class=ISymbol>renameCurrentLayer</a>, <span class=IParent>pathActions</span></div></div><div class=SRResult id=SR_requestSelector><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.SelectorManager.requestSelector" target=_parent class=ISymbol>requestSelector</a>, <span class=IParent>SelectorManager.<wbr>SelectorManager</span></div></div><div class=SRResult id=SR_reset><div class=IEntry><a href="../files/svgcanvas-js.html#Selector.Selector.reset" target=_parent class=ISymbol>reset</a>, <span class=IParent>Selector.<wbr>Selector</span></div></div><div class=SRResult id=SR_resetUndoStack><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.resetUndoStack" target=_parent class=ISymbol>resetUndoStack</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_resize><div class=IEntry><a href="../files/svgcanvas-js.html#Selector.Selector.resize" target=_parent class=ISymbol>resize</a>, <span class=IParent>Selector.<wbr>Selector</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_rasterExport><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.rasterExport" target=_parent class=ISymbol>rasterExport</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_recalculateAllSelectedDimensions><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.recalculateAllSelectedDimensions" target=_parent class=ISymbol>recalculateAllSelectedDimensions</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_recalculateDimensions><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.recalculateDimensions" target=_parent class=ISymbol>recalculateDimensions</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_redo><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.undoMgr.redo" target=_parent class=ISymbol>redo</a>, <span class=IParent>SvgCanvas.<wbr>undoMgr</span></div></div><div class=SRResult id=SR_releaseSelector><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.SelectorManager.releaseSelector" target=_parent class=ISymbol>releaseSelector</a>, <span class=IParent>SelectorManager.<wbr>SelectorManager</span></div></div><div class=SRResult id=SR_remapElement><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.remapElement" target=_parent class=ISymbol>remapElement</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_RemoveElementCommand><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.RemoveElementCommand" target=_parent class=ISymbol>RemoveElementCommand</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_removeFromSelection><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.removeFromSelection" target=_parent class=ISymbol>removeFromSelection</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_removeUnusedDefElems><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.removeUnusedDefElems" target=_parent class=ISymbol>removeUnusedDefElems</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_renameCurrentLayer><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.renameCurrentLayer" target=_parent class=ISymbol>renameCurrentLayer</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_requestSelector><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.SelectorManager.requestSelector" target=_parent class=ISymbol>requestSelector</a>, <span class=IParent>SelectorManager.<wbr>SelectorManager</span></div></div><div class=SRResult id=SR_reset><div class=IEntry><a href="../files/svgcanvas-js.html#Selector.Selector.reset" target=_parent class=ISymbol>reset</a>, <span class=IParent>Selector.<wbr>Selector</span></div></div><div class=SRResult id=SR_resetUndoStack><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.resetUndoStack" target=_parent class=ISymbol>resetUndoStack</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_resize><div class=IEntry><a href="../files/svgcanvas-js.html#Selector.Selector.resize" target=_parent class=ISymbol>resize</a>, <span class=IParent>Selector.<wbr>Selector</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults", "HTML");

File diff suppressed because one or more lines are too long

View File

@ -11,7 +11,7 @@ if (browserType) {document.write("<div class=" + browserType + ">");if (browserV
<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_ChangeElementCommand><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.ChangeElementCommand" target=_parent class=ISymbol>ChangeElementCommand</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_cleanupElement><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.cleanupElement" target=_parent class=ISymbol>cleanupElement</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_clear><div class=IEntry><a href="../files/svgcanvas-js.html#pathActions.clear" target=_parent class=ISymbol>clear</a>, <span class=IParent>pathActions</span></div></div><div class=SRResult id=SR_clearSelection><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.clearSelection" target=_parent class=ISymbol>clearSelection</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_convertToNum><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.convertToNum" target=_parent class=ISymbol>convertToNum</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_convertToPath><div class=IEntry><a href="../files/svgcanvas-js.html#pathActions.convertToPath" target=_parent class=ISymbol>convertToPath</a>, <span class=IParent>pathActions</span></div></div><div class=SRResult id=SR_createLayer><div class=IEntry><a href="../files/svgcanvas-js.html#pathActions.createLayer" target=_parent class=ISymbol>createLayer</a>, <span class=IParent>pathActions</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_ChangeElementCommand><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.ChangeElementCommand" target=_parent class=ISymbol>ChangeElementCommand</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_changeSelectedAttribute><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.changeSelectedAttribute" target=_parent class=ISymbol>changeSelectedAttribute</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_changeSelectedAttributeNoUndo><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.changeSelectedAttributeNoUndo" target=_parent class=ISymbol>changeSelectedAttributeNoUndo</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_cleanupElement><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.cleanupElement" target=_parent class=ISymbol>cleanupElement</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_clear><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.clear" target=_parent class=ISymbol>clear</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_clearSelection><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.clearSelection" target=_parent class=ISymbol>clearSelection</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_convertToNum><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.convertToNum" target=_parent class=ISymbol>convertToNum</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_convertToPath><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.convertToPath" target=_parent class=ISymbol>convertToPath</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_createLayer><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.createLayer" target=_parent class=ISymbol>createLayer</a>, <span class=IParent>SelectorManager</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults", "HTML");

View File

@ -11,7 +11,7 @@ if (browserType) {document.write("<div class=" + browserType + ">");if (browserV
<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_deleteCurrentLayer><div class=IEntry><a href="../files/svgcanvas-js.html#pathActions.deleteCurrentLayer" target=_parent class=ISymbol>deleteCurrentLayer</a>, <span class=IParent>pathActions</span></div></div><div class=SRResult id=SR_Document_spcfunctions><div class=IEntry><a href="../files/svgcanvas-js.html#pathActions.Document_functions" target=_parent class=ISymbol>Document functions</a>, <span class=IParent>pathActions</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_deleteCurrentLayer><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.deleteCurrentLayer" target=_parent class=ISymbol>deleteCurrentLayer</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_deleteSelectedElements><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.deleteSelectedElements" target=_parent class=ISymbol>deleteSelectedElements</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_Document_spcfunctions><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.Document_functions" target=_parent class=ISymbol>Document functions</a>, <span class=IParent>SelectorManager</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults", "HTML");

View File

@ -11,7 +11,7 @@ if (browserType) {document.write("<div class=" + browserType + ">");if (browserV
<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_findDefs><div class=IEntry><a href="../files/svgcanvas-js.html#pathActions.findDefs" target=_parent class=ISymbol>findDefs</a>, <span class=IParent>pathActions</span></div></div><div class=SRResult id=SR_findDuplicateGradient><div class=IEntry><a href="../files/svgcanvas-js.html#pathActions.findDuplicateGradient" target=_parent class=ISymbol>findDuplicateGradient</a>, <span class=IParent>pathActions</span></div></div><div class=SRResult id=SR_finishUndoableChange><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.finishUndoableChange" target=_parent class=ISymbol>finishUndoableChange</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_fromXml><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.fromXml" target=_parent class=ISymbol>fromXml</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_Functions><div class=IEntry><a href="../files/svgcanvas-js.html#Selector.Functions" target=_parent class=ISymbol>Functions</a>, <span class=IParent>Selector</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_ffClone><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.ffClone" target=_parent class=ISymbol>ffClone</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_findDefs><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.findDefs" target=_parent class=ISymbol>findDefs</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_findDuplicateGradient><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.findDuplicateGradient" target=_parent class=ISymbol>findDuplicateGradient</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_finishUndoableChange><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.finishUndoableChange" target=_parent class=ISymbol>finishUndoableChange</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_fromXml><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.fromXml" target=_parent class=ISymbol>fromXml</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_Functions><div class=IEntry><a href="../files/svgcanvas-js.html#Selector.Functions" target=_parent class=ISymbol>Functions</a>, <span class=IParent>Selector</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults", "HTML");

File diff suppressed because one or more lines are too long

View File

@ -11,7 +11,7 @@ if (browserType) {document.write("<div class=" + browserType + ">");if (browserV
<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_Layers><div class=IEntry><a href="../files/svgcanvas-js.html#pathActions.Layers" target=_parent class=ISymbol>Layers</a>, <span class=IParent>pathActions</span></div></div><div class=SRResult id=SR_linkControlPoints><div class=IEntry><a href="../files/svgcanvas-js.html#pathActions.linkControlPoints" target=_parent class=ISymbol>linkControlPoints</a>, <span class=IParent>pathActions</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_Layers><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.Layers" target=_parent class=ISymbol>Layers</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_linkControlPoints><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.linkControlPoints" target=_parent class=ISymbol>linkControlPoints</a>, <span class=IParent>SelectorManager</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults", "HTML");

View File

@ -11,7 +11,7 @@ if (browserType) {document.write("<div class=" + browserType + ">");if (browserV
<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_matrixMultiply><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.matrixMultiply" target=_parent class=ISymbol>matrixMultiply</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_MoveElementCommand><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.MoveElementCommand" target=_parent class=ISymbol>MoveElementCommand</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_moveSelectedToLayer><div class=IEntry><a href="../files/svgcanvas-js.html#pathActions.moveSelectedToLayer" target=_parent class=ISymbol>moveSelectedToLayer</a>, <span class=IParent>pathActions</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_matrixMultiply><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.matrixMultiply" target=_parent class=ISymbol>matrixMultiply</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_MoveElementCommand><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.MoveElementCommand" target=_parent class=ISymbol>MoveElementCommand</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_moveSelectedElements><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.moveSelectedElements" target=_parent class=ISymbol>moveSelectedElements</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_moveSelectedToLayer><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.moveSelectedToLayer" target=_parent class=ISymbol>moveSelectedToLayer</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_moveToBottomSelectedElement><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.moveToBottomSelectedElement" target=_parent class=ISymbol>moveToBottomSelectedElement</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_moveToTopSelectedElement><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.moveToTopSelectedElement" target=_parent class=ISymbol>moveToTopSelectedElement</a>, <span class=IParent>SelectorManager</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults", "HTML");

View File

@ -11,7 +11,7 @@ if (browserType) {document.write("<div class=" + browserType + ">");if (browserV
<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_rasterExport><div class=IEntry><a href="../files/svgcanvas-js.html#pathActions.rasterExport" target=_parent class=ISymbol>rasterExport</a>, <span class=IParent>pathActions</span></div></div><div class=SRResult id=SR_recalculateAllSelectedDimensions><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.recalculateAllSelectedDimensions" target=_parent class=ISymbol>recalculateAllSelectedDimensions</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_recalculateDimensions><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.recalculateDimensions" target=_parent class=ISymbol>recalculateDimensions</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_redo><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.undoMgr.redo" target=_parent class=ISymbol>redo</a>, <span class=IParent>SvgCanvas.<wbr>undoMgr</span></div></div><div class=SRResult id=SR_releaseSelector><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.SelectorManager.releaseSelector" target=_parent class=ISymbol>releaseSelector</a>, <span class=IParent>SelectorManager.<wbr>SelectorManager</span></div></div><div class=SRResult id=SR_remapElement><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.remapElement" target=_parent class=ISymbol>remapElement</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_RemoveElementCommand><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.RemoveElementCommand" target=_parent class=ISymbol>RemoveElementCommand</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_removeFromSelection><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.removeFromSelection" target=_parent class=ISymbol>removeFromSelection</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_removeUnusedDefElems><div class=IEntry><a href="../files/svgcanvas-js.html#pathActions.removeUnusedDefElems" target=_parent class=ISymbol>removeUnusedDefElems</a>, <span class=IParent>pathActions</span></div></div><div class=SRResult id=SR_renameCurrentLayer><div class=IEntry><a href="../files/svgcanvas-js.html#pathActions.renameCurrentLayer" target=_parent class=ISymbol>renameCurrentLayer</a>, <span class=IParent>pathActions</span></div></div><div class=SRResult id=SR_requestSelector><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.SelectorManager.requestSelector" target=_parent class=ISymbol>requestSelector</a>, <span class=IParent>SelectorManager.<wbr>SelectorManager</span></div></div><div class=SRResult id=SR_reset><div class=IEntry><a href="../files/svgcanvas-js.html#Selector.Selector.reset" target=_parent class=ISymbol>reset</a>, <span class=IParent>Selector.<wbr>Selector</span></div></div><div class=SRResult id=SR_resetUndoStack><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.resetUndoStack" target=_parent class=ISymbol>resetUndoStack</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_resize><div class=IEntry><a href="../files/svgcanvas-js.html#Selector.Selector.resize" target=_parent class=ISymbol>resize</a>, <span class=IParent>Selector.<wbr>Selector</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_rasterExport><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.rasterExport" target=_parent class=ISymbol>rasterExport</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_recalculateAllSelectedDimensions><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.recalculateAllSelectedDimensions" target=_parent class=ISymbol>recalculateAllSelectedDimensions</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_recalculateDimensions><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.recalculateDimensions" target=_parent class=ISymbol>recalculateDimensions</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_redo><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.undoMgr.redo" target=_parent class=ISymbol>redo</a>, <span class=IParent>SvgCanvas.<wbr>undoMgr</span></div></div><div class=SRResult id=SR_releaseSelector><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.SelectorManager.releaseSelector" target=_parent class=ISymbol>releaseSelector</a>, <span class=IParent>SelectorManager.<wbr>SelectorManager</span></div></div><div class=SRResult id=SR_remapElement><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.remapElement" target=_parent class=ISymbol>remapElement</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_RemoveElementCommand><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.RemoveElementCommand" target=_parent class=ISymbol>RemoveElementCommand</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_removeFromSelection><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.removeFromSelection" target=_parent class=ISymbol>removeFromSelection</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_removeUnusedDefElems><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.removeUnusedDefElems" target=_parent class=ISymbol>removeUnusedDefElems</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_renameCurrentLayer><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.renameCurrentLayer" target=_parent class=ISymbol>renameCurrentLayer</a>, <span class=IParent>SelectorManager</span></div></div><div class=SRResult id=SR_requestSelector><div class=IEntry><a href="../files/svgcanvas-js.html#SelectorManager.SelectorManager.requestSelector" target=_parent class=ISymbol>requestSelector</a>, <span class=IParent>SelectorManager.<wbr>SelectorManager</span></div></div><div class=SRResult id=SR_reset><div class=IEntry><a href="../files/svgcanvas-js.html#Selector.Selector.reset" target=_parent class=ISymbol>reset</a>, <span class=IParent>Selector.<wbr>Selector</span></div></div><div class=SRResult id=SR_resetUndoStack><div class=IEntry><a href="../files/svgcanvas-js.html#SvgCanvas.resetUndoStack" target=_parent class=ISymbol>resetUndoStack</a>, <span class=IParent>SvgCanvas</span></div></div><div class=SRResult id=SR_resize><div class=IEntry><a href="../files/svgcanvas-js.html#Selector.Selector.resize" target=_parent class=ISymbol>resize</a>, <span class=IParent>Selector.<wbr>Selector</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults", "HTML");

File diff suppressed because one or more lines are too long

View File

@ -2039,8 +2039,266 @@ var getUrlFromAttr = this.getUrlFromAttr = function(attrVal) {
return null;
};
// Function: getBBox
// Get the given/selected element's bounding box object, convert it to be more
// usable when necessary
//
// Parameters:
// elem - Optional DOM element to get the BBox for
this.getBBox = function(elem) {
var selected = elem || selectedElements[0];
if (elem.nodeType != 1) return null;
var ret = null;
if(elem.nodeName == 'text' && selected.textContent == '') {
selected.textContent = 'a'; // Some character needed for the selector to use.
ret = selected.getBBox();
selected.textContent = '';
} else if(elem.nodeName == 'path' && isWebkit) {
ret = getPathBBox(selected);
} else if(elem.nodeName == 'use' && !isWebkit) {
ret = selected.getBBox();
ret.x += parseFloat(selected.getAttribute('x')||0);
ret.y += parseFloat(selected.getAttribute('y')||0);
} else if(elem.nodeName == 'foreignObject') {
ret = selected.getBBox();
ret.x += parseFloat(selected.getAttribute('x')||0);
ret.y += parseFloat(selected.getAttribute('y')||0);
} else {
try { ret = selected.getBBox(); }
catch(e) {
// Check if element is child of a foreignObject
var fo = $(selected).closest("foreignObject");
if(fo.length) {
try {
ret = fo[0].getBBox();
} catch(e) {
ret = null;
}
} else {
ret = null;
}
}
}
// get the bounding box from the DOM (which is in that element's coordinate system)
return ret;
};
// Function: ffClone
// Hack for Firefox bugs where text element features aren't updated.
// This function clones the element and re-selects it
// TODO: Test for this bug on load and add it to "support" object instead of
// browser sniffing
//
// Parameters:
// elem - The (text) DOM element to clone
var ffClone = function(elem) {
if(navigator.userAgent.indexOf('Gecko/') == -1) return elem;
var clone = elem.cloneNode(true)
elem.parentNode.insertBefore(clone, elem);
elem.parentNode.removeChild(elem);
selectorManager.releaseSelector(elem);
selectedElements[0] = clone;
selectorManager.requestSelector(clone).showGrips(true);
return clone;
}
// Function: getPathBBox
// Get correct BBox for a path in Webkit
// Converted from code found here:
// http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html
//
// Parameters:
// path - The path DOM element to get the BBox for
//
// Returns:
// A BBox-like object
var getPathBBox = function(path) {
var seglist = path.pathSegList;
var tot = seglist.numberOfItems;
var bounds = [[], []];
var start = seglist.getItem(0);
var P0 = [start.x, start.y];
for(var i=0; i < tot; i++) {
var seg = seglist.getItem(i);
if(!seg.x) continue;
// Add actual points to limits
bounds[0].push(P0[0]);
bounds[1].push(P0[1]);
if(seg.x1) {
var P1 = [seg.x1, seg.y1],
P2 = [seg.x2, seg.y2],
P3 = [seg.x, seg.y];
for(var j=0; j < 2; j++) {
var calc = function(t) {
return Math.pow(1-t,3) * P0[j]
+ 3 * Math.pow(1-t,2) * t * P1[j]
+ 3 * (1-t) * Math.pow(t,2) * P2[j]
+ Math.pow(t,3) * P3[j];
};
var b = 6 * P0[j] - 12 * P1[j] + 6 * P2[j];
var a = -3 * P0[j] + 9 * P1[j] - 9 * P2[j] + 3 * P3[j];
var c = 3 * P1[j] - 3 * P0[j];
if(a == 0) {
if(b == 0) {
continue;
}
var t = -c / b;
if(0 < t && t < 1) {
bounds[j].push(calc(t));
}
continue;
}
var b2ac = Math.pow(b,2) - 4 * c * a;
if(b2ac < 0) continue;
var t1 = (-b + Math.sqrt(b2ac))/(2 * a);
if(0 < t1 && t1 < 1) bounds[j].push(calc(t1));
var t2 = (-b - Math.sqrt(b2ac))/(2 * a);
if(0 < t2 && t2 < 1) bounds[j].push(calc(t2));
}
P0 = P3;
} else {
bounds[0].push(seg.x);
bounds[1].push(seg.y);
}
}
var x = Math.min.apply(null, bounds[0]);
var w = Math.max.apply(null, bounds[0]) - x;
var y = Math.min.apply(null, bounds[1]);
var h = Math.max.apply(null, bounds[1]) - y;
return {
'x': x,
'y': y,
'width': w,
'height': h
};
}
// this.each is deprecated, if any extension used this it can be recreated by doing this:
// $(canvas.getRootElem()).children().each(...)
// this.each = function(cb) {
// $(svgroot).children().each(cb);
// };
// Group: Element Transforms
// Function: getRotationAngle
// Get the rotation angle of the given/selected DOM element
//
// Parameters:
// elem - Optional DOM element to get the angle for
// to_rad - Boolean that when true returns the value in radians rather than degrees
//
// Returns:
// Float with the angle in degrees or radians
this.getRotationAngle = function(elem, to_rad) {
var selected = elem || selectedElements[0];
// find the rotation transform (if any) and set it
var tlist = canvas.getTransformList(selected);
if(!tlist) return 0; // <svg> elements have no tlist
var N = tlist.numberOfItems;
for (var i = 0; i < N; ++i) {
var xform = tlist.getItem(i);
if (xform.type == 4) {
return to_rad ? xform.angle * Math.PI / 180.0 : xform.angle;
}
}
return 0.0;
};
// Function: setRotationAngle
// Removes any old rotations if present, prepends a new rotation at the
// transformed center
//
// Parameters:
// val - The new rotation angle in degrees
// preventUndo - Boolean indicating whether the action should be undoable or not
this.setRotationAngle = function(val, preventUndo) {
// ensure val is the proper type
val = parseFloat(val);
var elem = selectedElements[0];
var oldTransform = elem.getAttribute("transform");
var bbox = canvas.getBBox(elem);
var cx = bbox.x+bbox.width/2, cy = bbox.y+bbox.height/2;
var tlist = canvas.getTransformList(elem);
// only remove the real rotational transform if present (i.e. at index=0)
if (tlist.numberOfItems > 0) {
var xform = tlist.getItem(0);
if (xform.type == 4) {
tlist.removeItem(0);
}
}
// find R_nc and insert it
if (val != 0) {
var center = transformPoint(cx,cy,transformListToTransform(tlist).matrix);
var R_nc = svgroot.createSVGTransform();
R_nc.setRotate(val, center.x, center.y);
tlist.insertItemBefore(R_nc,0);
}
else if (tlist.numberOfItems == 0) {
elem.removeAttribute("transform");
}
if (!preventUndo) {
// we need to undo it, then redo it so it can be undo-able! :)
// TODO: figure out how to make changes to transform list undo-able cross-browser?
var newTransform = elem.getAttribute("transform");
elem.setAttribute("transform", oldTransform);
this.changeSelectedAttribute("transform",newTransform,selectedElements);
}
var pointGripContainer = getElem("pathpointgrip_container");
// if(elem.nodeName == "path" && pointGripContainer) {
// pathActions.setPointContainerTransform(elem.getAttribute("transform"));
// }
var selector = selectorManager.requestSelector(selectedElements[0]);
selector.resize();
selector.updateGripCursors(val);
};
// Function: getTransformList
// Returns an object that behaves like a SVGTransformList for the given DOM element
//
// Parameters:
// elem - DOM element to get a transformlist from
this.getTransformList = function(elem) {
if (isWebkit) {
var id = elem.id;
if(!id) {
// Get unique ID for temporary element
id = 'temp';
}
var t = svgTransformLists[id];
if (!t || id == 'temp') {
svgTransformLists[id] = new SVGEditTransformList(elem);
svgTransformLists[id]._init();
t = svgTransformLists[id];
}
return t;
}
else if (elem.transform) {
return elem.transform.baseVal;
}
else if (elem.gradientTransform) {
return elem.gradientTransform.baseVal;
}
return null;
};
// Function: recalculateAllSelectedDimensions
// Runs recalculateDimensions on the selected elements,
// adding the changes to a single batch command
@ -4293,7 +4551,7 @@ var getMouseTarget = this.getMouseTarget = function(evt) {
}());
// Interface: textActions
// Group: Text edit functions
// Functions relating to editing text elements
var textActions = canvas.textActions = function() {
var curtext, current_text;
@ -4682,7 +4940,7 @@ var textActions = canvas.textActions = function() {
}
}();
// Interface: pathActions
// Group: Path edit functions
// Functions relating to editing path elements
var pathActions = this.pathActions = function() {
@ -8191,6 +8449,11 @@ this.setPaintOpacity = function(type, val, preventUndo) {
this.changeSelectedAttributeNoUndo(type + "-opacity", val);
};
// Function: getBlur
// Gets the stdDeviation blur value of the given element
//
// Parameters:
// elem - The element to check the blur value for
this.getBlur = function(elem) {
var val = 0;
// var elem = selectedElements[0];
@ -8212,6 +8475,11 @@ this.getBlur = function(elem) {
var filter = null;
var filterHidden = false;
// Function: setBlurNoUndo
// Sets the stdDeviation blur value on the selected element without being undoable
//
// Parameters:
// val - The new stdDeviation value
canvas.setBlurNoUndo = function(val) {
if(!filter) {
canvas.setBlur(val);
@ -8239,6 +8507,13 @@ this.getBlur = function(elem) {
filter = null;
}
// Function: setBlurOffsets
// Sets the x, y, with, height values of the filter element in order to
// make the blur not be clipped. Removes them if not neeeded
//
// Parameters:
// filter - The filter DOM element to update
// stdDev - The standard deviation value on which to base the offset size
canvas.setBlurOffsets = function(filter, stdDev) {
if(stdDev > 3) {
// TODO: Create algorithm here where size is based on expected blur
@ -8256,6 +8531,12 @@ this.getBlur = function(elem) {
}
}
// Function: setBlur
// Adds/updates the blur filter to the selected element
//
// Parameters:
// val - Float with the new stdDeviation blur value
// complete - Boolean indicating whether or not the action should be completed (to add to the undo manager)
canvas.setBlur = function(val, complete) {
if(cur_command) {
finishChange();
@ -8320,138 +8601,11 @@ this.getBlur = function(elem) {
};
}());
// returns an object that behaves like a SVGTransformList
this.getTransformList = function(elem) {
if (isWebkit) {
var id = elem.id;
if(!id) {
// Get unique ID for temporary element
id = 'temp';
}
var t = svgTransformLists[id];
if (!t || id == 'temp') {
svgTransformLists[id] = new SVGEditTransformList(elem);
svgTransformLists[id]._init();
t = svgTransformLists[id];
}
return t;
}
else if (elem.transform) {
return elem.transform.baseVal;
}
else if (elem.gradientTransform) {
return elem.gradientTransform.baseVal;
}
return null;
};
this.getBBox = function(elem) {
var selected = elem || selectedElements[0];
if (elem.nodeType != 1) return null;
var ret = null;
if(elem.nodeName == 'text' && selected.textContent == '') {
selected.textContent = 'a'; // Some character needed for the selector to use.
ret = selected.getBBox();
selected.textContent = '';
} else if(elem.nodeName == 'path' && isWebkit) {
ret = getPathBBox(selected);
} else if(elem.nodeName == 'use' && !isWebkit) {
ret = selected.getBBox();
ret.x += parseFloat(selected.getAttribute('x')||0);
ret.y += parseFloat(selected.getAttribute('y')||0);
} else if(elem.nodeName == 'foreignObject') {
ret = selected.getBBox();
ret.x += parseFloat(selected.getAttribute('x')||0);
ret.y += parseFloat(selected.getAttribute('y')||0);
} else {
try { ret = selected.getBBox(); }
catch(e) {
// Check if element is child of a foreignObject
var fo = $(selected).closest("foreignObject");
if(fo.length) {
try {
ret = fo[0].getBBox();
} catch(e) {
ret = null;
}
} else {
ret = null;
}
}
}
// get the bounding box from the DOM (which is in that element's coordinate system)
return ret;
};
// we get the rotation angle in the tlist
this.getRotationAngle = function(elem, to_rad) {
var selected = elem || selectedElements[0];
// find the rotation transform (if any) and set it
var tlist = canvas.getTransformList(selected);
if(!tlist) return 0; // <svg> elements have no tlist
var N = tlist.numberOfItems;
for (var i = 0; i < N; ++i) {
var xform = tlist.getItem(i);
if (xform.type == 4) {
return to_rad ? xform.angle * Math.PI / 180.0 : xform.angle;
}
}
return 0.0;
};
// this should:
// - remove any old rotations if present
// - prepend a new rotation at the transformed center
this.setRotationAngle = function(val,preventUndo) {
// ensure val is the proper type
val = parseFloat(val);
var elem = selectedElements[0];
var oldTransform = elem.getAttribute("transform");
var bbox = canvas.getBBox(elem);
var cx = bbox.x+bbox.width/2, cy = bbox.y+bbox.height/2;
var tlist = canvas.getTransformList(elem);
// only remove the real rotational transform if present (i.e. at index=0)
if (tlist.numberOfItems > 0) {
var xform = tlist.getItem(0);
if (xform.type == 4) {
tlist.removeItem(0);
}
}
// find R_nc and insert it
if (val != 0) {
var center = transformPoint(cx,cy,transformListToTransform(tlist).matrix);
var R_nc = svgroot.createSVGTransform();
R_nc.setRotate(val, center.x, center.y);
tlist.insertItemBefore(R_nc,0);
}
else if (tlist.numberOfItems == 0) {
elem.removeAttribute("transform");
}
if (!preventUndo) {
// we need to undo it, then redo it so it can be undo-able! :)
// TODO: figure out how to make changes to transform list undo-able cross-browser?
var newTransform = elem.getAttribute("transform");
elem.setAttribute("transform", oldTransform);
this.changeSelectedAttribute("transform",newTransform,selectedElements);
}
var pointGripContainer = getElem("pathpointgrip_container");
// if(elem.nodeName == "path" && pointGripContainer) {
// pathActions.setPointContainerTransform(elem.getAttribute("transform"));
// }
var selector = selectorManager.requestSelector(selectedElements[0]);
selector.resize();
selector.updateGripCursors(val);
};
this.each = function(cb) {
$(svgroot).children().each(cb);
};
// Function: getBold
// Check whether selected element is bold or not
//
// Returns:
// Boolean indicating whether or not element is bold
this.getBold = function() {
// should only have one element selected
var selected = selectedElements[0];
@ -8463,6 +8617,11 @@ this.getBold = function() {
return false;
};
// Function: setBold
// Make the selected element bold or normal
//
// Parameters:
// b - Boolean indicating bold (true) or normal (false)
this.setBold = function(b) {
var selected = selectedElements[0];
if (selected != null && selected.tagName == "text" &&
@ -8472,6 +8631,11 @@ this.setBold = function(b) {
}
};
// Function: getItalic
// Check whether selected element is italic or not
//
// Returns:
// Boolean indicating whether or not element is italic
this.getItalic = function() {
var selected = selectedElements[0];
if (selected != null && selected.tagName == "text" &&
@ -8482,6 +8646,11 @@ this.getItalic = function() {
return false;
};
// Function: setItalic
// Make the selected element italic or normal
//
// Parameters:
// b - Boolean indicating italic (true) or normal (false)
this.setItalic = function(i) {
var selected = selectedElements[0];
if (selected != null && selected.tagName == "text" &&
@ -8491,37 +8660,64 @@ this.setItalic = function(i) {
}
};
// Function: getFontFamily
// Returns the current font family
this.getFontFamily = function() {
return cur_text.font_family;
};
// Function: setFontFamily
// Set the new font family
//
// Parameters:
// val - String with the new font family
this.setFontFamily = function(val) {
cur_text.font_family = val;
this.changeSelectedAttribute("font-family", val);
};
// Function: getFontSize
// Returns the current font size
this.getFontSize = function() {
return cur_text.font_size;
};
// Function: setFontSize
// Applies the given font size to the selected element
//
// Parameters:
// val - Float with the new font size
this.setFontSize = function(val) {
cur_text.font_size = val;
textActions.toSelectMode();
this.changeSelectedAttribute("font-size", val);
};
// Function: getText
// Returns the current text (textContent) of the selected element
this.getText = function() {
var selected = selectedElements[0];
if (selected == null) { return ""; }
return selected.textContent;
};
// Function: setTextContent
// Updates the text element with the given string
//
// Parameters:
// val - String with the new text
this.setTextContent = function(val) {
this.changeSelectedAttribute("#text", val);
textActions.init(val);
textActions.setCursor();
};
// Function: setImageURL
// Sets the new image URL for the selected image element. Updates its size if
// a new URL is given
//
// Parameters:
// val - String with the image URL/path
this.setImageURL = function(val) {
var elem = selectedElements[0];
if(!elem) return;
@ -8563,6 +8759,11 @@ this.setImageURL = function(val) {
}
};
// Function: setRectRadius
// Sets the rx & ry values to the selected rect element to change its corner radius
//
// Parameters:
// val - The new radius
this.setRectRadius = function(val) {
var selected = selectedElements[0];
if (selected != null && selected.tagName == "rect") {
@ -8576,23 +8777,24 @@ this.setRectRadius = function(val) {
}
};
// Function: setSegType
// Sets the new segment type to the selected segment(s).
//
// Parameters:
// new_type - Integer with the new segment type
// See http://www.w3.org/TR/SVG/paths.html#InterfaceSVGPathSeg for list
this.setSegType = function(new_type) {
pathActions.setSegType(new_type);
}
var ffClone = function(elem) {
// Hack for Firefox bugs where text element features aren't updated
if(navigator.userAgent.indexOf('Gecko/') == -1) return elem;
var clone = elem.cloneNode(true)
elem.parentNode.insertBefore(clone, elem);
elem.parentNode.removeChild(elem);
selectorManager.releaseSelector(elem);
selectedElements[0] = clone;
selectorManager.requestSelector(clone).showGrips(true);
return clone;
}
// This function makes the changes to the elements
// Function: changeSelectedAttributeNoUndo
// This function makes the changes to the elements. It does not add the change
// to the history stack.
//
// Parameters:
// attr - String with the attribute name
// newValue - String or number with the new attribute value
// elems - The DOM elements to apply the change to
this.changeSelectedAttributeNoUndo = function(attr, newValue, elems) {
var handle = svgroot.suspendRedraw(1000);
if(current_mode == 'pathedit') {
@ -8698,11 +8900,16 @@ this.changeSelectedAttributeNoUndo = function(attr, newValue, elems) {
svgroot.unsuspendRedraw(handle);
};
// Function: changeSelectedAttribute
// Change the given/selected element and add the original value to the history stack
// If you want to change all selectedElements, ignore the elems argument.
// If you want to change only a subset of selectedElements, then send the
// subset to this function in the elems argument.
//
// Parameters:
// attr - String with the attribute name
// newValue - String or number with the new attribute value
// elems - The DOM elements to apply the change to
this.changeSelectedAttribute = function(attr, val, elems) {
var elems = elems || selectedElements;
canvas.beginUndoableChange(attr, elems);
@ -8716,6 +8923,9 @@ this.changeSelectedAttribute = function(attr, val, elems) {
}
};
// Function: deleteSelectedElements
// Removes all selected elements from the DOM and adds the change to the
// history stack
this.deleteSelectedElements = function() {
var batchCmd = new BatchCommand("Delete Elements");
var len = selectedElements.length;
@ -8738,6 +8948,8 @@ this.deleteSelectedElements = function() {
canvas.clearSelection();
};
// Function: groupSelectedElements
// Wraps all the selected elements in a group (g) element
this.groupSelectedElements = function() {
var batchCmd = new BatchCommand("Group Elements");
@ -8767,6 +8979,9 @@ this.groupSelectedElements = function() {
canvas.addToSelection([g], true);
};
// Function: ungroupSelectedElement
// Unwraps all the elements in a selected group (g) element. This requires
// significant recalculations to apply group's transforms, etc to its children
this.ungroupSelectedElement = function() {
var g = selectedElements[0];
if (g.tagName == "g") {
@ -9128,25 +9343,29 @@ this.convertToPath = function(elem, getBBox) {
}
}
// Function: moveToTopSelectedElement
// Repositions the selected element to the bottom in the DOM to appear on top of
// other elements
this.moveToTopSelectedElement = function() {
var selected = selectedElements[0];
if (selected != null) {
var t = selected;
var oldParent = t.parentNode;
var oldNextSibling = t.nextSibling;
if (oldNextSibling == selectorManager.selectorParentGroup) oldNextSibling = null;
t = t.parentNode.appendChild(t);
addCommandToHistory(new MoveElementCommand(t, oldNextSibling, oldParent, "top"));
}
};
// Function: moveToBottomSelectedElement
// Repositions the selected element to the top in the DOM to appear under
// other elements
this.moveToBottomSelectedElement = function() {
var selected = selectedElements[0];
if (selected != null) {
var t = selected;
var oldParent = t.parentNode;
var oldNextSibling = t.nextSibling;
if (oldNextSibling == selectorManager.selectorParentGroup) oldNextSibling = null;
var firstChild = t.parentNode.firstChild;
if (firstChild.tagName == 'title') {
firstChild = firstChild.nextSibling;
@ -9161,6 +9380,16 @@ this.moveToBottomSelectedElement = function() {
}
};
// Function: moveSelectedElements
// Moves selected elements on the X/Y axis
//
// Parameters:
// dx - Float with the distance to move on the x-axis
// dy - Float with the distance to move on the y-axis
// undoable - Boolean indicating whether or not the action should be undoable
//
// Returns:
// Batch command for the move
this.moveSelectedElements = function(dx,dy,undoable) {
// if undoable is not sent, default to true
// if single values, scale them to the zoom
@ -9212,86 +9441,25 @@ this.moveSelectedElements = function(dx,dy,undoable) {
}
};
var getPathBBox = function(path) {
// Get correct BBox for a path in Webkit
// Converted from code found here:
// http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html
var seglist = path.pathSegList;
var tot = seglist.numberOfItems;
var bounds = [[], []];
var start = seglist.getItem(0);
var P0 = [start.x, start.y];
for(var i=0; i < tot; i++) {
var seg = seglist.getItem(i);
if(!seg.x) continue;
// Add actual points to limits
bounds[0].push(P0[0]);
bounds[1].push(P0[1]);
if(seg.x1) {
var P1 = [seg.x1, seg.y1],
P2 = [seg.x2, seg.y2],
P3 = [seg.x, seg.y];
for(var j=0; j < 2; j++) {
var calc = function(t) {
return Math.pow(1-t,3) * P0[j]
+ 3 * Math.pow(1-t,2) * t * P1[j]
+ 3 * (1-t) * Math.pow(t,2) * P2[j]
+ Math.pow(t,3) * P3[j];
};
var b = 6 * P0[j] - 12 * P1[j] + 6 * P2[j];
var a = -3 * P0[j] + 9 * P1[j] - 9 * P2[j] + 3 * P3[j];
var c = 3 * P1[j] - 3 * P0[j];
if(a == 0) {
if(b == 0) {
continue;
}
var t = -c / b;
if(0 < t && t < 1) {
bounds[j].push(calc(t));
}
continue;
}
var b2ac = Math.pow(b,2) - 4 * c * a;
if(b2ac < 0) continue;
var t1 = (-b + Math.sqrt(b2ac))/(2 * a);
if(0 < t1 && t1 < 1) bounds[j].push(calc(t1));
var t2 = (-b - Math.sqrt(b2ac))/(2 * a);
if(0 < t2 && t2 < 1) bounds[j].push(calc(t2));
}
P0 = P3;
} else {
bounds[0].push(seg.x);
bounds[1].push(seg.y);
}
}
var x = Math.min.apply(null, bounds[0]);
var w = Math.max.apply(null, bounds[0]) - x;
var y = Math.min.apply(null, bounds[1]);
var h = Math.max.apply(null, bounds[1]) - y;
return {
'x': x,
'y': y,
'width': w,
'height': h
};
}
this.contentW = this.getResolution().w;
this.contentH = this.getResolution().h;
this.updateCanvas = function(w, h, w_orig, h_orig) {
// Function: updateCanvas
// Updates the editor canvas width/height/position after a zoom has occurred
//
// Parameters:
// w - Float with the new width
// h - Float with the new height
//
// Returns:
// Object with the following values:
// * x - The canvas' new x coordinate
// * y - The canvas' new y coordinate
// * old_x - The canvas' old x coordinate
// * old_y - The canvas' old y coordinate
// * d_x - The x position difference
// * d_y - The y position difference
this.updateCanvas = function(w, h) {
svgroot.setAttribute("width", w);
svgroot.setAttribute("height", h);
var bg = $('#canvasBackground')[0];