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

Side by Side Diff: cc/base/tiling_data.h

Issue 183123004: cc: Added a spiral difference iterator to tiling data. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: update Created 6 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | cc/base/tiling_data.cc » ('j') | cc/base/tiling_data_unittest.cc » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2010 The Chromium Authors. All rights reserved. 1 // Copyright 2010 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 #ifndef CC_BASE_TILING_DATA_H_ 5 #ifndef CC_BASE_TILING_DATA_H_
6 #define CC_BASE_TILING_DATA_H_ 6 #define CC_BASE_TILING_DATA_H_
7 7
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 int consider_left_; 117 int consider_left_;
118 int consider_top_; 118 int consider_top_;
119 int consider_right_; 119 int consider_right_;
120 int consider_bottom_; 120 int consider_bottom_;
121 int ignore_left_; 121 int ignore_left_;
122 int ignore_top_; 122 int ignore_top_;
123 int ignore_right_; 123 int ignore_right_;
124 int ignore_bottom_; 124 int ignore_bottom_;
125 }; 125 };
126 126
127 // Iterate through all indices whose bounds + border intersect with
128 // |consider| but which also do not intersect with |ignore|. The iterator
129 // order is a counterclockwise spiral around the given center.
130 class CC_EXPORT SpiralDifferenceIterator : public BaseIterator {
131 public:
132 SpiralDifferenceIterator(const TilingData* tiling_data,
133 const gfx::Rect& consider_rect,
134 const gfx::Rect& ignore_rect,
135 const gfx::Rect& center_rect);
136 SpiralDifferenceIterator& operator++();
137
138 private:
139 inline bool in_consider_rect() const {
aelias_OOO_until_Jul13 2014/03/01 01:15:17 nit: I don't think "inline" does anything, may as
vmpstr 2014/03/03 18:32:23 Done.
140 return index_x_ >= consider_left_ && index_x_ <= consider_right_ &&
141 index_y_ >= consider_top_ && index_y_ <= consider_bottom_;
142 }
143 inline bool in_ignore_rect() const {
144 return index_x_ >= ignore_left_ && index_x_ <= ignore_right_ &&
145 index_y_ >= ignore_top_ && index_y_ <= ignore_bottom_;
146 }
147 inline bool valid_column() const {
148 return index_x_ >= consider_left_ && index_x_ <= consider_right_;
149 }
150 inline bool valid_row() const {
151 return index_y_ >= consider_top_ && index_y_ <= consider_bottom_;
152 }
153
154 int current_step_count() const {
155 return (direction_ == UP || direction_ == DOWN) ? vertical_step_count_
156 : horizontal_step_count_;
157 }
158
159 bool needs_direction_switch() const;
160 void switch_direction();
161
162 int consider_left_;
163 int consider_top_;
164 int consider_right_;
165 int consider_bottom_;
166 int ignore_left_;
167 int ignore_top_;
168 int ignore_right_;
169 int ignore_bottom_;
170
171 enum Direction { UP, LEFT, DOWN, RIGHT };
172
173 Direction direction_;
174 int delta_x_;
175 int delta_y_;
176 int current_step_;
177 int horizontal_step_count_;
178 int vertical_step_count_;
179 };
180
127 private: 181 private:
182 std::pair<int, int> UnclampedFirstBorderTileIndexFromSrcCoord(int x,
183 int y) const;
184 std::pair<int, int> UnclampedLastBorderTileIndexFromSrcCoord(int x,
185 int y) const;
186
128 void AssertTile(int i, int j) const { 187 void AssertTile(int i, int j) const {
129 DCHECK_GE(i, 0); 188 DCHECK_GE(i, 0);
130 DCHECK_LT(i, num_tiles_x_); 189 DCHECK_LT(i, num_tiles_x_);
131 DCHECK_GE(j, 0); 190 DCHECK_GE(j, 0);
132 DCHECK_LT(j, num_tiles_y_); 191 DCHECK_LT(j, num_tiles_y_);
133 } 192 }
134 193
135 void RecomputeNumTiles(); 194 void RecomputeNumTiles();
136 195
137 gfx::Size max_texture_size_; 196 gfx::Size max_texture_size_;
138 gfx::Size total_size_; 197 gfx::Size total_size_;
139 int border_texels_; 198 int border_texels_;
140 199
141 // These are computed values. 200 // These are computed values.
142 int num_tiles_x_; 201 int num_tiles_x_;
143 int num_tiles_y_; 202 int num_tiles_y_;
144 }; 203 };
145 204
146 } // namespace cc 205 } // namespace cc
147 206
148 #endif // CC_BASE_TILING_DATA_H_ 207 #endif // CC_BASE_TILING_DATA_H_
OLDNEW
« no previous file with comments | « no previous file | cc/base/tiling_data.cc » ('j') | cc/base/tiling_data_unittest.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698