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