Page Menu
Home
Code
Search
Configure Global Search
Log In
Files
F947543
Annotation.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
5 KB
Subscribers
None
Annotation.js
View Options
/*
Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
Available via Academic Free License >= 2.1 OR the modified BSD license.
see: http://dojotoolkit.org/license for details
*/
if
(
!
dojo
.
_hasResource
[
"dojox.sketch.Annotation"
]){
dojo
.
_hasResource
[
"dojox.sketch.Annotation"
]
=
true
;
dojo
.
provide
(
"dojox.sketch.Annotation"
);
dojo
.
require
(
"dojox.sketch.Anchor"
);
dojo
.
require
(
"dojox.sketch._Plugin"
);
(
function
(){
var
ta
=
dojox
.
sketch
;
dojo
.
declare
(
"dojox.sketch.AnnotationTool"
,
ta
.
_Plugin
,{
onMouseDown
:
function
(
e
){
this
.
_omd
=
true
;
},
onMouseMove
:
function
(
e
,
_1
){
if
(
!
this
.
_omd
){
return
;
}
if
(
this
.
_cshape
){
this
.
_cshape
.
setShape
(
_1
);
}
else
{
this
.
_cshape
=
this
.
figure
.
surface
.
createRect
(
_1
).
setStroke
({
color
:
"#999"
,
width
:
1
,
style
:
"ShortDot"
}).
setFill
([
255
,
255
,
255
,
0.7
]);
this
.
_cshape
.
getEventSource
().
setAttribute
(
"shape-rendering"
,
"crispEdges"
);
}
},
onMouseUp
:
function
(
e
){
if
(
!
this
.
_omd
){
return
;
}
this
.
_omd
=
false
;
var
f
=
this
.
figure
;
if
(
this
.
_cshape
){
f
.
surface
.
remove
(
this
.
_cshape
);
delete
this
.
_cshape
;
}
if
(
!
(
f
.
_startPoint
.
x
==
e
.
pageX
&&
f
.
_startPoint
.
y
==
e
.
pageY
)){
var
_2
=
10
;
if
(
Math
.
max
(
_2
,
Math
.
abs
(
f
.
_absEnd
.
x
-
f
.
_start
.
x
),
Math
.
abs
(
f
.
_absEnd
.
y
-
f
.
_start
.
y
))
>
_2
){
this
.
_create
(
f
.
_start
,
f
.
_end
);
}
}
},
_create
:
function
(
_3
,
_4
){
var
f
=
this
.
figure
;
var
_5
=
f
.
nextKey
();
var
a
=
new
(
this
.
annotation
)(
f
,
_5
);
a
.
transform
=
{
dx
:
f
.
_calCol
(
_3
.
x
/
f
.
zoomFactor
),
dy
:
f
.
_calCol
(
_3
.
y
/
f
.
zoomFactor
)};
a
.
end
=
{
x
:
f
.
_calCol
(
_4
.
x
/
f
.
zoomFactor
),
y
:
f
.
_calCol
(
_4
.
y
/
f
.
zoomFactor
)};
if
(
a
.
control
){
a
.
control
=
{
x
:
f
.
_calCol
((
_4
.
x
/
2
)
/
f
.
zoomFactor
),
y
:
f
.
_calCol
((
_4
.
y
/
2
)
/
f
.
zoomFactor
)};
}
f
.
onBeforeCreateShape
(
a
);
a
.
initialize
();
f
.
select
(
a
);
f
.
onCreateShape
(
a
);
f
.
history
.
add
(
ta
.
CommandTypes
.
Create
,
a
);
}});
ta
.
Annotation
=
function
(
_6
,
id
){
this
.
id
=
this
.
_key
=
id
;
this
.
figure
=
_6
;
this
.
mode
=
ta
.
Annotation
.
Modes
.
View
;
this
.
shape
=
null
;
this
.
boundingBox
=
null
;
this
.
hasAnchors
=
true
;
this
.
anchors
=
{};
this
.
_properties
=
{
"stroke"
:
{
color
:
"blue"
,
width
:
2
},
"font"
:
{
family
:
"Arial"
,
size
:
16
,
weight
:
"bold"
},
"fill"
:
"blue"
,
"label"
:
""
};
if
(
this
.
figure
){
this
.
figure
.
add
(
this
);
}
};
var
p
=
ta
.
Annotation
.
prototype
;
p
.
constructor
=
ta
.
Annotation
;
p
.
type
=
function
(){
return
""
;
};
p
.
getType
=
function
(){
return
ta
.
Annotation
;
};
p
.
onRemove
=
function
(
_7
){
this
.
figure
.
history
.
add
(
ta
.
CommandTypes
.
Delete
,
this
,
this
.
serialize
());
};
p
.
property
=
function
(
_8
,
_9
){
var
r
;
_8
=
_8
.
toLowerCase
();
if
(
this
.
_properties
[
_8
]
!==
undefined
){
r
=
this
.
_properties
[
_8
];
}
if
(
arguments
.
length
>
1
){
this
.
_properties
[
_8
]
=
_9
;
if
(
r
!=
_9
){
this
.
onPropertyChange
(
_8
,
r
);
}
}
return
r
;
};
p
.
onPropertyChange
=
function
(
_a
,
_b
){
};
p
.
onCreate
=
function
(){
this
.
figure
.
history
.
add
(
ta
.
CommandTypes
.
Create
,
this
);
};
p
.
onDblClick
=
function
(
e
){
var
l
=
prompt
(
"Set new text:"
,
this
.
property
(
"label"
));
if
(
l
!==
false
){
this
.
beginEdit
(
ta
.
CommandTypes
.
Modify
);
this
.
property
(
"label"
,
l
);
this
.
draw
();
this
.
endEdit
();
}
};
p
.
initialize
=
function
(){
};
p
.
destroy
=
function
(){
};
p
.
draw
=
function
(){
};
p
.
apply
=
function
(
_c
){
};
p
.
serialize
=
function
(){
};
p
.
getBBox
=
function
(){
};
p
.
beginEdit
=
function
(
_d
){
if
(
!
this
.
_type
){
this
.
_type
=
_d
||
ta
.
CommandTypes
.
Move
;
this
.
_prevState
=
this
.
serialize
();
}
};
p
.
endEdit
=
function
(){
if
(
this
.
_prevState
!=
this
.
serialize
()){
this
.
figure
.
history
.
add
(
this
.
_type
,
this
,
this
.
_prevState
);
}
this
.
_type
=
this
.
_prevState
=
""
;
};
p
.
calculate
=
{
slope
:
function
(
p1
,
p2
){
if
(
!
(
p1
.
x
-
p2
.
x
)){
return
0
;
}
return
((
p1
.
y
-
p2
.
y
)
/
(
p1
.
x
-
p2
.
x
));
},
dx
:
function
(
p1
,
p2
,
dy
){
var
s
=
this
.
slope
(
p1
,
p2
);
if
(
s
==
0
){
return
s
;
}
return
dy
/
s
;
},
dy
:
function
(
p1
,
p2
,
dx
){
return
this
.
slope
(
p1
,
p2
)
*
dx
;
}};
p
.
drawBBox
=
function
(){
var
r
=
this
.
getBBox
();
if
(
!
this
.
boundingBox
){
this
.
boundingBox
=
this
.
shape
.
createRect
(
r
).
moveToBack
().
setStroke
({
color
:
"#999"
,
width
:
1
,
style
:
"Dash"
}).
setFill
([
238
,
238
,
238
,
0.3
]);
this
.
boundingBox
.
getEventSource
().
setAttribute
(
"id"
,
this
.
id
+
"-boundingBox"
);
this
.
boundingBox
.
getEventSource
().
setAttribute
(
"shape-rendering"
,
"crispEdges"
);
this
.
figure
.
_add
(
this
);
}
else
{
this
.
boundingBox
.
setShape
(
r
);
}
};
p
.
setBinding
=
function
(
pt
){
this
.
transform
.
dx
+=
pt
.
dx
;
this
.
transform
.
dy
+=
pt
.
dy
;
this
.
draw
();
};
p
.
getTextBox
=
function
(
_e
){
var
fp
=
this
.
property
(
"font"
);
var
f
=
{
fontFamily
:
fp
.
family
,
fontSize
:
fp
.
size
,
fontWeight
:
fp
.
weight
};
if
(
_e
){
f
.
fontSize
=
Math
.
floor
(
f
.
fontSize
/
_e
);
}
return
dojox
.
gfx
.
_base
.
_getTextBox
(
this
.
property
(
"label"
),
f
);
};
p
.
setMode
=
function
(
m
){
if
(
this
.
mode
==
m
){
return
;
}
this
.
mode
=
m
;
var
_f
=
"disable"
;
if
(
m
==
ta
.
Annotation
.
Modes
.
Edit
){
_f
=
"enable"
;
}
if
(
_f
==
"enable"
){
this
.
drawBBox
();
this
.
figure
.
_add
(
this
);
}
else
{
if
(
this
.
boundingBox
){
if
(
this
.
shape
){
this
.
shape
.
remove
(
this
.
boundingBox
);
}
this
.
boundingBox
=
null
;
}
}
for
(
var
p
in
this
.
anchors
){
this
.
anchors
[
p
][
_f
]();
}
};
p
.
zoom
=
function
(
pct
){
pct
=
pct
||
this
.
figure
.
zoomFactor
;
if
(
this
.
labelShape
){
var
f
=
dojo
.
clone
(
this
.
property
(
"font"
));
f
.
size
=
Math
.
ceil
(
f
.
size
/
pct
)
+
"px"
;
this
.
labelShape
.
setFont
(
f
);
}
for
(
var
n
in
this
.
anchors
){
this
.
anchors
[
n
].
zoom
(
pct
);
}
if
(
dojox
.
gfx
.
renderer
==
"vml"
){
pct
=
1
;
}
if
(
this
.
pathShape
){
var
s
=
dojo
.
clone
(
this
.
property
(
"stroke"
));
s
.
width
=
pct
>
1
?
s
.
width
:
Math
.
ceil
(
s
.
width
/
pct
)
+
"px"
;
this
.
pathShape
.
setStroke
(
s
);
}
};
p
.
writeCommonAttrs
=
function
(){
return
"id=\""
+
this
.
id
+
"\" dojoxsketch:type=\""
+
this
.
type
()
+
"\""
+
" transform=\"translate("
+
this
.
transform
.
dx
+
","
+
this
.
transform
.
dy
+
")\""
+
(
this
.
data
?
(
" ><![CDATA[data:"
+
dojo
.
toJson
(
this
.
data
)
+
"]]"
)
:
""
);
};
p
.
readCommonAttrs
=
function
(
obj
){
var
i
=
0
,
cs
=
obj
.
childNodes
,
c
;
while
((
c
=
cs
[
i
++
])){
if
(
c
.
nodeType
==
4
){
if
(
c
.
nodeValue
.
substr
(
0
,
11
)
==
"properties:"
){
this
.
_properties
=
dojo
.
fromJson
(
c
.
nodeValue
.
substr
(
11
));
}
else
{
if
(
c
.
nodeValue
.
substr
(
0
,
5
)
==
"data:"
){
this
.
data
=
dojo
.
fromJson
(
c
.
nodeValue
.
substr
(
5
));
}
else
{
console
.
error
(
"unknown CDATA node in node "
,
obj
);
}
}
}
}
if
(
obj
.
getAttribute
(
"transform"
)){
var
t
=
obj
.
getAttribute
(
"transform"
).
replace
(
"translate("
,
""
);
var
pt
=
t
.
split
(
","
);
this
.
transform
.
dx
=
parseFloat
(
pt
[
0
],
10
);
this
.
transform
.
dy
=
parseFloat
(
pt
[
1
],
10
);
}
};
ta
.
Annotation
.
Modes
=
{
View
:
0
,
Edit
:
1
};
ta
.
Annotation
.
register
=
function
(
_10
,
_11
){
var
cls
=
ta
[
_10
+
"Annotation"
];
ta
.
registerTool
(
_10
,
function
(
p
){
dojo
.
mixin
(
p
,{
shape
:
_10
,
annotation
:
cls
});
return
new
(
_11
||
ta
.
AnnotationTool
)(
p
);
});
};
})();
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Apr 26, 12:19 (1 d, 10 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
26295
Default Alt Text
Annotation.js (5 KB)
Attached To
rZED Zed
Event Timeline
Log In to Comment