|
var GeneraSymbol = d3.map({ |
|
'transgen': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
'l' + (2 * size / 3) + ',' + 0 + |
|
'l' + (size / 3) + ',' + -size / 2 + |
|
'l' + (size / 3) + ',' + size / 2 + |
|
'l' + (2 * size / 3) + ',' + 0; |
|
}, |
|
'transrel': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size ) + ',' + 0 + |
|
'l' + (2 * size / 3) + ',' + 0 + |
|
'l' + (size / 3) + ',' + size / 2 + |
|
'l' + (size / 3) + ',' + -size / 2 + |
|
'l' + (2 * size / 3) + ',' + 0; |
|
}, |
|
'transact': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
'l' + (2 * size / 3) + ',' + 0 + |
|
'A' + size / 3 + ',' + size / 3 + ',1,1,1' + size / 3 + ',' + 0 + |
|
'l' + (2 * size / 3) + ',' + 0; |
|
}, |
|
'discourse': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
'l' + (2 * size / 3) + ',' + 0 + |
|
'A' + size / 3 + ',' + size / 3 + ',1,1,0' + size / 3 + ',' + 0 + |
|
'l' + (2 * size / 3) + ',' + 0; |
|
}, |
|
'god': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
'l' + (size * 2) + ',' + 0; |
|
}, |
|
'world': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
'l' + (2 * size) + ',' + 0 + '' + |
|
|
|
'M' + 0 + ',' + size / 2 + |
|
'l' + 0 + ',' + -size; |
|
}, |
|
'element': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
'l' + (2 * size) + ',' + 0 + '' + |
|
|
|
'M' + 0 + ',' + 0 + |
|
'l' + 0 + ',' + -size / 2; |
|
}, |
|
'stone': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
'l' + (2 * size) + ',' + 0 + '' + |
|
|
|
'M' + 0 + ',' + 0 + |
|
'l' + 0 + ',' + size / 2; |
|
}, |
|
'metal': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
'l' + (2 * size) + ',' + 0 + '' + |
|
|
|
'M' + -pad + ',' + -size / 2 + |
|
'l' + pad * 2 + ',' + size; |
|
}, |
|
'leaf': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
'l' + (2 * size) + ',' + 0 + '' + |
|
|
|
'M' + 0 + ',' + 0 + |
|
'l' + -pad + ',' + -size / 2; |
|
}, |
|
'flower': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
'l' + (2 * size) + ',' + 0 + '' + |
|
|
|
'M' + 0 + ',' + 0 + |
|
'l' + pad + ',' + size / 2; |
|
}, |
|
'seed': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
'l' + (2 * size) + ',' + 0 + '' + |
|
|
|
'M' + 0 + ',' + 0 + |
|
'l' + pad + ',' + -size / 2; |
|
}, |
|
'tree': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
'l' + (2 * size) + ',' + 0 + '' + |
|
|
|
'M' + pad + ',' + -size / 2 + |
|
'l' + -pad * 2 + ',' + size; |
|
}, |
|
'shrub': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
'l' + (2 * size) + ',' + 0 + '' + |
|
|
|
'M' + 0 + ',' + 0 + |
|
'l' + -pad + ',' + size / 2; |
|
}, |
|
'fish': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
'l' + (2 * size) + ',' + 0 + '' + |
|
|
|
'M' + 0 + ',' + 0 + |
|
'l' + 0 + ',' + size / 2 + |
|
'l' + size / 6 + ',' + -size / 4 + ''; |
|
}, |
|
'exsanguious': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
'l' + (2 * size) + ',' + 0 + '' + |
|
|
|
'M' + 0 + ',' + 0 + |
|
'l' + 0 + ',' + -size / 2 + |
|
'l' + -size / 6 + ',' + size / 4 + ''; |
|
}, |
|
'beast': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
'l' + (2 * size) + ',' + 0 + '' + |
|
|
|
'M' + 0 + ',' + 0 + |
|
'l' + 0 + ',' + size / 2 + |
|
'l' + size / 6 + ',' + 0 + ''; |
|
}, |
|
'bird': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
'l' + (2 * size) + ',' + 0 + '' + |
|
|
|
'M' + 0 + ',' + 0 + |
|
'l' + 0 + ',' + -size / 2 + |
|
'l' + -size / 6 + ',' + 0 + ''; |
|
}, |
|
'partspec': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
'l' + (2 * size) + ',' + 0 + '' + |
|
|
|
'M' + 0 + ',' + size/2 + |
|
'l' + 0 + ',' + -size + |
|
'l' + -size / 6 + ',' + size / 4 + ''; |
|
}, |
|
'partgen': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
'l' + (2 * size) + ',' + 0 + '' + |
|
|
|
'M' + 0 + ',' + -size / 2 + |
|
'l' + 0 + ',' + size + |
|
'l' + size / 6 + ',' + -size/4 + ''; |
|
}, |
|
'magnitude': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
'l' + (2 * size) + ',' + 0 + '' + |
|
|
|
'M' + 0 + ',' + 0 + |
|
'l' + 0 + ',' + (-size / 3) + |
|
'a'+size/5+' '+size/5+' 0 1 0 ' + (-size/5 * 2) +' '+ 0 +''; |
|
|
|
}, |
|
'space': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
'l' + (2 * size) + ',' + 0 + '' + |
|
|
|
'M' + 0 + ',' + 0 + |
|
'l' + 0 + ',' + (size / 3) + |
|
'a'+size/5+' '+size/5+' 0 1 0 ' + (size/5 * 2) +' '+ 0 +''; |
|
|
|
}, |
|
'measure': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
'l' + (2 * size) + ',' + 0 + '' + |
|
|
|
'M' + 0 + ',' + (size/3) + |
|
'l' + 0 + ',' + (-size / 3 * 2) + |
|
'a'+size/5+' '+size/5+' 0 1 0 ' + (-size/5 * 2) +' '+ 0 +''; |
|
|
|
}, |
|
'power': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
'l' + (2 * size) + ',' + 0 + '' + |
|
|
|
'M' + -size/4*.707 + ',' + (-size/4 + -size/4*.707) + |
|
'a' + (size/4) +' '+ (size/4)+' 0 1 0 ' + (size/4*1.414) +' '+ 0 +''; |
|
}, |
|
'habit': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
'l' + (2 * size) + ',' + 0 + '' + |
|
|
|
'M' + -size/4*.707 + ',' + (size/4 + size/4*.707) + |
|
'a' + (size/4) +' '+ (size/4)+' 0 1 1 ' + (size/4*1.414) +' '+ 0 +''; |
|
|
|
}, |
|
'manner': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
'l' + (2 * size) + ',' + 0 + '' + |
|
|
|
'M ' + -size/4 +' '+ 0+ |
|
' C '+-size/2+' '+-size/2+ ' '+size/2 +' '+ -size/2+ ' '+size/4 +' '+ 0; |
|
}, |
|
'sensible': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
'l' + (2 * size) + ',' + 0 + '' + |
|
|
|
'M ' + -size/4 +' '+ 0+ |
|
' C '+-size/2+' '+size/2+ ' '+size/2 +' '+ size/2+ ' '+size/4 +' '+ 0; |
|
}, |
|
'disease': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
'l' + (2 * size) + ',' + 0 + '' + |
|
|
|
'M ' + -size/4 +' '+ 0+ |
|
' C '+-size/2+' '+size/2+ ' '+size/2 +' '+ size/2+ ' '+size/4 +' '+ 0+ |
|
'M ' + -size/4 +' '+ 0+ |
|
' C '+-size/2+' '+-size/2+ ' '+size/2 +' '+ -size/2+ ' '+size/4 +' '+ 0; |
|
}, |
|
'spiritact': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
'l' + (2 * size) + ',' + 0 + '' + |
|
|
|
'M ' + 0 +' '+ 0+ |
|
' A '+size/4+' '+size/4+ ' 0 1 0 '+-size/6 +' '+ -size/3; |
|
}, |
|
'corporact': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
'l' + (2 * size) + ',' + 0 + '' + |
|
|
|
'M ' + 0 +' '+ 0+ |
|
' A '+size/4+' '+size/4+ ' 0 1 0 '+size/6 +' '+ size/3; |
|
}, |
|
'motionact': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
'l' + (2 * size) + ',' + 0 + '' + |
|
|
|
'M ' + 0 +' '+ 0+ |
|
' A '+size/4+' '+size/4+ ' 0 1 1 '+size/6 +' '+ -size/3; |
|
}, |
|
'operationact': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
'l' + (2 * size) + ',' + 0 + '' + |
|
|
|
'M ' + 0 +' '+ 0+ |
|
' A '+size/4+' '+size/4+ ' 0 1 1 '+-size/6 +' '+ size/3; |
|
}, |
|
'econ': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
'l' + (2 * size) + ',' + 0 + '' + |
|
|
|
'M ' + -size/6 +' '+ -size/3+ |
|
' A '+size/4+' '+size/4+ ' 0 1 1 0 0'+ |
|
' A '+size/4+' '+size/4+ ' 0 1 1 '+-size/6 +' '+ size/3; |
|
}, |
|
'posses': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
'l' + (2 * size) + ',' + 0 + '' + |
|
|
|
'M ' + size/6 +' '+ -size/3+ |
|
' A '+size/4+' '+size/4+ ' 0 1 0 0 0'+ |
|
' A '+size/4+' '+size/4+ ' 0 1 0 '+size/6 +' '+ size/3; |
|
}, |
|
'provis': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
'l' + (2 * size) + ',' + 0 + '' + |
|
|
|
'M ' + -size/6 +' '+ -size/3+ |
|
' A '+size/4+' '+size/4+ ' 0 1 1 0 0'+ |
|
' A '+size/4+' '+size/4+ ' 0 1 0 '+size/6 +' '+ size/3; |
|
}, |
|
'civil': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
'l' + (2 * size) + ',' + 0 + '' + |
|
|
|
'M ' + size/6 +' '+ -size/3+ |
|
' A '+size/4+' '+size/4+ ' 0 1 0 0 0'+ |
|
' A '+size/4+' '+size/4+ ' 0 1 1 '+-size/6 +' '+ size/3; |
|
}, |
|
'judicial': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
'l' + (2 * size) + ',' + 0 + '' + |
|
|
|
'M ' + 0 +' '+ 0+ |
|
' A '+size/4+' '+size/4+' 0 1 0 '+0+' '+ -size/2 +' '+ |
|
' A '+size/4+' '+size/4+' 0 1 0 '+0+' '+ 0; |
|
}, |
|
'military': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
'l' + (2 * size) + ',' + 0 + '' + |
|
|
|
'M ' + 0 +' '+ 0+ |
|
' A '+size/4+' '+size/4+' 0 1 0 '+0+' '+ size/2 +' '+ |
|
' A '+size/4+' '+size/4+' 0 1 0 '+0+' '+ 0; |
|
}, |
|
'naval': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
'L' + -size/3 + ',' + 0 + |
|
|
|
' A '+size/4+' '+size/4+' 0 1 0 '+0+' '+ -size/2 +' '+ |
|
' A '+size/4+' '+size/4+' 0 1 0 '+size/3+' '+ 0 + |
|
'L' + size + ' ' + 0; |
|
}, |
|
'eccles': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
'L' + -size/3 + ',' + 0 + |
|
|
|
' A '+size/4+' '+size/4+' 0 1 1 '+0+' '+ size/2 +' '+ |
|
' A '+size/4+' '+size/4+' 0 1 1 '+size/3+' '+ 0 + |
|
'L' + size + ' ' + 0; |
|
}, |
|
}); |
|
|
|
var DifferenceSymbol = d3.map({ |
|
'1': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
' l' + (size / 2) + ',' + (-size / 2) + ''; |
|
}, |
|
'2': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
' l' + 0 + ',' + (-size / 2) + ''; |
|
}, |
|
'3': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
' l' + (-size / 2) + ',' + (-size / 2) + ''; |
|
}, |
|
'4': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
' l' + (-size / 2) + ',' + (size / 2) + ''; |
|
}, |
|
'5': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
' l' + 0 + ',' + (size / 2) + ''; |
|
}, |
|
'6': function(size) { |
|
size = Math.sqrt(size); |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + 0 + |
|
' l' + (size / 2) + ',' + (size / 2) + ''; |
|
}, |
|
'7': function(size) { |
|
size = Math.sqrt(size); |
|
var r = size / 8; |
|
return 'M' + (-size/2) + ',' + (-size / 2) + |
|
' l' + (-size) + ',' + (size) + ''; |
|
}, |
|
'8': function(size) { |
|
size = Math.sqrt(size); |
|
var r = size / 8; |
|
return 'M' + (-size) + ',' + (-size/2) + |
|
' l' + 0 + ',' + (size) + ''; |
|
}, |
|
'9': function(size) { |
|
size = Math.sqrt(size); |
|
var r = size / 8; |
|
return 'M' + (-3 * size/2) + ',' + (-size/2) + |
|
' l' + (size) + ',' + (size) + ''; |
|
}, '0': function(size) { |
|
return ''; |
|
} |
|
}); |
|
|
|
var SpeciesSymbol = d3.map({ |
|
'1': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (size) + ',' + 0 + |
|
' l' + (-size / 2) + ',' + (-size / 2) + ''; |
|
}, |
|
'2': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (size) + ',' + 0 + |
|
' l' + 0 + ',' + (-size / 2) + ''; |
|
}, |
|
'3': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (size) + ',' + 0 + |
|
' l' + (size / 2) + ',' + (-size / 2) + ''; |
|
}, |
|
'4': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (size) + ',' + 0 + |
|
' l' + (size / 2) + ',' + (size / 2) + ''; |
|
}, |
|
'5': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (size) + ',' + 0 + |
|
' l' + 0 + ',' + (size / 2) + ''; |
|
}, |
|
'6': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (size) + ',' + 0 + |
|
' l' + (-size / 2) + ',' + (size / 2) + ''; |
|
}, |
|
'7': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (size/2) + ',' + (-size/2) + |
|
' l' + (size) + ',' + (size) + ''; |
|
}, |
|
'8': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (size) + ',' + (-size/2) + |
|
' l' + 0 + ',' + (size) + ''; |
|
}, |
|
'9': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return 'M' + (3*size/2) + ',' + (-size/2) + |
|
' l' + (-size) + ',' + (size) + ''; |
|
}, |
|
'0': function(size) { |
|
size = Math.sqrt(size); |
|
var pad = size / 5; |
|
var r = size / 8; |
|
return ''; |
|
} |
|
}); |
|
|
|
function WilkinsSymbol(type, size) { |
|
size = size || 64; |
|
var symboltype = type.split('-'); |
|
var genera = symboltype[0]; |
|
var diff = symboltype[1]; |
|
if (diff == null){ |
|
diff = '0'; |
|
} |
|
var spec = symboltype[2]; |
|
if (spec == null){ |
|
spec = '0'; |
|
} |
|
try{ |
|
var constructed_symbol = GeneraSymbol.get(genera)(size) + |
|
DifferenceSymbol.get(diff)(size) + |
|
SpeciesSymbol.get(spec)(size); |
|
return constructed_symbol; |
|
} |
|
catch (e) { |
|
return "" |
|
} |
|
} |
|
|
|
|