Page Menu
Home
Code
Search
Configure Global Search
Log In
Files
F391263
_base.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
8 KB
Subscribers
None
_base.js
View Options
if
(
!
dojo
.
_hasResource
[
"dojox.gfx._base"
]){
//_hasResource checks added by build. Do not use _hasResource directly in your code.
dojo
.
_hasResource
[
"dojox.gfx._base"
]
=
true
;
dojo
.
provide
(
"dojox.gfx._base"
);
// candidates for dojox.style (work on VML and SVG nodes)
dojox
.
gfx
.
_hasClass
=
function
(
/*DomNode*/
node
,
/*String*/
classStr
){
// summary:
// Returns whether or not the specified classes are a portion of the
// class list currently applied to the node.
// return (new RegExp('(^|\\s+)'+classStr+'(\\s+|$)')).test(node.className) // Boolean
return
((
" "
+
node
.
getAttribute
(
"className"
)
+
" "
).
indexOf
(
" "
+
classStr
+
" "
)
>=
0
);
// Boolean
}
dojox
.
gfx
.
_addClass
=
function
(
/*DomNode*/
node
,
/*String*/
classStr
){
// summary:
// Adds the specified classes to the end of the class list on the
// passed node.
var
cls
=
node
.
getAttribute
(
"className"
);
if
((
" "
+
cls
+
" "
).
indexOf
(
" "
+
classStr
+
" "
)
<
0
){
node
.
setAttribute
(
"className"
,
cls
+
(
cls
?
' '
:
''
)
+
classStr
);
}
}
dojox
.
gfx
.
_removeClass
=
function
(
/*DomNode*/
node
,
/*String*/
classStr
){
// summary: Removes classes from node.
node
.
setAttribute
(
"className"
,
node
.
getAttribute
(
"className"
).
replace
(
new
RegExp
(
'(^|\\s+)'
+
classStr
+
'(\\s+|$)'
),
"$1$2"
));
}
// candidate for dojox.html.metrics (dynamic font resize handler is not implemented here)
// derived from Morris John's emResized measurer
dojox
.
gfx
.
_base
.
_getFontMeasurements
=
function
(){
// summary
// Returns an object that has pixel equivilents of standard font size values.
var
heights
=
{
'1em'
:
0
,
'1ex'
:
0
,
'100%'
:
0
,
'12pt'
:
0
,
'16px'
:
0
,
'xx-small'
:
0
,
'x-small'
:
0
,
'small'
:
0
,
'medium'
:
0
,
'large'
:
0
,
'x-large'
:
0
,
'xx-large'
:
0
};
if
(
dojo
.
isIE
){
// we do a font-size fix if and only if one isn't applied already.
// NOTE: If someone set the fontSize on the HTML Element, this will kill it.
dojo
.
doc
.
documentElement
.
style
.
fontSize
=
"100%"
;
}
// set up the measuring node.
var
div
=
dojo
.
doc
.
createElement
(
"div"
);
div
.
style
.
position
=
"absolute"
;
div
.
style
.
left
=
"-100px"
;
div
.
style
.
top
=
"0"
;
div
.
style
.
width
=
"30px"
;
div
.
style
.
height
=
"1000em"
;
div
.
style
.
border
=
"0"
;
div
.
style
.
margin
=
"0"
;
div
.
style
.
padding
=
"0"
;
div
.
style
.
outline
=
"0"
;
div
.
style
.
lineHeight
=
"1"
;
div
.
style
.
overflow
=
"hidden"
;
dojo
.
body
().
appendChild
(
div
);
// do the measurements.
for
(
var
p
in
heights
){
div
.
style
.
fontSize
=
p
;
heights
[
p
]
=
Math
.
round
(
div
.
offsetHeight
*
12
/
16
)
*
16
/
12
/
1000
;
}
dojo
.
body
().
removeChild
(
div
);
div
=
null
;
return
heights
;
// object
};
dojox
.
gfx
.
_base
.
_fontMeasurements
=
null
;
dojox
.
gfx
.
_base
.
_getCachedFontMeasurements
=
function
(
recalculate
){
if
(
recalculate
||
!
dojox
.
gfx
.
_base
.
_fontMeasurements
){
dojox
.
gfx
.
_base
.
_fontMeasurements
=
dojox
.
gfx
.
_base
.
_getFontMeasurements
();
}
return
dojox
.
gfx
.
_base
.
_fontMeasurements
;
};
// candidate for dojo.dom
dojox
.
gfx
.
_base
.
_uniqueId
=
0
;
dojox
.
gfx
.
_base
.
_getUniqueId
=
function
(){
// summary: returns a unique string for use with any DOM element
var
id
;
do
{
id
=
"dojoUnique"
+
(
++
dojox
.
gfx
.
_base
.
_uniqueId
);
}
while
(
dojo
.
byId
(
id
));
return
id
;
};
dojo
.
mixin
(
dojox
.
gfx
,
{
// summary: defines constants, prototypes, and utility functions
// default shapes, which are used to fill in missing parameters
defaultPath
:
{
type
:
"path"
,
path
:
""
},
defaultPolyline
:
{
type
:
"polyline"
,
points
:
[]},
defaultRect
:
{
type
:
"rect"
,
x
:
0
,
y
:
0
,
width
:
100
,
height
:
100
,
r
:
0
},
defaultEllipse
:
{
type
:
"ellipse"
,
cx
:
0
,
cy
:
0
,
rx
:
200
,
ry
:
100
},
defaultCircle
:
{
type
:
"circle"
,
cx
:
0
,
cy
:
0
,
r
:
100
},
defaultLine
:
{
type
:
"line"
,
x1
:
0
,
y1
:
0
,
x2
:
100
,
y2
:
100
},
defaultImage
:
{
type
:
"image"
,
x
:
0
,
y
:
0
,
width
:
0
,
height
:
0
,
src
:
""
},
defaultText
:
{
type
:
"text"
,
x
:
0
,
y
:
0
,
text
:
""
,
align
:
"start"
,
decoration
:
"none"
,
rotated
:
false
,
kerning
:
true
},
defaultTextPath
:
{
type
:
"textpath"
,
text
:
""
,
align
:
"start"
,
decoration
:
"none"
,
rotated
:
false
,
kerning
:
true
},
// default geometric attributes
defaultStroke
:
{
type
:
"stroke"
,
color
:
"black"
,
style
:
"solid"
,
width
:
1
,
cap
:
"butt"
,
join
:
4
},
defaultLinearGradient
:
{
type
:
"linear"
,
x1
:
0
,
y1
:
0
,
x2
:
100
,
y2
:
100
,
colors
:
[{
offset
:
0
,
color
:
"black"
},
{
offset
:
1
,
color
:
"white"
}]},
defaultRadialGradient
:
{
type
:
"radial"
,
cx
:
0
,
cy
:
0
,
r
:
100
,
colors
:
[{
offset
:
0
,
color
:
"black"
},
{
offset
:
1
,
color
:
"white"
}]},
defaultPattern
:
{
type
:
"pattern"
,
x
:
0
,
y
:
0
,
width
:
0
,
height
:
0
,
src
:
""
},
defaultFont
:
{
type
:
"font"
,
style
:
"normal"
,
variant
:
"normal"
,
weight
:
"normal"
,
size
:
"10pt"
,
family
:
"serif"
},
normalizeColor
:
function
(
/*Color*/
color
){
// summary: converts any legal color representation to normalized dojo.Color object
return
(
color
instanceof
dojo
.
Color
)
?
color
:
new
dojo
.
Color
(
color
);
// dojo.Color
},
normalizeParameters
:
function
(
existed
,
update
){
// summary: updates an existing object with properties from an "update" object
// existed: Object: the "target" object to be updated
// update: Object: the "update" object, whose properties will be used to update the existed object
if
(
update
){
var
empty
=
{};
for
(
var
x
in
existed
){
if
(
x
in
update
&&
!
(
x
in
empty
)){
existed
[
x
]
=
update
[
x
];
}
}
}
return
existed
;
// Object
},
makeParameters
:
function
(
defaults
,
update
){
// summary: copies the original object, and all copied properties from the "update" object
// defaults: Object: the object to be cloned before updating
// update: Object: the object, which properties are to be cloned during updating
if
(
!
update
)
return
dojo
.
clone
(
defaults
);
var
result
=
{};
for
(
var
i
in
defaults
){
if
(
!
(
i
in
result
)){
result
[
i
]
=
dojo
.
clone
((
i
in
update
)
?
update
[
i
]
:
defaults
[
i
]);
}
}
return
result
;
// Object
},
formatNumber
:
function
(
x
,
addSpace
){
// summary: converts a number to a string using a fixed notation
// x: Number: number to be converted
// addSpace: Boolean?: if it is true, add a space before a positive number
var
val
=
x
.
toString
();
if
(
val
.
indexOf
(
"e"
)
>=
0
){
val
=
x
.
toFixed
(
4
);
}
else
{
var
point
=
val
.
indexOf
(
"."
);
if
(
point
>=
0
&&
val
.
length
-
point
>
5
){
val
=
x
.
toFixed
(
4
);
}
}
if
(
x
<
0
){
return
val
;
// String
}
return
addSpace
?
" "
+
val
:
val
;
// String
},
// font operations
makeFontString
:
function
(
font
){
// summary: converts a font object to a CSS font string
// font: Object: font object (see dojox.gfx.defaultFont)
return
font
.
style
+
" "
+
font
.
variant
+
" "
+
font
.
weight
+
" "
+
font
.
size
+
" "
+
font
.
family
;
// Object
},
splitFontString
:
function
(
str
){
// summary: converts a CSS font string to a font object
// str: String: a CSS font string
var
font
=
dojo
.
clone
(
dojox
.
gfx
.
defaultFont
);
var
t
=
str
.
split
(
/\s+/
);
do
{
if
(
t
.
length
<
5
){
break
;
}
font
.
style
=
t
[
0
];
font
.
varian
=
t
[
1
];
font
.
weight
=
t
[
2
];
var
i
=
t
[
3
].
indexOf
(
"/"
);
font
.
size
=
i
<
0
?
t
[
3
]
:
t
[
3
].
substring
(
0
,
i
);
var
j
=
4
;
if
(
i
<
0
){
if
(
t
[
4
]
==
"/"
){
j
=
6
;
break
;
}
if
(
t
[
4
].
substr
(
0
,
1
)
==
"/"
){
j
=
5
;
break
;
}
}
if
(
j
+
3
>
t
.
length
){
break
;
}
font
.
size
=
t
[
j
];
font
.
family
=
t
[
j
+
1
];
}
while
(
false
);
return
font
;
// Object
},
// length operations
cm_in_pt
:
72
/
2.54
,
// Number: centimeters per inch
mm_in_pt
:
7.2
/
2.54
,
// Number: millimeters per inch
px_in_pt
:
function
(){
// summary: returns a number of pixels per point
return
dojox
.
gfx
.
_base
.
_getCachedFontMeasurements
()[
"12pt"
]
/
12
;
// Number
},
pt2px
:
function
(
len
){
// summary: converts points to pixels
// len: Number: a value in points
return
len
*
dojox
.
gfx
.
px_in_pt
();
// Number
},
px2pt
:
function
(
len
){
// summary: converts pixels to points
// len: Number: a value in pixels
return
len
/
dojox
.
gfx
.
px_in_pt
();
// Number
},
normalizedLength
:
function
(
len
)
{
// summary: converts any length value to pixels
// len: String: a length, e.g., "12pc"
if
(
len
.
length
==
0
)
return
0
;
if
(
len
.
length
>
2
){
var
px_in_pt
=
dojox
.
gfx
.
px_in_pt
();
var
val
=
parseFloat
(
len
);
switch
(
len
.
slice
(
-
2
)){
case
"px"
:
return
val
;
case
"pt"
:
return
val
*
px_in_pt
;
case
"in"
:
return
val
*
72
*
px_in_pt
;
case
"pc"
:
return
val
*
12
*
px_in_pt
;
case
"mm"
:
return
val
/
dojox
.
gfx
.
mm_in_pt
*
px_in_pt
;
case
"cm"
:
return
val
/
dojox
.
gfx
.
cm_in_pt
*
px_in_pt
;
}
}
return
parseFloat
(
len
);
// Number
},
// a constant used to split a SVG/VML path into primitive components
pathVmlRegExp
:
/([A-Za-z]+)|(\d+(\.\d+)?)|(\.\d+)|(-\d+(\.\d+)?)|(-\.\d+)/g
,
pathSvgRegExp
:
/([A-Za-z])|(\d+(\.\d+)?)|(\.\d+)|(-\d+(\.\d+)?)|(-\.\d+)/g
,
equalSources
:
function
(
a
,
b
){
// summary: compares event sources, returns true if they are equal
return
a
&&
b
&&
a
==
b
;
}
});
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Feb 22, 20:21 (20 h, 7 m ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
26749
Default Alt Text
_base.js (8 KB)
Attached To
rZED Zed
Event Timeline
Log In to Comment