Into a Path
//-1){
//alert('matrix');
var t00= GetString(t, 'matrix(', ')');
var tr0=t00.split(',');
typeT='matrix'
}
if(t.indexOf('translate')>-1){
//alert('translate');
var t00= GetString(t, 'translate(', ')');
var tr0=t00.split(',');
typeT='translate'
}
if(t.indexOf('rotate')>-1){
//alert('rotate');
var t00= GetString(t, 'rotate(', ')');
var tr0=t00.split(',');
//if(){}
//var tr0=t00[]; ;
typeT='rotate'
}
var relativex=0, relativey=0
if(t.indexOf('scale')>-1){
var t00= GetString(t, 'scale(', ')');
var tr0=t00.split(','); typeT='scale'
var tr=[parseFloat(tr0[0]), 0, 0, parseFloat(tr0[1]), 0 ,0]
relativex=0
relativey=0
}
if( typeT=='matrix'){
var tr=[parseFloat(tr0[0]), parseFloat(tr0[1]), parseFloat(tr0[2]), parseFloat(tr0[3]) , parseFloat(tr0[4]) , parseFloat(tr0[5])]
}
if( typeT=='translate'){
var tr=[1, 0, 0, 1 , parseFloat(tr0[0]) , parseFloat(tr0[1])]
}
var relRotation=0
if( typeT=='rotate'){
var tr1=deg2rad(parseFloat(tr0[0]))
relRotation=parseFloat(tr0[0])
var p2=[0,0]
var p1=[0, 0]
if(tr0.length >1){
p2=[parseFloat(tr0[1]),parseFloat(tr0[2])]
}
var tr = [Math.cos(tr1), Math.sin(tr1), -Math.sin(tr1), Math.cos(tr1) , 0 , 0]
relativex=p2[0]
relativey=p2[1]
}
if( typeT=='skewx'){
tr0=deg2rad(parseFloat(tr0))
var tr=[1, 0, Math.tan(tr0), 1, 0, 0]
}
if( typeT=='skewy'){
tr0=deg2rad(parseFloat(tr0))
var tr=[1, Math.tan(tr0), 0, 1, 0, 0]
}
if( typeT==''){
var tr=[1, 0, 0, 1, 0 ,0]
}
return tr
}
function pathtrack(path,tr){
var endcommands = 'Zz';
var endcommand = new RegExp( '[' + endcommands + ']' );
path=path.replace(/^\s+|\s+$/g,"");
//alert(path.toSource())
//alert(tr.join('_'))
var t='', chain= ''
var track=[] , order=0, actual=0, prev=0
for (var i=0;i<=path.length;i++) {
t = path.charAt(i)
if (t.match(command)){
actual=i
chain= path.substring(prev,actual)
prev=actual
track[order]=[chain.substring(0,1),chain.substring(1)]
order++
}
if(i==path.length){
if (!t.match(endcommand)){
actual=i
chain= path.substring(prev,actual)
prev=actual
track[order]=[chain.substring(0,1),chain.substring(1)]
order++
}
}
}
////////////////
var type=0, xycoord=[], chain=''
for (var i=1;i'+type+': (((' +track[i][1]+')))
'
var xycoord1=track[i][1].split('_')
// UNIFORM STRING TO ARRAY xycoord
for (var m=0; m < xycoord1.length; m++) {
if(xycoord1[m].length > 0){
xycoord.push( xycoord1[m] )
//chain+=' '+ xycoord[m]+ ' '
}
}
//if(track[i][1].indexOf(',')==-1 && xycoord.length > 2 ){
var cont=0, cont1=0
var xycoo=[]
// X AND Y GROUPING
for (var m=0; m < xycoord.length; m++) {
//chain+= '_'+xycoord[m]
var brk= false
if(type=='a' || type=='A'){
if(m==0 || m==5 || m==7){
xycoo[cont1] = xycoord[cont]+','+xycoord[cont+1]
cont1++
cont+=2
brk=true//;continue
}
if(m==2){
xycoo[cont1] = xycoord[cont+1]
cont1++
cont+=1
brk=true//;continue
}
if(m==3){
xycoo[cont1] = xycoord[cont]+','+xycoord[cont+1]
cont1++
cont+=2
brk=true//;continue
}
}else{
if(m%2==0 && !brk){
xycoo[cont1] = xycoord[cont]+','+xycoord[cont+1]
cont1++
cont+=2
}
}
}
xycoord= xycoo
//}
//IN ARRAY
track[i][2]=[]
for (var a = 0; a < xycoord.length; a++) {
track[i][2].push(xycoord[a])
}
}
//////////////////
var type=0, xycoord=[];//, chain=''
var x=0, y=0, xy=[] , TXY=[]
for (var i=1;i'+track[i][0]+': '
TXY[i]=[]
TXY[i][0]=track[i][0]
var cont=1
var cont1=1
for (var a=0;a< track[i][2].length;a++) {
if(track[i][2][a].indexOf(',')>-1) {
xy=track[i][2][a].split(',')
x=parseFloat(xy[0])
y=parseFloat(xy[1])
if(type < 11){
var VXY=$V([x,y,0]);
var VT=$V([tr[4],tr[5],0])
var matrT= $M([[ tr[0], tr[1], 0 ],[tr[2] ,tr[3] ,0 ],[ 0, 0, 1]]);
var XY = matrT.multiply(VXY);
var RXY= XY.add(VT);
//TXY[i][cont]=[x,y]
TXY[i][cont]=[RXY.elements[0],RXY.elements[1]]
//chain+=''+TXY[i][cont].join(',')+' '
}else{
TXY[i][cont]=[x,y]
}
cont++
}else{
if(track[i][2][a].length>0){
TXY[i][cont] = parseFloat(track[i][2][a])
//chain+=''+TXY[i][cont]+' '
cont++
}else{
}
}
}
//chain+='
'
//document.write(chain)
}
var code = rebuild6(TXY)
var codeString = rebuildPath(TXY)
return [chain,code,codeString]
}
function rebuild6a(track){
return track.toSource()
}
function rebuild6(track){
var type=0, xycoord=[], chain=''
var x=0, y=0, xy=[]
for (var i=1;i'+track[i][0]+': '
for (var a=1;a < track[i].length;a++) {
//chain+=track[i]
if(track[i][a].length > 1){
if (a%2==0){
chain+='x:' + track[i][a][0]+' y:'+ track[i][a][1] + ' '
} else{
chain+='x:' + track[i][a][0]+' y:'+ track[i][a][1] + ' '
}
}else{
chain+=''+ track[i][a] + ' '
}
}
chain+='
'
}
return chain
}
function rebuildPath(track){
var type=0, xycoord=[], chain=''
var x=0, y=0, xy=[]
for (var i=1;i 1){
if (a%2==0){
chain+='' + track[i][a][0]+','+ track[i][a][1] + ' '
} else{
chain+='' + track[i][a][0]+','+ track[i][a][1] + ' '
}
}else{
//alert(track[i][a])
chain+=''+ track[i][a] + ' '
}
}
chain+=''
}
return chain
}
var str=""
var collection=[]
collection[0]='M 13.637059,16.6015 L 57.704964,19.379419 L 100.25764,11.17193 L 128.66818,67.487934 L 78.791899,82.513953 L 25.885159,80.493648 L 13.637059,16.6015 z' //book
//http://www.webtoolkit.info/demo/javascript-trim
function trim(str, chars) {
return ltrim(rtrim(str, chars), chars);
}
function ltrim(str, chars) {
chars = chars || "\\s";
return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
function rtrim(str, chars) {
chars = chars || "\\s";
return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}
var paper
function init(){
str=document.forms[0].inputstr.value
paper = Raphael("viewerRaphael", 400, 400 );
var tr=transformF(document.forms[0].transformI.value)
//alert(tr.join(' '))
var code= pathtrack(str,tr)
document.getElementById('divcode').innerHTML=code[0]+'
'+code[1]+'
'+code[2]
var path1shape = paper.path(str).attr({"fill": "none", "stroke": "#000000", "stroke-width": 6, "opacity": 1})
//var path2shape = paper.path(code[2]).attr({"fill": "none", "stroke": "#770000", "stroke-width": 6, "opacity": 1}).translate(50,0)
document.forms[0].inputstr.value=code[2]
return false
}
/////////////////////////
function rad2deg(angle){
return (angle/Math.PI) * 180;
}
function deg2rad(angle){
return angle / 180 * Math.PI;
}
function GetString(source, start, end){
if(!source || source.indexOf(start) == -1){
return source
}
else{
var st = source.indexOf(start) + start.length;
var en = source.indexOf(end, start);
return source.substring(st, en);//trimAll(source.substring(st, en));
}
}
function ReplaceString(source, ini, text){
if(source.indexOf(ini) > -1 && ini.length > 0){
var st = source.indexOf(ini) + ini.length;
var en0 = source.substring(0,source.indexOf(ini))
var en2 = source.substring(st)
return en0+text+en2 ;//trimAll(source.substring(st, en));
}else{
return source
}
}
/////////////////////////
// link: http://onlypaths.com/aaopblog/2010/5/18/index.htm
// http://jsfiddle.net/fxCrH/
//]]>