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 "include/core/SkPoint.h"
13 #include "include/core/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