// Copyright (c) 2013 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. 'use strict'; /** * @fileoverview RectView is used to visualize a rect. */ base.exportTo('ui', function() { // Area above the RectView used draw decorations. var DECORATION_HEIGHT = 36; /** * @constructor */ var RectView = ui.define('rect-view'); RectView.prototype = { __proto__: HTMLUnknownElement.prototype, decorate: function() { this.viewport_ = undefined; this.rect_ = undefined; }, set viewport(viewport) { this.viewport_ = viewport; this.updateContents_(); }, set rect(rect) { this.rect_ = rect; this.updateContents_(); }, updateContents_: function() { if (this.viewport_ === undefined || this.rect_ === undefined) return; var devicePixelsPerLayoutPixel = 1 / this.viewport_.devicePixelRatio; var topLeft = vec2.fromValues(this.rect_.x, this.rect_.y); var botRight = vec2.fromValues( topLeft[0] + this.rect_.width, topLeft[1] + this.rect_.height); vec2.transformMat2d(topLeft, topLeft, this.viewport_.getWorldToDevicePixelsTransform()); vec2.scale(topLeft, topLeft, devicePixelsPerLayoutPixel); vec2.transformMat2d(botRight, botRight, this.viewport_.getWorldToDevicePixelsTransform()); vec2.scale(botRight, botRight, devicePixelsPerLayoutPixel); this.style.width = botRight[0] - topLeft[0] + 'px'; this.style.height = DECORATION_HEIGHT + botRight[1] - topLeft[1] + 'px'; this.style.left = topLeft[0] + 'px'; this.style.top = DECORATION_HEIGHT + topLeft[1] + 'px'; this.style.backgroundSize = 'auto ' + DECORATION_HEIGHT + 'px'; } }; return { RectView: RectView }; });