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