blob: 6cdfd2e417f343bf97a0d09ecce82557cedd6b25 [file] [log] [blame]
<!DOCTYPE html>
<!--
Copyright (c) 2015 The Chromium Authors. All rights reserved.
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->
<link rel="import" href="/core/tracks/annotation_view.html">
<script>
'use strict';
tr.exportTo('tr.c.annotations', function() {
/**
* A view of a comment box consisting of a textarea and a line to the
* actual location.
* @extends {AnnotationView}
* @constructor
*/
function CommentBoxAnnotationView(viewport, annotation) {
this.viewport_ = viewport;
this.annotation_ = annotation;
this.textArea_ = undefined;
this.styleWidth = 250;
this.styleHeight = 50;
this.fontSize = 10;
this.rightOffset = 50;
this.topOffset = 25;
}
CommentBoxAnnotationView.prototype = {
__proto__: tr.c.annotations.AnnotationView.prototype,
removeTextArea: function() {
this.textArea_.parentNode.removeChild(this.textArea_);
},
draw: function(ctx) {
var coords = this.annotation_.location.toViewCoordinates(this.viewport_);
if (coords.viewX < 0) {
if (this.textArea_)
this.textArea_.style.visibility = 'hidden';
return;
}
// Set up textarea element.
if (!this.textArea_) {
this.textArea_ = document.createElement('textarea');
this.textArea_.style.position = 'absolute';
this.textArea_.readOnly = true;
this.textArea_.value = this.annotation_.text;
// Set the z-index so that this is shown on top of canvas.
this.textArea_.style.zIndex = 1;
ctx.canvas.parentNode.appendChild(this.textArea_);
}
this.textArea_.style.width = this.styleWidth + 'px';
this.textArea_.style.height = this.styleHeight + 'px';
this.textArea_.style.fontSize = this.fontSize + 'px';
this.textArea_.style.visibility = 'visible';
// Update positions to latest coordinate.
this.textArea_.style.left =
coords.viewX + ctx.canvas.getBoundingClientRect().left +
this.rightOffset + 'px';
this.textArea_.style.top =
coords.viewY - ctx.canvas.getBoundingClientRect().top -
this.topOffset + 'px';
// Draw pointer line from offset to actual location.
ctx.strokeStyle = 'rgb(0, 0, 0)';
ctx.lineWidth = 2;
ctx.beginPath();
tr.c.drawLine(ctx, coords.viewX,
coords.viewY - ctx.canvas.getBoundingClientRect().top,
coords.viewX + this.rightOffset,
coords.viewY - this.topOffset -
ctx.canvas.getBoundingClientRect().top);
ctx.stroke();
}
};
return {
CommentBoxAnnotationView: CommentBoxAnnotationView
};
});
</script>