• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
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 
TightBounds(const SkPath & path,SkRect * result)10 bool 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 }
34