1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
/*
** InkWeb - Inkscape's Javscript features for the open vector web
**
** Copyright (C) 2009 Aurelio A. Heckert, aurium (a) gmail dot com
**
** ********* Bugs and New Fetures *************************************
** If you found any bug on this script or if you want to propose a
** new feature, please report it in the inkscape bug traker
** https://bugs.launchpad.net/inkscape/+filebug
** and assign that to Aurium.
** ********************************************************************
**
** This program is free software: you can redistribute it and/or modify
** it under the terms of the GNU Lesser General Public License as published
** by the Free Software Foundation, either version 3 of the License, or
** (at your option) any later version.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU Lesser General Public License for more details.
**
** You should have received a copy of the GNU Lesser General Public License
** along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
var InkWeb = {
version: 0.03,
NS: {
svg: "http://www.w3.org/2000/svg",
sodipodi: "http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd",
inkscape: "http://www.inkscape.org/namespaces/inkscape",
cc: "http://creativecommons.org/ns#",
dc: "http://purl.org/dc/elements/1.1/",
rdf: "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
xlink: "http://www.w3.org/1999/xlink",
xml: "http://www.w3.org/XML/1998/namespace"
}
};
InkWeb.reGetStyleAttVal = function (att) {
return new RegExp( "(^|.*;)[ ]*"+ att +":([^;]*)(;.*|$)" )
}
InkWeb.getStyle = function (el, att) {
// This method is needed because el.style is only working
// to HTML style in the Firefox 3.0
if ( typeof(el) == "string" )
el = document.getElementById(el);
var style = el.getAttribute("style");
var match = this.reGetStyleAttVal(att).exec(style);
if ( match ) {
return match[2];
} else {
return false;
}
}
InkWeb.setStyle = function (el, att, val) {
if ( typeof(el) == "string" )
el = document.getElementById(el);
var style = el.getAttribute("style");
re = this.reGetStyleAttVal(att);
if ( re.test(style) ) {
style = style.replace( re, "$1"+ att +":"+ val +"$3" );
} else {
style += ";"+ att +":"+ val;
}
el.setAttribute( "style", style );
return val
}
InkWeb.transmitAtt = function (conf) {
conf.att = conf.att.split( /\s+/ );
if ( typeof(conf.from) == "string" )
conf.from = document.getElementById( conf.from );
if ( ! conf.to.join )
conf.to = [ conf.to ];
for ( var toEl,elN=0; toEl=conf.to[elN]; elN++ ) {
if ( typeof(toEl) == "string" )
toEl = document.getElementById( toEl );
for ( var i=0; i<conf.att.length; i++ ) {
var val = this.getStyle( conf.from, conf.att[i] );
if ( val ) {
this.setStyle( toEl, conf.att[i], val );
} else {
val = conf.from.getAttribute(conf.att[i]);
toEl.setAttribute( conf.att[i], val );
}
}
}
}
InkWeb.setAtt = function (conf) {
if ( ! conf.el.join )
conf.to = [ conf.el ];
conf.att = conf.att.split( /\s+/ );
conf.val = conf.val.split( /\s+/ );
for ( var el,elN=0; el=conf.el[elN]; elN++ ) {
if ( typeof(el) == "string" )
el = document.getElementById( el );
for ( var att,i=0; att=conf.att[i]; i++ ) {
if (
att == "width" ||
att == "height" ||
att == "x" ||
att == "y" ||
att == "cx" ||
att == "cy" ||
att == "r" ||
att == "rx" ||
att == "ry" ||
att == "transform"
) {
el.setAttribute( att, conf.val[i] );
} else {
this.setStyle( el, att, conf.val[i] );
}
}
}
}
|