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

Side by Side Diff: cc/region.cc

Issue 11366094: cc: Create a Region class that wraps SkRegion, to replace use of WebCore::Region. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Move deg2rad etc to MathUtil 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 | Annotate | Revision Log
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "config.h"
6
7 #include "cc/region.h"
8
9 namespace cc {
10
11 // TODO(danakj) Use method from ui/gfx/skia_utils.h when it exists.
12 static inline SkIRect ToSkIRect(const gfx::Rect& rect)
13 {
14 return SkIRect::MakeXYWH(rect.x(), rect.y(), rect.width(), rect.height());
15 }
16
17 Region::Region() {
18 }
19
20 Region::Region(const Region& region)
21 : skregion_(region.skregion_) {
22 }
23
24 Region::Region(gfx::Rect rect)
25 : skregion_(ToSkIRect(rect)) {
26 }
27
28 Region::~Region() {
29 }
30
31 void Region::operator=(const Region& region) {
32 skregion_ = region.skregion_;
33 }
34
35 bool Region::IsEmpty() const {
36 return skregion_.isEmpty();
37 }
38
39 bool Region::Contains(const gfx::Point& point) const {
40 return skregion_.contains(point.x(), point.y());
41 }
42
43 bool Region::Contains(const gfx::Rect& rect) const {
44 return skregion_.contains(ToSkIRect(rect));
45 }
46
47 void Region::Subtract(const gfx::Rect& rect) {
48 skregion_.op(ToSkIRect(rect), SkRegion::kDifference_Op);
49 }
50
51 void Region::Subtract(const Region& region) {
52 skregion_.op(region.skregion_, SkRegion::kDifference_Op);
53 }
54
55 void Region::Union(const gfx::Rect& rect) {
56 skregion_.op(ToSkIRect(rect), SkRegion::kUnion_Op);
57 }
58
59 void Region::Union(const Region& region) {
60 skregion_.op(region.skregion_, SkRegion::kUnion_Op);
61 }
62
63 void Region::Intersect(const gfx::Rect& rect) {
64 skregion_.op(ToSkIRect(rect), SkRegion::kIntersect_Op);
65 }
66
67 void Region::Intersect(const Region& region) {
68 skregion_.op(region.skregion_, SkRegion::kIntersect_Op);
69 }
70
71 std::string Region::ToString() const {
72 if (IsEmpty())
73 return gfx::Rect().ToString();
74
75 std::string result;
76 for (Iterator it(*this); it.has_rect(); it.next()) {
enne (OOO) 2012/11/05 21:15:21 Is there any ordering constraint on the rects in r
danakj 2012/11/05 21:18:26 My expectation is that that regardless of the orde
77 if (!result.empty())
78 result += " | ";
79 result += it.rect().ToString();
80 }
81 return result;
82 }
83
84 Region::Iterator::Iterator(const Region& region)
85 : it_(region.skregion_) {
86 }
87
88 Region::Iterator::~Iterator() {
89 }
90
91 } // namespace cc
OLDNEW
« cc/math_util.cc ('K') | « cc/region.h ('k') | cc/stubs/Region.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698