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

Side by Side Diff: experimental/skpdiff/diff_viewer.js

Issue 18925004: modularize the display of diffs for skpdiff (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: swapimg -> swapImg Created 7 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
« no previous file with comments | « no previous file | experimental/skpdiff/viewer.html » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 function DiffViewController($scope) { 1 angular.module('diff_viewer', []).
2 config(['$routeProvider', function($routeProvider) {
3 // Show the list of differences by default
4 $routeProvider.
5 otherwise({ templateUrl: '/diff_list.html', controller: DiffListController}) ;
6 }]).
7 directive('swapImg', function() {
8 // Custom directive for showing an image that gets swapped my mouseover.
9 return {
10 restrict: 'E', // The directive can be used as an element name
11 replace: true, // The directive replaces itself with the template
12 template: '<canvas ng-mouseenter="swap()" ng-mouseleave="swap()"></canva s>',
13 scope: { // The attributes below are bound to the scope
14 leftSrc: '@',
15 rightSrc: '@',
16 side: '@'
17 },
18 link: function(scope, elm, attrs, ctrl) {
19 var leftImage = new Image();
20 var rightImage = new Image();
21 var ctx = elm[0].getContext('2d');
22
23 scope.render = function() {
24 var image;
25 if (scope.side == "left") {
26 image = leftImage;
27 } else {
28 image = rightImage;
29 }
30
31 // Make it so the maximum size of an image is 500, and the image s are scaled
32 // down in halves.
33 var divisor = 1;
34 while ((image.width / divisor) > 500) {
35 divisor *= 2;
36 }
37
38 // Set canvas to correct size and draw the image into it
39 elm[0].width = image.width / divisor;
40 elm[0].height = image.height / divisor;
41 ctx.drawImage(image, 0, 0, elm[0].width, elm[0].height);
42 };
43
44 // When the leftSrc attribute changes, load the image and then reren der
45 attrs.$observe('leftSrc', function(value) {
46 leftImage.src = value;
47 leftImage.onload = function() {
48 if (scope.side == "left") {
49 scope.render();
50 }
51 };
52 });
53
54 // When the rightSrc attribute changes, load the image and then rere nder
55 attrs.$observe('rightSrc', function(value) {
56 rightImage.src = value;
57 rightImage.onload = function() {
58 if (scope.side == "right") {
59 scope.render();
60 }
61 };
62 });
63
64 // Swap which side to draw onto the canvas and then rerender
65 scope.swap = function() {
66 if (scope.side == "left") {
67 scope.side = "right";
68 } else {
69 scope.side = "left";
70 }
71 scope.render();
72 };
73 }
74 };
75 });
76
77 function DiffListController($scope) {
78 // Label each kind of differ for the sort buttons.
2 $scope.differs = [ 79 $scope.differs = [
3 { 80 {
4 "title": "Different Pixels" 81 "title": "Different Pixels"
5 }, 82 },
6 { 83 {
7 "title": "Perceptual Difference" 84 "title": "Perceptual Difference"
8 } 85 }
9 ]; 86 ];
87
88 // Puts the records within AngularJS scope
89 $scope.records = SkPDiffRecords.records;
90
91 // Indicates which diff metric is used for sorting
10 $scope.sortIndex = 1; 92 $scope.sortIndex = 1;
11 $scope.records = SkPDiffRecords.records; 93
12 $scope.highlight = function(differName) { 94 // Called by the sort buttons to adjust the metric used for sorting
13 console.debug(differName); 95 $scope.setSortIndex = function(idx) {
14 } 96 $scope.sortIndex = idx;
15 $scope.setSortIndex = function(a) { 97 };
16 $scope.sortIndex = a; 98
17 } 99 // A predicate for pulling out the number used for sorting
18 $scope.sortingDiffer = function(a) { 100 $scope.sortingDiffer = function(record) {
19 console.debug($scope.sortIndex); 101 return record.diffs[$scope.sortIndex].result;
20 return a.diffs[$scope.sortIndex].result; 102 };
21 } 103 }
22 }
OLDNEW
« no previous file with comments | « no previous file | experimental/skpdiff/viewer.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698