Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1450)

Unified Diff: Tools/GardeningServer/ui/ct-results-comparison-zoomer.html

Issue 403983002: Port pixelzoomer.js/css to ct-results-comparison. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: make component. add tests. Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Tools/GardeningServer/ui/ct-results-comparison-zoomer.html
diff --git a/Tools/GardeningServer/ui/ct-results-comparison-zoomer.html b/Tools/GardeningServer/ui/ct-results-comparison-zoomer.html
new file mode 100644
index 0000000000000000000000000000000000000000..9b7127794cd8820220ac0181559955413008a5cb
--- /dev/null
+++ b/Tools/GardeningServer/ui/ct-results-comparison-zoomer.html
@@ -0,0 +1,114 @@
+<!--
+Copyright 2014 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.
+-->
+
+<polymer-element name="ct-results-comparison-zoomer" attributes="expectedUrl actualUrl diffUrl position">
+ <template>
+ <style>
+ :host {
+ background-color: silver;
+ border: 1px solid gray;
+ box-shadow: 0 0 5px rgba(0, 0, 0, 0.75);
+ display: flex;
+ pointer-events: none;
+ position: fixed;
+ top: 0;
+ width: 100%;
+ }
+
+ :host > * {
+ flex: 1;
+ }
+
+ .label {
+ background-color: white;
+ text-align: center;
+ }
+
+ .container {
+ border: 1px solid gray;
+ height: 400px;
+ line-height: 0;
+ }
+
+ .container > img {
+ display: none;
+ }
+ </style>
+
+ <div>
+ <div class="label">Expected</div>
+ <div id="expectedZoomer" class="container">
+ <img src="{{ expectedUrl }}">
+ <canvas></canvas>
+ </div>
+ </div>
+
+ <div>
+ <div class="label">Actual</div>
+ <div id="actualZoomer" class="container">
+ <img src="{{ actualUrl }}">
+ <canvas></canvas>
+ </div>
+ </div>
+
+ <div>
+ <div class="label">Diff</div>
+ <div id="diffZoomer" class="container">
+ <img src="{{ diffUrl }}">
+ <canvas></canvas>
+ </div>
+ </div>
+ </template>
+ <script>
+ (function() {
+ var kResultWidth = 800;
+ var kResultHeight = 600;
+ var kZoomFactor = 6;
+ var kZoomedResultWidth = kResultWidth * kZoomFactor;
+ var kZoomedResultHeight = kResultHeight * kZoomFactor;
+
+ Polymer({
+ expectedUrl: '',
+ actualUrl: '',
+ diffUrl: '',
+ position: null,
+ _drawScheduled: false,
+
+ positionChanged: function() {
+ if (!this._drawScheduled) {
+ this._drawScheduled = true;
+ this.async(this._drawAll);
+ }
+ },
+
+ _drawAll: function() {
+ this._drawScheduled = false;
+
+ if (!this.position)
+ return;
+
+ this._draw(this.$.expectedZoomer);
+ this._draw(this.$.actualZoomer);
+ this._draw(this.$.diffZoomer);
+ },
+
+ _draw: function(imageContainer) {
+ var canvas = imageContainer.querySelector('canvas');
+ canvas.width = imageContainer.clientWidth;
+ canvas.height = imageContainer.clientHeight;
+
+ var ctx = canvas.getContext('2d');
+ ctx.imageSmoothingEnabled = false;
+ ctx.translate(imageContainer.clientWidth / 2, imageContainer.clientHeight / 2);
+ ctx.translate(-this.position.y * kZoomedResultWidth, -this.position.x * kZoomedResultHeight);
+ ctx.strokeRect(-1.5, -1.5, kZoomedResultWidth + 2, kZoomedResultHeight + 2);
+ ctx.scale(kZoomFactor, kZoomFactor);
+ ctx.drawImage(imageContainer.querySelector('img'), 0, 0);
+ },
+ });
+ })();
+ </script>
+</polymer-element>

Powered by Google App Engine
This is Rietveld 408576698