blob: 29c90cd9b686ad46d18f0710085ef37f86338157 [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="/ui/annotations/annotation_view.html">
<script>
'use strict';
tr.exportTo('tr.ui.annotations', function() {
/**
* A view responsible for drawing a single highlight rectangle box on
* the timeline.
* @extends {AnnotationView}
* @constructor
*/
function RectAnnotationView(viewport, annotation) {
this.viewport_ = viewport;
this.annotation_ = annotation;
}
RectAnnotationView.prototype = {
__proto__: tr.ui.annotations.AnnotationView.prototype,
draw: function(ctx) {
var dt = this.viewport_.currentDisplayTransform;
var startCoords =
this.annotation_.startLocation.toViewCoordinates(this.viewport_);
var endCoords =
this.annotation_.endLocation.toViewCoordinates(this.viewport_);
// Prevent drawing into the ruler track by clamping the initial Y
// point and the rect's Y size.
var startY = startCoords.viewY - ctx.canvas.getBoundingClientRect().top;
var sizeY = endCoords.viewY - startCoords.viewY;
if (startY + sizeY < 0) {
// In this case sizeY is negative. If final Y is negative,
// overwrite startY so that the rectangle ends at y=0.
startY = sizeY;
} else if (startY < 0) {
startY = 0;
}
ctx.fillStyle = this.annotation_.fillStyle;
ctx.fillRect(startCoords.viewX, startY,
endCoords.viewX - startCoords.viewX, sizeY);
}
};
return {
RectAnnotationView: RectAnnotationView
};
});
</script>