Home | History | Annotate | Download | only in core
      1 /*
      2  * Copyright 2009 The Android Open Source Project
      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 
      8 
      9 #ifndef SkCubicClipper_DEFINED
     10 #define SkCubicClipper_DEFINED
     11 
     12 #include "SkPoint.h"
     13 #include "SkRect.h"
     14 
     15 /** This class is initialized with a clip rectangle, and then can be fed cubics,
     16     which must already be monotonic in Y.
     17 
     18     In the future, it might return a series of segments, allowing it to clip
     19     also in X, to ensure that all segments fit in a finite coordinate system.
     20  */
     21 class SkCubicClipper {
     22 public:
     23     SkCubicClipper();
     24 
     25     void setClip(const SkIRect& clip);
     26 
     27     bool SK_WARN_UNUSED_RESULT clipCubic(const SkPoint src[4], SkPoint dst[4]);
     28 
     29     static bool SK_WARN_UNUSED_RESULT ChopMonoAtY(const SkPoint pts[4], SkScalar y, SkScalar* t);
     30 private:
     31     SkRect      fClip;
     32 };
     33 
     34 #endif  // SkCubicClipper_DEFINED
     35