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

Side by Side Diff: ui/gfx/transform.cc

Issue 11275089: SkRect to gfx::Rect type conversions. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 8 years, 1 month 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/gfx/transform.h" 5 #include "ui/gfx/transform.h"
6 6
7 #include "ui/gfx/point3_f.h" 7 #include "ui/gfx/point3_f.h"
8 #include "ui/gfx/rect.h" 8 #include "ui/gfx/rect.h"
9 #include "ui/gfx/rect_f.h"
10 #include "ui/gfx/rect_conversions.h"
9 #include "ui/gfx/safe_integer_conversions.h" 11 #include "ui/gfx/safe_integer_conversions.h"
10 #include "ui/gfx/skia_util.h" 12 #include "ui/gfx/skia_util.h"
11 13
12 namespace gfx { 14 namespace gfx {
13 15
14 Transform::Transform() { 16 Transform::Transform() {
15 matrix_.reset(); 17 matrix_.reset();
16 } 18 }
17 19
18 Transform::~Transform() {} 20 Transform::~Transform() {}
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 bool Transform::TransformPointReverse(Point3F& point) const { 146 bool Transform::TransformPointReverse(Point3F& point) const {
145 // TODO(sad): Try to avoid trying to invert the matrix. 147 // TODO(sad): Try to avoid trying to invert the matrix.
146 SkMatrix44 inverse; 148 SkMatrix44 inverse;
147 if (!matrix_.invert(&inverse)) 149 if (!matrix_.invert(&inverse))
148 return false; 150 return false;
149 151
150 TransformPointInternal(inverse, point); 152 TransformPointInternal(inverse, point);
151 return true; 153 return true;
152 } 154 }
153 155
154 void Transform::TransformRect(Rect* rect) const { 156 void Transform::TransformRect(RectF* rect) const {
155 SkRect src = RectToSkRect(*rect); 157 SkRect src = RectFToSkRect(*rect);
156 const SkMatrix& matrix = matrix_; 158 const SkMatrix& matrix = matrix_;
157 matrix.mapRect(&src); 159 matrix.mapRect(&src);
158 *rect = SkRectToRect(src); 160 *rect = SkRectToRectF(src);
159 } 161 }
160 162
161 bool Transform::TransformRectReverse(Rect* rect) const { 163 void Transform::TransformRect(Rect* rect) const {
164 RectF rect_f = *rect;
165 TransformRect(&rect_f);
166 *rect = gfx::ToEnclosingRect(rect_f);
167 }
168
169 bool Transform::TransformRectReverse(RectF* rect) const {
162 SkMatrix44 inverse; 170 SkMatrix44 inverse;
163 if (!matrix_.invert(&inverse)) 171 if (!matrix_.invert(&inverse))
164 return false; 172 return false;
165 const SkMatrix& matrix = inverse; 173 const SkMatrix& matrix = inverse;
166 SkRect src = RectToSkRect(*rect); 174 SkRect src = RectFToSkRect(*rect);
167 matrix.mapRect(&src); 175 matrix.mapRect(&src);
168 *rect = SkRectToRect(src); 176 *rect = SkRectToRectF(src);
169 return true; 177 return true;
170 } 178 }
171 179
180 void Transform::TransformRectReverse(Rect* rect) const {
181 RectF rect_f = *rect;
182 TransformRectReverse(&rect_f);
183 *rect = gfx::ToEnclosingRect(rect_f);
184 }
185
172 void Transform::TransformPointInternal(const SkMatrix44& xform, 186 void Transform::TransformPointInternal(const SkMatrix44& xform,
173 Point3F& point) const { 187 Point3F& point) const {
174 SkScalar p[4] = { 188 SkScalar p[4] = {
175 SkFloatToScalar(point.x()), 189 SkFloatToScalar(point.x()),
176 SkFloatToScalar(point.y()), 190 SkFloatToScalar(point.y()),
177 SkFloatToScalar(point.z()), 191 SkFloatToScalar(point.z()),
178 1 }; 192 1 };
179 193
180 xform.map(p); 194 xform.map(p);
181 195
182 if (p[3] != 1 && abs(p[3]) > 0) { 196 if (p[3] != 1 && abs(p[3]) > 0) {
183 point.SetPoint(p[0] / p[3], p[1] / p[3], p[2]/ p[3]); 197 point.SetPoint(p[0] / p[3], p[1] / p[3], p[2]/ p[3]);
184 } else { 198 } else {
185 point.SetPoint(p[0], p[1], p[2]); 199 point.SetPoint(p[0], p[1], p[2]);
186 } 200 }
187 } 201 }
188 202
189 void Transform::TransformPointInternal(const SkMatrix44& xform, 203 void Transform::TransformPointInternal(const SkMatrix44& xform,
190 Point& point) const { 204 Point& point) const {
191 SkScalar p[4] = { SkIntToScalar(point.x()), SkIntToScalar(point.y()), 205 SkScalar p[4] = { SkIntToScalar(point.x()), SkIntToScalar(point.y()),
192 0, 1 }; 206 0, 1 };
193 207
194 xform.map(p); 208 xform.map(p);
195 209
196 point.SetPoint(ToRoundedInt(p[0]), ToRoundedInt(p[1])); 210 point.SetPoint(ToRoundedInt(p[0]), ToRoundedInt(p[1]));
197 } 211 }
198 212
199 } // namespace gfx 213 } // namespace gfx
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698