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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 <!--
2 Copyright 2014 The Chromium Authors. All rights reserved.
3 Use of this source code is governed by a BSD-style license that can be
4 found in the LICENSE file.
5 -->
6
7 <polymer-element name="ct-results-comparison-zoomer" attributes="expectedUrl act ualUrl diffUrl position">
8 <template>
9 <style>
10 :host {
11 background-color: silver;
12 border: 1px solid gray;
13 box-shadow: 0 0 5px rgba(0, 0, 0, 0.75);
14 display: flex;
15 pointer-events: none;
16 position: fixed;
17 top: 0;
18 width: 100%;
19 }
20
21 :host > * {
22 flex: 1;
23 }
24
25 .label {
26 background-color: white;
27 text-align: center;
28 }
29
30 .container {
31 border: 1px solid gray;
32 height: 400px;
33 line-height: 0;
34 }
35
36 .container > img {
37 display: none;
38 }
39 </style>
40
41 <div>
42 <div class="label">Expected</div>
43 <div id="expectedZoomer" class="container">
44 <img src="{{ expectedUrl }}">
45 <canvas></canvas>
46 </div>
47 </div>
48
49 <div>
50 <div class="label">Actual</div>
51 <div id="actualZoomer" class="container">
52 <img src="{{ actualUrl }}">
53 <canvas></canvas>
54 </div>
55 </div>
56
57 <div>
58 <div class="label">Diff</div>
59 <div id="diffZoomer" class="container">
60 <img src="{{ diffUrl }}">
61 <canvas></canvas>
62 </div>
63 </div>
64 </template>
65 <script>
66 (function() {
67 var kResultWidth = 800;
68 var kResultHeight = 600;
69 var kZoomFactor = 6;
70 var kZoomedResultWidth = kResultWidth * kZoomFactor;
71 var kZoomedResultHeight = kResultHeight * kZoomFactor;
72
73 Polymer({
74 expectedUrl: '',
75 actualUrl: '',
76 diffUrl: '',
77 position: null,
78 _drawScheduled: false,
79
80 positionChanged: function() {
81 if (!this._drawScheduled) {
82 this._drawScheduled = true;
83 this.async(this._drawAll);
84 }
85 },
86
87 _drawAll: function() {
88 this._drawScheduled = false;
89
90 if (!this.position)
91 return;
92
93 this._draw(this.$.expectedZoomer);
94 this._draw(this.$.actualZoomer);
95 this._draw(this.$.diffZoomer);
96 },
97
98 _draw: function(imageContainer) {
99 var canvas = imageContainer.querySelector('canvas');
100 canvas.width = imageContainer.clientWidth;
101 canvas.height = imageContainer.clientHeight;
102
103 var ctx = canvas.getContext('2d');
104 ctx.imageSmoothingEnabled = false;
105 ctx.translate(imageContainer.clientWidth / 2, imageContainer.clientHeigh t / 2);
106 ctx.translate(-this.position.y * kZoomedResultWidth, -this.position.x * kZoomedResultHeight);
107 ctx.strokeRect(-1.5, -1.5, kZoomedResultWidth + 2, kZoomedResultHeight + 2);
108 ctx.scale(kZoomFactor, kZoomFactor);
109 ctx.drawImage(imageContainer.querySelector('img'), 0, 0);
110 },
111 });
112 })();
113 </script>
114 </polymer-element>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698