Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(210)

Side by Side Diff: tracing/tracing/base/rect.html

Issue 2771723003: [tracing] Move math utilities from base into their own subdirectory (attempt 2) (Closed)
Patch Set: rebase Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « tracing/tracing/base/range_utils_test.html ('k') | tracing/tracing/base/rect_test.html » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 <!DOCTYPE html>
2 <!--
3 Copyright (c) 2014 The Chromium Authors. All rights reserved.
4 Use of this source code is governed by a BSD-style license that can be
5 found in the LICENSE file.
6 -->
7 <link rel="import" href="/tracing/base/base.html">
8 <link rel="import" href="/tracing/base/math.html">
9 <script>
10 'use strict';
11
12 tr.exportTo('tr.b', function() {
13 /**
14 * Tracks a 2D bounding box.
15 * @constructor
16 */
17 function Rect() {
18 this.x = 0;
19 this.y = 0;
20 this.width = 0;
21 this.height = 0;
22 }
23
24 Rect.fromXYWH = function(x, y, w, h) {
25 var rect = new Rect();
26 rect.x = x;
27 rect.y = y;
28 rect.width = w;
29 rect.height = h;
30 return rect;
31 };
32
33 Rect.fromArray = function(ary) {
34 if (ary.length !== 4)
35 throw new Error('ary.length must be 4');
36 var rect = new Rect();
37 rect.x = ary[0];
38 rect.y = ary[1];
39 rect.width = ary[2];
40 rect.height = ary[3];
41 return rect;
42 };
43
44 Rect.prototype = {
45 __proto__: Object.prototype,
46
47 get left() {
48 return this.x;
49 },
50
51 get top() {
52 return this.y;
53 },
54
55 get right() {
56 return this.x + this.width;
57 },
58
59 get bottom() {
60 return this.y + this.height;
61 },
62
63 toString: function() {
64 return 'Rect(' + this.x + ', ' + this.y + ', ' +
65 this.width + ', ' + this.height + ')';
66 },
67
68 toArray: function() {
69 return [this.x, this.y, this.width, this.height];
70 },
71
72 clone: function() {
73 var rect = new Rect();
74 rect.x = this.x;
75 rect.y = this.y;
76 rect.width = this.width;
77 rect.height = this.height;
78 return rect;
79 },
80
81 enlarge: function(pad) {
82 var rect = new Rect();
83 this.enlargeFast(rect, pad);
84 return rect;
85 },
86
87 enlargeFast: function(out, pad) {
88 out.x = this.x - pad;
89 out.y = this.y - pad;
90 out.width = this.width + 2 * pad;
91 out.height = this.height + 2 * pad;
92 return out;
93 },
94
95 size: function() {
96 return {width: this.width, height: this.height};
97 },
98
99 scale: function(s) {
100 var rect = new Rect();
101 this.scaleFast(rect, s);
102 return rect;
103 },
104
105 scaleSize: function(s) {
106 return Rect.fromXYWH(this.x, this.y, this.width * s, this.height * s);
107 },
108
109 scaleFast: function(out, s) {
110 out.x = this.x * s;
111 out.y = this.y * s;
112 out.width = this.width * s;
113 out.height = this.height * s;
114 return out;
115 },
116
117 translate: function(v) {
118 var rect = new Rect();
119 this.translateFast(rect, v);
120 return rect;
121 },
122
123 translateFast: function(out, v) {
124 out.x = this.x + v[0];
125 out.y = this.x + v[1];
126 out.width = this.width;
127 out.height = this.height;
128 return out;
129 },
130
131 asUVRectInside: function(containingRect) {
132 var rect = new Rect();
133 rect.x = (this.x - containingRect.x) / containingRect.width;
134 rect.y = (this.y - containingRect.y) / containingRect.height;
135 rect.width = this.width / containingRect.width;
136 rect.height = this.height / containingRect.height;
137 return rect;
138 },
139
140 intersects: function(that) {
141 var ok = true;
142 ok &= this.x < that.right;
143 ok &= this.right > that.x;
144 ok &= this.y < that.bottom;
145 ok &= this.bottom > that.y;
146 return ok;
147 },
148
149 equalTo: function(rect) {
150 return rect &&
151 (this.x === rect.x) &&
152 (this.y === rect.y) &&
153 (this.width === rect.width) &&
154 (this.height === rect.height);
155 }
156 };
157
158 return {
159 Rect,
160 };
161 });
162 </script>
OLDNEW
« no previous file with comments | « tracing/tracing/base/range_utils_test.html ('k') | tracing/tracing/base/rect_test.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698