1<!DOCTYPE html>
2<!--
3Copyright (c) 2013 The Chromium Authors. All rights reserved.
4Use of this source code is governed by a BSD-style license that can be
5found in the LICENSE file.
6-->
7
8<link rel="import" href="/tracing/base/rect.html">
9<script>
10'use strict';
11
12tr.exportTo('tr.e.cc', function() {
13  /**
14   * @constructor
15   */
16  function Region() {
17    this.rects = [];
18  }
19
20  Region.fromArray = function(array) {
21    if (array.length % 4 != 0)
22      throw new Error('Array must consist be a multiple of 4 in length');
23
24    var r = new Region();
25    for (var i = 0; i < array.length; i += 4) {
26      r.rects.push(tr.b.Rect.fromXYWH(array[i], array[i + 1],
27                                      array[i + 2], array[i + 3]));
28    }
29    return r;
30  }
31
32  /**
33   * @return {Region} If array is undefined, returns an empty region. Otherwise
34   * returns Region.fromArray(array).
35   */
36  Region.fromArrayOrUndefined = function(array) {
37    if (array === undefined)
38      return new Region();
39    return Region.fromArray(array);
40  };
41
42  Region.prototype = {
43    __proto__: Region.prototype,
44
45    rectIntersects: function(r) {
46      for (var i = 0; i < this.rects.length; i++) {
47        if (this.rects[i].intersects(r))
48          return true;
49      }
50      return false;
51    },
52
53    addRect: function(r) {
54      this.rects.push(r);
55    }
56  };
57
58  return {
59    Region: Region
60  };
61});
62</script>
63