Home | History | Annotate | Download | only in pathops
      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 
     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