<!--
Copyright (C) 2018 The Android Open Source Project

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->

<link rel="import" href="../gr-opacity-diff-mode/gr-opacity-diff-mode.html">
<link rel="import" href="../gr-resemble-diff-mode/gr-resemble-diff-mode.html">

<dom-module id="gr-image-diff-tool">
  <template>
    <style>
      :host {
        background-color: var(--table-header-background-color, #fafafa);
        display: block;
        font-family: var(--font-family);
      }
      #header {
        align-items: center;
        border-bottom: 1px solid var(--border-color, #ddd);
        border-top: 1px solid var(--border-color, #ddd);
        display: inline-flex;
        padding: .5em;
        width: 100%;
      }
      h3 {
        padding: 0 .5em;
      }
      #dropdown {
        background-color: var(--view-background-color);
        border: 1px solid var(--border-color);
        border-radius: 2px;
        color: var(--primary-text-color);
        font-size: var(--font-size-normal);
        height: 2em;
        margin-left: 1em;
        padding: 0 .15em;
      }
      .diffmode {
        align-items: center;
        display: flex;
        justify-content: center;
      }
    </style>
    <div id="header">
      <h3>Image diff</h3>
      <select value="{{_observeMode::change}}" id="dropdown">
        <option value="resemble" title="Scale the images to the same size and compute a diff with highlights">Highlight differences</option>
        <option value="opacity" title="Overlay the new image over the old and use an opacity control to view the differences">Onion skin</option>
      </select>
    </div>
    <div class="diffmode">
      <template is="dom-if" if="[[_showResembleMode]]" restamp="true">
        <gr-resemble-diff-mode
            base-image="[[baseImage]]"
            revision-image="[[revisionImage]]"></gr-resemble-diff-mode>
      </template>
    </div>
    <div class="diffmode">
      <template is="dom-if" if="[[_showOpacityMode]]" restamp="true">
        <gr-opacity-diff-mode
            base-image="[[baseImage]]"
            revision-image="[[revisionImage]]"></gr-opacity-diff-mode>
      </template>
    </div>
  </template>
  <script src="gr-image-diff-tool.js"></script>
</dom-module>
