blob: 0f63f396e7edaf7c74901f1c97108e7273e8c453 [file] [log] [blame]
caryclarka8d2ffb2014-06-24 07:55:11 -07001/*
2 * Copyright 2014 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7#include "SkOpEdgeBuilder.h"
8#include "SkPathOpsCommon.h"
9
10bool TightBounds(const SkPath& path, SkRect* result) {
11 // turn path into list of segments
12 SkTArray<SkOpContour> contours;
13 SkOpEdgeBuilder builder(path, contours);
14 if (!builder.finish()) {
15 return false;
16 }
17 SkTArray<SkOpContour*, true> contourList;
18 MakeContourList(contours, contourList, false, false);
19 SkOpContour** currentPtr = contourList.begin();
20 result->setEmpty();
21 if (!currentPtr) {
22 return true;
23 }
24 SkOpContour** listEnd = contourList.end();
25 SkOpContour* current = *currentPtr++;
26 SkPathOpsBounds bounds = current->bounds();
27 while (currentPtr != listEnd) {
28 current = *currentPtr++;
29 bounds.add(current->bounds());
30 }
31 *result = bounds;
32 return true;
33}