15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)cr.define('print_preview', function() {
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  'use strict';
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Object describing the printable area of a page in the document.
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param {!print_preview.Coordinate2d} origin Top left corner of the
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *     printable area of the document.
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param {!print_preview.Size} size Size of the printable area of the
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *     document.
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @constructor
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  function PrintableArea(origin, size) {
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Top left corner of the printable area of the document.
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @type {!print_preview.Coordinate2d}
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @private
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    this.origin_ = origin;
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Size of the printable area of the document.
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @type {!print_preview.Size}
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @private
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    this.size_ = size;
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PrintableArea.prototype = {
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @return {!print_preview.Coordinate2d} Top left corner of the printable
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     *     area of the document.
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    get origin() {
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      return this.origin_;
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    },
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @return {!print_preview.Size} Size of the printable area of the document.
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    get size() {
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      return this.size_;
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    },
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @param {print_preview.PrintableArea} other Other printable area to check
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     *     for equality.
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @return {boolean} Whether another printable area is equal to this one.
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    equals: function(other) {
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      return other != null &&
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          this.origin_.equals(other.origin_) &&
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          this.size_.equals(other.size_);
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Export
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return {
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    PrintableArea: PrintableArea
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)});
65