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