--- a/src/widgets/Arrow.js Thu Jan 02 16:40:25 2014 +0100
+++ b/src/widgets/Arrow.js Thu Jan 02 16:49:20 2014 +0100
@@ -6,25 +6,25 @@
IriSP.Widgets.Arrow.prototype = new IriSP.Widgets.Widget();
IriSP.Widgets.Arrow.prototype.defaults = {
- arrow_height : 12,
- arrow_width : 20,
+ arrow_height : 16,
+ arrow_width : 24,
base_height : 0,
base_curve : 0,
fill_url: IriSP.widgetsDir + '/img/pinstripe.png',
fill_color: "#ffffff", //Gradients can be used, e.g. "90-#000-#fff" for vertical white-to-black
stroke_color: "#b7b7b7",
stroke_width: 1.5,
- animation_speed: 20
-};
+ animation_speed: 20,
+ pilot_widget: "Annotation"
+}
IriSP.Widgets.Arrow.prototype.draw = function() {
this.height = this.arrow_height + this.base_height;
this.$.addClass("Ldt-Arrow").css({
- height: (1+this.height) + "px",
- "margin-top": "1px",
- overflow: "hidden"
+ height: this.height + "px",
+ "margin-top": "1px"
});
- this.paper = new Raphael(this.container, this.width, 1+this.height );
+ this.paper = new Raphael(this.container, this.width, this.height );
window.myArrow = this;
this.svgArrow = this.paper.path('M0,' + this.height + 'L' + this.width + ',' + this.height);
this.svgArrow.attr({
@@ -32,11 +32,14 @@
"stroke-width": this.stroke_width,
fill: this.fill_url ? ( 'url(' + this.fill_url + ')' ) : this.fill_color
});
- this.moveToX(0);
-};
+ this.moveTo(0);
+ this.bindPopcorn("IriSP.Arrow.updatePosition","onUpdatePosition");
+ this.bindPopcorn("IriSP.Arrow.takeover","onTakeover");
+ this.bindPopcorn("IriSP.Arrow.release","onRelease");
+}
IriSP.Widgets.Arrow.prototype.drawAt = function(_x) {
- _x = Math.max(0, Math.min(_x, this.width));
+ _x = Math.floor(Math.max(0, Math.min(_x, this.width)));
var _d = 'M0,' + this.height
+ 'L0,' + Math.min( this.height, this.arrow_height + this.base_curve)
+ 'Q0,' + this.arrow_height
@@ -53,22 +56,18 @@
this.svgArrow.attr({
path: _d
});
-};
+}
-IriSP.Widgets.Arrow.prototype.moveToX = function(_x) {
- this.targetX = Math.max(0, Math.min(_x, this.width));
+IriSP.Widgets.Arrow.prototype.moveTo = function(_x) {
+ this.targetX = Math.floor(Math.max(0, Math.min(_x, this.width)));
if (typeof this.animInterval === "undefined") {
this.animInterval = window.setInterval(
this.functionWrapper("increment"),
40
- );
+ )
}
this.increment();
-};
-
-IriSP.Widgets.Arrow.prototype.moveToTime = function(_t) {
- this.moveToX(this.width * _t / this.media.duration);
-};
+}
IriSP.Widgets.Arrow.prototype.increment = function() {
if (typeof this.currentX === "undefined") {
@@ -85,4 +84,22 @@
this.animInterval = undefined;
}
this.drawAt(this.currentX);
-};
+}
+
+IriSP.Widgets.Arrow.prototype.onUpdatePosition = function(_param) {
+ if (_param.widget === this.current_pilot_widget) {
+ if (typeof _param.x !== "undefined") {
+ this.moveTo(_param.x);
+ } else {
+ this.moveTo(this.width * _param.time / this.source.getDuration());
+ }
+ }
+}
+
+IriSP.Widgets.Arrow.prototype.onTakeover = function(_widget) {
+ this.current_pilot_widget = _widget;
+}
+
+IriSP.Widgets.Arrow.prototype.onRelease = function(_widget) {
+ this.current_pilot_widget = this.pilot_widget;
+}