aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar zachr@google.com <zachr@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-07-09 21:08:28 +0000
committerGravatar zachr@google.com <zachr@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-07-09 21:08:28 +0000
commit9432c0c2843112c293be2630421ddc52cbf62583 (patch)
tree7b33a0c6481c81e904281fa2672cc3bfba2b034a
parentdc7919f228da7f15731e0c7f11e21f5dfac2c129 (diff)
add diff viewer website
- adjust PMetric output to be percentage R=borenet@google.com, bsalomon@google.com Review URL: https://codereview.chromium.org/18132007 git-svn-id: http://skia.googlecode.com/svn/trunk@9942 2bbb7eff-a529-9590-31e7-b0007b416f81
-rw-r--r--experimental/skpdiff/SkPMetric.cpp2
-rw-r--r--experimental/skpdiff/diff_viewer.js22
-rw-r--r--experimental/skpdiff/viewer.html44
-rw-r--r--experimental/skpdiff/viewer_style.css76
4 files changed, 143 insertions, 1 deletions
diff --git a/experimental/skpdiff/SkPMetric.cpp b/experimental/skpdiff/SkPMetric.cpp
index 710b18bd20..a9628539b5 100644
--- a/experimental/skpdiff/SkPMetric.cpp
+++ b/experimental/skpdiff/SkPMetric.cpp
@@ -379,7 +379,7 @@ float pmetric(const ImageLAB* baselineLAB, const ImageLAB* testLAB, SkTDArray<Sk
SkDELETE_ARRAY(cyclesPerDegree);
SkDELETE_ARRAY(contrast);
SkDELETE_ARRAY(thresholdFactorFrequency);
- return (double)failures;
+ return 1.0 - (double)failures / (width * height);
}
const char* SkPMetric::getName() {
diff --git a/experimental/skpdiff/diff_viewer.js b/experimental/skpdiff/diff_viewer.js
new file mode 100644
index 0000000000..338dbdfaef
--- /dev/null
+++ b/experimental/skpdiff/diff_viewer.js
@@ -0,0 +1,22 @@
+function DiffViewController($scope) {
+ $scope.differs = [
+ {
+ "title": "Different Pixels"
+ },
+ {
+ "title": "Perceptual Difference"
+ }
+ ];
+ $scope.sortIndex = 1;
+ $scope.records = SkPDiffRecords.records;
+ $scope.highlight = function(differName) {
+ console.debug(differName);
+ }
+ $scope.setSortIndex = function(a) {
+ $scope.sortIndex = a;
+ }
+ $scope.sortingDiffer = function(a) {
+ console.debug($scope.sortIndex);
+ return a.diffs[$scope.sortIndex].result;
+ }
+} \ No newline at end of file
diff --git a/experimental/skpdiff/viewer.html b/experimental/skpdiff/viewer.html
new file mode 100644
index 0000000000..b0ac4f2e58
--- /dev/null
+++ b/experimental/skpdiff/viewer.html
@@ -0,0 +1,44 @@
+<!doctype html>
+<html>
+ <head>
+ <script type="text/javascript"
+ src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
+ <script type="text/javascript" src="skpdiff_output.json"></script>
+ <script type="text/javascript" src="diff_viewer.js"></script>
+ <link rel="stylesheet" type="text/css" href="viewer_style.css">
+ <title>SkPDiff</title>
+ </head>
+ <body>
+ <div ng-app ng-controller="DiffViewController">
+ <div style="margin:8px">
+ Show me the worst by metric:
+ <button ng-repeat="differ in differs" ng-click="setSortIndex($index)">
+ <span class="result-{{ $index }}" style="padding-left:12px;">&nbsp;</span>
+ {{ differ.title }}
+ </button>
+ </div>
+ <table>
+ <thead>
+ <tr>
+ <td>Baseline Image</td>
+ <td>Actual Image</td>
+ <td>Results</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr ng-repeat="record in records | orderBy:sortingDiffer | limitTo:500">
+ <td><img src="{{ record.baselinePath }}" class="gm-image baseline-image" /></td>
+ <td><img src="{{ record.testPath }}" class="gm-image test-image" /></td>
+ <td>
+ <div ng-repeat="diff in record.diffs"
+ ng-mouseover="highlight(diff.differName)"
+ class="result result-{{$index}}">
+ <span class="result-button">{{ diff.result }}</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/experimental/skpdiff/viewer_style.css b/experimental/skpdiff/viewer_style.css
new file mode 100644
index 0000000000..48a295c7bb
--- /dev/null
+++ b/experimental/skpdiff/viewer_style.css
@@ -0,0 +1,76 @@
+body, img, div {
+ font-family: Verdana;
+ margin: 0;
+ padding: 0;
+}
+
+table {
+ width:100%;
+ border-collapse: collapse;
+ border-spacing: 0;
+ padding: 8px;
+}
+
+td {
+ border-top: 1px solid #DDD;
+ padding: 8px;
+}
+thead > tr > td {
+ border: none;
+}
+
+.gm-image {
+ width:300px;
+}
+
+.baseline-image {
+ float: right;
+}
+
+.test-image {
+ text-align: right;
+}
+
+.result {
+ padding: 8px;
+ cursor: default;
+ opacity: 0.7;
+}
+
+.result:hover {
+ border: 2px dotted #DDD;
+ padding: 6px;
+ opacity: 1.0;
+}
+
+.result-0 {
+ background-color: #268bd2;
+}
+
+.result-1 {
+ background-color: #d33682;
+}
+
+.result-2 {
+ background-color: #b58900;
+}
+
+.result-3 {
+ background-color: #cb4b16;
+}
+
+.result-4 {
+ background-color: #6c71c4;
+}
+
+.result-5 {
+ background-color: #dc322f;
+}
+
+.result-6 {
+ background-color: #2aa198;
+}
+
+.result-7 {
+ background-color: #859900;
+}