<!--
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: #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 {
        border: 1px solid var(--border-color);
        border-radius: 2px;
        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">Resemble Mode</option>
        <option value="opacity">Opacity Mode</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>
