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

Side by Side Diff: cc/quads/draw_polygon.cc

Issue 2408203005: Add tests where we split near an edge. (Closed)
Patch Set: rebased Created 4 years, 2 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 | « cc/quads/draw_polygon.h ('k') | cc/quads/draw_polygon_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "cc/quads/draw_polygon.h" 5 #include "cc/quads/draw_polygon.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <vector> 9 #include <vector>
10 10
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
230 230
231 *is_coplanar = false; 231 *is_coplanar = false;
232 if (!neg_count) { 232 if (!neg_count) {
233 *front = std::move(polygon); 233 *front = std::move(polygon);
234 return; 234 return;
235 } else if (!pos_count) { 235 } else if (!pos_count) {
236 *back = std::move(polygon); 236 *back = std::move(polygon);
237 return; 237 return;
238 } 238 }
239 239
240 // There should be at most two points that are considered to be on the thick
241 // plane. If this is not the case, then the polygon is not convex.
242 DCHECK_LE(num_points - pos_count - neg_count, 2u);
243
244 // Handle splitting case. 240 // Handle splitting case.
245 size_t front_begin; 241 size_t front_begin;
246 size_t back_begin; 242 size_t back_begin;
247 size_t pre_front_begin; 243 size_t pre_front_begin;
248 size_t pre_back_begin; 244 size_t pre_back_begin;
249 245
250 // Find the first vertex that is part of the front split polygon. 246 // Find the first vertex that is part of the front split polygon.
251 front_begin = std::find_if(vertex_distance.begin(), vertex_distance.end(), 247 front_begin = std::find_if(vertex_distance.begin(), vertex_distance.end(),
252 [](float val) { return val > 0.0; }) - 248 [](float val) { return val > 0.0; }) -
253 vertex_distance.begin(); 249 vertex_distance.begin();
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
341 quads->push_back( 337 quads->push_back(
342 gfx::QuadF(first, 338 gfx::QuadF(first,
343 gfx::PointF(points_[offset].x(), points_[offset].y()), 339 gfx::PointF(points_[offset].x(), points_[offset].y()),
344 gfx::PointF(points_[op1].x(), points_[op1].y()), 340 gfx::PointF(points_[op1].x(), points_[op1].y()),
345 gfx::PointF(points_[op2].x(), points_[op2].y()))); 341 gfx::PointF(points_[op2].x(), points_[op2].y())));
346 offset = op2; 342 offset = op2;
347 } 343 }
348 } 344 }
349 345
350 } // namespace cc 346 } // namespace cc
OLDNEW
« no previous file with comments | « cc/quads/draw_polygon.h ('k') | cc/quads/draw_polygon_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698